Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2012, 00:20   #1
Вероника_94
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 22
По умолчанию задача на двумерный массив с использованием процедуры(Паскаль)

эта программа есть , только без процедур

Код:
uses crt;
var
a:array[1..10,1..10] of integer;
b:array[1..10,1..10] of integer;
c:array[1..10,1..10] of integer;
d:array[1..10,1..10] of integer;
e:array[1..10,1..10] of integer;
f:array[1..10,1..10] of integer;
g:array[1..10,1..10] of integer;
h:array[1..10,1..10] of integer;
t:array[1..10,1..10] of integer;
i,j,n,m,sp,s,l:integer;
begin
clrscr;
randomize;
repeat
writeln('Каким способом формирования матриц будем пользоваться?');
writeln('1: Формирование случайным образом');
writeln('2: Формирование вручную');
write('Введите способ формирование матриц=');
readln(sp);
case sp of
1: begin
    write('Введите размер матриц=');
    readln(n);
    writeln('Формирование матрицы A:');
    for i:=1 to n do begin
     for j:=1 to n do begin
     a[i,j]:=random(5);
     write(a[i,j]:5);
     end;
    writeln;
    end;
    writeln('Формирование матрицы B:');
    for i:=1 to n do begin
     for j:=1 to n do begin
     b[i,j]:=random(5);
     write(b[i,j]:5);
     end;
    writeln;
    end;
    writeln('Формирование матрицы C');
    for i:=1 to n do begin
     for j:=1 to n do begin
     c[i,j]:=random(5);
     write(c[i,j]:5);
     end;
    writeln;
    end;
   end;
2: begin
    write('Введите размер матриц=');
    readln(n);
    writeln('Формирование матрицы A:');
    for i:=1 to n do begin
     for j:=1 to n do begin
     read(a[i,j]);
     end;
    write;
    end;
    writeln('Формирование матрицы B:');
    for i:=1 to n do begin
     for j:=1 to n do begin
     read(b[i,j]);
     end;
    write;
    end;
    writeln('Формирование матрицы C:');
    for i:=1 to n do begin
     for j:=1 to n do begin
     read(c[i,j]);
     end;
    write;
    end;
   end;
else writeln('Ошибка, введите заново=');
end;
until (sp>=1) or (sp<3);
readln;
writeln('A*B:');
s:=0;
for i:=1 to n do begin
 for j:=1 to n do begin
  for l:=1 to n do begin
   s:=s+a[i,l]*b[l,j];
   end;
   e[i,j]:=s;
   s:=0;
  end;
end;
for i:=1 to n do begin
 for j:=1 to n do begin
 write(e[i,j]:5);
 end;
 writeln;
end;
writeln('3*B');
for i:=1 to n do begin
 for j:=1 to n do begin
 f[i,j]:=(3*b[i,j]);
 end;
end;
for i:=1 to n do begin
 for j:=1 to n do begin
 write(f[i,j]:5)
 end;
 writeln;
end;
writeln('Транспонирование матрицы C:');
for i:=1 to n do begin
 for j:=1 to n do begin
 t[i,j]:=c[j,i];
 end;
end;
for i:=1 to n do begin
 for j:=1 to n do begin
 write(t[i,j]:5);
 end;
 writeln;
end;
writeln('Подсчёт матрицы D по формуле: D=AB+3B-C^T:');
for i:=1 to n do begin
 for j:=1 to n do begin
 d[i,j]:=e[i,j]+f[i,j]-t[i,j];
 write(d[i,j]:5);
 end;
 writeln;
end;
readln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 31.01.2012 в 09:54.
Вероника_94 вне форума Ответить с цитированием
Старый 31.01.2012, 00:36   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

так по порядку!
поехали!
1) Для передачи многомерных массивов в процедуры надо создать тип этого массива
делаем так
Код:
Type
     matrix = array[1..10,1..10] of integer;
Далее! Если размерность массива постоянна, то можно определить константный размер
так
Код:
const
    rows = 10;
    cols = 10;
type
    matrix = array[1..rows,1..cols] of integer;
2)Теперь процедуры
процедура ввода
Код:
procedure InputArray(var m: matrix; const row,col: byte; const mode: boolean);
var
    i, j: integer;
begin
     if mode = true then {Тогда рандом modeON}
     begin
         randomize;
         for i := 1 to row do
             for j := 1 to col do
                  m[i,j] := random(101) - 50;
     end
     else
     begin
          Writeln ('Введите ', row*col, ' чисел:');
          for i := 1 to row do
               for j := 1 to col do
                   Read (m[i,j]);
          Readln;
     end;
end;
за ней вывод
Код:
procedure OutputArray(const m: matrix; const row,col: byte);
var
    i, j: integer;
begin
    for i := 1 to row do
    begin
        for j := 1 to col do
            Write (m[i,j]:5);
        Writeln;
    end;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 31.01.2012 в 00:45.
Hacker19_90 вне форума Ответить с цитированием
Старый 31.01.2012, 00:59   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

потом сложение
Код:
procedure AddArray(var NewArray: matrix; const Old1,Old2: matrix; const row,cols: byte);
var
     i, j: byte;
begin
     for i := 1 to row do
          for j := 1 to col do
              NewArray[i,j] := Old1[i,j] + Old2[i,j];
end;
умножение на число
Код:
procedure MulArrayToNum(var NewArray: matrix; const number: integer; const row,cols: byte);
var
     i, j: byte;
begin
     for i := 1 to row do
          for j := 1 to col do
              NewArray[i,j] := NewArray[i,j]*number;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 31.01.2012 в 01:04.
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с использованием процедуры Delphi7 warma2d Помощь студентам 8 11.12.2010 21:01
Задача с использованием функции/процедуры [Gunpowder M.D.] Помощь студентам 5 20.10.2010 00:44
Задача на двумерный массив. Паскаль Nubas Помощь студентам 5 12.10.2009 22:40
задача с использованием процедуры Chief Паскаль, Turbo Pascal, PascalABC.NET 0 12.01.2009 12:59
2 задачи, двумерный массив, процедуры&функции mAveRik Помощь студентам 1 18.12.2008 19:01