Перевести код из Pascal в C, C++ или С#:
program PrResh;
///////////////Подключение графического модуля///////////////
var
n, m, r: Integer;
A: array [1..100, 1..100] of Real;
o: char;
w: text;
///////////////Процедура ввода значений///////////////
procedure Vvod(n, m: integer);
var
i, j: integer;
begin
assign (w, 'PrResh.txt');
rewrite (w);
for i := 1 to n do
begin
for j := 1 to m do
begin
Write('A[', i, ',', j, ']=');
Read(A[i, j]);
end;
end;
writeln('Матрица:');
writeln(w, 'Матрица:');
for i := 1 to n do
begin
for j := 1 to m do
begin
write(A[i, j], ' ');
write(w, A[i, j], ' ');
end;
writeln;
writeln(w);
end;
writeln(w);
close(w);
end;
///////////////Критерий Сэвиджа///////////////
procedure Sevi(n, m: integer);
var
B: array [1..100] of real;
Q: array [1..100, 1..100] of real;
i, j: integer;
c: real;
begin
assign (w, 'PrResh.txt');
append(w);
writeln(w, 'Критерий Сэвиджа.');
writeln(w, 'Наибольшее значение каждого столбца.');
for j := 1 to n do
begin
c := A[1, j];
for i := 1 to m do
begin
if A[i, j] > c then
c := A[i, j];
end;
B[j] := c;
writeln(w, 'Значение ', j, ' столбца = ', B[j]);
end;
writeln(w, 'Вычтем из наибольшего значения столбца, каждое значение столбца.');
writeln(w, 'Сформируем новую матрицу из полученных значений.');
for i := 1 to m do
begin
for j := 1 to n do
begin
Q[i, j] := B[j] - A[i, j];
write(w, Q[i,j], ' ');
end;
writeln(w);
end;
writeln(w, 'Наибольшее значение каждой строки.');
for i := 1 to n do
begin
c := Q[i, 1];
for j := 1 to m do
begin
if Q[i, j] > c then
c := Q[i, j];
end;
B[i] := c;
writeln(w, 'Значение ', i, ' строки = ', B[i]);
end;
for i := 1 to n do
begin
Writeln('B[', i, ']=', B[i]);
end;
c := B[1];
for i := 1 to n do
begin
if B[i] < c then
c := B[i];
end;
writeln('Ответ:');
writeln(w, 'Ответ:');
for i := 1 to n do
begin
if B[i] = c then
begin
writeln('B[', i, ']=', B[i]);
writeln(w, 'E', i,'=', B[i]);
end;
end;
close(w);
end;
///////////////Критерий Гермейера///////////////
procedure Ger(n, m: integer);
var
i, j : integer;
u:real;
V1, V2: array [1..100, 1..100] of real;
q, B: array [1..100] of real;
c: real;
begin
assign (w, 'PrResh.txt');
append(w);
writeln(w, 'Критерий Гермейера.');
Writeln('Для решения необходимы сведенья о вероятности принятия каждого решения.');
Writeln(w, 'Вероятности принятия решения:');
Readln (u);
for j := 1 to m do
begin
q[j]:=u;
//Write('q', j, '=');
//Readln(q[j]);
Write(w, 'q', j, ' = ', q[j], ' ');
end;
writeln(w);
c := A[1, 1];
for i := 1 to n do
begin
for j := 1 to m do
begin
if A[i, j] > c then
c := A[i, j];
end;
end;
writeln(w, 'Наибольшее значение в матрице = ', c);
c := c + 1;
writeln(w, 'Необходимо из каждого элемента матрицы вычесть ', c);
writeln(w, 'Полученная матрица:');
for i := 1 to n do
begin
for j := 1 to m do
begin
V1[i, j] := A[i, j] - c;
write(w, V1[i,j], ' ');
V2[i, j] := V1[i, j] * q[j];
end;
writeln(w);
end;
writeln(w, 'Умножаем каждый элемент матрицы на соответствующую вероятность.');
writeln(w, 'Выбираем наименьший результат каждой строки.');
for i := 1 to n do
begin
c := V2[i, 1];
for j := 1 to m do
begin
if V2[i, j] < c then
c := V2[i, j];
end;
B[i] := c;
writeln(w, 'Значение ', i, ' строки = ', B[i]);
end;
for i := 1 to n do
begin
Writeln('B[', i, ']=', B[i]);
end;
c := B[1];
for i := 1 to n do
begin
if B[i] > c then
c := B[i];
end;
writeln('Ответ:');
writeln(w, 'Ответ:');
for i := 1 to n do
begin
if B[i] = c then
begin
writeln('B[', i, ']=', B[i]);
writeln(w, 'E', i,'=', B[i]);
end;
end;
close(w);
end;
///////////////Начальный ввод в прогамму///////////////
begin
assign (w, 'PrResh.txt');
rewrite (w);
write(w, 'Матрица:');
close(w);
Write('Введите количество строк матрицы ');
Readln(n);
Write('Введите количество столбцов матрицы ');
Readln(m);
Vvod(n, m);
o := 'y';
while o <> 'n' do
begin
if o = 'y' then
begin
writeln('');
writeln('Методы выбора:');
writeln('1. Критерий Сэвиджа;');
writeln('2. Критерий Гермейера;');
Write('Введите номер метода: ');
Readln(r);
case r of
1: Sevi(n, m);
2: Ger(n, m);
3: o := 'n';
end;
end;
if o = 'y' then
begin
Writeln('Решить пример другим методом?');
Writeln('Да - y! Нет - n!');
Read(o);
end;
//clrscr;
end;
end.