X
ďťż

Ładny brzuch

Witam,
potrzebuję Waszej pomocy drodzy programiści. iałem TP w zeszłym roku i do dziś wszystko zdążyło mi się ulotnić. Potrzebuję 2 naprawdę prościutkie programiki z komentarzami w programie. Programy mają być dowolne, ale muszą zawierać instrukcję wejścia i wyjścia [write(ln) oraz read(ln)], if, case, pętle. I opis co te programy robią. Błagam o pomoc.




(...) I opis co te programy robią. (...) No właśnie - co one mają robić?? Poszukaj na google jakichś przykładów (na 4p tez pewnie jest) ;)

Nie mam Pascala więc będe mówił z pamięci:
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('błąd danych') end end.
Użytkownik Matpien3 edytował ten post 20 maj 2005, 19:06
Dzięki wielkie, ale to wszystko miało być chyba w jednym programie i z komentarzami.
Użytkownik Th0mas edytował ten post 20 maj 2005, 19:11



Dzięki wielkie, ale to wszystko miało być chyba w jednym programie i z komentarzami.

Zrobiłeś mały błąd 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 głównie o ' ' przy Mateusz i program nie powinien mieć takiej samej nazwy jak zmienne ( nie pamiętam jak to jest w TP ale FP wywala błąd), reszta ok, ale ja inaczej zapisuje :P
PS Thomas jak ma być w jednym programie to zrób 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 będzie :)
Użytkownik reVis edytował ten post 20 maj 2005, 19:23
Sęk 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 pamiętam. Mógłbyś to połączyć?


PS Thomas jak ma być w jednym programie to zrób 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 będzie :)

Piski w głośniczka :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 wielomianów ;)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.
Użytkownik Cyrkiel edytował ten post 01 czerwiec 2005, 21:09
No to masz taki jeden dziwny prog który wyszedł z połączenia wcześniejszych:
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 przeżyjesz :)

Mam pomysł na drugi program. Może obliczanie pola lub (i) obwodu jakejś figury i wyświetlenie na ekranie napisu jaka to figura?
A za te napisane dziękuję :)

Przepraszam, że mącę... potrzebuję 2 programy. Oba do oblczania pola jakiejś figury. W jednym należy użyć instrukcji if, a w drugim case. A na przykład w FOR będzie decydował o ilości boków np for 3 do rzeczy dla trójkąta, for 4 do rzeczy dla czworokąta itd.
Użytkownik 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, możesz sam sobie zakomentować

