Karolis921 +68
Forumas
Programavimo uždavinys (void funkcija)
Tomas PRO +4543
Viskas turi būti pateikta tekstu - paveikslėliai, nuorodos tik kaip papildoma informacija.
pakeista prieš 5 m
Karolis921 +68
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;
}
Tomas PRO +4543
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
Karolis921 +68
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ą?
Tomas PRO +4543
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.
Tomas PRO +4543
#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.
Karolis921 +68
Ištrinta*
pakeista prieš 5 m
Tomas PRO +4543
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;
}
Karolis921 +68
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 »