Ładny brzuch

Witam,
potrzebuj Waszej pomocy drodzy programici. iaem TP w zeszym roku i do dzi wszystko zdyo mi si ulotni. Potrzebuj 2 naprawd prociutkie programiki z komentarzami w programie. Programy maj by dowolne, ale musz zawiera instrukcj wejcia i wyjcia [write(ln) oraz read(ln)], if, case, ptle. I opis co te programy robi. Bagam o pomoc.




(...) I opis co te programy robi. (...) No wanie - co one maj robi?? Poszukaj na google jakich przykadw (na 4p tez pewnie jest) ;)

Nie mam Pascala wic bde mwi z pamici:
program imie; var imie : string; begin Writeln('Podaj swoie imie'); Readln(imie); If (imie = Mateusz) then Writeln(imie + ': to fajne imie') else Writeln(imie + ': brzydkie imie'); end.
program test; var i : integer; begin for i := 1 to 5 do writeln(i) end.
program ocena var ocena : integer; begin writeln('Podaj ocene:'); readln(ocena); case ocena of 6:writeln('dobrze'); 5:writeln('dobrze'); 4:writeln('dobrze'); 3:writeln('le'); 2:writeln('zle'); 1:writeln('zle') else writeln('bd danych') end end.
Uytkownik Matpien3 edytowa ten post 20 maj 2005, 19:06
Dziki wielkie, ale to wszystko miao by chyba w jednym programie i z komentarzami.
Uytkownik Th0mas edytowa ten post 20 maj 2005, 19:11



Dziki wielkie, ale to wszystko miao by chyba w jednym programie i z komentarzami.

Zrobie may bd Matpien:
program imietwoje; var imie : string; begin  Writeln('Podaj swoie imie');  Readln(imie);  If (imie = 'Mateusz') then                 Writeln(imie,' : to fajne imie')              else                 Writeln(imie,' : brzydkie imie');  readln; end.
chodzi gwnie o ' ' przy Mateusz i program nie powinien mie takiej samej nazwy jak zmienne ( nie pamitam jak to jest w TP ale FP wywala bd), reszta ok, ale ja inaczej zapisuje :P
PS Thomas jak ma by w jednym programie to zrb z tego co masz pytanie o imi, potem o ocen swojego imienia, a potem z if dodasz komentarz typu 'wysoko sie cenisz' albo cos takiego. I bdzie :)
Uytkownik reVis edytowa ten post 20 maj 2005, 19:23
Sk w tym, e w tym roku mam C++ i mi si wszystko ju miesza. Teraz m si atwiejszym C++ wydaje i nawet takich prostackich rzeczy nie pamitam. Mgby to poczy?


PS Thomas jak ma by w jednym programie to zrb z tego co masz pytanie o imi, potem o ocen swojego imienia, a potem z if dodasz komentarz typu 'wysoko sie cenisz' albo cos takiego. I bdzie :)

Piski w goniczka :Duses crt; var a:shortint; begin clrscr; a:=20; repeat a:=a+1; sound(abs(a*40)); delay(10); if a=-20 then a:=20; if a=40 then a:=-40; until port[$60]=1; nosound; end.NWW i NWD liczb:program licz_nww; uses crt; var a, b:word; function NWD(a, b:word):word; var x, y, r:word; begin if a>b then begin x:=a; y:=b end else begin x:=b; y:=a; end; {x:=max(a,b ); y:=min(a,b );} r:=y; while (x mod y <> 0) do begin r:=x mod y; x:=y; y:=r; end; nwd:=r; end; function NWW(a, b:word):word; begin nww:=a*b div NWD(a,b ); end; begin clrscr; write('Podaj pierwsz liczb©: '); readln(a); write('Podaj drug liczb©: '); readln(b ); writeln('NWW tych liczb jest r˘wne ',nww(a,b )); readkey; end.Co do wielomianw ;)uses crt, graph; procedure init(a,b:integer); begin initgraph(a,b,'.\egavga.bgi'); end; var a:array[0..255]of real; i, l, k:integer; x, y:real; s:string; function power(x, a:longint):longint; var i, b:longint; begin b:=1; if a=0 then begin power:=1; exit; end; if a=1 then begin power:=x; exit; end; for i:=1 to a do b:=b*x; power:=b; end; begin clrscr; l:=0; writeln('-------------------------------------------------------------'); writeln('Program obliczajacy wartosc wielomianu i rysujacy jego wykres'); writeln; write('Podaj ilosc wspolczynnikow: '); readln(l); for i:=1 to l do begin write('Wspolczynnik nr ',i,' : '); readln(s); val(s,a[i-1],k); if k<>0 then begin writeln('Miales/as podac liczbe!'); dec(i); continue; end; end; write('Podaj X, dla ktorego mam obliczyc wartosc wielomianu: '); readln(s); val(s,x,k); if k=0 then begin y:=0; for i:=0 to l-1 do y:=y+a[i]*power(round(x),i+1); end; writeln(y:4:4); writeln('Nacisnij DOWOLNY klawisz, aby zobaczyc wykres wielomianu :)'); readkey; init(9,2); moveto(getmaxx div 2,0); lineto(getmaxx div 2,getmaxy); moveto(0,getmaxy div 2); lineto(getmaxx,getmaxy div 2); setbkcolor(3); setcolor(4); x:=-40; setlinestyle(solidln,1,3); repeat y:=0; for i:=0 to l-1 do y:=y+a[i]*power(round(x),i+1); if x=-40 then moveto(round(getmaxx div 2+x*8),round(getmaxy div 2+y/4)); lineto(round(getmaxx div 2+x*8),round(getmaxy div 2+y/4)); moveto(round(getmaxx div 2+x*8),round(getmaxy div 2+y/4)); x:=x+1; until x=41; readkey; end.Obliczanie silni:program progsilnia; uses crt; var silnia, i, a:integer; begin silnia:=1; a:=0; clrscr; write('Silnia z: '); readln(a); for i:=1 to a do silnia:=silnia*i; writeln(silnia); readkey; end.
Uytkownik Cyrkiel edytowa ten post 01 czerwiec 2005, 21:09
No to masz taki jeden dziwny prog ktry wyszed z poczenia wczeniejszych:
program zadanie; uses crt; var last,imie:string; ocena:integer; begin  clrscr;  repeat    write('Podaj swoje imie: ');    readln(imie);    if imie='' then writeln('BLAD ');  until imie<>'';  writeln(imie,' to raczej ladne imie :)');  repeat;    write('A jak Ty je oceniasz (1-6) : ');    readln(ocena);    case ocena of      1: writeln('Tak nisko, to zle');      2: writeln('Tak nisko, to zle');      3: writeln('No nie jest tak zle jak myslalem :)');      4: writeln('No nawet lubisz swoje imie');      5: writeln('Widze ze lubisz bardzo swoje imie');      6: writeln('WOW;)');      else writeln('BLAD');    end;  until (ocena>=1) and (ocena<=6);  write('Wlasnie uswiadomilem sobie, ze');  last:=(copy(imie,length(imie),1));  if (last='a') or (last='A') then                                writeln(' jestes kobieta :D')                              else                                writeln(' jestes mezczyzna');  writeln('W kazdym razie do zobaczenia');  readln; end.
No dziwnie bedzie to wygladac dla imienia Kuba, ale jako to chyba przeyjesz :)

