Перевести код с Си на 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
- Выводятся индексы седловых точек, то есть точек, которые являются и минимумом в своей строке и максимумом в своем столбце, либо максимумом в своей строке и минимумом в своем столбце.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д