A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le.
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
// adattároló osztály
class futar
{
public:
int nap;
int sorszam;
int km;
int penz;
string toString()
{
stringstream ss;
ss << nap << " " << sorszam << " "
<< km<< " " << penz << endl;
return ss.str();
}
};
// mennyi km mennyi pénzt jelent
int getpenz( int km )
{
int penz = 0;
if( km <= 2 )
{
penz = 500;
}
else if( km <= 5 )
{
penz = 700;
}
else if( km <= 10 )
{
penz = 900;
}
else if( km <= 20 )
{
penz = 1400;
}
else if( km <= 30 )
{
penz = 2000;
}
// nincs else ág, nem megfelelő értékek esetén 0 lesz.
return penz;
}
int main()
{
ifstream input("tavok.txt");
int meret = 0;
string sor;
// sorok megszámolása
while( getline(input,sor) )
{
meret++;
}
futar fuvarok[meret];
// fájl elejére visszaállás
input.clear();
input.seekg(0);
// beolvasás
for( int i = 0; i < meret; i++ )
{
input >> fuvarok[i].nap >> fuvarok[i].sorszam >> fuvarok[i].km;
// a pénz változót később vezettem be, de utólag a beolvasáskor beállítok
// egy nem valódi értéket
fuvarok[i].penz = -1;
}
// rendezés
for( int i = 0; i < meret-1; i++ )
{
for( int j = i+1; j < meret; j++ )
{
futar csere;
if( fuvarok[i].nap > fuvarok[j].nap
|| (fuvarok[i].nap == fuvarok[j].nap
&& fuvarok[i].sorszam > fuvarok[j].sorszam) )
{
csere = fuvarok[i];
fuvarok[i] = fuvarok[j];
fuvarok[j] = csere;
}
}
}
// rendezett tömb kiírása
// az utolsó elemnek még nincs értéke
for( int i = 0; i < meret; i++ )
{
cout << fuvarok[i].toString();
}
cout << endl;
// 2. feladat
cout << endl << "2. feladat" << endl;
cout << fuvarok[0].km << endl;
// 3. feladat
cout << endl << "3. feladat" << endl;
cout << fuvarok[meret-1].km << endl;
// 4. feladat
cout << endl << "4. feladat" << endl;
// egy 8 elemú tömb, ahol az egyes napok
// fuvarjainak darabszámát gyűjtöm
// a tömb indexei a napok
// a tömböt először nullázzuk
int darabszam[8] = {0};
// többszörös megszámlálás
for( int i = 0; i < meret; i++ )
{
// az adott napnak megfelelő indexű elemeket megnöveljük
// ezzel megszámoljuk, melyik nap hány fuvar volt
darabszam[fuvarok[i].nap]++;
}
//az első nap adatait nem írom ki, 0. nap nincs
for( int i = 1; i <= 7; i++ )
{
if( darabszam[i] == 0 )
{
cout << i << endl;
}
}
// 5. feladat
cout << endl << "5. feladat" << endl;
// maximumkeresés a napi darabszámok tömbben
int max = 1;
// azért 2-től indulok, mert 0. nap nincs, és először
// a hétfőt (1) tekintjük a legnagyobbnak, írd a
// 2-es naptól (kedd) kell indulni
for( int i = 2; i <= 7; i++ )
{
if( darabszam[i] > darabszam[max] )
{
max = i;
}
}
cout << max << endl;
// 6. feladat
cout << endl << "6. feladat" << endl;
// többszörös összeadás tömbje (1-8),
// ahol az indexek a napot jelentik,
// és a tömböt nullázzuk
int napikm[8] = {0};
// végigmegyünk az utak adatain
for( int i = 0; i < meret; i++ )
{
// a napikm tömb megfelelő indexű elemeihez összeadjuk
// az adott nap km adatait
napikm[fuvarok[i].nap] += fuvarok[i].km;
}
// a megfelelő napok (1-7) adatainak kiírása
for( int i = 1; i <= 7; i++ )
{
cout << i << ". nap: " << napikm[i] << " km" << endl;
}
// 7. feladat
cout << endl << "7. feladat" << endl;
int km;
cout << "Irj be egy tavolsagot: ";
cin >> km;
cout << getpenz(km) << endl;
// 8. feladat
// eltároljuk, melyik út mennyi pénzt hozott (segédfüggvény)
for( int i = 0; i < meret; i++ )
{
fuvarok[i].penz = getpenz(fuvarok[i].km);
}
// kiírás fájlba
ofstream output("dijazas.txt");
for( int i = 0; i < meret; i++ )
{
output << fuvarok[i].nap << ". nap "
<< fuvarok[i].sorszam << ". ut: "
<< fuvarok[i].penz << " Ft" << endl;
}
output.close();
// 9. feladat
cout << endl << "9. feladat" << endl;
// összbevétel kiszámítása
int szum = 0;
for( int i = 0; i < meret; i++ )
{
szum += fuvarok[i].penz;
}
cout << szum << endl;
return 0;
}
Ha hibát találsz benne, kérlek jelezd!
