Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17

Вычислить сумму трех матриц

18.11.2008, 23:40. Показов 2139. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используя универсальную для различных наборов исходных данных подпрограмму нахождения суммы дух матриц, вычислить сумму трех матриц X1(N1,N1), Y1(N1,N1) и Z1(N1,N1); X2(N2,N2), Y2(N2,N2), Z2(N2,N2). Матрицы X1(N1,N1) и X2(N2,N2) заданы, а соответствующие матрицы Y получаются путем поворота матрицы X на 90 градусов вправо, а Z - путем поворота матрицы X на 180 градусов.


Элементы матриц - вещественные числа.В качестве одного из вариантов исходных данных принять: N1=5,N2=4.
Алгоритм должен быть параметризован;обмен данными с подпрограммой должен осуществляться только через параметры;исходные массивы вместе с размерами должны храниться в отдельных файлах.

Добавлено через 33 секунды
к сожалению, свой черновой вариант могу скинуть только завтра))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2008, 23:40
Ответы с готовыми решениями:

Вычислить сумму трех матриц
Используя универсальную для различных наборов исходных данных подпрограмму нахождения суммы дух матриц, вычислить сумму трех заданных...

Вычислить сумму в трех циклах
Люди добрые помогите мне с задачкой с паскалем, буду благодарен...

Даны три числа x, у, z. Вычислить сумму только положительных чисел из трех данных
Даны три числа x, у, z. Вычислить сумму только положительных чисел из трех данных

10
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.11.2008, 09:27
Чтобы разобраться с алгоритмами поворотов нарисуйте матрицу 4х4 и поверните ее на 90 и 180 градусов, потом сравнивайте индексы новых матриц с индексами исходных, увидите ту закономерность, которая записана в программе.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
uses crt;
type Tmatr=array[1..20,1..20]of real;  //тип матриц
procedure Pov90(n:integer;a:Tmatr;var b:Tmatr); //поворот на 90 вправо
var i,j:integer;
begin
for i:=1 to n do   
for j:=1 to n do
b[i,j]:=a[n-j+1,i];
end;
procedure Pov180(n:integer;a:Tmatr;var b:Tmatr);//поворот на 180
var i,j:integer;
begin
for i:=1 to n do   
for j:=1 to n do
b[i,j]:=a[n-i+1,n-j+1];
end;
procedure Summ(n:integer;b:Tmatr;var a:Tmatr);//сумма двух матриц
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=a[i,j]+b[i,j];
end;
procedure Vvod(n:integer;var c:Tmatr);//ввод
var i,j:integer;
begin
for i:=1 to n do
  begin
   for j:=1 to n do
     begin
       c[i,j]:=10*random;
       write(c[i,j]:6:2);
     end;
   writeln;
 end;
end;
procedure Vyvod(n:integer;var c:Tmatr);//вывод
var i,j:integer;
begin
for i:=1 to n do
  begin
   for j:=1 to n do
   write(c[i,j]:6:2);
   writeln;
 end;
end;
 
var x1,y1,z1,x2,y2,z2:Tmatr; //раздел переменных программы
    n1,n2,i,j:integer;
begin    //программа
clrscr;
randomize;
write('n1=');readln(n1);
write('n2=');readln(n2);
writeln('Matrica X1:');
Vvod(n1,x1);
Writeln('Matrica Y1:');
Pov90(n1,x1,y1);
Vyvod(n1,y1);
Writeln('Matrica Z1:');
Pov180(n1,x1,z1);
Vyvod(n1,z1);
Writeln('Summa matric X1, Y1, Z1:');
Summ(n1,y1,x1); //к х1 прибавляем у1
Summ(n1,z1,x1); //к новой х1 прибавляем z1
Vyvod(n1,x1);
readln;
writeln('Matrica X2:');
Vvod(n2,x2);
Writeln('Matrica Y2:');
Pov90(n2,x2,y2);
Vyvod(n2,y2);
Writeln('Matrica Z2:');
Pov180(n2,x2,z2);
Vyvod(n2,z2);
Writeln('Summa matric X2, Y2, Z2:');
Summ(n2,y2,x2);
Summ(n2,z2,x2);
Vyvod(n2,x2);
readln
end.
0
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17
21.11.2008, 17:31  [ТС]
Puporev, как связать с этим:исходные массивы вместе с размерами должны храниться в отдельных файлах.файлы задать в константах, а потом??
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.11.2008, 17:58
Создайте текстовый файл для каждой исходной матрицы. В файле напишите так:
5 //размер матрицы
1 2 3 4 5 //элементы матрицы
2 2 3 4 5
3 4 5 6 7
4 5 6 7 8
5 2 3 4 5
В программе пишите:
Pascal
1
2
3
4
5
6
7
8
var f,f1:text;
..................
assign(f,'file'.txt);
reset(f);
read(f,n1); //читаем размер матрицы
for i:=1 to n1 do
for j:=1 to n1 do
read(f,a[i,j];)
0
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17
21.11.2008, 19:11  [ТС]
Puporev, assign и т.д. прописывать для каждого файла по отдельности?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.11.2008, 19:14
Да, конечно. Для каждого файла своя переменная f1,f2..., свое имя, assign,reset, в конце программы close.
0
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17
21.11.2008, 20:00  [ТС]
Puporev, так?)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     begin
     clrscr;
     assign(f1,'file.txt');
     reset(f1);
     writeln('чтение из файла Matrica X1: ', 'file.txt');
     readln(f1,n1);
     writeln('чтение из файла Matrica Y1: ', 'file.txt');
     Pov90(n1,x1,z1);
     writeln('n1=', n1:4,'y1=', y1:8);
     writeln('чтение из файла Matrica Z1: ');
     Pov180(n1,x1,z1);
     writeln('n1=', n1:4,'z1=', z1:8);
     Writeln('Summa matric X1, Y1, Z1: ');
     Summ(n1,y1,x1);
     Summ(n1,z1,x1);
     writeln('n1=', n1:4,'x1=', x1:8);
     readln;
