eMatematikas Prisijunk Forumas Matematikos testai Pradžia

C plius plius uždavinio sprendimas panaudojant void funkciją


Sveiki, bandziau spresti tekstini uzdavini, taciau teisingo sprendimo nesugalvoju, dariau sudetingai taciau per daug kintamuju atsirado ir pasipyle errorai,gal kas nors busit malonus ir padesit? :))

Uzdavinys:

Parenkite programa, kuri apsakiciuotu trumpmenu suma, atimti, sandauga ir dalyba.

Pirmoji eilute rodo kiek kartu vyks veiksmai(ciklas). Antrojoje eiluteje pirmasis skaicius yra trupmenos skaitklis, antras - trupmenos vardiklis, treciasis - kitos trupmenos skaitiklis, ketvirtasis - kitos trupmenos vardiklis


Duomenys:
3
4 5 3 4
3 5 2 9
7 8 2 3

Atsakymai:

T1      T2    Suma  Atimtis    Daugyba    Dalyba
-------------------------------------------
4/5  3/4  31/20      1/20          3/5              16/15
3/5  2/9  37/45    17/45        2/15                27/10
7/8  2/3  37/24    37/24        7/12                21/16


*Jei galima, trupmenos turi buti suprastinos(nezinau kaip tai padaryt), pasvirasis zenklas yra kap teksto iterpimas.

Mano kodas: #include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;
const char SF [] = "Duomenys.txt";
const char RF [] = "Atsakymai.txt";
void trupmenos (int a, int b, int c, int d, int &sumosvardiklis, int &sumosskaitiklis, int &sandaugosvardiklis, int &sandaugosskaitiklis, int &dalybosvardiklis, int &dalybosskaitiklis, int &skirtumovardiklis, int &skirtumoskaitiklis);

int main()
{
    int n,a,b,c,d,sumosskaitiklis,sumosvardiklis,skirtumoskaitiklis,skirtumovardiklis,sandaugosvardiklis, sandaugosskaitiklis, dalybosvardiklis, dalybosskaitiklis;

    ifstream sf (SF);
    ofstream rf (RF);

    sf >> n;

    rf << fixed << left << setw(5) << "T1" << fixed << left << setw(5) << "T2" << fixed << left << setw(5) << "Suma" << fixed << left << setw(5) << "Skirtumas" << fixed << left << setw(5) << "Sandauga" << fixed << left << setw(5) << "Dalmuo" << endl;
    rf << "--------------------------------" << endl;
    for (int i=1; int i<=n; i++) {

    sf >> a >> b >> c >> d;
    trupmenos(a,b,c,d,sumosvardiklis,sumosskaitiklis,sandaugosvardiklis,sandaugosskaitiklis,dalybosvardiklis,dalyboskaitiklis,skirtumovardiklis,skirtumoskaitiklis);
    rf << fixed << left << setw(5) << a << "/" << b << fixed << left << setw(5) << c << "/" << d << fixed << left << setw(5) << sumosskaitiklis << "/" << sumosvardiklis << fixed << left << setw(5) << skirtumoskaitiklis << "/" << skirtumovardiklis << fixed << left << setw(5) << sandaugosskaitiklis << "/" << sandaugosvardiklis << fixed << left << setw(5) << dalybosskaitiklis << "/" << dalybosvardiklis << endl;

    }

    return 0;
}

void trupmenos (int a, int b, int c, int d, int &sumosvardiklis, int &sumosskaitiklis, int &sandaugosvardiklis, int &sandaugosskaitiklis, int &dalybosvardiklis, int &dalybosskaitiklis, int &skirtumovardiklis, int &skirtumoskaitiklis) {
sumosskaitiklis =(a*d)+(b*c);
sumosvardiklis = b*d;
skirtumoskaitiklis = (a*d)-(b*c);
skirtumosvardiklis = b*d;
sandaugosskaitiklis = a*d;
sandaugosvardiklis = b*c;
dalybosskaitiklis = a*c;
dalybosvardiklis = b*d;

return;
}

pakeista prieš 3 m

Tuos errorus manau gali pats susitvarkyt, nes tiesiog nedarasei vietom s raidziu, taip pat for cikle du kartus rasai int i.

O prastinimo principas paprastas, susikurk dar viena void funkcija ir joje daryk for cikla, kuris prasides nuo vardiklio arba skaitiklio (skirtumo nera) ir eis iki 0, bet jo aisku neims, ir tikrink ar skaitiklio ir vardiklio dalybos liekana is for ciklo kintamojo yra 0 jeigu yra tai skaitikli ir vardikli reikes padalinti is to skaiciaus ir jie bus tavo supaprastintos trupmenos vardiklis ir skaitiklis. Prastinimo funkcija tada galesi tiesiog iterpti trupmenos funkcijoje po to, kai suskaiciuosi to veiksmo vardikli ir skaitikli ir beliks juos supaprastint.

pakeista prieš 3 m

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »