Zapis do listy dwukierunkowej

0

Witam. Typy i zmienne są zdefiniowane tak :

type
    TDane = record
                  nazwa     : string;
                  opis      : string;
                  skladniki : array [1..2] of string;
                  ilosc     : array [1..2] of string;
            end;
    TElemWsk = ^TElem;
    TElem    = record
                     dane : TDane;
                     nast : TElemWsk;
                     pop  : TELemWsk;
               end;

var
   g     : TElemWsk;
   o     : TElemWsk;
   nowy  : TElemWsk;
   wsk   : TElemWsk;
   pam   : TElemWsk;
   l     : integer;
   k     : char;
   exit  : boolean;
   start : boolean;
   dane  : TDane;

Natomiast procedura odpowiedzialna za dodawanie nowych elementów wygląda tak :

procedure wstaw(var g,o,nowy,wsk : TElemWsk);

var
   pom       : TElemWsk;
   nazwa     : string;
   opis      : string;
   skladniki : array [1..2] of string;
   ilosc     : array [1..2] of string;
   i         : integer;

begin
     ClrScr;
     writeln('Podaj nazwe potrawy : ');
     readln(nazwa);
     writeln('Podaj opis potrawy : ');
     readln(opis);
     writeln('Podaj kolejno nazwe skladnika i jego ilosc : ');
     for i:=1 to 2 do
         begin
              writeln('Nazwa skladnika nr ',i,'');
              readln(skladniki[i]);
              writeln('Ilosc skladnika nr',i,'');
              readln(ilosc[i]);
         end;
     pom := g;
     new(nowy);
     nowy^.dane.nazwa := nazwa;
     nowy^.dane.opis  := opis;
     for i:=1 to 2 do
         begin
              nowy^.dane.skladniki[i] := skladniki[i];
              nowy^.dane.ilosc[i]     := ilosc[i];
         end;
     nowy^.nast      := pom^.nast;
     nowy^.pop       := pom;
     nowy^.nast^.pop := nowy;
     nowy^.pop^.nast := nowy;
     rst(pam,wsk,l,g);
end;

Problem w tym, że nie wiem jak zrobić rzecz następującą.

Otóż części procedury odpowiedzialnej za wprowadzanie przez użytkownika nowych danych przy składnikach i ich ilości zastosowałem pętle for :

writeln('Podaj nazwe potrawy : ');
     readln(nazwa);
     writeln('Podaj opis potrawy : ');
     readln(opis);
     writeln('Podaj kolejno nazwe skladnika i jego ilosc : ');
     for i:=1 to 2 do
         begin
              writeln('Nazwa skladnika nr ',i,'');
              readln(skladniki[i]);
              writeln('Ilosc skladnika nr',i,'');
              readln(ilosc[i]);
         end;

I dajmy na to potrawa składa się z 1 a nie 2 skłądników. Chodzi mi o to, że np. przy drugim składniku pozostawiamy puste pole naciskamy enter i przeryw mi pętle - jak mam to zrobić. Bardzo prosze o pomoc.
Z góry dziękuję za pomoc. Pozdrowienia

Stosowałem :

while skladniki[i] <> ' ' do
      begin
           .
           .
           .
      end;

repeat
      begin
           .
           .
           .
      end;
until skladniki[i] = '  ';

if skladniki[i] = '  ' then
    break;

 
0

if skladniki[i] = '' then break;

Musi działać. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1