Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. /* 1 wczytaj dane z pliku
  2.    2 Zapisz dane do pliku
  3.    3 Wypisz dane w postaci tabeli
  4.    4 Sortuj dane
  5.     a)w/g imienia
  6.     B) w/g nazwiska
  7.     c) w/g wieku
  8.     d) w/g zarobku
  9.    5 Dodaj osobe do tabeli
  10.    6 Usuń osobe z tabeli
  11.    7 Zakończenie programu */
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. typedef struct{
  16. char imie[20];
  17. char nazwisko[20];
  18. int wiek;
  19. double zarobki;} Osoba;
  20. int wczytaj_dane(Osoba os[])
  21. {
  22.     char s[20];
  23.     printf("podaj nazwe pliku: ");
  24.     scanf("%s",s);
  25.     FILE *fin=fopen(s, "r");
  26.     int n=0;
  27.     while(fscanf(fin,"%s %s %d %lf", os[n].imie, os[n].nazwisko, &os[n].wiek, &os[n].zarobki)==4)n++;
  28.     fclose(fin);
  29.     printf("wczytanoo dane %d osob \n", n);
  30.     return n;
  31. }
  32. int zapisz_dane(Osoba os[],int n)
  33. {
  34.     int c;
  35.     char s[20];
  36.     printf("podaj nazwe pliku: ");
  37.     scanf("%s",s);
  38.     FILE *fout=fopen(s, "w");
  39.     for(c=0; c<n; c++)
  40.     {
  41.         fprintf(fout, "%s %s %d %lf \n", os[c].imie, os[c].nazwisko, os[c].wiek,  os[c].zarobki);
  42.     }
  43.     fclose(fout);
  44.     printf("Zapisano dane %d osob \n", c);
  45. }
  46. int wypisz_tabela(Osoba os[], int n)
  47. {
  48.     int c; 
  49.     printf("__________________________________________\n");
  50.     printf("|   Imie   |   Nazwisko   | Wiek | Zarobki  |\n");
  51.     printf("__________________________________________\n");
  52.     for(c=0; c<n; c++)
  53.     {
  54.     printf("| %-8s | %-12s |%5d |%9.2f | \n",os[c].imie,os[c].nazwisko,os[c].wiek,os[c].zarobki);
  55.     }  
  56. }
  57. int porownaj_wiek(const void*a, const void*b)
  58. {
  59. Osoba *os1=(Osoba *)a;
  60. Osoba *os2=(Osoba *)b;
  61. return os1->wiek-os2->wiek;}
  62.  
  63. void qsort(void *tablica, size_t nelem, size_t rozmiar, int (*porownaj)(const void*a, const void*b));
  64. qsort((void*)os, n, sizeof(Osoba), porownaj_wiek);
  65. int menu()
  66. {
  67. printf("1. Wczytaj dane \n");
  68. printf("2. Zapisz dane do pliku \n");
  69. printf("3. Wypisz dane w postaci tabeli \n");
  70. printf("4. Sortuj dane w/g imienia\n");
  71. printf("Dokonaj wyboru: ");
  72. int n;
  73. scanf("%d",&n);
  74. return n;
  75. }
  76. int main (int argc, char *argv[])
  77. {
  78. Osoba os[100];
  79. int liczba;
  80. while (1)
  81. switch (menu()){
  82. case 1:
  83. liczba=wczytaj_dane(os);
  84. break;
  85. case 2:
  86. zapisz_dane(os,liczba);
  87. break;
  88. case 3:
  89. wypisz_tabela(os,liczba);
  90. case 4:
  91. qsort(os);
  92. break;
  93. default:
  94. printf("Nie ma takiej opcji. \n");
  95. break;}
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement