Перевести код с turbo pascal - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогите плз в си перевести
Var
  i,j,n,m,imin,imax,max,min,tmp: Integer;
  p: Longint;
  x: Array[1..5,1..10] of Integer;
BEGIN
Repeat
 Writeln('Введите размеры матрицы:');
 Readln(n,m);
until (n<=5) and (m<=10);
Randomize;
Writeln('Матрица:');
max:=-maxint;
min:=maxint;
For i:=1 to n do
begin
  p:=1;
  For j:=1 to m do
  begin
    x[i,j]:=Random(9)+1;
    p:=p*x[i,j];
    Write(x[i,j]:4);
  end;
  If p>max Then
  begin
    max:=p;
    imax:=i;
  end;
  If p<min Then
  begin
    min:=p;
    imin:=i;
  end;
  Writeln
end;
Writeln('Максимум= ',max,' в строке ',imax);
Writeln('Минимум= ',min,' в строке ',imin);
Writeln('Преобразованная матрица:');
For j:=1 to m do
begin
  tmp:=x[imin,j];
  x[imin,j]:=x[imax,j];
  x[imax,j]:=tmp;
end;
For i:=1 to n do
begin
  For j:=1 to m do
  Write(x[i,j]:4);
  Writeln
end;
Readln
END.

Решение задачи: «Перевести код с turbo pascal»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
   srand(time(NULL));
 
   int x[5][10];
   unsigned n, m;
   do
   {
      printf("Введите размеры матрицы: ");
      scanf("%u %u", &n, &m);
   }
   while ((n > 5) || (m > 10));
 
   printf("Матрица:\n");
 
   int max = 0x80000001;
   int min = 0x7fffffff;
   int imax = -1, imin = -1;
 
   long long p;
   unsigned i, j;
   for (i = 0; i < n; ++i)
   {
      p = 1;
      for (j = 0; j < m; ++j)
      {
         x[i][j] = rand()%9 + 1;
         p *= x[i][j];
         printf("%4d", x[i][j]);
      }
      printf("\n");
      if (p > max)
      {
         max = p;
         imax = i;
      }
      if (p < min)
      {
         min = p;
         imin = i;
      }
   }
 
   printf("Максимум= %d в строке %d\n", max, imax + 1);
   printf("Минимум= %d в строке %d\n", min, imin + 1);
   printf("Преобразованная матрица:\n");
 
   for (j = 0; j < m; ++j)
   {
      int tmp = x[imin][j];
      x[imin][j] = x[imax][j];
      x[imax][j] = tmp;
   }
 
   for (i = 0; i < n; ++i)
   {
      for (j = 0; j < m; ++j)
      {
         printf("%4d", x[i][j]);
      }
      printf("\n");
   }
 
   system("PAUSE");
 
   return 0;
}

Объяснение кода листинга программы

  1. Программа начинается с инициализации генератора случайных чисел с помощью функции srand(time(NULL)).
  2. Создается матрица x[5][10] и две переменные n и m для хранения размеров матрицы.
  3. С помощью цикла do-while программа запрашивает у пользователя размеры матрицы до тех пор, пока они не будут введены корректно (не больше 5 строк и 10 столбцов).
  4. Выводится сообщение Матрица: и переменные max и min инициализируются значениями 0x80000001 и 0x7fffffff соответственно, а также imax и imin устанавливаются на -1.
  5. С помощью двух вложенных циклов перебираются все элементы матрицы. Значение каждого элемента x[i][j] вычисляется как произведение всех элементов строки и записывается в переменную p. Также выводится значение элемента x[i][j] и значение p.
  6. Если p больше max, то max присваивается новое значение p, а imax заменяется на i. Аналогично, если p меньше min, то min присваивается новое значение p, а imin заменяется на i.
  7. После завершения циклов выводится сообщение Максимум= %d в строке %d с текущими значениями max и imax.
  8. Выводится сообщение Минимум= %d в строке %d с текущими значениями min и imin.
  9. С помощью двух вложенных циклов осуществляется перестановка элементов матрицы так, чтобы на месте min было максимальное значение, а на месте max - минимальное.
  10. С помощью двух вложенных циклов выводятся все элементы матрицы.
  11. Программа завершается с помощью функции system(PAUSE).
  12. Возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5