Ĺadny brzuch
podczas kompilacji pokazuje mi sie blad: 'przepelniony stos'. Co moze byc przyczyna tego bledu. Programik nie jest duzy ma tylko kilka procedur.
Szlana kula mówi mi żebyś podał kod :)
Program darrrr; uses crt; {__________TYPY______________} TYPE dzi=1..31; {typ okrojony dzien} mies=1..12; {typ okrojony miesiac} data=record dzien:dzi; miesiac:mies; rok:integer; end; artykul=record r_pro:string[15]; nazwa:string[50]; waznosc:data; id:integer; prze:data; end; tablica=array[1..255] of artykul; {____________ZMIENNE GLOBALNE_________} VAR ile,i,ro:integer; tab,wysz:tablica; art,t:char; naz:string[50]; ida:integer; war:boolean; {war:warunek do wczytywania do tablicy} dzionek:dzi; mie:mies; {____________PROCEDURY________________} {_____________DATA___________________} procedure dat(i:integer;war:boolean; var tab:tablica;ro:integer;dzionek:dzi;mie:mies); var d:dzi; m:mies; r:integer; BEGIN repeat write('dzien: '); readln(d); if d>31 then writeln('PODANY DZIEN JEST NIEPRAWIDLOWY(liczba jest za duza). POPRAW!!!!'); until d<=31; repeat write('miesiac: '); readln(m); if m>12 then writeln('PODANY MIESIAC JEST NIEPRAWIDLOWY(liczba jest za duza). POPRAW!!!!'); until m<=12; write('rok: '); readln(r); if war=true then {jezeli wartosc true to wczyta do tablicy} begin {potrzebne do wczytywania} tab[i].waznosc.dzien:=d; tab[i].waznosc.miesiac:=m; tab[i].waznosc.rok:=r; end; if war=false then begin ro:=r; dzionek:=d; mie:=m; end; END; {_______________WYPIS______________} procedure wypis(i:integer;tav:tablica); BEGIN clrscr; writeln('Rodzaj produktu: ',tab[i].r_pro); writeln('Nazwa: ',tab[i].nazwa); if tab[i].r_pro='spozywczy' then writeln('Data waznosci: ',tab[i].waznosc.dzien,'.',tab[i].waznosc.miesiac,'.',tab[i] .waznosc.rok); writeln('Numer identyfikacyjny: ',tab[i].id); END; {_____________WCZYTYWANIE____________} procedure wczyt(ile:integer;i:integer;var tab:tablica;war:boolean); var art,t:char; naz:string[50]; ida:integer; BEGIN REPEAT writeln('Podaj rodzaj artykulu'); writeln('WPISZ'); writeln(chr(39), 's',chr(39),' - jezeli spozywczy'); writeln(chr(39), 'n',chr(39),' - jezeli niespozywczy'); readln(art); if (art<>'s') and (art<>'n') then writeln('Zly wybor!!! POPRAW!!!'); UNTIL (art='s') or (art='n'); CASE art of 's': {WCZYTANIE DANYCH SPOZYWCZEGO} BEGIN war:=true; tab[i].r_pro:='spozywczy'; writeln('Podaj nazwe'); readln(naz); tab[i].nazwa:=naz; writeln('Podaj date waznosci'); dat(i,war,tab,dzionek,ro,mie); writeln('podaj numer identyfikacyjny'); readln(ida); tab[i].id:=ida; writeln('Czy chcesz sprawdzic podany artykul? t/n'); readln(t); if t='t' then wypis(i,tab); END; 'n': {WCZYTANIE DANYCH NIESPOZYWCZEGO} BEGIN tab[i].r_pro:='niespozywczy'; writeln('Podaj nazwe'); readln(naz); tab[i].nazwa:=naz; tab[i].nazwa:=naz; writeln('Podaj numer identyfikacyjny'); readln(ida); tab[i].id:=ida; writeln('Czy chcesz sprawdzic podany artykul? t/n'); readln(t); if t='t' then wypis(i,tab); END; END; END; {_______________SPRAWDZENIE DATY WAZNOSCI___________} procedure wyszukiwarka(i:integer;ile:integer; dzionek:dzi; mie:mies; ro:integer; tab:tablica; var wysz:tablica); var a:integer; d_war:boolean; ile_d:dzi; ile_m:mies; ile_r:integer; BEGIN for a:=1 to ile do begin if tab[i].r_pro='spozywczy' then begin if ro>=tab[i].waznosc.rok then begin d_war:=true; ile_r:=ro - tab[i].waznosc.rok; end; if mie>=tab[i].waznosc.miesiac then begin d_war:=true; ile_m:=mie - tab[i].waznosc.miesiac; end; if dzionek>=tab[i].waznosc.dzien then begin d_war:=true; ile_d:=dzionek - tab[i].waznosc.dzien; {ilosc dni} end; {_____wczytanie wynikow wyszukiwania_____} if d_war=true then begin a:=1; wysz[a].r_pro:=tab[i].r_pro; wysz[a].nazwa:=tab[i].nazwa; wysz[a].waznosc.dzien:=tab[i].waznosc.dzien; wysz[a].waznosc.miesiac:=tab[i].waznosc.miesiac; wysz[a].waznosc.rok:=tab[i].waznosc.rok; wysz[a].id:=tab[i].id; wysz[a].prze.dzien:=ile_d; wysz[a].prze.miesiac:=ile_m; wysz[a].prze.rok:=ile_r; end; end; writeln('nazwa: ',wysz[a].nazwa); writeln('przekroczylo: ',wysz[a].prze.dzien,'.',wysz[a].prze.miesiac,'.',wysz[a] .prze.rok); end; END; {____________PROGRAM GLOWNY_____________} BEGIN writeln('ile chcesz wpisac??'); readln(ile); for i:=1 to ile do wczyt(ile,i,tab,war); writeln('Czy chcesz sprawdzic produkty ktore utracyly date waznosci?'); readln(t); if t='t' then begin writeln('Podaj date dla korej chcesz sprawdzic date wznosci'); war:=false; {warunek do daty} dat(i,war,tab,dzionek,ro,mie); {wczytanie daty} wyszukiwarka(i,ile,dzionek,mie,ro,tab,wysz); {wyszukuje przekroczenie daty} end; writeln('KONIEC'); readln END.
zadanie:
napisz program ktory wczyta od uzytkownika artykuly spozywcze i niespozywcze a potem wyswetli produkty przekroczyły date waznosci w podanym termnie.
http://sfp.sztorm.ne.../index.php#e202
nooo, zgadnij skad to mam :>
Użytkownik Kajetanek edytował ten post 13 styczeń 2006, 21:03
Nie wiem czy to pomoże, ale przecież w Options->Memory sizes->Stack ustalasz wielkość stosu... ^_^ Więc po prostu ją powieksz ;]
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Szlana kula mówi mi żebyś podał kod :)
Program darrrr; uses crt; {__________TYPY______________} TYPE dzi=1..31; {typ okrojony dzien} mies=1..12; {typ okrojony miesiac} data=record dzien:dzi; miesiac:mies; rok:integer; end; artykul=record r_pro:string[15]; nazwa:string[50]; waznosc:data; id:integer; prze:data; end; tablica=array[1..255] of artykul; {____________ZMIENNE GLOBALNE_________} VAR ile,i,ro:integer; tab,wysz:tablica; art,t:char; naz:string[50]; ida:integer; war:boolean; {war:warunek do wczytywania do tablicy} dzionek:dzi; mie:mies; {____________PROCEDURY________________} {_____________DATA___________________} procedure dat(i:integer;war:boolean; var tab:tablica;ro:integer;dzionek:dzi;mie:mies); var d:dzi; m:mies; r:integer; BEGIN repeat write('dzien: '); readln(d); if d>31 then writeln('PODANY DZIEN JEST NIEPRAWIDLOWY(liczba jest za duza). POPRAW!!!!'); until d<=31; repeat write('miesiac: '); readln(m); if m>12 then writeln('PODANY MIESIAC JEST NIEPRAWIDLOWY(liczba jest za duza). POPRAW!!!!'); until m<=12; write('rok: '); readln(r); if war=true then {jezeli wartosc true to wczyta do tablicy} begin {potrzebne do wczytywania} tab[i].waznosc.dzien:=d; tab[i].waznosc.miesiac:=m; tab[i].waznosc.rok:=r; end; if war=false then begin ro:=r; dzionek:=d; mie:=m; end; END; {_______________WYPIS______________} procedure wypis(i:integer;tav:tablica); BEGIN clrscr; writeln('Rodzaj produktu: ',tab[i].r_pro); writeln('Nazwa: ',tab[i].nazwa); if tab[i].r_pro='spozywczy' then writeln('Data waznosci: ',tab[i].waznosc.dzien,'.',tab[i].waznosc.miesiac,'.',tab[i] .waznosc.rok); writeln('Numer identyfikacyjny: ',tab[i].id); END; {_____________WCZYTYWANIE____________} procedure wczyt(ile:integer;i:integer;var tab:tablica;war:boolean); var art,t:char; naz:string[50]; ida:integer; BEGIN REPEAT writeln('Podaj rodzaj artykulu'); writeln('WPISZ'); writeln(chr(39), 's',chr(39),' - jezeli spozywczy'); writeln(chr(39), 'n',chr(39),' - jezeli niespozywczy'); readln(art); if (art<>'s') and (art<>'n') then writeln('Zly wybor!!! POPRAW!!!'); UNTIL (art='s') or (art='n'); CASE art of 's': {WCZYTANIE DANYCH SPOZYWCZEGO} BEGIN war:=true; tab[i].r_pro:='spozywczy'; writeln('Podaj nazwe'); readln(naz); tab[i].nazwa:=naz; writeln('Podaj date waznosci'); dat(i,war,tab,dzionek,ro,mie); writeln('podaj numer identyfikacyjny'); readln(ida); tab[i].id:=ida; writeln('Czy chcesz sprawdzic podany artykul? t/n'); readln(t); if t='t' then wypis(i,tab); END; 'n': {WCZYTANIE DANYCH NIESPOZYWCZEGO} BEGIN tab[i].r_pro:='niespozywczy'; writeln('Podaj nazwe'); readln(naz); tab[i].nazwa:=naz; tab[i].nazwa:=naz; writeln('Podaj numer identyfikacyjny'); readln(ida); tab[i].id:=ida; writeln('Czy chcesz sprawdzic podany artykul? t/n'); readln(t); if t='t' then wypis(i,tab); END; END; END; {_______________SPRAWDZENIE DATY WAZNOSCI___________} procedure wyszukiwarka(i:integer;ile:integer; dzionek:dzi; mie:mies; ro:integer; tab:tablica; var wysz:tablica); var a:integer; d_war:boolean; ile_d:dzi; ile_m:mies; ile_r:integer; BEGIN for a:=1 to ile do begin if tab[i].r_pro='spozywczy' then begin if ro>=tab[i].waznosc.rok then begin d_war:=true; ile_r:=ro - tab[i].waznosc.rok; end; if mie>=tab[i].waznosc.miesiac then begin d_war:=true; ile_m:=mie - tab[i].waznosc.miesiac; end; if dzionek>=tab[i].waznosc.dzien then begin d_war:=true; ile_d:=dzionek - tab[i].waznosc.dzien; {ilosc dni} end; {_____wczytanie wynikow wyszukiwania_____} if d_war=true then begin a:=1; wysz[a].r_pro:=tab[i].r_pro; wysz[a].nazwa:=tab[i].nazwa; wysz[a].waznosc.dzien:=tab[i].waznosc.dzien; wysz[a].waznosc.miesiac:=tab[i].waznosc.miesiac; wysz[a].waznosc.rok:=tab[i].waznosc.rok; wysz[a].id:=tab[i].id; wysz[a].prze.dzien:=ile_d; wysz[a].prze.miesiac:=ile_m; wysz[a].prze.rok:=ile_r; end; end; writeln('nazwa: ',wysz[a].nazwa); writeln('przekroczylo: ',wysz[a].prze.dzien,'.',wysz[a].prze.miesiac,'.',wysz[a] .prze.rok); end; END; {____________PROGRAM GLOWNY_____________} BEGIN writeln('ile chcesz wpisac??'); readln(ile); for i:=1 to ile do wczyt(ile,i,tab,war); writeln('Czy chcesz sprawdzic produkty ktore utracyly date waznosci?'); readln(t); if t='t' then begin writeln('Podaj date dla korej chcesz sprawdzic date wznosci'); war:=false; {warunek do daty} dat(i,war,tab,dzionek,ro,mie); {wczytanie daty} wyszukiwarka(i,ile,dzionek,mie,ro,tab,wysz); {wyszukuje przekroczenie daty} end; writeln('KONIEC'); readln END.
zadanie:
napisz program ktory wczyta od uzytkownika artykuly spozywcze i niespozywcze a potem wyswetli produkty przekroczyły date waznosci w podanym termnie.
http://sfp.sztorm.ne.../index.php#e202
nooo, zgadnij skad to mam :>
Użytkownik Kajetanek edytował ten post 13 styczeń 2006, 21:03
Nie wiem czy to pomoże, ale przecież w Options->Memory sizes->Stack ustalasz wielkość stosu... ^_^ Więc po prostu ją powieksz ;]