Перевести код с Си на Pascal
Формулировка задачи:
Не знаю куда именно писать, поэтому решил написать тут, помогите перевести код на Pascal
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream.h>
using namespace std;
int main()
{
const int n=5;
const int m=4;
srand( time( NULL ) );
int a[n][m], max_str[n], min_str[n], max_stolb[m], min_stolb[m], i, j, i_max, i_min;
/*
v massive max_str[] hranitsy max znacheniy massiva po strokam
v massive min_str[] hranitsy min znacheniy massiva po strokam
v massive max_stolb[] hranitsy max znacheniy massiva po stlobcham
v massive min_stolb[] hranitsy min znacheniy massiva po stlobcham
*/
cout<<"Ishodn matr:"<<endl;
for(i=0; i<n; i++)
{
i_max=i_min=0;
for(j=0; j<m; j++)
{
a[i][j]=rand()%10;
cout<<a[i][j]<<" ";
if(a[i][j]<a[i][i_min])
i_min=j;
if(a[i][j]>a[i][i_max])
i_max=j;
}
cout<<endl;
max_str[i]=a[i][i_max];
min_str[i]=a[i][i_min];
}
for(j=0; j<m; j++)
{
i_min=i_max=0;
for(i=0; i<n; i++)
{
if(a[i][j]<a[i_min][j])
i_min=i;
if(a[i][j]>a[i_max][j])
i_max=i;
}
max_stolb[j]=a[i_max][j];
min_stolb[j]=a[i_min][j];
}
cout<<"Index sedl tochek:"<<endl;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
if ((a[i][j]==max_str[i] && a[i][j]==min_stolb[j]) ||
(a[i][j]==min_str[i] && a[i][j]==max_stolb[j]))
cout<<i<<" "<<j<<endl;
return 0;
}Решение задачи: «Перевести код с Си на Pascal»
textual
Листинг программы
const m=5; n=4; W=4;
var
a: array [1..m,1..n] of Integer;
mxr, mnr: array [1..m] of Integer;
mxc, mnc: array [1..n] of Integer;
i, j, mx, mn: Integer;
begin
Randomize;
for i:=1 to m do for j:=1 to n do a[i,j]:=Random(10);
for i:=1 to m do begin
mx:=1; mn:=1;
for j:=2 to n do begin
if a[i,mx]<a[i,j] then mx:=j;
if a[i,mn]>a[i,j] then mn:=j;
end;
mxr[i]:=a[i,mx]; mnr[i]:=a[i,mn];
end;
for j:=1 to n do begin
mx:=1; mn:=1;
for i:=2 to m do begin
if a[mx,j]<a[i,j] then mx:=i;
if a[mn,j]>a[i,j] then mn:=i;
end;
mxc[j]:=a[mx,j]; mnc[j]:=a[mn,j];
end;
WriteLn('A =');
for i:=1 to m do begin
for j:=1 to n do Write(a[i,j]:W); WriteLn;
end;
WriteLn('Индексы седловых точек:');
for i:=1 to m do for j:=1 to n do
if (a[i,j]=mxr[i]) and (a[i,j]=mnc[j]) or
(a[i,j]=mnr[i]) and (a[i,j]=mxc[j])
then WriteLn(i,' ',j);
end.
Объяснение кода листинга программы
- Объявляются константы
m=5,n=4иW=4 - Объявляются массивы:
aразмеромm x nдля хранения целых чиселmxrиmnrразмеромmдля хранения максимального и минимального элементов в строкахmxcиmncразмеромnдля хранения максимального и минимального элементов в столбцахi,j,mx,mnтипа Integer для итерации и хранения временных значений
- Выполняется инициализация генератора случайных чисел
- Заполняется массив
aслучайными значениями в диапазоне от 0 до 9 - Вычисляются максимальные и минимальные значения в строках и сохраняются в массивах
mxrиmnr - Вычисляются максимальные и минимальные значения в столбцах и сохраняются в массивах
mxcиmnc - Выводится на экран массив
a - Выводятся индексы седловых точек, то есть точек, которые являются и минимумом в своей строке и максимумом в своем столбце, либо максимумом в своей строке и минимумом в своем столбце.