C Fragment - chyba

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

C Fragment - chyba

Príspevok od používateľa materik »

Spoiler: ukázať
int vyber()
{
system("cls");
printf("Zadajte sumu, ktoru chcete vybrat: \n");
scanf("%i", &vybr);
if (zos<vybr)
{
printf("Nedostatok penazi na ucte, skontrolujte si svoj zostatok uctu."
"\nPokracujte stlacenim lubovolneho tlacidla do MENU.");
fflush(stdin);
getchar();
return menu();
}
else
{
zos -=vybr;
printf("Vybrali ste %i Eur. Pozadujete vytlacit potvrdenie? A/N.", vybr);
potvrd1=getchar();
if (potvrd1==A)
{
FILE *fp;
fp=fopen("D:\\potvrdenka.txt", "w+");
if (fp!=NULL)
{
fprintf(fp, "Potvrdenie vyberu penazi z uctu.");
fprintf(fp, "Vybrali ste sumu %i Eur.", vybr);
fprintf(fp, "Vas aktualny zostatok je %i Eur.", zos);
fprintf(fp, "Dakujeme, za vyuzitie nasich sluzieb.");
fclose(fp);
printf("Potvrdenie uspesne zapisane do suboru."
"\nPokracujte stlacenim lubovolneho tlacidla do MENU.");
}
getchar();
return menu();
}
else if (potvrd1==N)
{
printf("Dakujeme, za vyuzitie nasich sluzieb."
"\nPokracujte stlacenim lubovolneho tlacidla do MENU.");
fflush(stdin);
getchar();
return menu();
}
}
}
chlapci, pomozte mi najst chybu. Ide o vystup z C do .txt (cervene pismo, tam sa to serie) Cize ak sa dostanete k rozhodnutiu A/N
tak po zadani A alebo N sa program ukonci. Compilator hlasi iba warningy, ziadne errors. Neviem kua, kde
tam je problem. Ci som dosral ten smernik ci co? :closed: :smutny:
Ak by ste niekto chceli komplet cely projekt tak cez SS. Robil som to vo Visual Studio 2008.

EDIT: hlavickove subory stdio.h, stdlib.h, time.h (kvoli srand() )
neviem preco, sa casti kodu nezobrazuju, ak vam tam nieco chyba pozrite si to cez "citovat".
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: C Fragment - chyba

Príspevok od používateľa pEpinko »

Len strelim, dufam ze A je definovane ako konstanta 'A' (podobne aj s N). Inak to vyzera v poriadku...

EDIT: Alebo tam mas aj apostrofy a len forum ich nezobrazuje :).
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: C Fragment - chyba

Príspevok od používateľa materik »

A a N su def ako char, apostrofy som zabudol nakopirovat.... mam uz kopu verzii toho kodu => mam v tom dobry svincik.

Skusal som aj potvrd1=getchar(); nahradit scanf("%c", &potvrd1); ale nic.
Stale to pada v tom mieste.... s tym fprintf je vsetko oka? ten az tak casto nepouzivam, tak ho nemam velmi v hlave.

Seriem ma aj to, ze v dalsej funkcii mam if zalozeny na ziskany A alebo N a tam to funguje (ziskane cez getchar() ).
kua tu :wallbash:
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: C Fragment - chyba

Príspevok od používateľa pEpinko »

A s akou chybou to pada?
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: C Fragment - chyba

Príspevok od používateľa materik »

Press any key to continue... prosto to ukonci program.
Skusal som ta dat aj fflush(stdin) ale nic.
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: C Fragment - chyba

Príspevok od používateľa pEpinko »

Tak ked to ukonci prgram vyhodi ti to aj nejaky exitcode?

Inak podla mna by to nemalo vadit, ale skus to dych fpritnf dat este aj \n a mozno aj explicitne zavolaj fflush(fp).
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: C Fragment - chyba

Príspevok od používateľa materik »

bez exit codu, vyzera to, ako keby si po zadani A alebo N dal return 0;
koso, to bude nieco s tym if-om..., fprintf s \n a fflush(fp) som skusil, ale nedaval som tomu vela. totiz, aj po zadani N
sa program ukonci.
skusim celu funkciu nejako prekopat resp. celu spravim znova. :cry:
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: C Fragment - chyba

Príspevok od používateľa pEpinko »

Skus postnut cely kod, takto sa to moc neda.
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: C Fragment - chyba

Príspevok od používateľa materik »

http://www.mediafire.com/?nxvktg3zqdv" onclick="window.open(this.href);return false;

cely projekt spakovany....
problem je s tym int vyber()
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: C Fragment - chyba

Príspevok od používateľa pEpinko »

Takze som to pozrel a je to viacmenej jasne. Ten getchar zoberie este koniec riadku, cize sa ti hned vykona vetva s nespravnou volbou, ktora uz vedie do konca programu. Vyriesis to tak, ze das pred getchat fflush(stdin), alebo nejakym cyklom while.

Inak je ti jasne ze ta applikacia ma velmi nezvycajnu strukturu. Viacmenej stale zere viac a viac pamate, kedze stale plnis stack a nikdy z neho nereturnujes (iba pri konci)...
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2327
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: C Fragment - chyba

Príspevok od používateľa materik »

Inak je ti jasne ze ta applikacia ma velmi nezvycajnu strukturu. Viacmenej stale zere viac a viac pamate, kedze stale plnis stack a nikdy z neho nereturnujes (iba pri konci)...
to mi je jasne... ale je to len do skoly, takze az tak velmi ma to netrapi :-) Uvidim, co na to povie profak.
Ono ja som trochu predbehol ucivo s tymto vytvorom, mali sme to robit bud cez switch alebo cez if.
Ale prislo mi to suche, tak som sa s tym pohral.
AK mas nejake konstrukcne pripomienky ako to zlepsit, tak smelo porad, ale to asi skor cez SS.
Vyriesis to tak, ze das pred getchat fflush(stdin), alebo nejakym cyklom while.
ten fflush pred getcharom funguje. skusim aj while

A dikes za pomoc. :good:
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77

Návrat na "Programovanie"