Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- char imie[20];
- char nazwisko[30];
- int numer;
- double oceny[6];
- double srednia;
- } student;
- student srednia(student);
- void dopisz();
- void drukuj(student);
- void drukuj_plik();
- double maksimum();
- double minimum();
- student* najlepsi(int*);
- int usun();
- void popraw();
- main() {
- char z;
- int i = 0;
- student* temp;
- while (1) {
- printf("Wybierz akcje: \n");
- printf("[a] dopisz \n");
- printf("[d] drukuj plk \n");
- printf("[m] maksimum \n");
- printf("[z] minimum \n");
- printf("[n] najlepsi \n");
- printf("[p] popraw \n");
- printf("[u] usun \n");
- printf("[q] wyjdz \n");
- printf("---------------- \n");
- fflush(stdin);
- scanf("%c[^\n]", &z);
- fflush(stdin);
- if (z == 'a') {
- system("cls");
- printf("Dodawanie studenta: \n");
- dopisz();
- system("cls");
- printf("Akcja zakonczona pomyslnie! \n\n");
- }
- else if (z == 'd') {
- system("cls");
- drukuj_plik();
- }
- else if (z == 'm') {
- system("cls");
- printf("Najwyzsza srednia wynosi: %g", maksimum());
- printf("\n\n");
- }
- else if (z == 'z') {
- system("cls");
- printf("Najnizsza srednia wynosi: %g", minimum());
- printf("\n\n");
- }
- else if (z == 'n') {
- system("cls");
- printf("Najlepsi studenci: \n\n");
- temp = najlepsi(&i);
- printf("Jest %i takich studentow.", i);
- printf("\n\n");
- free(temp);
- }
- else if (z == 'p') {
- system("cls");
- drukuj_plik();
- popraw();
- system("cls");
- }
- else if (z == 'u') {
- int i = usun();
- system("cls");
- printf("Liczba usunietych studentow: %i \n\n", i);
- }
- else if (z == 'q') {
- break;
- }
- else {
- system("cls");
- printf("Wybrano zly znak! \n\n");
- }
- }
- }
- student srednia(student temp) {
- int i = 0;
- for (i = 0; i < 6; i++) {
- temp.srednia += temp.oceny[i];
- }
- temp.srednia /= 6;
- return temp;
- }
- void dopisz() {
- student temp;
- printf("Imie: ");
- scanf("%s", temp.imie);
- printf("Nazwisko: ");
- scanf("%s", temp.nazwisko);
- printf("Numer: ");
- scanf("%i", &temp.numer);
- printf("Oceny: ");
- scanf("%lf %lf %lf %lf %lf %lf", &temp.oceny[0], &temp.oceny[1], &temp.oceny[2], &temp.oceny[3], &temp.oceny[4], &temp.oceny[5]);
- temp = srednia(temp);
- FILE* plik = fopen("st.txt", "a");
- fwrite(&temp, sizeof(student), 1, plik);
- fclose(plik);
- }
- void drukuj(student temp) {
- /* printf("Imie: %s \n", temp.imie);
- printf("Nazwisko: %s \n", temp.nazwisko);
- printf("Numer: %i \n", temp.numer);
- printf("Oceny: %g,%g,%g,%g,%g,%g",temp.oceny[0],temp.oceny[1],temp.oceny[2],temp.oceny[3],temp.oceny[4],temp.oceny[5]);
- */
- printf("%i %s %s %g", temp.numer, temp.imie, temp.nazwisko, temp.srednia);
- }
- void drukuj_plik() {
- student temp;
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- drukuj(temp);
- printf("\n\n");
- }
- fclose(plik);
- return;
- }
- double maksimum() {
- double max = -1;
- student temp;
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- if (temp.srednia > max)
- max = temp.srednia;
- }
- fclose(plik);
- return max;
- }
- double minimum() {
- double min = 0;
- student temp;
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- if (temp.srednia < min)
- min = temp.srednia;
- else if (min == 0)
- min = temp.srednia;
- }
- fclose(plik);
- return min;
- }
- student* najlepsi(int* ile) {
- double max = maksimum();
- student temp;
- student* tab = 0;
- *ile = 0;
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- if (temp.srednia == max) {
- drukuj(temp);
- printf("\n");
- tab = (student*)realloc(tab, ++(*ile) * sizeof(student));
- tab[(*ile) - 1] = temp;
- }
- }
- fclose(plik);
- return tab;
- }
- int usun() {
- int i = 0;
- int a = 0;
- int ret = 0;
- double min = minimum();
- student temp;
- student* tab = 0;
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- if (temp.srednia > min) {
- printf("%g", min);
- i++;
- tab = (student*)realloc(tab, i * sizeof(student));
- tab[i - 1] = temp;
- }
- else ret++;
- }
- fclose(plik);
- printf("AAA");
- remove("st.txt");
- plik = fopen("st.txt", "w");
- for (a = 0; a < i; a++) {
- temp = tab[a];
- fwrite(&temp, sizeof(student), 1, plik);
- }
- fclose(plik);
- return ret;
- }
- void popraw() {
- int i = 0;
- int a, b;
- student temp;
- student* tab = 0;
- printf("Podaj nr studenta do edycji: ");
- scanf("%i", &b);
- FILE* plik = fopen("st.txt", "r");
- while (fread(&temp, sizeof(student), 1, plik)) {
- if (temp.numer != b) {
- i++;
- tab = (student*)realloc(tab, i * sizeof(student));
- tab[i - 1] = temp;
- }
- else {
- system("cls");
- drukuj(temp);
- }
- }
- fclose(plik);
- printf("\n\n");
- remove("st.txt");
- plik = fopen("st.txt", "w");
- for (a = 0; a < i; a++) {
- temp = tab[a];
- fwrite(&temp, sizeof(student), 1, plik);
- }
- fclose(plik);
- dopisz();
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement