2012-05-15 2 views
3

Здравствуйте i'v получил простую программу, которая couting символов в данном тексте, пока строка не пустая строка только с новой строкиПроверяется символ новой строки

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. 

он терпит неудачу на в то время как Condtion и я не знаю почему. Просьба дать мне ключ

+0

Вы также можете заменить свою инкрементацию на это 'Inc (znaki [maly [dlugosc]]);' – Whiler

ответ

2

One char, napis []; не может быть 2 символа # 13 & # 10 ...

Итак, я буду делать это, например:

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. 
+0

Я не знаю, нужна ли проверка napis [1] <> '# 10', я сделал это как длину (napis) <> 0 – whd

+0

Я согласен ... для консольного приложения ... это не – Whiler

+0

У меня есть вопрос относительно вашего кода ... может быть, эксперт по delphi может объяснить мне ... Я не понимаю, почему эта строка работает ' znaki [maly [dlugosc]]: = znaki [maly [dlugosc]] + 1; 'когда я набираю« пробелы », числа, ... так как это должно нарушать границы поддиапазонов ... любая ссылка/объяснение для этого? – Whiler

2

#10 является линия подачи

#13 является перевозка возврат (т. е. переход к началу строки)

Вам нужно всего лишь проверить # 10.

Смежные вопросы