Mam pomys na drugi program. Moe obliczanie pola lub (i) obwodu jakej figury i wywietlenie na ekranie napisu jaka to figura?
A za te napisane dzikuj :)

Przepraszam, e mc... potrzebuj 2 programy. Oba do oblczania pola jakiej figury. W jednym naley uy instrukcji if, a w drugim case. A na przykad w FOR bdzie decydowa o iloci bokw np for 3 do rzeczy dla trjkta, for 4 do rzeczy dla czworokta itd.
Uytkownik Th0mas edytowa ten post 20 maj 2005, 21:02
tej ty ale marudzisz :/

nie mog patrze na to.

masz tu program jeden.

a drugi wklejam bez komentarza, moesz sam sobie zakomentowa

program oczko; uses crt; var {wszystkie zmienne oglne nie licze zmienny i i j bo to s zwyke liczniki maja posta gNazwaZmiennej, uNazwaZmiennej lub kNazwaZmiennej g - gra zmienne z ktrych korzysta gra ale nie gracze u - uytkownik zmienne na ktrych operuje uzytkownik w trakcie gry, ludzki uzytkownik k - tak jak u tylko e w odniesieniu do komputera} gTalia:array[1..52] of integer; {deklarujemy tablic typu integer, ktra bdzie odzwierciedla tali kart. w talii s 52 karty} gTalia1:array[1..13]of integer; {deklarujemy pomocnicz tablic ktra bdzie reprezentowa wartoci w kolorach oczywicie w grze nie ma kolorw wic po prostu zliczamy w tej tablicy ilo wystpie konkretnej karty. oczywiste przecie jest e nie moemy wylosowa z jednej talii 5 semek} gPrzetwornik, gRundy:integer; {gPrzetwornik - zmienna pomocnicza, dziki niej bdziemy mogli zczytywa wcinite klawisze gRundy - zmienna w ktrej przechowywa bdziemy ile rund zagramy} uSuma, uWygrane, uPrzegrane:integer; {uSuma - suma oczek wszystkich wycignitych do tej pory kart przez uytkownika uWygrane - ilo wygranych rund uPrzegrane - ilo przegranych rund} kSuma:integer; {kSuma - suma oczek wszystkich wycignitych przez komputer kart} i,j:integer; {i,j - zmienne pomocnicze pozwalajce stosowa na przykad ptle} label 1,2,3,4,5,6,7,8,9,10,11; {labels - czyli etykiety. sa to miejsca ktre bdziemy mogli oznaczy w programie. po co? po to eby znale si na przykad dalej w kodzie programu, albo wczeniej. zobaczysz z reszt w trakcie} BEGIN 1: ClrScr; {1: - jest to ustawienie pierwszej etykiety. jest to punkt do ktrego moemy si odwoywa}   WriteLn('Witamy grze w Oczko');   WriteLn('1 - Nowa gra');   WriteLn('2 - Koniec');   gPrzetwornik := Ord(Readkey);   {funkcja Ord z pakietu crt zwraca nam warto kodu ascii (integer) podanego w nawiasach znaku np tak Ord ('A')   w tym wypadku znak ten zwraca   funkcja ReadKey, ktra zczytuje pojedynczy klawisz wcinity na klawiaturze}   case gPrzetwornik of    49: goto 2;    50: exit;    else     goto 1;   end;   {cay blok case zmienna of suy wprowadzeniu kilku warunkw   zamiast stosowa takie co   if warunek then   instrukcje   else   if warunek then   instrukcje (moemy to zagbiac w nieskoczono)   stosujemy   case (zmienna ktra bdzie w naszym warunku)) of   (tu podajemy list warunkw)   1: instrukcje (jeeli zmienna przyjmie warto jeden to zrb instrukcje)   67: instrukcje (jeeli zmienna przyjmie warto 67 to zrb intrukcje)   else   instrukcje (jeeli nie by speniony aden z powyszych warunkw wykonaj instrukcje po else)   no wic mamy nasz przetwornik czyli kod ascii wcinitego klawisza i przetwarzamy   jeeli przetwornik jest rwny 49 (wcinito 1) goto 2 - goto jak sam napis angielski wskazuje mwi tyle co id do dwa.   dwa jest umieszczone poniej. to jest take etykieta. teraz ju wiadomo po co nam etykiety. moemy dowolnie skaka po programie   jeeli gPrzetwornik jest rwne 50 (wcinito 2) wyjd z programu   jeeli nacinito cokolwiek innego id do 1 czyli w naszym przypadku wr na pocztek programu} 2: ClrScr;   uSuma := 0;   uWygrane := 0;   uPrzegrane := 0;   gRundy := 0;   kSuma := 0;   {wyzerowalismy nasze zmienne, poniewa program umoliwia rozegranie dowolnej iloci gier (nie myli z rundami)   dlatego tutaj musimy je zerowa eby nie pozostay w nich wartoci z poprzedniej gry}   {CO CO SI POWTARZA I BYO WYTUMACZONE WCZENIEJ NIE BDZIE ZAKOMENTOWANE}   WriteLn('Ile rund chcesz rozegrac (1-9)?');   gPrzetwornik := Ord(ReadKey);   while (gPrzetwornik>57) or (gPrzetwornik<49) do {gPrzetwornik wikszy od 57 lub mniejszy od 49 oznacza tyle e nacinito inny klawisz ni numeryczny}   begin    ClrScr;    WriteLn('Niestety nie mozemy rozegrac tylu rund');    WriteLn('Ile rund chcesz zagrac (1-9)?');    gPrzetwornik := Ord(ReadKey);   end;   case gPrzetwornik of    49: gRundy := 1; {kod ascii 49 = 1}    50: gRundy := 2; {kod ascii 50 = 2}    51: gRundy := 3; {kod ascii 51 = 3}    52: gRundy := 4; {kod ascii 52 = 4}    53: gRundy := 5; {kod ascii 53 = 5}    54: gRundy := 6; {kod ascii 54 = 6}    55: gRundy := 7; {kod ascii 55 = 7}    56: gRundy := 8; {kod ascii 56 = 8}    57: gRundy := 9; {kod ascii 57 = 9}   end;   {mamy teraz ustawion ilo rund jakie rozegramy}   ClrScr;   WriteLn('Gramy w Oko na ',gRundy, ' rund.');   j := gRundy;   {pod zmienna pomocnicz j podstawiamy iloc rund jakie rozegramy}   while j>0 do  {dopki j > 0 bdziemy powatrza cay cykl rundy, czyli to co jest od teraz to jest jedna runda rozgrywki}   begin    Write('Tasuje talie');    Randomize;    {Randomize - funkcja z biblioteki crt; dziki ktrej bdziemy w stanie wybiera losowe liczby}    for i := 1 to 13 do     gTalia1[i] := 0;     {zerujemy nasz tablice pomocnicz}    i := 0;    {i podstawiamy zero, to bdzie nasz licznik dopki nie zapenimy naszej tablicy gTalia (czyli pki nie wylosujemy wszystkich    "kart"}    while i < 52 do {dopki i jest mniejsze od 52 czyli dopki tablica nie jest zapeniona}    begin     gPrzetwornik := Random (13) + 1;     {zmienna pomocnicza gPrzetwornik przechowa nam warto aktualnie wylosowanej liczby     funkcja Random(x) losuje liczb z zakresu od 0 do x-1 dlatego na kocu dodajemy jeden. nie interesuje nas zakres od 0 do 12     tylko od 1 do 13 dla uproszczenia     1 - as     2 - 2     ...     9 - 9     10 - 10     11 - walet     12 - dama     13 - krl}     {Tablica gTalia1 spraqwdzi ile ju wylosowalimy kart danego rodzaju. jeeli jej warto dla przykadu gTalia1[5] bdzie     wynosic 3 bdzie oznacza to e wylosowalimy ju trzy pitki. czyli nadal moemy polosowa sobie jeszcze jedn pitk.     gdyby bya rwna cztery to program polosuje nastpna liczb. bdzie to si dziao tak dugo a gTalia1 dla 1 do 13 nie bdzie zapeniona czwrkami}     if gTalia1[gPrzetwornik] <> 4 then {jeeli wartoc w naszej tablicy pomocniczej bdzie mniejsza od 4     oznacz to e mamy moliwo jeszcze losowa kart danego rodzaju}     begin      i := i + 1;      {wtedy nasz licznik zswikszamy o jeden}      gTalia1[gPrzetwornik] := gTalia1[gPrzetwornik] + 1;      {w tablicy pomocniczej zmieniamy iloc wylosowanych kart tego typu o jeden}      case gPrzetwornik of       11: gPrzetwornik := 2; {jeeli wylosowano 11 (waleta) zmienna pomocnicza = 2 bo walet ma dwa oczka}       12: gPrzetwornik := 3; {jeeli wylosowano 12 (dam) pomocnicza = 3 dama ma 3 oczka}       13: gPrzetwornik := 4; {jak wyej ale dla krla krl ma 4 oczka}       1: gPrzetwornik := 11; {jeeli wylosowano jeden (as) wtedy iloc oczek 11}      end;      gTalia[i] := gPrzetwornik;      {do tablicy gwnej wstawiamy ilo oczek wylosowanej karty}     end;     if (i mod 13 = 0) and (i > 0) then {jeeli i bdzie podzielne przez 13 i wiksze  od zwera to dopisze kropeczk.     to nam daje tylko wraenie animacji przy tasowaniu. zwikszajca si ilo kropek}     begin      Write('.');      Delay(300); {delay funkcja z biblioteki crt. w nawiasie podaje si warto w milisekundach na jaka ma zosta zwieszone      dziaanie programu. czyli w tym miejscu program zatrzymuje si na 300 milisekund = 0,3 sekundy a nastpnie kontynuuje od tego      samego miejsca}     end;    end;    WriteLn; 3:  WriteLn('Potasowalem karty. Do dziela! ');    WriteLn('Zaczynamy?');    WriteLn('t - Tak');    WriteLn('n - Nie');    gPrzetwornik := Ord(ReadKey);    case gPrzetwornik of     110: exit; {110 kod ascii dla litery n, exit wyjcie z programu}     116: goto 4 {116 kod ascii dla litery t goto (skocz) do 4 (par lini niej)}    else     goto 3; {aqni t ani n , skocz wtedy do 3}    end;    ClrScr;    i:=1; {jeeli gramy to i = 1 czyli ustawiamy si na pierwszy element naszej talii. }    uSuma := uSuma + gTalia[i];    {sum oczek uytkownika zwikszamy o element na miejscu i w talii} 4:  ClrScr;    WriteLn('Rund: ', gRundy , ' Twoje wygrane: ', uWygrane, ' Twoje przegrane: ', uPrzegrane);    WriteLn;    TextColor(yellow);    {textcolor zmienia kolor czcionki na ten w nawiasie.}    WriteLn('Twoja pierwsza karta ma tyle oczek ', gTalia[i]);    TextColor(white);    WriteLn;    WriteLn('Czy chcesz dobrac nastepna karte?');    WriteLn('t - Tak');    WriteLn('n - Nie');    gPrzetwornik := Ord(ReadKey); {patrz wyej}    case gPrzetwornik of     110: goto 6;     116:     begin      uSuma := uSuma + gTalia[i];      goto 5;     end    else     goto 4;    end; 5:  i:=i+1;    uSuma := uSuma + gTalia[i];    if uSuma > 21 then {sprawdzamy czy przypadkiem iloc oczek uytkownika nie jest wiksza ni 21. jeeli tak to skocz do 9}     goto 9; 7:  ClrScr;    WriteLn('Rund: ', gRundy , ' Twoje wygrane: ', uWygrane, ' Twoje przegrane: ', uPrzegrane);    WriteLn;    TextColor(yellow);    WriteLn('Suma oczek pobranych kart wynosi ', uSuma);    TextColor(white);    WriteLn;    WriteLn('Czy chcesz dobrac nastepna karte?');    WriteLn('t - Tak');    WriteLn('n - Nie');    gPrzetwornik := Ord(ReadKey); {patrz wyej}    case gPrzetwornik of     110: goto 6;     116:     begin      uSuma := uSuma + gTalia[i];      goto 5;     end;    else     goto 7;    end; 6:  ClrScr;    WriteLn('Rund: ' ,gRundy , ' Twoje wygrane: ', uWygrane, ' Twoje przegrane: ' ,uPrzegrane);    WriteLn;    TextColor(yellow);    WriteLn('Suma twoich oczek wynosi ', uSuma);    TextColor(white);    WriteLn; 9:  if uSuma > 21 then {jeeli oprzekroczylimy 21 to przegralimy}    begin     uPrzegrane := uPrzegrane + 1;     ClrScr;     WriteLn('Suma Twoich oczek: ', uSuma);     WriteLn('Rund: ', gRundy , ' Twoje wygrane: ', uWygrane, ' Twoje przegrane: ', uPrzegrane);     WriteLn('Niestety przegrales. Przejdzmy do nastepnej rundy');     WriteLn('Nacisnij dowolny klawisz');     ReadKey;     ClrScr;     {i teraz trzeba zrobi tak eby komputerowi chciao si z nami zagra}    end    else    begin     WriteLn('Rund: ' ,gRundy , ' Twoje wygrane: ', uWygrane, ' Twoje przegrane: ', uPrzegrane);     WriteLn('To teraz ja sprobuje uzyskac lepszy wynik od Twojego. Nacisnij dowolny klawisz');     ReadKey; 10:  i:=i+1; {po kolei bierzemy sobie nastpne elementy z tali}     kSuma := kSuma + gTalia[i];     ClrScr; 8:   TextColor(yellow);     WriteLn('Suma moich oczek wynosi ', kSuma);     TextColor(white);     if kSuma <= 17 then {tutaj dajemy inteligencj komputerowi. bdzier dobiera     karty zawsze dopki suma jego oczek bdzie mniejsza od 18}     begin      WriteLn('Sporbuje pociagnac jeszcze jedna. Nacisnij dowolny klawisz');      ReadKey;      goto 10;     end     else     begin     {tutaj zaczynamy sprawdza kto wygra}      if (kSuma < uSuma) or (kSuma>21) then {jeeli mamy wicej oczek ni komp lub komp przekroczy 21      wtedy wygralimy}      begin       uWygrane := uWygrane + 1; {zwikszamy zmienna naszych wygranych o jeden}       WriteLn('Brawo wygrales ta runde! Nacisnij dowolny klawisz');       ReadKey;      end      else      begin       if kSuma = uSuma then {jeeli mamy tyl;e samo oczek co komp to mamy remis}       begin        WriteLn('No coz. W tej rundzie mamy remis. Nacisnij dowolny klawisz');        ReadKey;       end       else       begin {no c moze si zdarzy e komp wygra}        uPrzegrane := uPrzegrane + 1;        WriteLn('Teraz niestety przegrales. Postaraj sie lepiej. Nacisnij dowolny klawisz');        ReadKey;       end;      end;     end;    end;   j:= j - 1; {zmniejszamy zmienna pomocnicz eby ptla nie bya nieskoczona}   uSuma := 0;   kSuma := 0;   {obydwie sumy zerujemy eby monabyo z nich skorzysta w nastpnej rundzie}   end;   ClrScr;     {no i wypisujemy wyniki}   WriteLn('A oto wyniki naszego spotkania:');   WriteLn('Rozegranych rund: ' , gRundy);   WriteLn('Twoich wygranych: ', uWygrane);   WriteLn('Twoich przegranych: ', uPrzegrane);   WriteLn('Remisow: ', gRundy - uWygrane - uPrzegrane);   WriteLn('Nacisnij dowolny klawisz');   ReadKey;   ClrScr; 11:WriteLn('Jeszcze raz?');   WriteLn('t - Tak');   WriteLn('n - Nie');   gPrzetwornik := Ord(ReadKey);   case gPrzetwornik of    116: goto 1;    110: exit   else    ClrScr;    goto 11;   end; END.

program Biblioteka; uses crt; {dolaczamy biblioteke crt dzieki ktorej bedziemy mogli skorzystac z roznych pozytecznych funkcji na przyklad ReadKey} type PKsiazka = ^TKsiazka; {definiujemy typ wskaznikowy}     TKsiazka = Record     {rejestrujemy nowy typ...}       Tytul:String;       {...w sklad ktorego wchodzi string...}       Autor:String;       {...nastepny string...}       id:integer;       {...integer...}       wypozyczona:integer;       {...i jeszcze jeden integer...}       Knx:PKsiazka;       Kpr:PKsiazka;       {...oraz dwa wskazniki Knx = Ksiazka next       Kpr = Ksiazka previous} end; {teraz tlumacze teorie listy. Lista to wiadomo pewien komponent skladajacy sie z mniejszych czesciowych cos jak tablica z mala roznica. Rozmiar listy na poczatku nie jest i nie musi byc znany. w powyzszym przykladzie zdefiniowalismy element typu TKsiazka. Bedzie to jeden z elementow listy trzymajacy nam wszystkie informacje dotyczace ksiazek. aaaa. bardzo wazne. element PLista to jest wskaznik. Jak lista dziala? dziala na zasadzie wskaznikow do adresow w pamieci gdzie przechowujemy interesujace nas dane. :) w typie TKsiazka zdefiniowalem dwa wskazniki Knx i Kpr. jeden bedzie wskazywal na nastepna ksiazke a drugi na poprzednia :) dzieki temu tworzymy liste dwukierunkowa cyliczna. dlaczego cykliczna? bo wskaznik Knx ostatniego elementu bedzie wskazywal na pierwszy element a Kpr pierwszego elementu bedzie wskazywal na ostatni element. :) } type PUzytkownik = ^TUzytkownik;     TUzytkownik = Record       Imie:String;       Nazwisko:String;       Adres:String;       id:integer;       Unx:PUzytkownik;       Upr:PUzytkownik; end; {tutaj definicja elementu listy uzytkownikow} {cala prostota programu polega na to ze elementy poszczegolnych list beda ladowane z plikow. tak zeby moznabylo sobie ze spokojem zapisac uzytkownikow ksiazki czy wypozyczenia. zeby korzystac z programu trzeba bedzie odpowiednie pliki tekstowe (ksiazki.txt uzytkownicy.txt ) umiescic bezposrednio na dysku c :) wspomniane pliki zalaczam do maila} var tmpUzytkownik:PUzytkownik; tmpKsiazka:PKsiazka; tmp1:PKsiazka; tmp3:PUzytkownik; {zmienne pomocnicze} ActiveUzytkownik:PUzytkownik; ActiveKsiazka:PKsiazka; {zmienne ktore beda nam przechowywac biezace elementy z listy uzytkownikow i ksiazek} wskaznik:integer; {zmienna ktora bedziemy wykorzystywac do poruszania sie po menu naszego programu :)} {teraz bede definiowal zwykle zmienne potrzebne do spokojnego dzialanie programu} IndexKsiazka, IndexUzytkownik, wypozyczona:integer; {te beda nam trzymac ilosc ksiazek i uzytkownikow} Nazwisko, Imie, Adres, Tytul, Autor:String; {te zmienne beda potrzebne przy dodawaniu nowych elementow listy} Ksiazka, Uzytkownik:Text; {zmienne odnoszace sie do pliku tekstowych} label 1,2,3,4,5,8,9,10,11,12,13,14,15,16,17,18; {etykiety beda nam wskazywac miejsca do ktorych w odpowiednich miejscach sie odwolamy przy roznych zdarzeniach konstrukcja jest prosta gdzies w kodzie programu ustawiam taki znacznik 1: tu mam ustawiona etykiete pierwsza i gdziekolwiek bym sie nie odwolal w programie instrukcja goto 1; zawsze zostanie wykonany skok do miejsca oznaczonego etykieta pierwsza.} BEGIN    {Na poczatek przypiszemy odpowiednie pliki tekstowe do naszych zmiennych    a pozniej je otworzymy i odczytamy zawartosci tworzac nowe elementy    list. Po wczytaniu zamkniemy pliki zeby pozniej mozna je    bylo otworzyc do zapisu}    Assign(Ksiazka, 'c:\ksiazki.txt');    Reset(Ksiazka);    IndexKsiazka:=0;    IndexUzytkownik := 0;    {tworzymy liste ksiazek}    while not eof(Ksiazka) do    begin     tmpKsiazka := new (PKsiazka);     ReadLn(Ksiazka, Tytul);     tmpKsiazka^.Tytul := Tytul;     ReadLn(Ksiazka, Autor);     tmpKsiazka^.Autor := Autor;     IndexKsiazka := IndexKsiazka + 1;     tmpKsiazka^.id := IndexKsiazka;     ReadLn(Ksiazka, wypozyczona);     tmpKsiazka^.wypozyczona := wypozyczona;     if IndexKsiazka = 1 then     begin      ActiveKsiazka := tmpKsiazka;      ActiveKsiazka^.Knx := ActiveKsiazka;      ActiveKsiazka^.Kpr := ActiveKsiazka;      tmp1 := ActiveKsiazka;     end     else     begin      tmpKsiazka^.Kpr := tmp1;      tmpKsiazka^.Knx := ActiveKsiazka;      tmp1^.Knx^.Kpr := tmpKsiazka;      tmp1^.Knx := tmpKsiazka;      tmp1 := tmpKsiazka;     end;    end;    Close(Ksiazka);    Assign(Uzytkownik, 'c:\users.txt');    Reset(Uzytkownik);    {tworzymy liste uzytkownikow}    while not eof(Uzytkownik) do    begin     tmpUzytkownik := new (PUzytkownik);     ReadLn(Uzytkownik, Imie);     tmpUzytkownik^.Imie := Imie;     ReadLn(Uzytkownik, Nazwisko);     tmpUzytkownik^.Nazwisko := Nazwisko;     IndexUzytkownik := IndexUzytkownik + 1;     tmpUzytkownik^.id := IndexUzytkownik;     ReadLn(Uzytkownik, Adres);     tmpUzytkownik^.Adres := Adres;     if IndexUzytkownik = 1 then     begin      ActiveUzytkownik := tmpUzytkownik;      ActiveUzytkownik^.Unx := ActiveUzytkownik;      ActiveUzytkownik^.Upr := ActiveUzytkownik;      tmp3 := ActiveUzytkownik;     end     else     begin      tmpUzytkownik^.Upr := tmp3;      tmpUzytkownik^.Unx := ActiveUzytkownik;      tmp3^.Unx^.Upr := tmpUzytkownik;      tmp3^.Unx := tmpUzytkownik;      tmp3 := tmpUzytkownik;     end;    end;    Close(Uzytkownik); {wypisujemy menu glowne} 1:  ClrScr;    {funkcja z biblioteki crt, czysci ekran}    TextColor(yellow);    {zmieniamy kolor tekstu w programie na zolty, funkcja z bibl crt}    WriteLn('Program Biblioteka Witamy');    GotoXY(1,35);    {funkcja z bil crt przenosi kursor do wskazanego miejsca na ekranie}    WriteLn('Wybierz opcje: ');    WriteLn('1 - nowy uzytkownik');    WriteLn('2 - nowa ksiazka');    WriteLn('3 - usun uzytkownika');    WriteLn('4 - usun ksiazke');    WriteLn('5 - przegladaj uzytkownikow');    WriteLn('6 - przegladaj ksiazki');    Write('7 - wyjdz z programu  ');    wskaznik := Ord(ReadKey);    {zczytujemy wybor uzytkownika funkcja ord zwraca    nam kod ascii wcisnietego klawisza}    case wskaznik of    {konstrukcja case multi wybor}    49:    {wybrano 1 [zajrzyj do jakiegos info o kodach ASCII]}     goto 2;     {skaczemy do etykiety 2}    50:    {wybrano 2}     goto 3;     {skaczemy do etykiety 3}    51:     goto 4;    52:     goto 5;    53:     goto 10;    54:     goto 9;    55:     goto 8;    else     goto 1;    end; {teraz dodamy nowego uzytkownika} 2:  ClrScr;    WriteLn('Program Biblioteka Witamy');    Write('Podaj nazwisko uzytkownika: ');    ReadLn(Nazwisko);    Write('Podaj imie uzytkownika: ');    ReadLn(Imie);    Write('Podaj adres uzytkownika: ');    ReadLn(Adres);    tmpUzytkownik := new (PUzytkownik);    tmpUzytkownik^.Imie := Imie;    tmpUzytkownik^.Nazwisko := Nazwisko; 11: ClrScr;    WriteLn('Program Bibliotek Witamy');    WriteLn;    WriteLn(Nazwisko, ' ', Imie, ' Adres: ', Adres);    GotoXY(1,35);    WriteLn('Czy zapisac?');    WriteLn('1 - zapisz');    Write('2 - zrezygnuj');    wskaznik := Ord(ReadKey);    case wskaznik of    49:    begin     IndexUzytkownik := IndexUzytkownik + 1;     tmpUzytkownik^.id := IndexUzytkownik;     tmpUzytkownik^.Adres := Adres;     if IndexUzytkownik = 1 then     begin      ActiveUzytkownik := tmpUzytkownik;      ActiveUzytkownik^.Unx := ActiveUzytkownik;      ActiveUzytkownik^.Upr := ActiveUzytkownik;      tmp3 := ActiveUzytkownik;     end     else     begin      tmpUzytkownik^.Upr := tmp3;      tmpUzytkownik^.Unx := ActiveUzytkownik;      tmp3^.Unx^.Upr := tmpUzytkownik;      tmp3^.Unx := tmpUzytkownik;      tmp3 := tmpUzytkownik;     end;     ReWrite(Uzytkownik);     WriteLn(Uzytkownik, ActiveUzytkownik^.Imie);     WriteLn(Uzytkownik, ActiveUzytkownik^.Nazwisko);     WriteLn(Uzytkownik, ActiveUzytkownik^.Adres);     tmpUzytkownik := ActiveUzytkownik;     while tmpUzytkownik^.Unx <> ActiveUzytkownik do     begin      tmpUzytkownik := tmpUzytkownik^.Unx;      WriteLn(Uzytkownik, tmpUzytkownik^.Imie);      WriteLn(Uzytkownik, tmpUzytkownik^.Nazwisko);      WriteLn(Uzytkownik, tmpUzytkownik^.Adres);     end;     Close(Uzytkownik);    end;    50:     goto 1;    else     goto 11;    end;    goto 1; 3:  ClrScr;    WriteLn('Program Biblioteka Witamy');    Write('Podaj tytul ksiazki: ');    ReadLn(Tytul);    Write('Podaj autora: ');    ReadLn(Autor);    tmpKsiazka := new (PKsiazka);    tmpKsiazka^.Tytul := Tytul;    tmpKsiazka^.Autor := Autor;    tmpKsiazka^.wypozyczona := 0; 14: ClrScr;    WriteLn('Program Bibliotek Witamy');    WriteLn;    WriteLn(Tytul, ' ', Autor);    GotoXY(1,35);    WriteLn('Czy zapisac?');    WriteLn('1 - zapisz');    Write('2 - zrezygnuj');    wskaznik := Ord(ReadKey);    case wskaznik of    49:    begin     IndexKsiazka := IndexKsiazka + 1;     tmpKsiazka^.id := IndexKsiazka;     if IndexKsiazka = 1 then     begin      ActiveKsiazka := tmpKsiazka;      ActiveKsiazka^.Knx := ActiveKsiazka;      ActiveKsiazka^.Kpr := ActiveKsiazka;      tmp1 := ActiveKsiazka;     end     else     begin      tmpKsiazka^.Kpr := tmp1;      tmpKsiazka^.Knx := ActiveKsiazka;      tmp1^.Knx^.Kpr := tmpKsiazka;      tmp1^.Knx := tmpKsiazka;      tmp1 := tmpKsiazka;     end;     ReWrite(Ksiazka);     WriteLn(Ksiazka, ActiveKsiazka^.Tytul);     WriteLn(Ksiazka, ActiveKsiazka^.Autor);     WriteLn(Ksiazka, ActiveKsiazka^.wypozyczona);     tmpKsiazka := ActiveKsiazka;     while tmpKsiazka^.Knx <> ActiveKsiazka do     begin      tmpKsiazka := tmpKsiazka^.Knx;      WriteLn(Ksiazka, tmpKsiazka^.Tytul);      WriteLn(Ksiazka, tmpKsiazka^.Autor);      WriteLn(Ksiazka, tmpKsiazka^.wypozyczona);     end;     Close(Ksiazka);    end;    50:     goto 1;    else     goto 14;    end;    goto 1; 8:  ClrScr;    WriteLn('Program Biblioteka Witamy');    GotoXY(1,35);    WriteLn('Na pewno chcesz zakonczyc???');    WriteLn('1 - tak');    WriteLn('2 - nie');    wskaznik := Ord(ReadKey);    case wskaznik of    49:     exit;    50:     goto 1;    else     goto 8;    end; 4:  tmpUzytkownik := ActiveUzytkownik; 15: ClrScr;    WriteLn('Program Biblioteka Witamy');    WriteLn('Uzytkownik:');    WriteLn('Nazwisko: ', tmpUzytkownik^.Nazwisko);    WriteLn('Imie: ', tmpUzytkownik^.Imie);    WriteLn('Adres: ', tmpUzytkownik^.Adres);    WriteLn('ID: ', tmpUzytkownik^.id);    GotoXY(1,35);    WriteLn('Wybierz opcje:');    WriteLn('1 - menu glowne');    WriteLn('2 - usun tego uzytkownika');    WriteLn('n - nastepny uzytkownik');    Write('p - poprzedni uzytkownik');    wskaznik := Ord(ReadKey);    case wskaznik of    49:     goto 1;    50:    begin     tmpUzytkownik^.Unx^.Upr := tmpUzytkownik^.Upr;     tmpUzytkownik^.Upr^.Unx := tmpUzytkownik^.Unx;     if tmpUzytkownik = ActiveUzytkownik then      ActiveUzytkownik := tmpUzytkownik^.Unx;     Release(tmpUzytkownik); 18:  ClrScr;     GotoXY(1,35);     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     GotoXY(1,35);     WriteLn('Czy chcesz zapisac zmiany?');     WriteLn('1 - zapisz');     WriteLn('2 - rezygnuj');     wskaznik := Ord(ReadKey);     case wskaznik of     49:     begin      ReWrite(Uzytkownik);      WriteLn(Uzytkownik, ActiveUzytkownik^.Imie);      WriteLn(Uzytkownik, ActiveUzytkownik^.Nazwisko);      WriteLn(Uzytkownik, ActiveUzytkownik^.Adres);      tmpUzytkownik := ActiveUzytkownik;      while tmpUzytkownik^.Unx <> ActiveUzytkownik do      begin       tmpUzytkownik := tmpUzytkownik^.Unx;       WriteLn(Uzytkownik, tmpUzytkownik^.Imie);       WriteLn(Uzytkownik, tmpUzytkownik^.Nazwisko);       WriteLn(Uzytkownik, tmpUzytkownik^.Adres);      end;      Close(Uzytkownik);      goto 1;     end;     50:      goto 1;     else      goto 18;     end;    end;    110:    begin     tmpUzytkownik := tmpUzytkownik^.Unx;     goto 15;    end;    78:    begin     tmpUzytkownik := tmpUzytkownik^.Unx;     goto 15;    end;    112:    begin     tmpUzytkownik := tmpUzytkownik^.Upr;     goto 15;    end;    80:    begin     tmpUzytkownik := tmpUzytkownik^.Upr;     goto 15;    end;    else     goto 15;    end; 5:  tmpKsiazka := ActiveKsiazka; 16: ClrScr;    WriteLn('Program Biblioteka Witamy');    WriteLn('Ksiazka:');    WriteLn('Tytul: ', tmpKsiazka^.Tytul);    WriteLn('Autor: ', tmpKsiazka^.Autor);    WriteLn('ID: ', tmpKsiazka^.id);    GotoXY(1,35);    WriteLn('Wybierz opcje:');    WriteLn('1 - menu glowne');    WriteLn('2 - usun ta ksiazke');    WriteLn('n - nastepna ksiazka');    Write('p - poprzednia ksiazka');    wskaznik := Ord(ReadKey);    case wskaznik of    49:     goto 1;    50:    begin     tmpKsiazka^.Knx^.Kpr := tmpKsiazka^.Kpr;     tmpKsiazka^.Kpr^.Knx := tmpKsiazka^.Knx;     if tmpKsiazka = ActiveKsiazka then      ActiveKsiazka := tmpKsiazka^.Knx;     Release(tmpKsiazka); 17:  ClrScr;     GotoXY(1,35);     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     WriteLn('                                             ');     GotoXY(1,35);     WriteLn('Czy chcesz zapisac zmiany?');     WriteLn('1 - zapisz');     WriteLn('2 - rezygnuj');     wskaznik := Ord(ReadKey);     case wskaznik of     49:     begin      ReWrite(Ksiazka);      WriteLn(Ksiazka, ActiveKsiazka^.Tytul);      WriteLn(Ksiazka, ActiveKsiazka^.Autor);      WriteLn(Ksiazka, ActiveKsiazka^.wypozyczona);      tmpKsiazka := ActiveKsiazka;      while tmpKsiazka^.Knx <> ActiveKsiazka do      begin       tmpKsiazka := tmpKsiazka^.Knx;       WriteLn(Ksiazka, tmpKsiazka^.Tytul);       WriteLn(Ksiazka, tmpKsiazka^.Autor);       WriteLn(Ksiazka, tmpKsiazka^.wypozyczona);      end;      Close(Ksiazka);      goto 1;     end;     50:      goto 1;     else      goto 17;     end;    end;    110:    begin     tmpKsiazka := tmpKsiazka^.Knx;     goto 16;    end;    78:    begin     tmpKsiazka := tmpKsiazka^.Knx;     goto 16;    end;    112:    begin     tmpKsiazka := tmpKsiazka^.Kpr;     goto 16;    end;    80:    begin     tmpKsiazka := tmpKsiazka^.Kpr;     goto 16;    end;    else     goto 16;    end; 9:  tmpKsiazka := ActiveKsiazka; 13: ClrScr;    WriteLn('Program Biblioteka Witamy');    WriteLn('Ksiazka:');    WriteLn('Tytul: ', tmpKsiazka^.Tytul);    WriteLn('Autor: ', tmpKsiazka^.Autor);    WriteLn('ID: ', tmpKsiazka^.id);    GotoXY(1,35);    WriteLn('Co dalej?');    WriteLn('1 - menu glowne');    WriteLn('n - nastepna ksiazka');    Write('p - poprzednia ksiazka ');    wskaznik := Ord(ReadKey);    case wskaznik of    49:     goto 1;    110:    begin     tmpKsiazka := tmpKsiazka^.Knx;     goto 13;    end;    112:    begin     tmpKsiazka := tmpKsiazka^.Kpr;     goto 13;    end;    78:    begin     tmpKsiazka := tmpKsiazka^.Knx;     goto 13;    end;    80:    begin     tmpKsiazka := tmpKsiazka^.Kpr;     goto 13;    end;    else     goto 13;    end; 10: tmpUzytkownik := ActiveUzytkownik; 12: ClrScr;    WriteLn('Program Biblioteka Witamy');    WriteLn('Uzytkownik:');    WriteLn('Imie: ', tmpUzytkownik^.Imie);    WriteLn('Nazwisko: ', tmpUzytkownik^.Nazwisko);    WriteLn('Adres: ', tmpUzytkownik^.Adres);    WriteLn('ID: ', tmpUzytkownik^.id);    GotoXY(1,35);    WriteLn('Co dalej?');    WriteLn('1 - menu glowne');    WriteLn('n - nastepny uzytkownik');    Write('p - poprzedni uzytkownik ');    wskaznik := Ord(ReadKey);    case wskaznik of    49:     goto 1;    110:    begin     tmpUzytkownik := tmpUzytkownik^.Unx;     goto 12;    end;    112:    begin     tmpUzytkownik := tmpUzytkownik^.Upr;     goto 12;    end;    78:    begin     tmpUzytkownik := tmpUzytkownik^.Unx;     goto 12;    end;    80:    begin     tmpUzytkownik := tmpUzytkownik^.Upr;     goto 12;    end;    else     goto 12;    end; END.

