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

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

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

> вычисления и запись в файл, данные из файла и результат в файл
сообщение
Сообщение #1





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

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


Помогите, пожалуйста, разобраться! В задаче требует: вычислить С=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.

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

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


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

 





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