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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 17:26   #1
Skyes
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 11
По умолчанию Задача на матрицу.Пусть дана последовательность...

Здравствуйте, подскажите пожалуйста как решить эту задачу.

Пусть дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатайте все слова,отличные от первого слова, предварительно преобразовав каждое из них по следующему правилу:
f) удалить из слова все предыдущие вхождения последней буквы;

У меня есть решение этого номера, но пункт другой(d)
d) удалить из слова последнюю букву;
Код:
program str92n77d;
{$APPTYPE CONSOLE}

uses
          SysUtils,
          Windows;
const   m=30;
const   n=10;
var      i,j:integer;
          c:char;
          a:array[1..m,1..n] of char;
          fl,error_n:boolean;
begin
for i:=1 to m do
 for j:=1 to n do
 a[i,j]:=' ';
 j:=1; i:=0; c := '1';  error_n := false;
 writeln('Введите от 2-х до  ',m,' слов длинною не более 10 символов. В конце поставьте точку.');
 while c <> '.' do
  begin
   inc(i);
   read(c);
   while c = ' ' do read(c);
   while (c <> ' ') and (c <> '.') do
    begin
     a[i,j] := c;
     read(c);
     inc(j);
    end;
   if j = 2 then error_n := true;
   j := 1;
  end;
 if error_n then writeln('Ошибка!!! Присутствуют слова, длина которых меньше 2');
 if i = 1 then writeln ('Ошибка!!! Кол-во слов меньше 2');
readln;
if error_n or (i = 1) then writeln('Имеются ошибки. Перезапустите программу и введите корректные данные')
else
for i:=2 to m do
 begin
  fl:=true;
  j := 1;
  while ((a[i,j] <> ' ')and (a[i,1]<>' ')) and fl do
   begin
    if a[i,j] <> a[1,j] then fl := false;
    inc(j);
   end;
    if (a[i,j] <> ' ')or (a[1,j]<>' ') then fl := false;
  j := 1;
  if not fl then
   begin
    while a[i,j+1] <> ' ' do inc(j);
    for j:=j to n-1 do a[i,j]:=a[i,j+1];
    for j:=1 to n do write(a[i,j]);
    writeln;
   end;
 end;
readln;
end.

Последний раз редактировалось Skyes; 12.12.2011 в 17:29.
Skyes вне форума Ответить с цитированием
Старый 14.12.2011, 20:48   #2
Skyes
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 11
По умолчанию

Пожалуйста, подскажите код, как удалить из слова все предыдущие вхождения последней буквы?
Skyes вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность литер мурчик Помощь студентам 0 25.10.2011 22:54
пусть дана вещественнная матрица размером ПхТ , в которой не все Романн Помощь студентам 4 10.06.2011 20:12
Дана последовательность чисел fara1992 Паскаль, Turbo Pascal, PascalABC.NET 12 20.06.2010 22:26
Дана последовательность. Skia123 Помощь студентам 15 27.05.2010 15:56
Пусть D - заштрихованная часть плоскости и пусть задана точка своими координатами (X,Y). Определить, при Igoreha010 Помощь студентам 3 16.02.2010 19:14