#include #include struct student { char nazwisko[30]; char imie[20]; int numer; double oceny[5]; double sr; }; void dopisz(); void drukuj(struct student); void drukuj_plik(); struct student srednia(struct student); main() { int znak; while(1) { printf("\tMenu\n"); printf("d - dopisz element\n"); printf("w - drukuj plik\n"); printf("q - wyjdz\n"); znak = getchar(); switch (znak) { case 'd' : dopisz(); break; case 'w' : drukuj_plik(); break; case 'q' : return 0; default : printf("Bledny znak!\n"); } fflush(stdin); } } void dopisz() { FILE *plik; struct student add; int i; plik = fopen("dane.bin","ab"); if (plik == NULL) printf("Plik nie istnieje\n"); else { printf("Podaj nazwisko\n"); fflush(stdin); scanf("%29s", add.nazwisko); printf("Podaj imie\n"); fflush(stdin); scanf("%19s", add.imie); printf("Podaj numer\n"); fflush(stdin); scanf("%d", &add.numer); printf("Podaj oceny [5]\n"); for(i=0; i<5; i++) { fflush(stdin); scanf("%lg", &add.oceny[i]); printf("%g\n", add.oceny[i]); } add=srednia(add); fwrite(&add, sizeof(struct student), 1, plik); fclose(plik); } } void drukuj(struct student print) { int i; printf("Nazwisko:\t%s\n", print.nazwisko); printf("Imie:\t\t%s\n", print.imie); printf("Numer:\t\t%d\n", print.numer); printf("Oceny:\t\t"); for (i=0; i<5; i++) printf("%g, ", print.oceny[i]); printf("\nSrednia:\t%g\n",print.sr); } void drukuj_plik() { int i=1; struct student druk; FILE *plik; plik = fopen("dane.bin", "rb"); if (plik == NULL) printf("Plik nie istnieje\n"); else { while(feof(plik)==0) { fseek(plik, (i-1)*sizeof(struct student), SEEK_SET); fread(&druk, sizeof(struct student), 1, plik); drukuj(druk); i++; } fclose(plik); } } struct student srednia(struct student sred) { int i; double s=0; for(i=0; i<5; i++) s+=sred.oceny[i]; sred.sr=s/5; return sred; }