Другие языки программирования и технологии

Задача по Pascal'ю.

Написать программу, которая запрашивает ввести строку и далее выводит на экран информацию о том, сколько раз встречается каждое слово в введенной строке.
Доброго времени суток.

Э-э..., стыдно Максим Викторович не внимательно читать условие. Спрашивется не сколько всего слов во введенной строке, а сколько раз каждое слово встречается. Это разные вещи.

В общем вот мой вариантик.

program Tst;
uses Crt;
var
S1, S2 : String;
i,n : Integer;
A : array[1..255] of String[100]; {массив для слов (полагаю, что их будет не больше 255}
B : array[1..255] of Byte; {массив встречаемости слова}

begin
ClrScr;
ReadLn(S1); {читаем ввод пользователя}
S1 := S1 + ' '; {чтобы не потерять последнее слово}
n := 0; {пока слов нет}
while Pos(' ', S1) > 0 do begin
S2 := Copy(S1, 1, Pos(' ', S1)-1); {выделяем слово из строки}
Delete(S1, 1, Pos(' ', S1)); {и удаляем его из нее}
if S2 <> '' then begin {слово не пустое}
n := n + 1; {увеличиваем счетчик слов}
A[n] := S2; {запоминаем слово}
B[n] := 1; {пока оно одно}
while Pos(S2+' ', S1) > 0 do begin {пока слово есть в строке}
B[n] := B[n] + 1; {наращиваем счетчик}
Delete(S1, Pos(S2+' ', S1), Length(S2)+1); {и удаляем его из строки}
end;
end;
end;
for i:=1 to n do WriteLn(A[ i ], ' - ', B[ i ]); {выводим результат}
ReadLn; {наблюдаем результат}
end.

В принципе, можно обойтись и без массивов. Как? Подумайте T.R.U.E.

Удачи!
Александр Войтов
Александр Войтов
59 613
Лучший ответ
Uses CRT;
Var
sl,a: byte;
s: String;
Begin
ClrScr; {функция, очищает экран, вместе с ней можно НЕ ПИСАТЬ первую строчку}
sl:=1; {т. к. посл. пробела не существует}
Write('Введите строку: '); ReadLn(s);
For a:=1 To Length(s) Do
If s[a]=' ' Then
sl:=sl+1;
Write('Слов: ',sl); ReadLn;
End.

Ищем пробел после каждого слова, если он найден, прибавляем к счетчику слов 1. Стыдно такого не знать!