0
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17
28.11.2008, 19:52  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Program Sum_Matrix;
Uses             {Подключаемый модуль для управления экраном}
      crt;
Const
   Fname1='file1.txt';
   Fname2='file2.txt';
 
Type
   Matrix=array [1..n,1..n] of real;
 
 
Procedure vvodmatr (xFname:string;
              N:integer;
              var aMatr:matrix);
var
   f:text;
   i, j: integer;
 
begin
assign (f,xFname);
reset (f);
readln (n);
writeln (n);
if N<=0
then
   begin
   writeln ('Nevernoe znachenie N. N dolzhno bytj bolshe 0.');
   readln;
   close (f);
   exit;
   end;
while not eof(f) do
   for i:=1 to n do
      begin
      for j:=1 to n do
      begin
      write(aMatr[i,j]:6:2);
      end;
      writeln;
      end;
close(f);
end;
 
 
 
Procedure Pov90 (n:integer;
           aMatr:matrix;
          var bMatr:matrix);
var
   i,j:integer;
begin
for i:=1 to n do
   for j:=1 to n do
   aMatr[i,j]:=bMatr[n-j+1,i];
end;
 
 
 
Procedure Summ (n:integer;
          aMatr:matrix;
          bMatr:matrix;
          var xSum1:matrix);
var
   i,j:integer;
begin
for i:=1 to n do
   for i:=1 to n do
      xSum1[i,j]:=aMatr[i,j]+bMatr[i,j];
end;
 
 
 
Procedure Vyvod (n:integer;
           var xSum:matrix);
var
   i,j:integer;
begin
for i:=1 to n do
   begin
   for j:=1 to n do
      write (xSum[i,j]:6:2);
      writeln;
   end;
end;
 
 
 
Var
f1, f2:text;
x1matr, y1matr, z1matr, x2matr, y2matr, z2matr:matrix;
sum1matr, sum2matr, sum1, sum2:matrix;
n1, n2, i, j:integer;
 
{******MAIN PROGRAM*******}
 
begin
clrscr;
 
writeln ('Matrica X1');
vvodmatr (Fname1, N1, X1matr);
 
writeln ('Matrica Y1');
Pov90 (n1, x1matr, y1matr);
 
writeln ('Matrica Z1');
Pov90 (n1, y1matr, z1matr);
 
Writeln ('Summa matric X1, Y1, Z1');
Summ (n1, y1matr, x1matr, sum1matr);
Summ (n1, sum1matr, z1matr, sum1);
Vyvod(n1, Sum1);
readln;
 
writeln ('Matrica X2');
vvodmatr (Fname2, N2, X2matr);
 
Writeln ('Matrica Y2');
Pov90 (n2, x2matr, y2matr);
 
Writeln ('Matrica Z2');
Pov90 (n2, y2matr, z2matr);
 
Writeln ('Summa matric X2, Y2, Z2');
Summ (n2, x2matr, y2matr, sum2matr);
Summ (n2, sum2matr, z2matr, sum2);
Vyvod (n2, Sum2);
readln;
END.
Добавлено через 1 минуту 33 секунды
значит так.там когда идет объявление матрицы то не читает это n.он стопорится и говорит что это неописанная переменная.а она описывается потом и принимает те значения которые будут считаны из файла.надо сделать так чтобы компелятор пропускал вот этот момент

