IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Удаление повторяющихся строк матрицы, Удаление всей строки. которая повторяется и сжатие матрицы.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Вася

Репутация: -  0  +


Доброго времени суток, уважаемые форумчане.

Задача.
В матрице mxn есть столбец (скажем первый), где элементы повторяются нужно удалить повторяющиеся строки.
Ввод - вывод в файл. Кажется я запутася в циклах.
Вот что у меня получилось.

Если у Вас будет время, пожалуйста, помогите найти ошибку.


Код

Program date_term;
const
   e=5; g=3;

Type
   mas=array[1..e,1..g] of integer;

var
  X,Y:mas;
  k,i,j,n,m:integer;
  f:text; name,name1:string [10];


BEGIN

   writeln ('Write name data file');
   readln(name);
   assign(f,name); reset(f);

for i:=1 to n do
for j:=1 to m do
  read(f,X[i,j]);
  readln(f);
  close(f);

  writeln ('Write 2 name output file');
  readln(name1);
  assign(f,name1); rewrite(f);

writeln ('matr X');
for i:=1 to n do begin
for j:=1 to m do
write (X[i,j]:3);
writeln;

  i:=1;
  while ( i<=n ) do

{Esli o4erednoi element massiva X[i] raven posledyysemy, to}
if X[i,j]=X[i+1,j] then
begin
  {delete element massiva s nomerom i}
      for k:=i+1 to n+1 do
          Y[i,j]:=X[i,j+1]; {Ymensaem razmer massiva}
   n:=n-1
end
  else i:=i+1;

writeln ('Izmenenniy matr Y');
   for i:=1 to n do begin
   for j:=1 to m do
        write(f,Y[i,j]:3);
        writeln(f);
                end;
                end;
                close(f);
END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ошибка примерно тут:
{Esli o4erednoi element massiva X[i] raven posledyysemy, to}
if X[i,j]=X[i+1,j] then
begin
{delete element massiva s nomerom i}
for k:=i+1 to n+1 do
Y[i,j]:=X[i,j+1]; {Ymensaem razmer massiva}
n:=n-1
end
else i:=i+1;

Исправить надо этот участок кода на правильный.
Может это пригодится: Многократное удаление символов из строки


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 10:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name