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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 15:50   #1
Krasopetka
Новичок
Джуниор
 
Регистрация: 16.11.2011
Сообщений: 5
По умолчанию Строковый тип

Пожалуйста помогите решением задачки!!!

Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
-удалить из слова все последующие вхождения первой буквы;
Krasopetka вне форума Ответить с цитированием
Старый 17.11.2011, 16:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

помогите - это решить за Вас?!!

ладно. в качестве подарка, вот полный код.
разбирайтесь:

Код:
var s,w : string;
  i,j : integer;
  Count : integer;
  Words : array[1..30] of string[10];
begin
  s := ' TERRA MUNDI USUS MAGISTER EST AURA ACADEMICA OPTIMUS SIC TRANSIT GLORIA MUNDI';
  {
  WriteLn('Введите строку текста: ');
  Readln(s);
  }

  s := s + ' ';
  w := '';
  Count := 0;
  for i:=1 to length(s) do begin
    if s[i] <> ' ' then w := w+s[i]
    else {пробел, значит это конец группы}
     begin
       if Length(w)>0 then begin
         Inc(Count);
         if (Length(w)>10) or (Length(w)<2)  then
           begin 
              WriteLn('Ошибка! Слова должны быть от 2 до 10 символов!');
              WriteLn('у Вас же слово #',Count,' (',w,') длиной ',Length(w));
              Writeln;
              WriteLn('Press Enter to exit');
              Readln;
              Halt; {прекратили программу}
           end;
         if Count>30 then 
           begin 
              WriteLn('Ошибка! В строке должно быть не более 30 слов.');
              Writeln;
              WriteLn('Press Enter to exit');
              Readln;
              Halt; {прекратили программу}
           end;
         Words[Count] := w;
       end;
       w := '';
     end;
  end;
  Writeln;

  if Count<2 then begin
      WriteLn('Ошибка! В строке должно быть не менее 2 слов.');
      Writeln;
      WriteLn('Press Enter to exit');
      Readln;
      Halt; {прекратили программу}
  end;

  {выведем список слов - для отладки программы}
  WriteLn('Полный список слов:');
  for i:=1 to Count do
    Writeln(i,' ',Words[i]);


  WriteLn;
  {вывести на печать все слова, отличные от последнего слова}
  for i:=1 to Count-1 do
     if Words[i]<>Words[Count] then begin
       {удалим из слова все последующие вхождения первой буквы}
       w := Words[i][1];
       for j:=2 to Length(Words[i]) do
         if Words[i][j]<>Words[i][1] then w := w + Words[i][j];
       Write(w,' ');
     end;
  WriteLn;

  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2011, 21:17   #3
Krasopetka
Новичок
Джуниор
 
Регистрация: 16.11.2011
Сообщений: 5
По умолчанию

Спасибо огромное вам!!!
Krasopetka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковый Тип!!! LegionuS Паскаль, Turbo Pascal, PascalABC.NET 6 29.05.2011 17:00
СТРОКОВЫЙ ТИП McJordan Паскаль, Turbo Pascal, PascalABC.NET 7 30.09.2010 07:34
строковый тип McJordan Паскаль, Turbo Pascal, PascalABC.NET 0 28.09.2010 14:57
Строковый тип McJordan Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 17:22
Строковый тип dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 00:53