Добавлено через 2 минуты 13 секунд
Puporev, посмотри вот выше сообщения
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.11.2008, 20:41
Напишите так:
Pascal
1
2
Type
Matrix=array [1..50,1..50] of real;
И оформляйте код тегами, невозможно читать. Кнопка в виде решетки над окном сообщений.

Добавлено через 30 минут 44 секунды
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Program Sum_Matrix;
Uses crt;
Const  Fname1='file1.txt';
          Fname2='file2.txt';
Type
   Matrix=array [1..20,1..20] of real;
 
Procedure vvodmatr (xFname:string; var N:integer;var aMatr:matrix);
var f:text;
    i, j: integer;
begin
assign (f,xFname);
reset (f);
readln (f,n);
writeln (n);
if N<=0 then
   begin
    writeln ('Nevernoe znachenie N. N dolzhno bytj bolshe 0.');
    readln;
    close (f);
    exit;
   end;
while not eof(f) do
for i:=1 to n do
   begin
    for j:=1 to n do
      begin
       read(f,aMatr[i,j]);
       write(aMatr[i,j]:6:2);
      end;
    writeln;
   end;
close(f);
end;
 
Procedure Pov90 (n:integer;aMatr:matrix; var bMatr:matrix);
var
i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
bMatr[i,j]:=aMatr[n-j+1,i];
end;
 
Procedure Summ (n:integer;aMatr,bMatr:matrix;var xSum1:matrix);
var
i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
xSum1[i,j]:=aMatr[i,j]+bMatr[i,j];
end;
 
Procedure Vyvod (n:integer;var xSum:matrix);
var
i,j:integer;
begin
for i:=1 to n do
   begin
    for j:=1 to n do
    write (xSum[i,j]:6:2);
    writeln;
  end;
end;
 
 
Var
f1, f2:text;
x1matr, y1matr, z1matr, x2matr, y2matr, z2matr:matrix;
sum1matr, sum2matr, sum1, sum2:matrix;
n1, n2, i, j:integer;
 
{******MAIN PROGRAM*******}
 
begin
clrscr;
writeln ('Matrica X1');
vvodmatr (Fname1, N1, X1matr);
writeln ('Matrica Y1');
Pov90 (n1, x1matr, y1matr);
Vyvod(n1,y1matr);
writeln ('Matrica Z1');
Pov90 (n1, y1matr, z1matr);
Vyvod(n1,z1matr);
Writeln ('Summa matric X1, Y1, Z1');
Summ (n1, y1matr, x1matr, sum1matr);
Summ (n1, sum1matr, z1matr, sum1);
Vyvod(n1, Sum1);
readln;
 
writeln ('Matrica X2');
vvodmatr (Fname2, N2, X2matr);
Writeln ('Matrica Y2');
Pov90 (n2, x2matr, y2matr);
Vyvod(n2,y2matr );
Writeln ('Matrica Z2');
Pov90 (n2, y2matr, z2matr);
Vyvod(n2,z2matr );
Writeln ('Summa matric X2, Y2, Z2');
Summ (n2, x2matr, y2matr, sum2matr);
Summ (n2, sum2matr, z2matr, sum2);
Vyvod (n2, Sum2);
readln;
END.
1
0 / 0 / 0
Регистрация: 13.11.2008
Сообщений: 17
28.11.2008, 21:14  [ТС]
ой пасиб огромное ))убрала eof и ВСЕ заработало!!
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.11.2008, 21:23
И с eof(f) нормально работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2008, 21:23
Помогаю со студенческими работами здесь

Сформировать матрицу D из трех других матриц
не работает процедура подскажите что не правильно.Нужно сформировать матрицу D Aij=(–i/4+1)·j/2 Bij=i·(Aij–j) Cij=–2·Aij+Bij ...

Создать матрицу из наибольших элементов трех матриц.
Вот такая задачка. помогите решить пожалуйста:scratch: По трем заданным матрицам A(N,N),B(N,N) и C(N,N) постройте матрицу X того же...

Найти сумму матриц
Даны две вещественные квадратные матрицы А и В порядка n. Считая, что 1 ≤ i ≤ n, 1 ≤ j ≤ n, найти сумму матриц С = А + В, где...

Найти сумму двух матриц
Найти сумму двух матриц размером nm.

Получить сумму транспонированных матриц
1)Заданы матрицы A, B, C. Упорядочить по убыванию три числа X, Y, Z, где X – максимальный элемент матрицы A, Y – максимальный элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru