Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2011, 22:15   #1
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
Лампочка В чем ошибка со строками??

Задача:Найти самое длинное слово в строке и поставить его на первое место.
Сделал,при компиляцыи никаких проблем,НО pascal виснет!
Скажите в чем ошибка??
Код:
program lab6;
uses crt;
var st,st1,slovo,sl:string;max,k:integer;
begin
clrscr;max:=0;
writeln('input string');
readln(st);
st1:=st+' ';
while (pos(' ',st1)>0) do
begin
slovo:=copy(st1,1,pos(' ',st1));
k:=length(slovo);
if (max<k) then
begin
max:=k;
sl:=slovo;
end;
end;
k:=pos(' '+slovo,st);
delete(st,k,max+1);
st:=sl+' '+st;
writeln(st);
readln
end.
Freezy вне форума Ответить с цитированием
Старый 15.01.2011, 22:29   #2
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

если виснет - значит ошибка в while где-то -
Код:
while (pos(' ',st1)>0) do
begin
видимо pos(' ',st1) всегда больше нуля)) не знаю, что это за функция)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось Stilet; 16.01.2011 в 11:19.
vedro-compota вне форума Ответить с цитированием
Старый 15.01.2011, 22:31   #3
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

а точнее??я второй день сижу,мучаюсь - виснет и все тут(

Цитата:
Сообщение от vedro-compota Посмотреть сообщение
не знаю, что это за функция)
эт чтобы определяло когда конец строки вроде как (по крайней мере оно должно так определять)

Последний раз редактировалось Stilet; 16.01.2011 в 11:25.
Freezy вне форума Ответить с цитированием
Старый 15.01.2011, 22:56   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Freezy Посмотреть сообщение
эт чтобы определяло когда конец строки вроде как (по крайней мере оно должно так определять)
Ты даже не знаешь , что именно написал/а или это не твой код
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 15.01.2011, 23:05   #5
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

это мой код)прост нам так препод обьяснял,а домой пришел,начал наббирать и ошибка.вот
Freezy вне форума Ответить с цитированием
Старый 15.01.2011, 23:08   #6
Shift_sk
Форумчанин
 
Регистрация: 20.11.2010
Сообщений: 221
По умолчанию

Код:
program lab6;
var st,st1,sl,slovo:string;max,u,k,i:integer; 
begin;max:=0;
writeln('input string');
readln(st);
st:=st+' ';
k:=0;
For i:=1 to length(st) do begin

if st[i]<>' ' then begin max:=max+1; st1:=st1+st[i]; end
else  begin if max>k then begin
 k:=max; 
 u:=i;
 slovo:=st1; end; st1:=''; max:=0; end;
end; 
st:=slovo+' '+st; 
delete(st,u+1,k+1);
writeln(st);
end.
www.bezperepl.at.ua
Код:
...
Shift_sk вне форума Ответить с цитированием
Старый 15.01.2011, 23:35   #7
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Вот твой доработанный код :

Код:
program lab6;
uses
  crt;
var
  st, st1, slovo, sl: string;max, k: integer;
begin
  clrscr;max := 0;
  writeln('input string');
  readln(st);
  st1 := st + ' ';
  while (pos(' ', st1) > 0) do
  begin
    slovo := copy(st1, 1, pos(' ', st1) - 1);
    st1 := copy(st1, pos(' ', st1) + 1, length(st1));
    k := length(slovo);
    if (max < k) then
    begin
      max := k;
      sl := slovo;
    end;
  end;
  k := pos(' ' + sl, st);
  if(k > 0) then
  begin
    delete(st, k, max + 1);
    st := sl + ' ' + st;
  end;
  writeln(st);
  readln
end.
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 16.01.2011, 20:42   #8
Freezy
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 14
По умолчанию

andrewpalkin ,большое спасибо)теперь хоть понимать буду как избежать подобных ошибок в задачах подобного типа)

Shift_sk ,твой вариант мне даже немного более понятен чем мой собственный,спасибо за альтернативу)
Freezy вне форума Ответить с цитированием
Старый 16.01.2011, 22:03   #9
Shift_sk
Форумчанин
 
Регистрация: 20.11.2010
Сообщений: 221
По умолчанию

незачто) всегда рад помочь....
www.bezperepl.at.ua
Код:
...
Shift_sk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чем ошибка??? Cnfczy Общие вопросы Delphi 1 28.11.2010 21:16
Ошибка в работе со строками, язык С ПеПпИ Помощь студентам 1 18.11.2010 01:24
Работа со строками.даны три слова.Одно из них имеет меньшее количество символов,чем другое.Определить и в Ashley Помощь студентам 6 01.06.2010 22:08
В чем ошибка? AleNa666 Паскаль, Turbo Pascal, PascalABC.NET 2 28.04.2009 14:28
Помогите понять в чем ошибка (работа со строками) Edimus Общие вопросы C/C++ 1 22.11.2007 14:09