Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 21.04.2010, 09:19   #1 (permalink)
sunbrigt
Member
 
Регистрация: 20.04.2010
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Строки. Паскаль.

Помогите пожалуйста!
Дана строка символов Известно, что символ отличен от пробела и что среди имеется хотя бы один пробел. Рассматриваются - символы, предшествующие первому пробелу (n заранее не известно). Преобразовать последовательность: удалив из каждой группы идущих подряд цифр, в которой более двух цифр и которой предшествует точка, все цифры, начиная с третьей (например, аb+0.1973-1.1 преобразуется в аb+0.19-1.1).
sunbrigt вне форума   Ответить с цитированием

Старый 21.04.2010, 09:19
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее на форуме создавалось что то аналогично

Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл
Паскаль, символы и строки
Паскаль, строки

Старый 21.04.2010, 10:36   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от sunbrigt Посмотреть сообщение
Помогите пожалуйста!
Дана строка символов Известно, что символ отличен от пробела и что среди имеется хотя бы один пробел. Рассматриваются - символы, предшествующие первому пробелу (n заранее не известно). Преобразовать последовательность: удалив из каждой группы идущих подряд цифр, в которой более двух цифр и которой предшествует точка, все цифры, начиная с третьей (например, аb+0.1973-1.1 преобразуется в аb+0.19-1.1).
Вот:
Код:
VAR
 S:STRING;
 Ch:CHAR;
 i,j,n:INTEGER;
 b:ARRAY[1..255] of BOOLEAN;
BEGIN
 WriteLn('Enter the string, containing at least one space:');
 ReadLn(S);
 For i:=1 to 255 do
  b[i]:=true;
 i:=1;
 Repeat
  If S[i]<>' ' then
   begin
    If (S[i]='.') and
    (Ord(S[i+1])>47) and (Ord(S[i+1])<58) and
    (Ord(S[i+2])>47) and (Ord(S[i+2])<58) then
     begin
      j:=3;
      While (Ord(S[i+j])>47) and (Ord(S[i+j])<58) do
       begin
        b[i+j]:=false;
        Inc(j);
       end;
     end;
    Inc(i);
   end;
 Until S[i]=' ';
 n:=i-1;
 For i:=1 to n do
  If b[i] then Write(S[i]);
 WriteLn;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.04.2010, 11:43   #3 (permalink)
sunbrigt
Member
 
Регистрация: 20.04.2010
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Почему то программа ни в какую не хочет делать что должна.
sunbrigt вне форума   Ответить с цитированием
Старый 26.04.2010, 12:46   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от sunbrigt Посмотреть сообщение
Почему то программа ни в какую не хочет делать что должна.
Естественно, прежде чем быть выложенной, программа была отлажена и протестирована. Поэтому, пожалуйста, конкретнее. Вообще не запускается? Не транслируется? Выдает ошибку (в каком месте)? Ну и т.д. - не жалейте пальчики, напишите подробно, иначе помочь не сможем. Скорее всего, какие-то глюки реализации Паскаля.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.04.2010, 12:53   #5 (permalink)
sunbrigt
Member
 
Регистрация: 20.04.2010
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Запускаеться, выводит надпись "Enter the string, containing at least one space:" Ввожу строку, нажимаю Enter. Выводиться первое слово из строки не измененное и программа заканчивает работу. Код ввожу в Делфи, может из за этого?
sunbrigt вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 26.04.2010, 13:08   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от sunbrigt Посмотреть сообщение
Запускаеться, выводит надпись "Enter the string, containing at least one space:" Ввожу строку, нажимаю Enter. Выводиться первое слово из строки не измененное и программа заканчивает работу. Код ввожу в Делфи, может из за этого?
На всякий случай - может быть я не так понял задание? Там и должнО выводиться только первое слово (до первого пробела), остальное не интересует. Изменяться должны конструкции типа +5.34796- с заменой на +5.34- (вместо + и - могут быть любые другие (нецифровые) символы.
Под Delphi тоже должно работать, только там надо как-то экранный ввод-вывод организовывать. Либо делать файловый.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.04.2010, 13:28   #7 (permalink)
sunbrigt
Member
 
Регистрация: 20.04.2010
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Извиняюсь, при вводе цифр с точкой. При нажатии на Enter просто заканчивает работать не выводя ни чего на экран.
sunbrigt вне форума   Ответить с цитированием
Старый 26.04.2010, 14:39   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот как это выглядит у меня:
nc02.jpg
Уж и не знаю, почему у Вас не идет.
Попробуйте переделать на файловый ввод-вывод.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.04.2010, 16:30   #9 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

В Delphi в VCL-форме не заработает, создавайте консольное приложение. И еще нужно проверить соответствие листинга набору допустимых операторов.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:24.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.