![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Szug |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Помогите, пожалуйста, разобраться! В задаче требует: вычислить С=2*(А-0,5*В)+А*В, где А,В,С - матрицы мах 8х8. Выполнить с помощью подпрограмм. ОБОЙТИСЬ БЕЗ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ!!!??? (не могу понять как это возможно). Организовать возможность ввода размерности и элементов с клавиатуры и из файла и выдачу результата на дисплей и в файл. Программу какую-никакую я написал, но вот при вводе данных из файла - запись в файл не происходит. а с клавы все ОК! Подскажите что у меня не так, плиз-з-з....
Код program Lab11; type Matr=array[1..8,1..8] of real; var a,b,c: matr; n,m:byte; r,z:char; Procedure vvod(var x:matr;y:char);{Процедура ввода матрицы с клавиатуры} var i,j:byte; begin for i:=1 to n do for j:=1 to m do begin writeln('Введите элемент матрицы ',y,i,j); readln(x[i,j]); end; end; {Процедура ввода матрицы из файла} Procedure vvodF(var a,b:matr); var inp:text; i,j:byte; begin assign(inp,'data.txt'); reset(inp); read(inp,n,m); for i:=1 to n do for j:=1 to m do read(inp,a[i,j]); for i:=1 to n do for j:=1 to m do read(inp,b[i,j]); close(inp); end; Procedure outF(var x:matr);{Процедура вывода матрицы в файл} var out : text; i,j:byte; begin assign(out,'rezultat.dat'); rewrite(out); for i:=1 to n do begin {writeln(out);} for j:=1 to m do write(out,x[i,j]); end; close(out); end; Procedure OutMatr(x:matr); { процедура вывода матрицы на экран } var i,j:byte; begin write(' '); for j:=1 to m do write (i:8); writeln; write(' |'); for j:=1 to m do write ('--------'); writeln; for i:=1 to n do begin write (i:5,'|'); for j:=1 to m do write(x[i,j]:5); writeln; end; end; procedure axb(var ab:matr);{процедура умножения матриц AB } var s:real; i,j,k:byte; begin for i:=1 to n do for j:=1 to m do begin s:=0; for k:=1 to n do s:=s+a[k,i]*b[j,k]; c[i,j]:=s; end; end; procedure rez(var c:matr); {функция вычисления С} var i,j:byte; begin for i:=1 to n do for j:=1 to m do c[i,j]:=2*(a[i,j]+0.5*b[i,j])+c[i,j]; end; begin writeln('Для ввода данных с клавиатуры нажмите <K>, из файла - <F>'); read(r); case r of 'f':vvodF(a,b); 'k':begin writeln('ВВедите размерность матриц NxM '); readln(n,m);{Вводим размерность матриц NxM}; vvod(a,'a'); vvod(b,'b'); end; end; { вывод исходных матриц } writeln; writeln('a:'); OutMatr(a); writeln; writeln('b:'); OutMatr(b); writeln; {вычисляем произведение матриц А и В} axb(c); {вычисляем С по формуле} rez(c); { вывод результата } writeln('с:'); OutMatr(c); writeln; writeln('Расчет окончен. Сохранить результат в файл? Y/N'); readln(z); if z = 'y' then begin outF(c); writeln ('Pезультат сохранен в файл "RESULTAT.TXT"'); readln; end; end. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 13:50 |