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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2015, 10:20   #1
SilenceLOL
 
Регистрация: 17.12.2015
Сообщений: 4
По умолчанию Строковый тип

Помогите сделать задание в паскале

Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: -удалить из слова все предыдущие вхождения последней буквы
SilenceLOL вне форума Ответить с цитированием
Старый 17.12.2015, 12:33   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
uses crt;
type arr = array[1..30] of string[10];
var a:arr;
i,wcount:byte;
txt:string;

procedure splitdata(s:string);
var dot_pos,i:byte;sn,w:string;
begin
 dot_pos := pos('.',s);
 if dot_pos = 0 then begin writeln('WRONG DATA'); exit end;
 sn:=copy(s,1,dot_pos-1)+' ';
 w:='';
 for i:=1 to length(sn) do
  begin
    if sn[i] <> ' ' then w:=w+sn[i] else
    begin
    if w<>'' then
     begin
      inc(wcount);
       if(wcount>30) then
        begin
         writeln('WRONG DATA'); exit
        end
       else
        begin
         if length(w)>10 then
          begin
           writeln('WRONG DATA');exit
          end
          else
          begin
           a[wcount]:=w; w:=''
          end
        end
     end;
    end;
  end;
end;

procedure sht(a:arr);
var i,j:byte;s:string;
begin
  for i:=1 to wcount-1 do
   begin
    if a[i]<>a[wcount] then
     begin
      j:=1;
      while j<=length(a[i])-1 do
      begin
       if a[i][j]=a[i][length(a[i])] then
        delete(a[i],j,1)
       else
        inc(j)
      end;
      writeln(a[i]);
     end;
   end;
end;

begin
write('Input Line : ');readln(txt);
splitdata(txt);
for i:=1 to wcount do
 write(a[i],' ');
writeln;
sht(a);
 readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковый тип idzaya2311 Паскаль, Turbo Pascal, PascalABC.NET 4 30.11.2013 13:02
Строковый Тип!!! 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
Строковый тип DrDre Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 00:32