АГ
Андрей Голубятов

немогу найти ошибки ( паскаль

7.Дана строка текста. Определить сколько раз встречается каждый символ в строке. Например: Str: “x w x y x w” . “х” – встречается 3 раза “y”- встречается 1 раз, “w”- встречается 2 разa.

как то непонятно она работает. может кто подскажет?

Uses Crt;
Var a,b:string;
i,j,c:integer;
begin
ClrScr;
WriteLn('слово: ');
ReadLn(a);
WriteLn('Текст: ');
ReadLn(b);
for i:= 1 to length(b) do
begin
c := 0;
for j := 1 to length(a) do
begin
if b = a[j]
then
c := c + 1;
end;
if c>0
then
write(b,'-',c ,' ');
end;
End.

НУ
Наталья Устинова

Ваша программа работает не только "непонятно", но и неправильно!

Берем вашу строку в качестве примера. Внешний цикл, первый символ "х", пробежались внутренним и получили с = 2. Заметьте, два, а не три! А все потому, что вы "с" обнуляете, хотя надо бы единичку присвоить, ведь по-крайней мере один символ есть. То же самое и в отношении "w", а затем начинается дежавью. Снова "х" и опять выполняется подсчет. Если хотите идти этим путем, то во внутреннем цикле удаляйте все совпадения из строки.

Но.. . Есть куда лучший способ.

Объявляете массив

var A : array[0..255] of Integer; {можно и of Byte, если не ожидается более 255 одинаковых символов}

На всякий случай обнуляете его.

FillChar(A, SizeOf(A), 0);

А затем за один проход выполняете подсчет количества одинаковых символов в строке S.

for i:=1 to Length(S) do Inc(A[Ord(S[ i ]]);

Ну, и вывод результата

for i:=0 to 255 do if A[ i ] > 0 then WriteLn(Chr(i) - A[ i ]);

Этим способом можно подсчитать ВСЕ символы, включая служебные. Отмечу, что здесь символы из разных регистров будут отличаться, но сделать регистронезависимость труда не должно представлять.

Похожие вопросы
Помогите найти ошибку в паскале ABC
Помогите найти ошибку (паскаль)
Помогите найти ошибку в программе. Паскаль.
помогите найти ошибку паскале
Паскаль, что за ошибка?
Помогите найти ошибку в Паскале
Где ошибка в паскаль
Помогите найти ошибку. Паскаль. Ошибка в ситаксисе
Помогите найти ошибку в коде Паскаль
Помогите найти ошибку Паскаль