No ludia uz som polku semestralky skoro hotovu ale potrebujem pomec... neviem si v nej najst chybu pomozete mi niekto?
Kód: Vybrať všetko
#include <stdio.h>
#include <string.h>
typedef struct {
char meno_studenta[40], vek[3],datum_nar[8], cislo_isic[10],
internat[2], blok[1], cislo_izby[3], cena_ubytovania[6];}INFO;
INFO pom;
char ch;
FILE *sub;
void clrscr(void)
{printf("\n\n\n\n\n\n\n\n\n\n\n");}
/*Hlavne menu */
void Menu(char *s,unsigned long poc)
{
printf("-------------------------------------------------\n");
printf("Hlavne Menu:\n");
printf("-------------------------------------------------\n");
printf("1 - Zadavanie udajov o studentovi\n");
printf("2 - Vypis zoznamu\n");
printf("3 - Vyhladavanie studenta podla udajov\n");
printf("4 - Koniec programu\n");
printf("Nacitavanie zo suboru: %s (pocet poloziek:%d)\n",s,poc);
printf("Zadaj svoju volbu(potvrd klavesou ENTER): ");}
/*Urci pocet studentov v danom subore*/
unsigned long count_pol(char *s)
{unsigned long pomp=0;
sub=fopen(s,"rt");
while (!feof(sub)) {
fscanf(sub,"%s %s %s %s %s %s %s %s", pom.meno_studenta,pom.vek,pom.datum_nar,pom.cislo_isic,pom.internat,pom.blok,pom.cislo_izby,pom.cena_ubytovania);
pomp++;
}
fclose(sub);
return (pomp);
}
/*Nacitavanie auta*/
void Nacitaj(char *s,unsigned long *poc)
{printf("\nZadaj udaje o studentovi");
printf("\nZadaj meno a priezvisko: ");scanf("%s",pom.meno_studenta);
printf("Zadaj vek: ");scanf("%s",pom.vek);
printf("Zadaj rok vyroby auta: ");scanf("%s",pom.datum_nar);
printf("Zadaj datum narodenia: ");scanf("%s",pom.cislo_isic);
printf("Zadaj cislo ISIC: ");scanf("%s",pom.internat);
printf("Zadaj nazov internatu: ");scanf("%s",pom.blok);
printf("Zadaj cislo izby: ");scanf("%s",pom.cislo_izby);
printf("Zadaj cenu ubytovania na mesiac: ");scanf("%s",pom.cena_ubytovania);
/*zapis polozky na koniec suboru*/
sub=fopen(s,"a+");
fprintf(sub,"\n%s %s %s %s %s %s %s %s", pom.meno_studenta,pom.vek,pom.datum_nar,pom.cislo_isic,pom.internat,pom.blok,pom.cislo_izby,pom.cena_ubytovania);
fclose(sub);
(*poc)++;
while (getchar()!='\n'); /*vycistenie buffeu*/
}
/*Funkcia na vypis dat*/
void Vypis(char *s,unsigned long poc)
{int i;unsigned char ch;
while (getchar()!='\n'); /*vycistenie bufferu*/
clrscr();
/*Otvorenie suboru*/
sub=fopen(s,"r+t");
printf("\n__________________________________________________________\n Vypisujem DATA:\n----------------------------------------------------------\n");
if (poc>0)
for (i=1;i<=poc;i++) {printf("\n| Udaje o studentovi c.%d",i);
/*Nacitanie udajov zo suboru*/
fscanf(sub,"%s %s %s %s %s %s %s %s", pom.meno_studenta,pom.vek,pom.datum_nar,pom.cislo_isic,pom.internat,pom.blok,pom.cislo_izby,pom.cena_ubytovania);
printf("\n| Meno a priezvisko : %15s",pom.meno_studenta);
printf("\n| Vek : %15s",pom.vek);
printf("\n| Datum narodenia : %15s",pom.datum_nar);
printf("\n| Cislo ISIC : %15s",pom.cislo_isic);
printf("\n| Internat : %15s",pom.internat);
printf("\n| Blok : %15s",pom.blok);
printf("\n| Izba c. : %15s",pom.cislo_izby);
printf("\n| Cena na mesiac : %15s",pom.cena_ubytovania);
printf("\n");
if (i%2==0 && i!=poc) {printf("\nPokracuj dalej stlacenim klavesy Enter)...");ch=getchar();clrscr();
printf("\n__________________________________________________________\n Dalsia strana:\n----------------------------------------------------------\n");}
} else printf("Subor je prazdny :))");
/*Zatvorene subor*/
fclose(sub);
printf("\nKoniec programu (stlac Enter pre navrat do hlavneho menu)");
ch=getchar();}
/*Vyhladanie studenta*/
void Vyhladaj(char *s,unsigned long poc)
{int i;unsigned char ch;char h_od[10],h_do[10];unsigned long pcn=0;
while (getchar()!='\n'); /*vycistenie buferu*/
clrscr();
printf("\nZadaj SPODNU hranicu vykonu motora: ");
scanf("%s",h_od);
printf("\nZadaj HORNU vykonu motora: ");
scanf("%s",h_do);
while (getchar()!='\n'); /*vycistenie bufferu*/
clrscr();
/*Otvorenie suboru*/
sub=fopen(s,"r+t");
if (poc>0)
for (i=1;i<=poc;i++) {
/*Nacitanie zo suboru*/
fscanf(sub,"%s %s %s %s %s %s %s %s", pom.meno_studenta,pom.vek,pom.datum_nar,pom.cislo_isic,pom.internat,pom.blok,pom.cislo_izby,pom.cena_ubytovania);
if ((strcmp(h_od,pom.vek)<=0) && (strcmp(h_do,pom.vek)>=0)) {pcn++;clrscr();
printf("\n__________________________________________________________\n %d. najdene \n----------------------------------------------------------\n",pcn);
printf("\n| Meno a priezvisko : %15s",pom.meno_studenta);
printf("\n| Vek : %15s",pom.vek);
printf("\n| Datum narodenia : %15s",pom.datum_nar);
printf("\n| Cislo ISIC : %15s",pom.cislo_isic);
printf("\n| Internat : %15s",pom.internat);
printf("\n| Blok : %15s",pom.blok);
printf("\n| Izba c. : %15s",pom.cislo_izby);
printf("\n| Cena na mesiac : %15s",pom.cena_ubytovania);
printf("\n__________________________________________________________\n");
ch=getchar();
}
} else printf("Subor je prazdny :))");
/*Zatvorenie suboru*/
fclose(sub);printf("\n");
if (pcn==0) {printf("Nenasiel sa student v danom rozmedzi veku (%s - %s):((",h_od,h_do);}
printf("\nKoniec programu (%d najdenych poloziek) (stlac Enter pre navrat do hlavneho menu)",pcn);
ch=getchar();}
/*Hlavny program*/
void main (int argc, char *argv[])
{int i ;unsigned long pocet;unsigned char END=1;
if (argc<2) {printf("\nZabudol si uviest meno vstupneho suboru\n");}
if ((sub=fopen(argv[1],"r+t"))==NULL) {printf("\nNeda sa otvorit subor %s ...\n",argv[1]);printf("Vytvaram si novy prazdny subor %s pre dalsiu pracu s nim !\n",argv[1]);
printf("Potvrd Enterom ...");ch=getchar();
fopen(argv[1],"w+t");fclose(sub);pocet=0;}
else {fclose(sub);clrscr();pocet=count_pol(argv[1]);}
do {
clrscr();
Menu(argv[1],pocet);
scanf("%c",&ch);
switch (ch) {
case '1':Nacitaj(argv[1],&pocet);break;
case '2':Vypis(argv[1],pocet);break;
case '3':Vyhladaj(argv[1],pocet);break;
case '4':END=0;break;
default:while (getchar()!='\n'); /*vycistenie buffeu */
}
} while (END);
}