• Перевести код из 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.

Ответы 1

  • 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);            }        }    }}
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years