baza danych na strukturze-co jest nie tak?

0

Witam! Moim zadaniem było zrobienie za pomocą struktury jakiejś prostej bazy danych i funkcji, która to wczytywałaby z klawiatury dane do bazy i później je wyświetlała. Na koniec miałem zrobić swoista wyszukiwarkę do tej bazy danych, która szukałaby np. książki o określonym tytule, czy dacie wydania. Niestety nie moge tego zrobić, gdyż mój program ma jakiś błąd i przy wpisywaniu danych trzeciej książki zawiesza sie...czy mógłby ktoś pomóc? A oto mój kod:

#include <cstdlib>
#include <iostream>

using namespace std;

const int n=100;

struct katalog_ksiazek
{
    char tytul[30];
    char autor[30];
    short int rok_wydania;
};

void wczytaj(katalog_ksiazek kat[], int liczba_rekordow)
{
    for(int i=0; i<liczba_rekordow; i++)
    {
        cout<<"Podaj tytul ksiazki: ";
        cin>>kat[i].tytul;
        cout<<"Podaj autora ksiazki: ";
        cin>>kat[i].autor;
        cout<<"Podaj rok wydania ksiazki: ";
        cin>>kat[i].rok_wydania;


    }
    for(int i=0; i<liczba_rekordow; i++)
    {
        cout<<"ksiazka "<<i+1<<" to: "<<endl;
        cout<<kat[i].tytul<<endl;
        cout<<kat[i].autor<<endl;
        cout<<kat[i].rok_wydania<<endl;
    }
}    
int main()
{
int liczba_rekordow;
katalog_ksiazek kat[n];
cout<<"Podaj ilosc rekordow, ktore chcesz podac: ";
cin>>liczba_rekordow;

wczytaj(&kat[n], liczba_rekordow);

getchar();
getchar();
}

z góry dziękuję za pomoc, pozdrawiam,
Fyodor

0

Zamien na

wczytaj(kat, liczba_rekordow);

i dodaj jeszcze na koniec funkcji main

return 0;
0

haaa! wielkie dzięki:D działa:D

0

Witam mam podobny problem a nie chce zasmiecac forum. czy mogl by mi ktos pomoc
debuger wskazuje na tablice "linia" ale wydaje mi sie ze jest dobrze opisana ;/

#include<string.h>
#include<stdio.h>

struct Sdata {
       unsigned int dzien;
       unsigned int miesiac;
       unsigned int rok;
       };
       
struct Sdane{
       char *gatunek;
       char *tytul;
       char *wydawnictwo;
       struct Sdata data;
      };
      
 struct Sdane  analiza(char linia [128])

{
       struct Sdane dane;
       char *wsk = linia;
       
       wsk = strtok(wsk,",");
       strcpy(dane.gatunek,wsk);
       
       wsk = wsk + strlen(wsk)+1;
       wsk = strtok (wsk,",");
       strcpy(dane.tytul,wsk);
       
        wsk = wsk + strlen(wsk)+1;
       wsk = strtok (wsk,",");
       strcpy(dane.wydawnictwo,wsk);
       
       wsk = wsk + strlen(wsk) +1;
       wsk = strtok(wsk,",");
       sscanf(wsk,"%d-%d-%d",&dane.data.dzien,&dane.data.miesiac,&dane.data.rok);
      
      
       return dane;
       }
  
  
   wybrane(zakresOd,zakresDo){
          
          printf("%d,%d",zakresOd,zakresDo);
          
           FILE *plik;
           char linia[128];
           struct Sdane tab[4];
           int i=0;
           plik=fopen("dane.txt","r");
           if (plik == NULL){
                    printf("Nie moge otworzyc pliku \n"); return 1;
                    }
           i=0;
           while (fgets(linia,128,plik) != NULL ) {
                 tab[i] = analiza (linia);
                 i++;
                 }
                 fclose(plik);
                 for (i=0; i<3; i++){
                    printf("rekord %d:\n", i);
                     printf("Gatunek%s \n,Tytul %s\n,Wydawnictwo %s\n,Data wydania %d-%d-%d\n",
                     tab[i].gatunek,tab[i].tytul,
                     tab[i].wydawnictwo,
                     tab[i].data.dzien,tab[i].data.miesiac,
                     tab[i].data.rok);
                     }
                     getch();
                     return 0;
                              
                              }
                              
      
int menu(){
    int wyboru=0;
    int zakresOd,zakresDo;
    
    
      printf("\n\t\tWyswietl wybrane 1");
           printf("\n\n\t\tEdytuj rekord 2");
           printf("\n\n\t\tWyswietl wszystkie rekordy 3");
           printf("\n\n\t\tDopisz rekord 4");
           printf("\n\n\n\t\tWyszukaj rekord 5\n\n\t\tOpusc program 6");
    
    printf("\n\n Co chcesz robic ? :");
  
   while((wyboru<1)||(wyboru>3)){
    scanf("%d",&wyboru);
    
    if (wyboru==1){
                     printf("\n\nPodaj zakres rekordow oddzielony przecinkami: ");
                          scanf("%d,%d",&zakresOd,&zakresDo);
                          wybrane(zakresOd,zakresDo);
                          }
                   
    else if(wyboru==2){
         printf("wybrales dwa");
    getch();
         }
         else if(wyboru==3){
              printf("pierdol sie");
                  getch(); 
              }
              else{
                   printf("zla liczba sproboj jeszcze raz:");
                   getch();
                   
                   }
                   }
              
                  getch();
                  return 0;
                   }



    int main(){
   system("color 5A");
    menu();
    return 0 ; 
}    
0

expected constructor, destructor, or type conversion before '(' token
Zwracany typ oraz typy argumentow pies zezarl? Potem tez bledy z ta funkcja
getch' undeclared (first use this function) system' undeclared (first use this function)
stdlib.h

1 użytkowników online, w tym zalogowanych: 0, gości: 1