eMatematikas.lt
Pradžia Forumai + Nauja tema Nariai
Įrankiai
Formulės Testai Egzaminai
Prisijungti Registruotis
       

Programavimo uždavinys (void funkcija)

Sveiki, gal galite padėti su uždaviniu (užvesti ant kelio/paaiškinti) - https://imgur.com/a/GM4mYql .
Čia mano sprendimo variantas - https://imgur.com/a/42EuCyZ .

0

Viskas turi būti pateikta tekstu - paveikslėliai, nuorodos tik kaip papildoma informacija.

Paskutinį kartą atnaujinta 2018-11-27

0

Uždavinys skambėtų taip :
Duomenų faile parašytos 5 skaičių poros (kiekviena naujoje eilutėje).  Parašykite programą, kuri suranda sumą, sudarytą iš kiekvienos poros didesniųjų skaičių ir įrašo į rezultatų failą. Jeigu poros skaičiai lygūs, tai sumuojamas bet kuris iš jų. Didesniajam poros skaičiui nustatyti parašykite funkciją su parametrais-nuorodomis (void).
Pvz.:
Pradiniai duomenys:
3 8
8 1
4 7
2 0
-2 5
Rezultatas:
30 (8+8+7+2+5)

Mano sprendimas :

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

void didesnis ();

int main()
{
    int a,c;
    int suma=0;
    int max=0;
    fstream in ("duom.txt");
    for (int i=1; i<=5; i++)
    {
        in >>a>>c;
        if (a>max) max = a;
        if (c>a) max = c;
        suma+=max;
        max=0;
    }
    in.close();
    ofstream out ("rez.txt");
    out <<suma;
    out.close();
    return 0;
}

0

Turėtum kiek kitaip nustatyti didesnį skaičių ir visa tai turi būti užrašyta funkcijoje:
void didesnis (float a, float b, float &max)
Kintamieji nebūtinai turi būti sveikieji skaičiai, todėl naudoju float tipą.

Paskutinį kartą atnaujinta 2018-11-27

0

Ką turėjai omeny sakydamas "kiek kitaip"? Be to dabar aš savo visą sprendimą turėčiau perkelti kaip sakei į funkciją ir main funkcijoje cikle kreiptis į ją?

0

Ne visą, o tik tą dalį, kuri atsakinga už didesnio skaičiaus iš dviejų turimų nustatymą.
"kiek kitaip" - tavo naudojama logika neveiks, jei skaičiai bus neigiami.

0

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

void didesnis (float, float, float&);

int main()
{
    float a,c;
    float suma=0;
    float max;
    ifstream in ("duom.txt");
    for (int i=0; i<5; i++)
    {
        in >>a>>c;
        didesnis (a,c,max);
        suma+=max;
    }
    in.close();
    ofstream out ("rez.txt");
    out <<suma;
    out.close();
    return 0;
}

Tau lieka aprašyti funkciją void didesnis.

0

Ištrinta*

Paskutinį kartą atnaujinta 2018-11-27

0

Siunčiu pilną kodą, nagrinėkis, nes jaučiu turi daug spragų, kas neaišku, klausk.
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

void didesnis (float, float, float&);

int main()
{
    float a,c;
    float suma=0;
    float max;
    ifstream in ("duom.txt");
    for (int i=0; i<5; i++)
    {
        in >>a>>c;
        didesnis (a,c,max);
        suma+=max;
    }
    in.close();
    ofstream out ("rez.txt");
    out <<suma;
    out.close();
    return 0;
}

void didesnis (float a, float b, float &max)
{
    max=a;
    if (b>a) max = b;
}

0

Viską main funkcijoje suprantu aiškiai ,tačiau void funkciją ganėtinai sunku suprasti bei norėtųsi paaiškinimo (kodėl būtent taip)?

0

Norėdami rašyti žinutes privalote prisijungti!