eMatematikas Prisijunk Forumas VBE užduotys ONLINE testai

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 .

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

pakeista prieš 5 m

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;
}

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ą.

pakeista prieš 5 m

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ą?

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.

#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.

Ištrinta*

pakeista prieš 5 m

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;
}

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)?

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