Перевести код из Pascal в C, C++ или С#: program PrResh; ///////////////Подключение графического модуля/////////////// var n, m, r: Integer; A: array [1..100, 1..100] of Real; o: char; w: text; ///////////////Процедура ввод...

Перевести код из 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.
Гость
Ответ(ы) на вопрос:
Гость
using System; using System.Linq; using System.Text; namespace Test1 {     class Program     {         static string file_name = "PrResh.txt";         static bool handfree = true;  //определяет вручную ли вводятся данные или рандомом         static void Main()         {             Console.WriteLine("Введите размеры матрицы (строки x столбцы)");             int rows = Convert.ToInt32(Console.ReadLine());             int columns = Convert.ToInt32(Console.ReadLine());             var M = InitMatrix(rows, columns, handfree);             int Reply;             do             {                 Console.WriteLine();                 Console.WriteLine("Выбирите метод решения:");                 Console.WriteLine("1. Критерий Сэвиджа");                 Console.WriteLine("2. Критерий Гермейера");                 Console.WriteLine("3. Выход");                 Reply = Convert.ToInt32(Console.ReadLine());                 switch (Reply)                 {                     case 1:                         {                             SavageCriterion(M);                             break;                         }                     case 2:                         {                             var Q = new double[M.GetLength(1)];                             if (handfree)                             {                                 var r = new Random(DateTime.Now.Millisecond);                                 for (var j = 0; j < Q.Length; j++)                                 {                                     Q[j] = r.NextDouble();                                 }                             }                             else {                                 Console.WriteLine("Введите вероятности");                                 for (var j = 0; j < Q.Length; j++)                                 {                                     Q[j] = Convert.ToDouble(Console.Read());                                 }                             }                             GermeierCriterion(M, Q);                             break;                         }                     default:                         {                             Reply = -1;                             break;                         }                 }             } while (Reply > 0);             Console.ReadKey();         }         static double[,] InitMatrix(int rows, int columns, bool handfree = false)         {             var M = new double[rows, columns];             var sb = new StringBuilder();             sb.AppendLine("Матрица [" + rows + "x" + columns + "] :");             if (handfree)             {                 var random = new Random(DateTime.Now.Millisecond);                 for (var i = 0; i < rows; i++)                 {                     for (var j = 0; j < columns; j++)                     {                         M[i, j] = random.NextDouble() * random.Next(-50, 50);                         sb.Append(M[i, j] + " ");                     }                     sb.AppendLine();                 }             }             else {                 for (var i = 0; i < rows; i++)                 {                     for (var j = 0; j < columns; j++)                     {                         Console.Write("M[" + i + ", " + j + "] = ");                         M[i, j] = Convert.ToDouble(Console.Read());                         sb.Append(M[i, j] + " ");                     }                     Console.WriteLine();                     sb.AppendLine();                 }             }             OutputToConsoleAndLog(sb.ToString());             return M;         }         static double SavageCriterion(double[,] M)         {             OutputToConsoleAndLog("Критерий Сэвиджа.");             OutputToConsoleAndLog("Наибольшее значение каждого столбца.");             var max = new double[M.GetLength(1)];             for (var j = 0; j < max.Length; j++)             {                 max[j] = M[0, j];                 for (var i = 1; i < M.GetLength(0); i++)                 {                     if (max[j] < M[i, j])                         max[j] = M[i, j];                 }                 OutputToConsoleAndLog("Max[" + j + " столбца] = " + max[j]);             }             OutputToConsoleAndLog("Вычтем из наибольшего значения столбца, каждое значение столбца.");             OutputToConsoleAndLog("Сформируем новую матрицу из полученных значений.");             var sb = new StringBuilder();             for (var i = 0; i < M.GetLength(0); i++)             {                 for (var j = 0; j < M.GetLength(1); j++)                 {                     M[i, j] = max[j] - M[i, j];                     sb.Append(M[i, j] + " ");                 }                 sb.AppendLine();             }             OutputToConsoleAndLog(sb.ToString());             OutputToConsoleAndLog("Наибольшее значение каждой строки.");             max = new double[M.GetLength(0)];             for (var i = 0; i < M.GetLength(0); i++)             {                 max[i] = M[i, 0];                 for (var j = 0; j < M.GetLength(1); j++)                 {                     if (max[i] < M[i, j])                         max[i] = M[i, j];                 }                 OutputToConsoleAndLog("Max[" + i + " строки] = " + max[i]);             }             OutputToConsoleAndLog("Ответ: " + max.Last());             return max.Last();         }         static double GermeierCriterion(double[,] M, double[] Q)         {             OutputToConsoleAndLog("Критерий Гермейера.");             OutputToConsoleAndLog("Для решения необходимы сведенья о вероятности принятия каждого решения.");             OutputToConsoleAndLog("Вероятности принятия решения:");             for (var j = 0; j < Q.Length; j++)             {                 OutputToConsoleAndLog("Q[" + j + "] = " + Q[j]);             }             var max = M[0, 0];             for (var i = 0; i < M.GetLength(0); i++)             {                 for (var j = 0; j < M.GetLength(1); j++)                 {                     if (max < M[i, j]) max = M[i, j];                 }             }             OutputToConsoleAndLog("Наибольшее значение в матрице = " + max);             max += 1;             OutputToConsoleAndLog("Необходимо из каждого элемента матрицы вычесть " + max);             OutputToConsoleAndLog("Полученная матрица:");             var sb = new StringBuilder();             for (var i = 0; i < M.GetLength(0); i++)             {                 for (var j = 0; j < M.GetLength(1); j++)                 {                     M[i, j] -= max;                     sb.Append(M[i, j] + " ");                     M[i, j] *= Q[j];                 }                 sb.AppendLine();             }             OutputToConsoleAndLog(sb.ToString());             OutputToConsoleAndLog("Умножаем каждый элемент матрицы на соответствующую вероятность.");             OutputToConsoleAndLog("Выбираем наименьший результат каждой строки.");             var min = new double[M.GetLength(0)];             for (var i = 0; i < M.GetLength(0); i++)             {                 M[i, 0] *= Q[0];                 min[i] = M[i, 0];                 for (var j = 1; j < M.GetLength(1); j++)                 {                     M[i, j] *= Q[j];                     if (min[i] > M[i, j]) min[i] = M[i, j];                 }                 OutputToConsoleAndLog("Min[" + i + " строки] = " + min[i]);             }             OutputToConsoleAndLog("Ответ: " + min.Max());             return min.Max();         }         static void OutputToConsoleAndLog(string text)         {             Console.WriteLine(text);             using (var file = new System.IO.StreamWriter(file_name, true))             {                 file.WriteLine(text);             }         }     } }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы