Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pascal, pomoc laikowi


Rekomendowane odpowiedzi

Opublikowano

Witam.

Jestem laikiem w dziedzinie programowania, jednkaże chciałbym się nauczyć czegoś pod okiem weteranów :).
Czy mógłby mi ktoś powiedzieć, wytłumaczyć jak zamienić, poprawnie, z pętli na pętle? Chodzi mi o zamianę
Pętli " Repeat Until " na " While Do " i " For To Do".

Nie mogę tego sam zrobić, ciągle gdzieś coś źle powstawiałem, szczerze mówiąc nawet czasami nie rozumiem co jak działa.
Mógłby mi ktoś wytłumaczyć zasadę działa i różnicę między pętlami?

Z góry dziękuję za odpowiedzi typu "Google" :)


Oto kod programu:

program Baza;
uses crt;
const ILOSC=10;



type ksiazka = record
        imie : string [15];
        nazwisko : string [15];
        tytul : string [50];
        rokwyd : word;
        typ :string;
        jest:boolean;
            end;

tab=array [1..ILOSC] of ksiazka;
f=file of ksiazka;

var
        biblioteka: tab;
        i: integer;
        c:char;
        nazwa:string;

procedure wpisz (var tabl:tab;var i:integer);


      begin
        write ('Tytul ');
        readln (tabl[i].tytul);
        write ('Autor nazwisko ');
        readln (tabl[i].nazwisko);
        write ('Autor imie ');
        readln (tabl[i].imie);
        write ('Rok wydania  ');
        readln (tabl[i].rokwyd);
        write ('Typ ksiazki: k-kryminal,p-popularnonaukowa,d-podrecznik,r-romans,h-horror ');
        readln (c);
        if c='k' then tabl[i].typ:='kryminal';
        if c='p' then tabl[i].typ:='popularnonaukowa';
        if c='d' then tabl[i].typ:='podrecznik';
        if c='r' then tabl[i].typ:='romans';
        if c='h' then tabl[i].typ:='horror';
        tabl[i].jest:=true;
     end;

procedure pokaz (  tabli:tab);
var i:integer;
begin
CLRSCR;
writeln ('ZAWARTOSC BIBLIOTEKI');
i:=1;
repeat

                writeln (i,'. ',tabli[i].tytul:20,tabli[i].nazwisko:15,tabli[i].imie:15,tabli[i].typ:15,tabli[i].rokwyd:10);
                writeln;
                i:=i+1;

until   tabli[i].jest=false;
readln
end;

function ktoryrekord (tablica:tab):integer;
var k:integer;
begin
        ktoryrekord:=1;
        k:=0;
        repeat
           inc(k);
           if tablica[k].jest=false then ktoryrekord:=k;

        until (tablica[k].jest=false) OR (k=ilosc  );
end;

procedure szukajautora (bibl:tab);
var i:integer; s:string;
begin
writeln('Podaj nazwisko autora :');
readln(s);
s:=upcase(s);
i:=1;
repeat
      if ( upcase(bibl[i].nazwisko)=s) then
                writeln (i,'. ',bibl[i].tytul:20,bibl[i].nazwisko:15,bibl[i].imie:15,bibl[i].typ:15,bibl[i].rokwyd:10);
                writeln;
                i:=i+1;

until   bibl[i].jest=false;
readln
end;

procedure menu;
var z,c:char;x:integer;
begin
repeat
clrscr;
writeln('CO CHCESZ ZROBIĆ :');
writeln(' 1: WPROWADZANIE DANYCH');
writeln(' 2: WYSWIETLENIE ZAWARTOSCI BAZY');
writeln(' 3: SZUKAJ AUTORA');
writeln(' 0: ZAMKNIJ PROGRAM ');
writeln(' ');
writeln(' ###############################################');

readln(z);
 case z of
  '1':begin
        repeat
        x:=ktoryrekord(biblioteka); writeln('WPROWADZASZ ',x,' KSIAZKE');wpisz(biblioteka,x);
        writeln('chcesz kontynuować ? t/n');
        readln(c);
        until c<>'t';
        end;
  '2': pokaz(biblioteka);
  '3':szukajautora(biblioteka);
  '0':writeln('Dziekuję');
  end;
until z='0';


end;

BEGIN
CLRSCR;
writeln('BAZA KSIĄŻEK W TWOJEJ  BIBLIOTECE');
for i:=1 to ilosc do
biblioteka[i].jest:=false;

menu;


readkey;


END.

Chodzi o zamianę pętli, osobno na " While Do " i osobno na "For To Do"

Z góry bardzo dziękuję :)

*SYGNATURA KTÓRA BĘDZIE ODPOWIADAĆ MAJKELOWI*

Opublikowano

Dzięki za chęci, ale ja czytałem to już i dalej nie mogę sobie z tym poradzić... Zawsze coś jest źle, i nie mam pojęcia co.
Byłby ktoś w stanie przeanalizować kod i powiedzieć, jak mógłbym to rozwiązać?
Chociażby na przykładzie tej procedury:

procedure pokaz (  tabli:tab);
var i:integer;
begin
CLRSCR;
writeln ('ZAWARTOSC BIBLIOTEKI');
i:=1;
repeat

                writeln (i,'. ',tabli[i].tytul:20,tabli[i].nazwisko:15,tabli[i].imie:15,tabli[i].typ:15,tabli[i].rokwyd:10);
                writeln;
                i:=i+1;

until   tabli[i].jest=false;
readln
end;

*SYGNATURA KTÓRA BĘDZIE ODPOWIADAĆ MAJKELOWI*

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...