#include #include #include #include // atoi, rnad, srand #include // strcpy #define SPACE " " // Definiálok egy konstansot using namespace std; struct uzenet{ int ora; int perc; long int szam; string szoveg; }; 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("A 2008. májusi emelt informatika érettségi megoldása\n"); uzenet adat[100]; //1. feladat printf("\n1. feladat: Olvassa be az adatokat!\n"); int i; //ciklusváltozó string sor; char * p, * sora; // Üzenetek feldolgozásához kell int sorokszama; ifstream myfile("sms.txt"); getline(myfile,sor); sorokszama = atoi(sor.c_str()); printf("Üzenetek száma: %i\n\n", sorokszama); for (i=1; i<=sorokszama; i++) { getline(myfile,sor); sora = new char [sor.size()+1]; // Létrehozunk egy char típusú változót, melynek mérete a sor +1 lesz. strcpy(sora,sor.c_str()); // Átvisszük a sor adatait az ujadatba p = strtok (sora," "); // Feldaraboljuk az új adatok adat[i].ora = atoi(p); p = strtok (NULL," "); adat[i].perc = atoi(p); p = strtok (NULL," "); adat[i].szam = atoi(p); //printf("Ora: %i, perc: %i, szám: ", adat[i].ora, adat[i].perc); //Csak tesztüzemben //cout <maxhossz) { maxhossz=hosszak[i]; maxhosszhelye=i; } } printf("Legrövidebb üzenet adatai: (óra, perc, száma, szöveg)\n"); printf("%i, %i, ", adat[minhosszhelye].ora, adat[minhosszhelye].perc); cout <20) and (hosszak[i]<41)) stat[2]++; if ((hosszak[i]>40) and (hosszak[i]<61)) stat[3]++; if ((hosszak[i]>60) and (hosszak[i]<81)) stat[4]++; if (hosszak[i]>80) stat[5]++; } printf("Üzenetek hossza: 1-20; Darabszáma: %i\n", stat[1]); printf("Üzenetek hossza: 21-40; Darabszáma: %i\n", stat[2]); printf("Üzenetek hossza: 41-60; Darabszáma: %i\n", stat[3]); printf("Üzenetek hossza: 61-80; Darabszáma: %i\n", stat[4]); printf("Üzenetek hossza: 81- ; Darabszáma: %i\n", stat[5]); //5. feladat printf("\n5. feladat: Hány üzenetért kell felhívni a szolgáltatót?\n"); int orak[25]; //Óránkénti üzenetek száma for (i=1; i<=23; i++) { orak[i]=0; //Számlálók lenullázása } for (i=1; i<=sorokszama; i++) { orak[adat[i].ora]++; //Összeadjuk az óránkénti üzeneteket } for (i=1; i<=23; i++) { if (orak[i]!=0) //Csak ekkor kell foglalkozni az üzenetek számával { if (orak[i]>10) printf("Óra: %i, Maradék üzenetek száma: %i\n", i, orak[i]-10); } } //6. feladat printf("\n6. feladat: Mennyi volt a leghosszabb eltelt idő 2 üzenet között...\n"); int maxido=0; //Leghosszabb eltelt idő (percben) 2 üzenet között int fontos[sorokszama]; //Ha megfelelő a szám, akkor percre átalakítjuk az uidőt, különben 0. int darab=0; //MEgfelelő üzenetek int elozoido=0; //Elözö idő percre alakított verziója int proba; //Segédváltozó for (i=1; i<=sorokszama; i++) { fontos[i]=0; if (adat[i].szam==123456789) { fontos[i]=adat[i].ora*60+adat[i].perc; if (elozoido==0) elozoido = fontos[i]; //Ez a legkorábbi üzenet ideje darab++; } } if ((darab==1) or (darab==0)) printf("Nincs elegendö üzenet!\n"); else //Itt már van min, 2 üzenet! { for (i=1; i<=sorokszama; i++) { if (fontos[i]>0) proba=fontos[i]-elozoido; //Kiszámítjuk az eltelt időt if (proba>maxido) maxido=proba; //Hosszabb, mint az eddigi legtöbb. } printf("Két üzenet között eltelt leghosszabb idö: %i perc.\n", maxido); } //7. feladat printf("\n7. feladat: Késö üzenet eltárolása\n"); cout <<"Kérem az üzenet óráját!"; cin >>adat[sorokszama+1].ora; cout <<"Kérem az üzenet percét!"; cin >>adat[sorokszama+1].perc; cout <<"Kérem az üzenet küldöjének számát!"; cin >>adat[sorokszama+1].szam; cout <<"Kérem az üzenet szövegét!"; cin >>adat[sorokszama+1].szoveg; printf("Köszönöm. Újabb üzenet eltárolva!\n"); //8. feladat printf("\n8. feladat: Lista készítése fájlba\n"); bool voltcsere; //Segédváltozó uzenet csere; //Cserélgetéshez szükséges változó do //Sima buborékos rendezés { voltcsere=false; for (i=1; i<=sorokszama; i++) { if (adat[i+1].szam