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

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

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

> Ссылки, обратный порядок..
сообщение
Сообщение #1


Новичок
*

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

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


Вечер добрый. Необходимо срочно решить 2 задачи. . Завтра зачет, не допустит препод, если не будет их..

Ссылочный тип данных:
1. Составить программу, которая переворачивает список, т.е. изменяет ссылки так, чтобы его элементы оказались расположены в обратном порядке.

Модули:
2. В модуль включить подпрограмму нахождения произведения квадратных матриц А и В третьего порядка. В основной программе для трех квадратных матриц А, В и С 3-го порядка, вычислить Т=А*В*С.

В первой не знаю с чего начать.
Во второй, теоретически догадываюсь.

С уважением.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 13)
сообщение
Сообщение #2


Гость






Цитата
Во второй, теоретически догадываюсь.

Смотри, как это реализуется практически:
Вычисление произведения матриц
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 12.12.2005 19:44) *

Смотри, как это реализуется практически:
Вычисление произведения матриц


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


Новичок
*

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

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


program laba9;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
n=3;
var
mat1,mat2,mat3,resmat1,resmat2:array[1..n, 1..n] of integer;
i,x,y,r,t:integer;

begin

writeln('Enter 1st matrix: ');
for y:=1 to n do
for x:=1 to n do
begin
write('a[',x,',',y,']: ');
readln(mat1[x,y]);
end;

Writeln('Enter 2nd matrix: ');
for y:=1 to n do
for x:=1 to n do
begin
write('b[',x,',',y,']: ');
readln(mat2[x, y]);
end;

{подсчет матрицы AxB}

for y:=1 to n do
for x:=1 to n do
begin
r:=0; {обнуляем сумму произведений}
for i:=1 to n do {идем под горизонтали Mat1 и по вертикали}
r:=r+mat1[i,y]*mat2[x,i]; {Mat2; умножаем и добавляем в R}
resmat1[x,y]:=r; {Resmat1[x, y] = результат = R}
end;

writeln;
writeln('AxB=');

for y:=1 to n do
begin
for x:=1 to n do
write(resmat1[x,y]:4,' ');
writeln;
end;

readln;

Writeln('Enter 3rd matrix: ');
for y:=1 to n do
for x:=1 to n do
begin
write('b[',x,',',y,']: ');
readln(mat3[x, y]);
end;

for y:=1 to n do
for x:=1 to n do
begin
r:=0;
for i:=1 to n do
r:=r+resmat1[i,y]*mat3[x,i];
resmat2[x,y]:=r;
end;

writeln;
writeln('AxBxC=');

for y:=1 to n do
begin
for x:=1 to n do
write(resmat2[x,y]:4,' ');
writeln;
end;

readln;

end.


вот. все работает.
немогу подогнать под условие задачи..sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Const
n = 3;
Type
mxType = array[1 .. n, 1 .. n] Of Integer;

Procedure multMatrix(Var res: mxType; A, B: mxType);
Var x, y, r: Integer;
Begin
for y:=1 to n do
for x:=1 to n do begin
r:=0;
for i:=1 to n do
r:=r+A[i,y]*B[x,i];
res[x,y]:=r;
end;
End;


и в основной программе:

Writeln('Enter 1st matrix: ');
{
Здесь - ввод 1 матрицы ( A )
...
}

Writeln('Enter 2nd matrix: ');
{
Здесь - ввод 2 матрицы ( B )
...
}

{
подсчет матрицы AxB
}
multMatr(resmat1, mat1, mat2);
writeln('AxB='); { ... Распечатываешь resmat1 }

readln;
Writeln('Enter 3rd matrix: ');
{
Вводишь 3-ю матрицу ( C )
...
}
multMatr(resmat2, resmat1, mat3);
writeln('AxBxC='); { ... Распечатываешь resmat2 }
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


помогите, пожалуйста, оформить в ввиде модуля с процедурой.. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


программа

program laba9; 

uses
un1;

var
mat1,mat2,mat3,resmat1,resmat2: matr;

begin
vvod(mat1, 'a');
vvod(mat2,'b');

schet(mat1,mat2,resmat1);

writeln;
writeln('AxB=');
vyvod(resmat1);
readln;

vvod(mat3,'c')

schet(resmat1,mat3,resmat2);

writeln;
writeln('AxBxC=');
vyvod(resmat2);
readln;
end.


модуль

unit un1;   
interface
const
n=3;
type matr=array[1..n, 1..n] of integer;

procedure vvod(var mat: matr; ch: char);
procedure schet(mat1,mat2: matr; var resmat: matr);
procedure vyvod(mat: matr);

implementation

procedure vvod(var mat: matr; ch: char);
var x,y: integer;
begin
writeln('Enter matrix: ',ch);
for x:=1 to n do
for y:=1 to n do
begin
write(ch, '[',x,',',y,']: ');
readln(mat1[x,y]);
end;
end;

procedure schet(mat1,mat2: matr; var resmat: matr);
var x,y,i,r: integer;
{подсчет матрицы AxB}
begin
for x:=1 to n do
for y:=1 to n do
begin
r:=0; {обнуляем сумму произведений}
for i:=1 to n do {идем под горизонтали Mat1 и по вертикали}
r:=r+mat1[x,i]*mat2[i,y]; {Mat2; умножаем и добавляем в R}
resmat[x,y]:=r; {Resmat1[x, y] = результат = R}
end;
end;

procedure vyvod(mat: matr);
var x,y: integer;
begin
for x:=1 to n do
begin
for y:=1 to n do
write(mat[x,y]:4,' ');
writeln;
end;
end;

end.


но чет не пашет..

все работает. исправил.


с чего посоветуете начать первую задачу?

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Исправь синтаксические ошибки:
procedure vvod(var mat: matr; ch: char); 
begin
...
readln(mat[x,y]); { "mat" <--- Здесь !!! }
...
end;

и
 vvod(mat3,'c'); { <--- ";" Здесь !!! }

schet(resmat1,mat3,resmat2);

Для чего тебе компилятор? Он же все это тебе говорит... wacko.gif

Цитата
с чего посоветуете начать первую задачу?
Ну, во-первых, список одно- или двухсвязный? Процедура нужна обычная или рекурсивная?

Сам список ты уже реализовал?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Цитата

Ну, во-первых, список одно- или двухсвязный? Процедура нужна обычная или рекурсивная?
?

односвязный.
обычная.
Цитата
Сам список ты уже реализовал?

сейчас думаю начать. поэтому и спросил, с чего начать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






FAQ: Списки
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


откомпилировал модуль, который дан в FAQ
но слабо представляю, как пользоваться...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Кстати, вот процедура, "разворачивающая" односвязный список:
procedure invert_list(var first, last: plist);
var p, T: plist;
begin
if (first = nil) or (not assigned(first^.next)) then exit
else begin

p := nil; last := first;
while assigned(first) do begin
T := first^.next;
first^.next := p;
p := first;
first := T
end;
first := p

end
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


BListAddFirst
а как заполнить список?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


все. всем спасибо. написал. уря. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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