Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки

Автор: Pautina 17.05.2007 21:27

Помогите, что-то не получается. Программа должна находить в заданном наборе слово максимальной длины, а выводится длина всех символов
СПАСИБО!


Прикрепленные файлы
Прикрепленный файл  Z5.PAS ( 861 байт ) Кол-во скачиваний: 227

Автор: Pautina 18.05.2007 22:11

Посмотрите, пожалуйста, программу.. Никак не могу найти в чем моя ошибка..

Автор: nikita182 19.05.2007 17:19

я с бодуном сижу)) не стал ошибку искать. мой вариант:


uses crt;

var
i : integer;
s : string;
n : integer;
max : integer;
smax : string;

begin
clrscr;
writeln ('vvodi');
readln (s);
n := 0;
max := 0;
for i := 1 to length(s) do begin
if s[i] <> ' ' then
n := n + 1;
if (s[i] = ' ') or (i = length(s)) then
if n > max then begin
max := n;
smax := copy (s, i - n, n + 1);
n := 0;
end;
end;
writeln ('maximalnoe - ', smax);

readkey;
end.


Автор: Айра 19.05.2007 18:37

Цитата
не стал ошибку искать. мой вариант:

Введи "4444 22 333" и посмотри, что она выдаст smile.gif
Вот мой вариант:
uses wincrt;
var s,word: string;
max,p: integer;
begin
writeln ('введите строку');
readln (s);
max:=0;
repeat
begin
p:=pos(' ',s);
if p=0 then
begin
if length(s)>max then
begin
max:=length(s);
word:=copy(s,1,length(s));
end;
delete(s,1,max);
end
else if (p-1)>max then
begin
max:=p-1;
word:=copy(s,1,p-1);
delete(s,1,p);
end
else if ((p-1)<max) or ((p-1)=max) then delete(s,1,p);
end;
until length(s)=0;
writeln('Максимальная длина слова: ',max,'');
writeln('Самое длинное слово: ',word,'');
end.


1.p.s. Почему-то кажется, что можно сделать по-проще..
2.p.s. Ой.. нашла и у себя ошибку wink.gif, если в строке есть одинаковые по длине слова, то зависает, сейчас исправлю..
3.p.s. Исправила smile.gif

Автор: nikita182 19.05.2007 18:41

ну сказал же что с бодуна..