Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking if character is newline

Tags:

delphi

pascal

Hello i'v got simple program which is couting characters in given text until line is empty line only with new line

var
  znaki: array['a'..'z'] of integer = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  napis: String;
  maly: String;
  dlugosc: Integer;
  znak: char;


begin
napis := 'a';
while napis[1] <> '#13#10'do
begin
  readln(napis);
  maly:=LowerCase(napis);
  for dlugosc:=(length(maly)) downto 1 do
begin
znaki[maly[dlugosc]]:=znaki[maly[dlugosc]]+1;
  end;
  for znak:='a' to 'z' do
    writeln(znak, ' ', znaki[znak]);
  end;

end.  

it fails on while condtion and i dont know why. Pleas give me clue

like image 400
whd Avatar asked Dec 02 '25 14:12

whd


2 Answers

One char, napis[1]; can't be 2 chars #13 & #10...

So, I'll do this for example:

var
  znaki: array['a'..'z'] of integer = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  napis: String;
  maly: String;
  dlugosc: Integer;
  znak: char;


begin
napis := 'a';
while ((Length(napis) > 0)) do
begin
  readln(napis);
//  napis := StringReplace(napis, #13#10, #10, [rfReplaceAll]);  //useless for a console readln
  maly:=LowerCase(napis);
  for dlugosc:=(length(maly)) downto 1 do
  begin
    znaki[maly[dlugosc]]:=znaki[maly[dlugosc]]+1;
  end;
  for znak:='a' to 'z' do
    writeln(znak, ' ', znaki[znak]);
end;
end.
like image 136
Whiler Avatar answered Dec 04 '25 06:12

Whiler


#10 is line feed

#13 is carriage return (i.e. move to beginning of line)

You only need to check for #10.

like image 45
RobS Avatar answered Dec 04 '25 05:12

RobS



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!