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

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

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

 
 Ответить  Открыть новую тему 
> вычисления и запись в файл, данные из файла и результат в файл
Szug
сообщение 21.11.2006 22:46
Сообщение #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

 



- Текстовая версия 20.07.2025 13:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"