#include #include #include // Sokcélú műveletekhez #include // String műveletekhez #include // file műveletekhez using namespace std; int main() { system("cls"); setlocale(LC_ALL, ""); // ez beállítja az op.rendszer által használt nyelvi környezetet, amit feltételezünk, hogy magyar printf("2012. májusi emelt informatika programozás feladat megoldása\n"); //1.feladat string sor; int sorok = 0; // Hány bejegyzés van a fájlban? int i,j; // ciklusváltozó printf("1.feladat: Olvassa be az állományt!\n"); ifstream myfile; // Hozzárendeli olvasásra a myfile-t myfile.open ("tavok.txt"); // Ez nyitja meg a file-t while ( myfile.good() ) //Egyszerű elöltesztelő ciklus a file vizsgálatához { getline (myfile,sor); //Konkrét kiolvasás a file-ból // printf("Vizsgalt sor:"); // Tesztelésre if (sor.size()>3) sorok++; // cout <utolsonap) { utolsonap = melo[i][1]; //Van nagyobb sorszámú nap } } for (i=1;i<=sorok;i++) { if ((melo[i][1] == utolsonap) and (melo[i][2]>utolsofuvar)) { utolsofuvar = melo[i][2]; utolsohossza = melo[i][3]; } } printf("Utolsó fuvarnap száma: %i\n",utolsonap); printf("Utolsó fuvar sorszáma: %i\n",utolsofuvar); printf("Utolsó fuvar hossza : %i\n",utolsohossza); //4.feladat printf("\n4.feladat: Mikor nem dolgozott a futár?\n"); int napok[7]; //Ebben számolom, hogy melyik nap dolgozott a futár for (i=1; i<=7; i++) { napok[i] = 0; //Kiürítem a számlálót } for (i=1; i<=sorok; i++) { napok[melo[i][1]]++; //Az érintett nap sorszámát növelni kell 1-gyel } printf("Nem dolgozott nap(ok) sorszáma(i): "); for (i=1; i<=7; i++) { if (napok[i] == 0) cout << i <<", "; } printf("\n"); //5.feladat printf("\n5.feladat: Mikor volt a legtöbb fuvar?\n"); int legtobbfuvar=napok[1]; //A legtöbb fuvar mennyisége for (i=2; i<=7; i++) { if (napok[i]>legtobbfuvar) legtobbfuvar=napok[i]; } printf("Legtöbb fuvar mennyisége: %i\n",legtobbfuvar); printf("Melyik napon volt? "); for (i=1; i<=7; i++) { if (napok[i]==legtobbfuvar) printf("%i ",i); } printf("\n"); //6.feladat printf("\n6.feladat: Egyes napokon hány km-t kellett megtenni?\n"); int utossz[7]; //Az egyes napokon megtett út hossza for (i=1;i<=7;i++) { utossz[i]=0; //Kiürítem a számlálót } for (i=1;i<=sorok;i++) { utossz[melo[i][1]] = utossz[melo[i][1]]+melo[i][3]; } for (i=1;i<=7;i++) { printf("%i. nap: %i km\n",i,utossz[i]); } //7.feladat printf("\n7.feladat: Bekért távolság díja\n"); int tavolsag; //Bekért adat int dijazas = 0; //Kapott díj cout <<"Kérek egy távolságot! (1 és 30 között) "; cin >>tavolsag; printf("Megadott távolság: %i\n", tavolsag); int tav[6] = {0,2,5,10,20,30}; //Távolságok maximuma int dij[6] = {0,500,700,900,1400,2100}; //Díjak i = 1; do { if ((tavolsag<=tav[i]) and (tavolsag>tav[i-1])) { dijazas = dij[i]; } i++; } while (i<=5); printf("Kapott díjazás: %i\n",dijazas); //8.feladat printf("\n8.feladat: Irja ki az egyes utak dijazását sorrendbe egy külső fájlba!\n"); int dijak[sorok]; //Kiszámolja az egyes utak díját int hetifizetes = 0; //A heti fizetés összege for (i=1; i<=sorok; i++) { tavolsag=melo[i][3]; j=1; do { if ((tavolsag<=tav[j]) and (tavolsag>tav[j-1])) { dijak[i] = dij[j]; } j++; } while (j<=5); // printf("Távolság: %i, díja: %i\n",tavolsag,dijak[i]); //Csak tesztüzemben! } int kiirva[sorok]; //Ezt az utat kiírtuk-e? for (i=1;i<=sorok;i++) { kiirva[i]=0; } ofstream myfile2; // File megnyitása írásra myfile2.open( "dijazas.txt"); int ezvanmost; // Ez a jelenlegi legkorábbi kiirandó bejegyzés char c[256]; // Fájlok kiírásához kell string kiiras; for (int k=1; k<=sorok;k++) { elsonap = 8; elsofuvar = legtobbfuvar +1; for (i=1;i<=sorok;i++) { if (kiirva[i]==0) { if (melo[i][1]<=elsonap) //Legkorábbi nap kiválasztása { elsonap=melo[i][1]; if (melo[i][2]