Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Строки. Паскаль. (http://www.tehnari.ru/f41/t35337/)

sunbrigt 21.04.2010 09:19

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

Vladimir_S 21.04.2010 10:36

Цитата:

Сообщение от sunbrigt (Сообщение 325585)
Помогите пожалуйста!
Дана строка символов Известно, что символ отличен от пробела и что среди имеется хотя бы один пробел. Рассматриваются - символы, предшествующие первому пробелу (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.


sunbrigt 26.04.2010 11:43

Почему то программа ни в какую не хочет делать что должна.

Vladimir_S 26.04.2010 12:46

Цитата:

Сообщение от sunbrigt (Сообщение 327100)
Почему то программа ни в какую не хочет делать что должна.

Естественно, прежде чем быть выложенной, программа была отлажена и протестирована. Поэтому, пожалуйста, конкретнее. Вообще не запускается? Не транслируется? Выдает ошибку (в каком месте)? Ну и т.д. - не жалейте пальчики, напишите подробно, иначе помочь не сможем. Скорее всего, какие-то глюки реализации Паскаля.

sunbrigt 26.04.2010 12:53

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

Vladimir_S 26.04.2010 13:08

Цитата:

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

На всякий случай - может быть я не так понял задание? Там и должнО выводиться только первое слово (до первого пробела), остальное не интересует. Изменяться должны конструкции типа +5.34796- с заменой на +5.34- (вместо + и - могут быть любые другие (нецифровые) символы.
Под Delphi тоже должно работать, только там надо как-то экранный ввод-вывод организовывать. Либо делать файловый.

sunbrigt 26.04.2010 13:28

Извиняюсь, при вводе цифр с точкой. При нажатии на Enter просто заканчивает работать не выводя ни чего на экран.

Vladimir_S 26.04.2010 14:39

Вложений: 1
Ну вот как это выглядит у меня:
Вложение 12444
Уж и не знаю, почему у Вас не идет.
Попробуйте переделать на файловый ввод-вывод.

AlexZir 26.04.2010 16:30

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


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.