Программа для линейного поиска слова - Turbo Pascal
Формулировка задачи:
Доброго времени суток друзья. Возникла 2 проблемы. Туплю по конкретному конечно.
Есть программа. По линейному поиску слова в строке. Вот код:
Проблемы две. 1) Как мне учесть, что бы между словами программа учитывала как ввод одного пробела,так и нескольких.(Грубо говоря,как удалять лишние пробелы и записать в массив одно слово,не смотря на то сколько там пробелов до другого слова)
2)Как сделать грамотное условие в цикле for(Надо именно цикл for) Что бы при нахождении слова выводилось сообщение,что слово найдено(С этим проблем нет).И как сделать,что бы условие выводилось всего один раз,если слово не найдено(В этом собственно и проблема)
Листинг программы
- program z1;
- var
- S: string;
- i, j: integer;
- Arr: array[1..100] of string;
- begin
- WriteLn('Vvedite stroku: ');
- Readln(S);
- j := 1;
- //Записываем в массив по одному слову
- for i := 1 to length(s) do
- begin //как учесть несколько пробелов? Проблема 1
- if S[i] <> ' ' then
- Arr[j] := Arr[j] + S[i];
- //Вывод слова
- if (S[i] = ' ') or (i = length(s)) then
- begin
- writeln;
- writeln(Arr[j]);
- inc(j);
- continue;
- end;
- end;
- Writeln;
- writeln('Vvedite Iskomoe slovo: ');
- readln(S);
- //Проблема 2
- For i := 1 to j do
- if arr[i] = S then
- writeln('Iskomoe slovo nahoditcya na ',i,' pozicii')
- else
- writeln('iskomoe slovo ne naideno');
- end.
Решение задачи: «Программа для линейного поиска слова»
textual
Листинг программы
- while pos(' ',s)>0 do//в апострофах 2 пробела
- delete(s,pos(' ',s),1);/1 удаляем
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д