SHOW:
|
|
- or go back to the newest paste.
1 | #include <stdio.h> | |
2 | #include <stdlib.h> | |
3 | #include <string.h> | |
4 | - | // strtok |
4 | + | // pizza |
5 | - | #define MERET 100 |
5 | + | typedef struct |
6 | - | |
6 | + | |
7 | - | int main() |
7 | + | char nev[40]; |
8 | int feltet; | |
9 | - | // Deklaraciok |
9 | + | }PIZZA; |
10 | - | int c, karakter_pozicio, beolvasott_tokenek_szama, beolvasott_sorok_szama; |
10 | + | |
11 | - | char elso[MERET], aktualis[MERET], utolso[MERET]; |
11 | + | int main(int argc, char** argv) |
12 | - | |
12 | + | |
13 | - | // Inicializaciok |
13 | + | FILE *f=fopen(argv[1], "r"); |
14 | - | karakter_pozicio = 0; |
14 | + | PIZZA *t=NULL; |
15 | - | beolvasott_sorok_szama = 0; |
15 | + | char c, nev[40]; |
16 | - | beolvasott_tokenek_szama = 0; |
16 | + | int feltet=0, maxfeltet=0, i=0, db=-1, tmeret=0, j; |
17 | - | |
17 | + | |
18 | - | // Vegtelen sok karakter beolvasasa |
18 | + | while (1) |
19 | - | while( c = getchar() ) |
19 | + | |
20 | i=0; | |
21 | - | if ( c == EOF ) // Ha elertuk a fajl veget, |
21 | + | db=-1; |
22 | while (1) | |
23 | - | break; // Kilep a vegtelen sok karakter beolvasasabol |
23 | + | |
24 | c=fgetc(f); | |
25 | - | else if ( c == ';' || c == '\n') // Ha elhatarolo karaktert olvastunk |
25 | + | if (c==EOF || c==';') |
26 | break; | |
27 | - | aktualis[karakter_pozicio] = '\0'; // Zarjuk le az aktualisan kezelt tokent |
27 | + | nev[i]=c; |
28 | - | beolvasott_tokenek_szama++; // Merhetjuk, hanyadik token volt a sorban |
28 | + | i++; |
29 | - | if ( beolvasott_tokenek_szama == 1 ) // Ha az elso, |
29 | + | |
30 | - | { |
30 | + | nev[i]='\0'; |
31 | - | strcpy( elso , aktualis ); // Akkor tarolhatjuk kulon egy valtozoban, mert kituntetett szerepu |
31 | + | if (c==EOF) |
32 | - | /* Ha ide er a program feldolgozasa, |
32 | + | break; |
33 | - | akkor elertuk az elso token veget, |
33 | + | while(1) |
34 | - | szabadon hajthatunk vegre muveleteket vele */ |
34 | + | |
35 | - | printf("%s volt az elso token\n", elso); |
35 | + | c=fgetc(f); |
36 | - | } |
36 | + | if (c=='\n' || c==EOF) |
37 | - | karakter_pozicio = 0; // Az indexet amivel mozgunk a tokenben inicializaljuk |
37 | + | break; |
38 | - | /* Ha ide er a program feldolgozasa, |
38 | + | if (c==';') |
39 | - | akkor elertuk egy token veget, |
39 | + | db++; |
40 | - | szabadon hajthatunk vegre muveleteket vele */ |
40 | + | |
41 | - | printf(" %s beolvasva (%d. token)\n", aktualis, beolvasott_tokenek_szama); |
41 | + | if (db>maxfeltet) |
42 | - | |
42 | + | maxfeltet=db; |
43 | - | |
43 | + | t = realloc(t,(tmeret+1)*sizeof(PIZZA)); |
44 | - | if (c == '\n') // Ha vege egy sor (teszteset) feldolgozasanak, |
44 | + | strcpy(t[tmeret].nev, nev); |
45 | - | { |
45 | + | t[tmeret].feltet=db; |
46 | - | beolvasott_tokenek_szama = 0; // Inicializaljuk a sorban levo tokenek szamat |
46 | + | tmeret++; |
47 | - | beolvasott_sorok_szama++; // Merhetjuk, hany sort olvastunk eddig |
47 | + | |
48 | - | strcpy( utolso , aktualis ); // Tarolhatjuk kulon valtozoban az utolso tokent amit neha atof()-el at kell alakitani |
48 | + | printf("%d\n", maxfeltet); |
49 | - | |
49 | + | for (j=0; j<tmeret; j++) |
50 | - | /* Ha ide er a program feldolgozasa, |
50 | + | if (t[j].feltet==maxfeltet) |
51 | - | akkor elertuk egy sor veget, |
51 | + | printf("%s\n", t[j].nev); |
52 | - | szabadon hajthatunk vegre muveleteket vele */ |
52 | + | |
53 | - | printf("%s volt az utolso token (erteke: %lf)\n", utolso, atof(utolso)); |
53 | + | |
54 | - | printf("\n--- %d. sor beolvasva ---\n\n", beolvasott_sorok_szama); |
54 | + | fclose(f); |
55 | - | } |
55 | + | |
56 | } |