mam nadziej e teraz ju ci starczy

//edit

i prosze si nie miac z komentarzy. one byy potrzebne bo pisaem ten program dla osoby kompletnie si na tym nie znajcej

//edit2

a tak w ogle to moecie sobie pokompilowa pierwsyz program i si pobawi :D ubaw umiarkowany ale cizko z nim wygra :)

thomas -> masz w nich wszystko

ptle, if, case, readkey, write, goto

co jeszcze mog dla ciebie zrobi?
Uytkownik j-mail edytowa ten post 21 maj 2005, 22:59
:blink: :roll1: to miay by naprawd krciutki programy dla naprawd pocztkujcego, a nie na tyle linijek kodu.. niepotrzebnie tak si napracowae ;) ale dzikuj.



Wszystko fajnie, ale wstaw wiksze kawaki w [ codebox ] [ /codebox ] ;)

cyrkiel dla ciebie wszystko. no moe oprcz grzechu. tak lepiej?


cyrkiel dla ciebie wszystko. no moe oprcz grzechu. tak lepiej?
DZIKIIII!!!!
Uytkownik Cyrkiel edytowa ten post 21 maj 2005, 23:45
czego si dziwujesz?

No nie wiem moe co takiego:

program jakistam; var i, x : Integer; begin writeln('Ile razy wykonac petle?'); readln(x); for i := 1 to x do begin writeln(i + ' wykonanie'); end; end.

Nie wiem czy dobrze, ale raczej tak.
sorka e bez wci, spieszyo mi si

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •