Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
Cheva
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 2
#1

Задача на двумерный массив - Pascal

15.05.2009, 21:53. Просмотров 425. Ответов 2
Метки нет (Все метки)

Задача следующая:

Найти произведение Х=Y(5,3)*Z(3,5) и Q=Z(3,5)*X(5,5) и результаты матрицы X и Q записать в файл a3. Матрица Y вводится из файла a2. Матрица Z вводится из файла a1.
Первый столбец матрицы Y, Второй столбец матрицы Z и четвертый столбец матрицы Х1 умножить на Р, где Р=max (произведение Х[i,j]; произведение Y[i,j]; произведение Z[i,j]). Преобразованные матрицы записать в те же файлы.
Найти произведение ненулевых элементов каждой матрицы. Результаты записать в файл a4


По-моему, делается так:


Код
uses crt;
var y,z,x:matrix; f:text; Pm:real; i,k:integer;

 procedure enter(name:string; k,j:byte; var Q:mas);
    var fa:text; t,h:byte;
    begin
    assign(fa,name);
      reset(fa);
      for t:=1 to k do
      for h:=1 to j do read(fa, q[t,h]);
      close(fa);
    end;
begin
clrscr;
enter('C:\a1',3,5,z);
for i:=1 to 5 do begin writeln;
for j:=1 to 3 do write(y[i,j]:8:2);
                 end;
readln;
end.



  procedure prv(name:string; k,l:byte; var p,o:mas);
    var i,t,h:byte; x,s:real; r:mas; f:text;
    begin
     assign(f,name);
     append(f);
      for i:=1 to k do begin writeln(f);
      for t:=1 to k do begin
                         s:=0;
                         for h:=1 to l do
                         s:=s+p[i,h]*o[h,t];
                         r[i,t]:=s;
                         write(f,r[i,t]:8:2);
                       end;
                       end;
      writeln(f);
      close(f);
    end;

function pro(n,m:byte; var d:mas):real;
    var i,j:byte; s:real;
    begin
          s:=0;
      for i:=1 to n do
      for j:=1 to m do s:=s+d[i,j];
      pro:=s;
    end;


program mod4;
uses crt;
var P,C,b,c:real;
function Pmax(x,y,z:real):real;
    begin
      Pmax:=x;
      if (x<y)and(z<y) then Pmax:=y;
      if (z>x)and(z>y) then Pmax:=z;
    end;

procedure UMN(name:string; p:real; n,m,h:byte; var x:mas);
    var i,j:byte; f:text; y:real;
    begin
      assign(f,name);
      append(f);
      for i:=1 to n do x[i,m]:=x[i,m]*p;
      writeln(f);
      for i:=1 to n do begin writeln(f);
      for j:=1 to h do write(f,x[i,j]:8:2);
                       end;
      close(f);
    end;

procedure prnot0(name,name1:string; k,n,m,logik:byte);
    var i,j:byte; x,p:real; f,fa:text; q:mas;
    begin
      assign(f,name);
      assign(fa,name1);
      append(f);
      reset(fa);
    if logik=1 then for i:=1 to k do read(fa,x);
    for i:=1 to n do
    for j:=1 to m do read(fa,q[i,j]);
      close(fa);
      p:=1;
      for i:=1 to n do
      for j:=1 to m do if q[i,j]<>0 then p:=p*q[i,j];
      writeln(f,p:8:9);
      close(f);
    end;

Begin
assign(f,'C:\a3');
rewrite(f);
close(f);
assign(f,'C:\a4');
rewrite(f);
close(f);
assign(f,'C:\a2.txt');
rewrite(f);
close(f);
assign(f,'C:\a3.txt');
rewrite(f);
close(f);
assign(f,'C:\a4.txt');
rewrite(f);
close(f);

begin
  enter('C:\a1',5,3,y);
  enter('C:\a2',3,5,z);
  prv('C:\a3',5,3,y,z);
  prv('C:\a3',3,5,z,y);
  writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
  writeln('Результаты работы находятся в файле A3 на диске C:\');
  readln;
  enter('C:\a3',5,5,x);
  Pm:=Pmax(pro(3,5,y),pro(5,3,z), pro(5,5,x));   {Здесь появляется ошибка type mismatch}
  umn('C:\a1',pm,3,4,5,z);
  umn('C:\a2',pm,5,1,3,y);
  umn('C:\a3',pm,5,4,5,x);
  writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
  writeln('Результаты работы находятся в файлах A1,A2,A3 на диске C:\');
  readln;
  prnot0('C:\a4','C:\a1',0,3,5,0);
  prnot0('C:\a4','C:\a2',0,5,3,0);
  prnot0('C:\a4','C:\a1',15,3,5,1);
  prnot0('C:\a4','C:\a2',15,5,3,1);
  prnot0('C:\a4','C:\a3',0,5,5,0);
  prnot0('C:\a4','C:\a3',9,3,3,1);
  prnot0('C:\a4','C:\a3',25,5,5,1);
  writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
  writeln('Результаты работы находятся в файле A4 на диске C:\');
  readln;
  end.
Где появляется ошибка я указал. Но как ее исправить не пойму. Не могли бы Вы помочь и подправить программу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2009, 21:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на двумерный массив (Pascal):

Задача на двумерный массив - Pascal
Вводится массив, состоящий из 3 столбцов и произвольного количества строк. Этим массивом задается функция от 2-х переменных следующим...

Задача на двумерный массив - Pascal
В квадратной матрице размером М*М, имеющей МКМ, содержаться целые числа. М-число строк и столбцов. Ввести элементы матрицы с...

Задача на двумерный массив. - Pascal
Дан массив А(4,4) сформировать новый массив b элементы которого будут столбцы массива A. Новый массивы вывести на печать.

Задача на двумерный массив - Pascal
Написать программу которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по строкам

Задача на двумерный массив - Pascal
А. Создайте программу, которая заполняет квадратный массив 7*7 числами по следующему правилу: •элементы, расположенные на побочной...

Задача на двумерный массив. Процедура - Pascal
Определить количество отрицательных и положительных элементов строк матрицы А (3,3). Программу необходимо составить с использованием...

2
Puporev
Модератор
52840 / 40651 / 13905
Регистрация: 18.05.2008
Сообщений: 94,355
16.05.2009, 13:12 #2
function pro(n,m:byte; var d:mas):real;
Зачем var d:mas? Вы же не создаете массив, а используете готовый, попробуйте убрать var.
0
Cheva
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 2
16.05.2009, 14:07 #3
Puporev, убирай - не убирай, а ошибка все равно остается.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2009, 14:07
Привет! Вот еще темы с ответами:

задача на двумерный массив действительных чисел - Pascal
Ребята помогите , я уже голову сломал , не могу решить.... задача. . В двумерном массиве действительных чисел A поменять местами ...

О чем это? Задача на двумерный массив в Pascal - Pascal
Ввести целочисленный двумерный массив AN×M, вывести его. Найти сумму его чётных элементов, исключая максимальный и минимальный (всего...

Задача на двумерный массив. Очень нужна ваша помощь. - Pascal
Дан двумерный массив. Определить: а) сумму чётных элементов массива; б) колличество элементов массива, меньших 50.

Простая задача на двумерный массив(подскажите если не сложно) - Pascal
Вместо совпадающих цифр в рядках целой матрицы NxN(можно любую 3х3 4х4 5х5) записать ноли. (тема:двумерные массивы) Я понимаю что...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.