#include #define MAXDB 30 /* A programot keszitette: ZOMBORI BALAZS - 2011.07.27. - */ int main(){ typedef struct{ char nev[30]; /*Diak neve*/ float atlag; /*Diak atlaga*/ }diaktipus; diaktipus diakok[MAXDB]; /*Letrehozunk egy DIAKTIPUS tipusu tombot, ami pontosan MAXDB meretu.*/ int i; /*ciklusvaltozo - megmondja, hogy hany db diakunk van*/ float osszAtlag; /*Eloszor az atlagok osszeget, majd az osztas utan az osztalyatlagot fogja tarolni.*/ /*Ezeket csak a rendezes soran vannak hasznalva, a jobb lathatosag miatt*/ int menet; int holjar; diaktipus csere; printf("A program osztaly diakjainak nevet es tanulmanyi atlageredmenyet keri be, majd a program sorba rendezi a diakokat atlaguk alapjan, majd kiirja azoknak a diakoknak a neveit es atlageredmenyeit, akik nem ertek el a tanulmanyi atlagnal jobb eredmenyt.\n\n"); /*Adatbekeres - Ellenorzott modon!*/ i=0; do{ printf("Add meg a(z) %d. diak nevet.[Ha nincs tobb diak, '-' adj.]\n",i+1); scanf("%s",diakok[i].nev); if(diakok[i].nev[0]!='-'){ do{ printf("Add meg %s tanulmanyi atlageredmenyet[1.0 - 5.0].\n",diakok[i].nev); scanf("%f",&diakok[i].atlag); }while(diakok[i].atlag<1.0||diakok[i].atlag>5.0); osszAtlag+=diakok[i].atlag; } i++; }while(diakok[i-1].nev[0]!='-'&&i!=MAXDB); /*HA elerjuk a MAXDB szamu diakot, akkor nem lesz vegjel('-'), vagyis eggyel kevesebb diak lesz szamon tartva!! - Ezert van az IF*/ if(i==MAXDB){ i++; } /*Atlagszamitas*/ osszAtlag=osszAtlag/(i-1); /*BUBOREK RENDEZES*/ for (menet=1;menet<=(i-2);menet++){ for (holjar=i-2;holjar>=menet;holjar--){ if (diakok[holjar].atlag>diakok[holjar-1].atlag){ /*csokkeno rendezes - a relacio hatarozza meg*/ csere=diakok[holjar-1]; diakok[holjar-1]=diakok[holjar]; diakok[holjar]=csere; } } } /*Adatkiiras*/ printf("\n\nDiakok:\n"); i=0; while(diakok[i].nev[0]!='-'&&i!=MAXDB){ printf("Nev: %s\t\tAtlaguk:%f\n",diakok[i].nev,diakok[i].atlag); i++; } printf("\nOsztalyatlag: %f",osszAtlag); printf("\n\nAzok a tanulok, akik nem ertek el az osztaly tanulmanyi atlaganal jobb eredmenyt:\n"); i=0; while(diakok[i].nev[0]!='-'&&i!=MAXDB){ if(osszAtlag>=diakok[i].atlag){ printf("Nev: %s\t\tAtlaguk:%f\n",diakok[i].nev,diakok[i].atlag); } i++; } /*Windows miatt!*/ printf("\n\nA programnak vege. Uss egy ENTER-t!"); while(getch()!=13); return 0; }