program oczko; uses crt; var {wszystkie zmienne ogólne nie licze zmienny i i j bo to są zwykłe liczniki maja postać gNazwaZmiennej, uNazwaZmiennej lub kNazwaZmiennej g - gra zmienne z których korzysta gra ale nie gracze u - użytkownik zmienne na których 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, która będzie odzwierciedlać talię kart. w talii są 52 karty} gTalia1:array[1..13]of integer; {deklarujemy pomocniczą tablicę która będzie reprezentować wartości w kolorach oczywiście w grze nie ma kolorów więc po prostu zliczamy w tej tablicy ilość wystąpień konkretnej karty. oczywiste przecież jest że nie możemy wylosować z jednej talii 5 ósemek} gPrzetwornik, gRundy:integer; {gPrzetwornik - zmienna pomocnicza, dzięki niej będziemy mogli zczytywać wciśnięte klawisze gRundy - zmienna w której przechowywać będziemy ile rund zagramy} uSuma, uWygrane, uPrzegrane:integer; {uSuma - suma oczek wszystkich wyciągniętych do tej pory kart przez użytkownika uWygrane - ilość wygranych rund uPrzegrane - ilość przegranych rund} kSuma:integer; {kSuma - suma oczek wszystkich wyciągniętych przez komputer kart} i,j:integer; {i,j - zmienne pomocnicze pozwalające stosować na przykład pętle} label 1,2,3,4,5,6,7,8,9,10,11; {labels - czyli etykiety. sa to miejsca które będziemy mogli oznaczyć w programie. po co? po to żeby znaleźć się na przykład dalej w kodzie programu, albo wcześniej. zobaczysz z resztą w trakcie} BEGIN 1: ClrScr; {1: - jest to ustawienie pierwszej etykiety. jest to punkt do którego możemy się odwoływać}   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, która zczytuje pojedynczy klawisz wciśnięty na klawiaturze}   case gPrzetwornik of    49: goto 2;    50: exit;    else     goto 1;   end;   {cały blok case zmienna of służy wprowadzeniu kilku warunków   zamiast stosować takie coś   if warunek then   instrukcje   else   if warunek then   instrukcje (możemy to zagłębiac w nieskończoność)   stosujemy   case (zmienna która będzie w naszym warunku)) of   (tu podajemy listę warunków)   1: instrukcje (jeżeli zmienna przyjmie wartość jeden to zrób instrukcje)   67: instrukcje (jeżeli zmienna przyjmie wartość 67 to zrób intrukcje)   else   instrukcje (jeżeli nie był spełniony żaden z powyższych warunków wykonaj instrukcje po else)   no więc mamy nasz przetwornik czyli kod ascii wciśniętego klawisza i przetwarzamy   jeżeli przetwornik jest równy 49 (wciśnięto 1) goto 2 - goto jak sam napis angielski wskazuje mówi tyle co idź do dwa.   dwa jest umieszczone poniżej. to jest także etykieta. teraz już wiadomo po co nam etykiety. możemy dowolnie skakać po programie   jeżeli gPrzetwornik jest równe 50 (wciśnięto 2) wyjdź z programu   jeżeli naciśnięto cokolwiek innego idź do 1 czyli w naszym przypadku wróć na początek programu} 2: ClrScr;   uSuma := 0;   uWygrane := 0;   uPrzegrane := 0;   gRundy := 0;   kSuma := 0;   {wyzerowalismy nasze zmienne, ponieważ program umożliwia rozegranie dowolnej ilości gier (nie mylić z rundami)   dlatego tutaj musimy je zerować żeby nie pozostały w nich wartości z poprzedniej gry}   {COŚ CO SIĘ POWTARZA I BYŁO WYTŁUMACZONE WCZEŚNIEJ NIE BĘDZIE ZAKOMENTOWANE}   WriteLn('Ile rund chcesz rozegrac (1-9)?');   gPrzetwornik := Ord(ReadKey);   while (gPrzetwornik>57) or (gPrzetwornik<49) do {gPrzetwornik większy od 57 lub mniejszy od 49 oznacza tyle że naciśnięto 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 ilośc rund jakie rozegramy}   while j>0 do  {dopóki j > 0 będziemy powatrzać cały cykl rundy, czyli to co jest od teraz to jest jedna runda rozgrywki}   begin    Write('Tasuje talie');    Randomize;    {Randomize - funkcja z biblioteki crt; dzięki której będziemy w stanie wybierać losowe liczby}    for i := 1 to 13 do     gTalia1[i] := 0;     {zerujemy naszą tablice pomocniczą}    i := 0;    {i podstawiamy zero, to będzie nasz licznik dopóki nie zapełnimy naszej tablicy gTalia (czyli póki nie wylosujemy wszystkich    "kart"}    while i < 52 do {dopóki i jest mniejsze od 52 czyli dopóki tablica nie jest zapełniona}    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 końcu 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 - król}     {Tablica gTalia1 spraqwdzi ile już wylosowaliśmy kart danego rodzaju. jeżeli jej wartość dla przykładu gTalia1[5] będzie     wynosic 3 będzie oznaczać to że wylosowaliśmy już trzy piątki. czyli nadal możemy polosować sobie jeszcze jedną piątkę.     gdyby była równa cztery to program polosuje następna liczbę. będzie to się działo tak długo aż gTalia1 dla 1 do 13 nie będzie zapełniona czwórkami}     if gTalia1[gPrzetwornik] <> 4 then {jeżeli wartośc w naszej tablicy pomocniczej będzie mniejsza od 4     oznacz to że mamy możliwość jeszcze losować kartę danego rodzaju}     begin      i := i + 1;      {wtedy nasz licznik zswiększamy o jeden}      gTalia1[gPrzetwornik] := gTalia1[gPrzetwornik] + 1;      {w tablicy pomocniczej zmieniamy ilośc wylosowanych kart tego typu o jeden}      case gPrzetwornik of       11: gPrzetwornik := 2; {jeżeli wylosowano 11 (waleta) zmienna pomocnicza = 2 bo walet ma dwa oczka}       12: gPrzetwornik := 3; {jeżeli wylosowano 12 (damę) pomocnicza = 3 dama ma 3 oczka}       13: gPrzetwornik := 4; {jak wyżej ale dla króla król ma 4 oczka}       1: gPrzetwornik := 11; {jeżeli wylosowano jeden (as) wtedy ilośc oczek 11}      end;      gTalia[i] := gPrzetwornik;      {do tablicy głównej wstawiamy ilość oczek wylosowanej karty}     end;     if (i mod 13 = 0) and (i > 0) then {jeżeli i będzie podzielne przez 13 i większe  od zwera to dopisze kropeczkę.     to nam daje tylko wrażenie animacji przy tasowaniu. zwiększająca się ilość kropek}     begin      Write('.');      Delay(300); {delay funkcja z biblioteki crt. w nawiasie podaje się wartość w milisekundach na jaka ma zostać zwieszone      działanie programu. czyli w tym miejscu program zatrzymuje się na 300 milisekund = 0,3 sekundy a następnie 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 wyjście z programu}     116: goto 4 {116 kod ascii dla litery t goto (skocz) do 4 (parę lini niżej)}    else     goto 3; {aqni t ani n , skocz wtedy do 3}    end;    ClrScr;    i:=1; {jeżeli gramy to i = 1 czyli ustawiamy się na pierwszy element naszej talii. }    uSuma := uSuma + gTalia[i];    {sumę oczek użytkownika zwiększamy 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 wyżej}    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 ilośc oczek użytkownika nie jest większa niż 21. jeżeli 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 wyżej}    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 {jeżeli oprzekroczyliśmy 21 to przegraliśmy}    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 chciało 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 następne 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. będzier dobierał     karty zawsze dopóki suma jego oczek będzie 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 {jeżeli mamy więcej oczek niż komp lub komp przekroczył 21      wtedy wygraliśmy}      begin       uWygrane := uWygrane + 1; {zwiększamy zmienna naszych wygranych o jeden}       WriteLn('Brawo wygrales ta runde! Nacisnij dowolny klawisz');       ReadKey;      end      else      begin       if kSuma = uSuma then {jeżeli 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 pętla nie była nieskończona}   uSuma := 0;   kSuma := 0;   {obydwie sumy zerujemy żeby możnabyło z nich skorzystać w następnej 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 były potrzebne bo pisałem ten program dla osoby kompletnie się na tym nie znającej

//edit2

a tak w ogóle to możecie sobie pokompilować pierwsyz program i się pobawić :D ubaw umiarkowany ale cięzko z nim wygrać :)

thomas -> masz w nich wszystko

pętle, if, case, readkey, write, goto

co jeszcze mogę dla ciebie zrobić?
Użytkownik j-mail edytował ten post 21 maj 2005, 22:59
:blink: :roll1: to miały być naprawdę króciutki programy dla naprawdę początkującego, a nie na tyle linijek kodu.. niepotrzebnie tak się napracowałeś ;) ale dziękuję.



Wszystko fajnie, ale wstaw większe kawałki w [ codebox ] [ /codebox ] ;)

cyrkiel dla ciebie wszystko. no może oprócz grzechu. tak lepiej?


cyrkiel dla ciebie wszystko. no może oprócz grzechu. tak lepiej?
DZIĘKIIII!!!!
Użytkownik Cyrkiel edytował ten post 21 maj 2005, 23:45
czego się dziwujesz?

No nie wiem może 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ęć, spieszyło mi się

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

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.