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

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

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

 
 Ответить  Открыть новую тему 
> Разряженная матрица. Мультисписки., Matrix Forever!
сообщение
Сообщение #1





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

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


Вообщем тема...

Разряженая матрица в виде мультисписков.
Необходимо найти максимальный элемент и удалить строку и столбец его содержащие.
==================
В принципе проблем нет, НО - мульти списки...
В реале это просто:

MAX:=A[1,1];DEL_X:=1; DEL_Y:=1;
FOR I:=1 TO RAZ_Y DO BEGIN
FOR J:=1 TO RAZ_X DO
IF MAX<A[J,I] THEN
BEGIN
MAX:=A[J,I];
DEL_X:=J; DEL_Y:=I;
END;

RAZ_Y:=RAZ_Y-1;
FOR I:=DEL_Y TO RAZ_Y DO
FOR J:=1 TO RAZ_X DO
A[J,I]:=A[J,I+1];
RAZ_X:=RAZ_X-1;
FOR I:=1 TO RAZ_Y DO
FOR J:=DEL_X TO RAZ_X DO
A[J,I]:=A[J+1,I];

Но с указателями через динамическую память да еще списки...
Подскажите?

Сообщение отредактировано: volvo -


--------------------
Господи! Сколько же еще не сделано...
А сколько же еще предстоит не сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






kase666, погоди... У тебя уже задана матрица в виде мультисписка, или мультисписок еще надо организовать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


матрица нулевая А[X, X] ее необходимо загрузить
из файла в виде мультисписка и выполнить операции...


--------------------
Господи! Сколько же еще не сделано...
А сколько же еще предстоит не сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Повторяю вопрос: Мультисписок умеешь создавать, или нет?
(то, что работать с ним не умеешь - это понятно, но может уже есть хоть какая-то готовая реализация, в которую можно хотя-бы загрузить данные.)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


список создавать могу, простой...
но не для двухмерных матриц, парюсь с указателями...
вот процедурка для линейного
толкаюсь от нее, но как X, Y организовать не знаю
Код

        { загрузить список с файла }
           procedure Load(var f:FilType; start: AddrPointer):
                        AddrPointer;
           var
             temp, temp2: AddrPointer
             first: boolean;
           begin
             Writeln('load file');
             Reset(f);
             while start <> nil do begin  { освобождение памяти
                                           при необходимости }
               temp := start^.next
               dispose(start);
               start := temp;
             end;

             start := nil; last := nil;
             if not eof(f) then begin
               New(temp);
               Read(i, temp^);
               temp^.next := nil;  temp^.prior:= nil;
               load := temp;  { указатель на начало списка }
             end;

               while not eof(f) do begin
                 New(temp2);
                 Read(i, temp2^);
                 temp^.next := temp2; { построить список }
                 temp2^.next := nil;
                 temp^.prior := temp2;
                 temp := temp2;
               end;
               last := temp2;
             end; { конец загрузки }


тэги!

Сообщение отредактировано: GoodWind -


--------------------
Господи! Сколько же еще не сделано...
А сколько же еще предстоит не сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


Да ладно, ты с тэгами...
буду ставить.

Да ладно ? Это между прочим правила форума, если ты не в курсе, так вот я советую тебе пойти и прочитать их

Сообщение отредактировано: klem4 -


--------------------
Господи! Сколько же еще не сделано...
А сколько же еще предстоит не сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ну, насчет прочитать матрицу в список списков, я набросал кое-что... Особо не тестировал, только сама идея. Но компиляцию проходит... Попробуй с использованием этого реализовать свое задание...

type
plist = ^tlist;
tlist = { это - список по строке }
record
col_num, value: integer;
next: plist;
end;

pvector = ^tvector;
tvector = { это - список самих строк }
record
row_num: integer;
next: pvector;
end;

var
f: text;
pl, pl_first, pl_last: plist;
pv, pv_first, pv_last: pvector;

i, j, X: integer;

begin
assign(f, '__razr.txt');
reset(f);

pv_first := nil; pv_last := nil;

i := 1;
while not seekeof(f) do begin

j := 1; pl_first := nil; pl_last := nil;

while not seekeoln(f) do begin

read(f, X);

if X <> 0 then begin
{
append new item to the end of list
}
new(pl);
pl^.value := x;
pl^.col_num := j;
pl^.next := nil;

if pl_first = nil then pl_first := pl
else pl_last^.next := pl;
pl_last := pl;

inc(j);
end;

end;
readln(f);

if pl_first <> nil then begin
new(pv);
pv^.row_num := i;
pv^.next := nil;

if pv_first = nil then pv_first := pv
else pv_last^.next := pv;
pv_last := pv;
end;

inc(i);
end;

close(f);

{ Теперь в pv_first хранится указатель на начало списка списков }
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





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

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


good.gif
Код

texmode(3);
clrscr;
gotoxy(15,10);
write('БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!');


--------------------
Господи! Сколько же еще не сделано...
А сколько же еще предстоит не сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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