[pascal] Ошибка в работе программы

Тема в разделе "Pascal and Delphi", создана пользователем Wefast, 25 дек 2009.

  1. Wefast

    Wefast Гость

    Программа должна находить самое короткое слово, и удалять лишние пробелы. Так вот если ввести много пробелов в начале, потом слово , потом пробелы, а потом слово опять , то он не выводит самое короткое слово.
    Код:


    Код (Text):
    uses crt;
    var s,s1,s2,s3:string;
    mx,mn:byte;
    begin
    clrscr;
    textcolor(White);
    write('Строка: ');
    readln(s);
    s:=s+' ';{добавление пробела в конец}
    while pos(' ',s)>0 do{удаляем лишние пробелы, пока есть 2 пробела рядом}
    delete(s,pos(' ',s),1);{1 удаляем}
    mx:=0;mn:=255; {начальное значение}


    textcolor(red);
    writeln;
    writeln('Строка без лишних пробелов: ',s);
    while pos(' ',s)>0 do{пока есть пробел в строке}
    begin
    s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово до пробела}
    if length(s1)<mn then{если меньше всех}
    begin
    mn:=length(s1); {самая маленькая длина}
    s2:=s1;  {запоминаем слово}
    end;
    delete(s,1,pos(' ',s));{удаляем это слово следующее будет первым}
    end;
    textcolor(green);
    writeln('Самое короткое слово ',s2);
    readln
    end.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    так как пробел - первый символ строки.
    Выбирайте:
    1) можно добавить условие проверки s1<>"" внутри цикла.
    2) проверить позицию пробела, если строка начинается с пробела, то не обрабатывать как слово, а просто его удалить:
    Код (Text):
    while pos(' ',s)>0 do{пока есть пробел в строке}
    begin
    if pos(' ',s) > 1 then // пробел не первый
    begin
    s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово до пробела}
    if length(s1)<mn then{если меньше всех}
    begin
    mn:=length(s1); {самая маленькая длина}
    s2:=s1;  {запоминаем слово}
    end;
    end;
    // тут первый пробел должен удалиться
    delete(s,1,pos(' ',s));{удаляем это слово следующее будет первым}
    end;
     
  3. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    топискстартер, слушай умную тетю, она в уме паскалевский код компилировать умеет)
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    племянничек, где твоя шкала предупреждений? :(
     
  5. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Обойдешься=) :(
     
Загрузка...
Похожие Темы - [pascal] Ошибка работе
  1. Малышk0
    Ответов:
    3
    Просмотров:
    1.364
  2. ildareshka
    Ответов:
    3
    Просмотров:
    32
  3. Ruska132
    Ответов:
    1
    Просмотров:
    68
  4. Lamerman
    Ответов:
    0
    Просмотров:
    47
  5. Enima
    Ответов:
    0
    Просмотров:
    63

Поделиться этой страницей