/* 2. felev, uj tematika, C nyelv binaris fajl, struktura, 5. gyak textfajl project-rol szoban: lenyege, celja 1. prg: binaris fajl letrehozasa, 2. prg: bin, fajl feldolgozasa, 3. prg: textfajl olvasasa. */ /* 1.prg: A menzan minden nap mind a harom (A,B,C) menu egy adagjahoz feljegyzik a benne szereplo feherjek, a zsirok es a szenhidratok mennyiseget */ #include main() { FILE * fajl; typedef struct { char menu; float feherje; float zsir; float szenhidrat; } ADAGTIP; ADAGTIP adag; char fiznev[80]; int i, db; clrscr(); printf("Etelosszetetel nyilvantartas\n\n"); printf("Adja meg a nyilvantartofajl nevet:"); gets(fiznev); fajl = fopen(fiznev,"wb"); if (fajl == NULL) { printf("\nFajlnyitas sikertelen!"); exit(1); } printf("\nHany etel adatait adja meg:"); scanf("%d", &db); for (i = 0; i < db; i++) { printf("\nAz %d. menu tipusa:",i+1); adag.menu = getch(); printf("%c",adag.menu); printf("\nFeherjetartalom="); scanf("%f",&adag.feherje); printf("Zsirtartalom="); scanf("%f",&adag.zsir); printf("Szenhidrattartalom:"); scanf("%f",&adag.szenhidrat); fwrite(&adag, sizeof (adag), 1, fajl); } fclose(fajl); printf("\nFajllezaras sikeres"); } /* 2. prg:Hatarozzuk meg, hogy a D jelu dietas menu szenhidrattartalma hany szazaleka az A menu szenhidrattartalmanak a tarolt menukre */ #include #include main() { FILE * fajl; typedef struct { char menu; float feherje; float zsir; float szenhidrat; } ADAGTIP; ADAGTIP adag; char fiznev[80]; int adb = 0, ddb = 0; float aszh = 0 , dszh = 0; clrscr(); printf("Szenhidratarany-meghatarozas\n\n"); printf("Adja meg a nyilvantartofajl nevet:"); gets(fiznev); fajl = fopen(fiznev,"rb"); if (fajl == NULL) { printf("\nFajlnyitas sikertelen!"); exit(1); } while ( !( feof(fajl) ) ) { fread( &adag, sizeof (adag), 1 , fajl); switch (adag.menu) { case 'a': case 'A': { adb++; aszh += adag.szenhidrat; break; } case 'd': case 'D': { ddb++; dszh += adag.szenhidrat; } } } fclose(fajl); printf("\nAz A menuk atlagos szenhidrattartalma= %lf", aszh/adb); printf("\nA D menuk atlagos szenhidrattartalma= %lf", dszh/ddb); printf("\nA D menuk szenhidrattartalma az A menukenek %lf resze.", (dszh/ddb)/(aszh/adb) ); } /* 3. prg:Egy C forrasprogramot TEXT tipusu fajlnak tekintve hatarozzuk meg benne a szovegkonstansok elofordulasanak szamat. Egy szovegkonstans kezdete a " karakterrol ismerheto fel. */ #include #include FILE * f; char fiznev[79]; char sor[128]; void main() { int i,db= 0; clrscr(); puts("Szovegkonstansok szamlalasa\n"); do { printf("A C fajl neve:"); gets(fiznev); f= fopen(fiznev,"rt"); } while (f == NULL); while (!feof(f)) { fgets(sor,128,f); i= 0; while (sor[i]) //vegigmegy a sor karakterein { if (sor[i] == '"') db++; i++; } } fclose(f); printf("\n%d darab blokk van a fajlban", db/2); getch(); } //Kerdes: hol csalhat a program? //Valasz: a " karakter nem csak blokk kezdete lehet, hanem // egy keresett karakter is, mint ebben a programban, // vagy elofordulhat a megjegyzesben is. /*Project Nagyobb C programok csak projektfajl segitsegevel, tobb mudulban megirva keszithetok. A tobb modul elonye a team munka, adatrejtes, 64 Kbyte-os hatar atlepese. A projekt leiro fajl tartalmazza azon modulok nevet, amelyekbol felepul a teljes C programrendszer. Ezekbol forditas utan egyetlen .EXE fajl keletkezik. Tobb mdul eseten van ertelme az extern tarolasi osztalynak es a fajlra nezve static minositesnek. */