A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le. Az innen letölthető tömörített állományokban megtalálod a Code::Blocks-ban megnyitható projectet, és a feladat a forrásait. A kicsomagoláshoz a 7zip nevű ingyenes programot javaslom.
A feladat megoldása az esetleges központi megoldások logikájától eltérhet. Véleményem szerint nem a trükkös megoldások azok, amelyeket hamarabb kitalál az ember, hanem a több lépésben, de elemi algoritmusok használatával készített megoldás az, amely sok esetben sokkal hamarabb elkészül.
Jöjjön akkor a forráskód:
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int kerekit(int ar)
{
int marad;
marad = ar % 10;
if( marad == 1 || marad == 6 )
{
ar = ar-1;
}
else if( marad == 2 || marad == 7 )
{
ar = ar-2;
}
else if( marad == 3 || marad == 8 )
{
ar = ar+2;
}
else if( marad == 4 || marad == 9 )
{
ar = ar+1;
}
return ar;
}
class jegy
{
public:
int hely;
int kezd;
int veg;
int sorszam;
int tav;
int ar;
string toString()
{
stringstream ss;
ss << hely << " " << kezd << " " << veg << " " << sorszam <<
" " << tav << " " << ar << endl;
return ss.str();
}
};
int main()
{
// 1. feladat
ifstream input("eladott.txt");
int meret;
int hossz;
int ar10;
input >> meret >> hossz >> ar10;
jegy jegyek[meret];
for( int i = 0; i < meret; i++ )
{
input >> jegyek[i].hely >> jegyek[i].kezd >> jegyek[i].veg;
jegyek[i].sorszam = i+1;
jegyek[i].tav = jegyek[i].veg - jegyek[i].kezd;
// cout << jegyek[i].toString() << endl;
}
input.close();
// 2. feladat
cout << endl << "2. feladat" << endl;
cout << jegyek[meret-1].hely << " " << jegyek[meret-1].tav << endl;
// 3. feladat
cout << endl << "3. feladat" << endl;
for( int i = 0; i < meret; i++ )
{
if( jegyek[i].tav == hossz )
{
cout << jegyek[i].sorszam << " ";
}
}
cout << endl;
// 4. feladat
cout << endl << "4. feladat" << endl;
int ar;
int km10;
int osszeg = 0;
for( int i = 0; i < meret; i++ )
{
km10 = jegyek[i].tav/10;
if( jegyek[i].tav % 10 > 0 )
{
km10++;
}
ar = kerekit(km10*ar10);
jegyek[i].ar = ar;
osszeg += jegyek[i].ar;
}
cout << "A tarsasag jegybevetele: " << osszeg << " Ft" << endl;
// 5. feladat
cout << endl << "5. feladat" << endl;
int max = 0;
for( int i = 0; i < meret; i++ )
{
if( jegyek[i].kezd > max )
{
max = jegyek[i].kezd;
}
if( jegyek[i].veg > max && jegyek[i].veg != hossz )
{
max = jegyek[i].veg;
}
}
cout << max << endl;
int le = 0;
int fel = 0;
for( int i = 0; i < meret; i++ )
{
if( jegyek[i].kezd == max )
{
fel++;
}
if( jegyek[i].veg == max )
{
le++;
}
}
cout << "fel: " << fel << " le: " << le << endl;
// 6. feladat
cout << endl << "6. feladat" << endl;
int tomb2[hossz+1];
for( int i = 0; i < hossz+1; i++ )
{
tomb2[i] = 0;
}
for( int i = 0; i < meret; i++ )
{
tomb2[jegyek[i].kezd]++;
tomb2[jegyek[i].veg]++;
}
int db = 0;
for( int i = 0; i < hossz+1; i++ )
{
if( tomb2[i] > 0 )
{
db++;
}
}
cout << db << endl;
// 7. feladat
cout << endl << "7. feladat" << endl;
cout << "Adja meg, az ut melyik kilometeren keri az utaslistat! ";
int km;
cin >> km;
int ulesek[49] = {0};
for( int i = 0; i < meret; i++ )
{
if( jegyek[i].kezd <= km && jegyek[i].veg > km)
{
ulesek[jegyek[i].hely] = jegyek[i].sorszam;
}
}
ofstream output("kihol.txt");
for( int i = 1; i < 49; i++ )
{
if( ulesek[i] == 0 )
{
output << i << ". ules: ures" << endl;
}
else
{
output << i << ". ules: " << ulesek[i] << ". utas" << endl;
}
}
return 0;
}
