[TurboPascal]Procedura readln;


(K Ilak) #1

Witam,

Niedawno w książce-kursie TurboPascala wyczytałem, że jest możliwość, aby readln umożliwiał wprowadzenie za pomocą jednego wywołania dwóch zmiennych prozdzielanych spacją, natomiast u mnie to po prostu nie wychodzi:

Poniższy program nie daje pożądanego efektu:

program test;

var 

a,b: string;


begin

readln (a, b);

writeln (a, b);

readln;

end.

Powyższy program oczekuje wpisanie zmiennej a i naciśnięcia klawisza Enter, stąd moje pytanie czy jest możliwość aby mogłyby być wprowadzone dwie zmienne porozdzielane spacją?


(Drobok) #2

Ja bym to podzielił po prostu forem. Nie przypominam sobie by samo readln taką możliwość posiadało.


(K Ilak) #3

W sensie pętlą?


(Drobok) #4

Tak, szukamy spacji forem po prostu ;]

I na jego podstawie tworzymy 2 osobne zmienne.


(K Ilak) #5

Możesz mi podać kod?


(Drobok) #6

Chodź tego nie robię niech ci będzie :stuck_out_tongue:

vartemp,ciag1,ciag2:string;i:integer;begin(temp);i:=1 to length(temp) dotemp[i]=' ') then

(Simplex111) #7

Przy pomocy procedury Readln można oczywiście wczytać kilka zmiennych na raz (można było chyba od zawsze, odkąd istnieje język Pascal), ale tylko liczby. Poszczególne zmienne można oddzielać za pomocą spacji, tabulatora, a nawet Entera.

Nie można oczywiście w ten sposób wczytać kilku zmiennych typu łańcuchowego, bo skąd program ma wiedzieć gdzie kończy się jedna zmienna, a gdzie zaczyna następna (spacja w łańcuchu to taki sam znak jak każdy inny, więc nie może pełnić roli separatora)

Mały przykład - wczytanie 3 liczb:

program Test;

var a, b, c: Integer;

begin

  Writeln('Podaj 3 liczby oddzielone spacjami');

  Readln(a, b, c);

  Writeln(a, ' ', b, ' ', c);

  Readln;

end.