Advertisement
marek03031

Untitled

Nov 29th, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.82 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4.  
  5. #include <stdio.h>                                  //Pouzite kniznice
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <math.h>
  9. #include <ctype.h>
  10.  
  11. typedef struct pozicka{                         //Struktura
  12.     char sign[15];
  13.     char isbn[17];
  14.     char kniha[105];
  15.     char autor[105];
  16.     int datum;
  17.     int cislo;
  18.     struct pozicka *dalsi;
  19. } POZICKA;
  20.  
  21. POZICKA * funkcia_n(POZICKA *p_prv) {               //Nacitanie zaznamov do zoznamu f vracia smernik na 1. zaznam
  22.     if (p_prv != NULL) {                    //ak smerník niekde ukazuje uvolni pamet
  23.         free(p_prv);
  24.     }
  25.     FILE *fr;                                       //smernik typu file
  26.     char nic[70], c;                                        //Deklaracia ukazovatela na smernik
  27.     POZICKA *p_akt;                     // deklarovany smernik na aktualny zaznam
  28.     int n = 0, x, i;
  29.  
  30.     fr = fopen("kniznica.txt", "r");                //Otvorenie suboru na citanie
  31.     if (fr == NULL) {                                   //Osetrenie neotvorenia suboru
  32.         printf("Zaznamy neboli nacitane\n");
  33.         return 0;
  34.     }
  35.     if ((c=fgetc(fr)) != EOF) {                         //neviem ako to ošetrit...
  36.         while ((fgets(nic, 70, fr)) != NULL) {              //Citanie po riadkoch po koniec suboru
  37.             fgets(nic, 70, fr);
  38.             fgets(nic, 70, fr);
  39.             fgets(nic, 70, fr);
  40.             fgets(nic, 70, fr);
  41.             fscanf(fr, "%d\n", &x);
  42.             fscanf(fr, "%d\n", &x);
  43.             n++;                                            //Pocet zaznamov
  44.         }
  45.  
  46.         if ((p_prv = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) {     //smernik ukazuje na prvy vytvoreny zaznam
  47.             printf("Malo pamate.\n");
  48.             return 0;
  49.         }
  50.  
  51.         rewind(fr);
  52.         fgets(nic, 20, fr);
  53.         fgets(p_prv->sign, 15, fr);             // do prveho zaznamu sa ukladaju položky zo suboru
  54.         fgets(p_prv->isbn, 17, fr);
  55.         fgets(p_prv->kniha, 105, fr);
  56.         fgets(p_prv->autor, 105, fr);
  57.         fscanf(fr, "%d", &p_prv->datum);
  58.         fscanf(fr, "%d", &p_prv->cislo);
  59.  
  60.         //p_prv->p_dalsi = NULL;                // ak bude iba 1 zaznam pravdepodobre toto by tu malo byt....
  61.         p_akt = p_prv;                  //smernik aktualna ukazuje tam kde prvy
  62.  
  63.         for (i = 2; i <= n; i++) {
  64.             if ((p_akt->dalsi = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) { //vytvorenie druheho zaznamu
  65.                 printf("Malo pamate.\n");
  66.                 return 0;
  67.             }
  68.             p_akt = p_akt->dalsi;           // p_akt ukazuje na rovnaku premennu ako  p_akt->dalsi
  69.             fgets(nic, 20, fr);
  70.             fgets(nic, 20, fr);
  71.             fgets(p_akt->sign, 15, fr);     //do druheho zaznamu sa ukladaju polozky   
  72.             fgets(p_akt->isbn, 17, fr);
  73.             fgets(p_akt->kniha, 105, fr);
  74.             fgets(p_akt->autor, 105, fr);
  75.             fscanf(fr, "%d", &p_akt->datum);
  76.             fscanf(fr, "%d", &p_akt->cislo);
  77.         }
  78.         printf("Nacitalo sa %d zaznamov\n", n);
  79.  
  80.         p_akt->dalsi = NULL;            //druhy zaznam je koniec zoznamu
  81.  
  82.         return p_prv;               // vrateny smernik na zaciatok zoznamu
  83.     }
  84.     return 0;
  85. }
  86. POZICKA * funkcia_v(POZICKA *p_prv) {               //funkcia na vypis vracia smernik na aktualny zaznam
  87.     if (p_prv != NULL) {
  88.        
  89.                                             //neviem ako to osetrit...
  90.         POZICKA *p_akt;
  91.         p_akt = p_prv;              //aktualny smernik ukazuje na prvy
  92.        
  93.         int x=0;
  94.  
  95.         while (p_akt != NULL) {         // pokial aktualny nieje na konci zoznamu
  96.             printf("%d.\n", ++x);
  97.             printf("signatura: %s", p_akt->sign);
  98.             printf("isbn: %s", p_akt->isbn);
  99.             printf("nazov: %s", p_akt->kniha);
  100.             printf("autori: %s", p_akt->autor);
  101.             printf("datum: %d\n", p_akt->datum);
  102.             printf("preukaz: %d\n", p_akt->cislo);
  103.             p_akt = p_akt->dalsi;
  104.         }
  105.         return p_akt;                   // vrateny smernik na aktualny zaznam
  106.     }
  107.     return 0;
  108.  
  109.        
  110. }
  111. void funkcia_p(POZICKA *p_akt) {                                    // funkcia na pridanie zaznamu do zoznamu
  112.                                                                     //este nefunguje
  113.     int poz;                                                        //deklaracie
  114.     scanf("%d", &poz);
  115.     POZICKA *p_nov;                         // nový smernik typu pozicka
  116.    
  117.    
  118.  
  119.     if ((p_nov->dalsi = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) {      //vytvorenie dynamickeho pola a test
  120.         printf("Malo pamate.\n");
  121.         return;
  122.     }
  123.  
  124.     p_nov->sign = poz;                  //neviem ako urcit poziciu kde sa ma zaznam pridat....
  125.  
  126.     scanf("%s", p_nov->sign);                           //po doplneni tychto zaznamov by sa funkciou v mali vypisat
  127.     scanf("%s", p_nov->isbn);
  128.     scanf("%s", p_nov->kniha);
  129.     scanf("%s", p_nov->autor);
  130.     scanf("%d", p_nov->datum);
  131.     scanf("%d", p_nov->cislo);
  132.  
  133.  
  134.  
  135.  
  136.    
  137.                                                    
  138.    
  139.                                                                    
  140.    
  141. }
  142.  
  143. void funkcia_z() {                                  //funkcia kt vymazuje zvolene zaznamy zo zoszanu podla autora
  144.     char pole[30];                                  // aj v podretazci
  145.     int i = 0;
  146.     scanf("%s", pole);
  147.     while(pole[i])
  148.    {
  149.       putchar (toupper(pole[i]));                   //vsetky pismena velke
  150.       i++;
  151.    }
  152.     printf("\n");
  153.    
  154.     //if(char *strstr(char *s1, char *s2)!= NULL)
  155.    
  156. }
  157.  
  158. void funkcia_h() {
  159.  
  160. }
  161.  
  162. void funkcia_a() {
  163.  
  164. }
  165.  
  166. int main() {
  167.     char volba;
  168.     POZICKA *p_prv=NULL, *p_akt=NULL;
  169.     do {
  170.         volba = getchar();
  171.         switch (volba) {
  172.         case 'n': p_prv = funkcia_n(p_prv); break;
  173.         case 'v': p_akt = funkcia_v(p_prv); break;                      //Volanie funkcii
  174.         case 'p': funkcia_p(p_akt); break;
  175.         case 'z': funkcia_z(); break;
  176.         case 'h': funkcia_h(); break;
  177.         case 'a': funkcia_a(); break;
  178.         }
  179.     } while (volba != 'k');
  180.  
  181.  
  182.     return 0;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement