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

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

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

помогите плз в си перевести
Листинг программы
  1. Var
  2. i,j,n,m,imin,imax,max,min,tmp: Integer;
  3. p: Longint;
  4. x: Array[1..5,1..10] of Integer;
  5. BEGIN
  6. Repeat
  7. Writeln('Введите размеры матрицы:');
  8. Readln(n,m);
  9. until (n<=5) and (m<=10);
  10. Randomize;
  11. Writeln('Матрица:');
  12. max:=-maxint;
  13. min:=maxint;
  14. For i:=1 to n do
  15. begin
  16. p:=1;
  17. For j:=1 to m do
  18. begin
  19. x[i,j]:=Random(9)+1;
  20. p:=p*x[i,j];
  21. Write(x[i,j]:4);
  22. end;
  23. If p>max Then
  24. begin
  25. max:=p;
  26. imax:=i;
  27. end;
  28. If p<min Then
  29. begin
  30. min:=p;
  31. imin:=i;
  32. end;
  33. Writeln
  34. end;
  35. Writeln('Максимум= ',max,' в строке ',imax);
  36. Writeln('Минимум= ',min,' в строке ',imin);
  37. Writeln('Преобразованная матрица:');
  38. For j:=1 to m do
  39. begin
  40. tmp:=x[imin,j];
  41. x[imin,j]:=x[imax,j];
  42. x[imax,j]:=tmp;
  43. end;
  44. For i:=1 to n do
  45. begin
  46. For j:=1 to m do
  47. Write(x[i,j]:4);
  48. Writeln
  49. end;
  50. Readln
  51. END.

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main()
  6. {
  7.    srand(time(NULL));
  8.  
  9.    int x[5][10];
  10.    unsigned n, m;
  11.    do
  12.    {
  13.       printf("Введите размеры матрицы: ");
  14.       scanf("%u %u", &n, &m);
  15.    }
  16.    while ((n > 5) || (m > 10));
  17.  
  18.    printf("Матрица:\n");
  19.  
  20.    int max = 0x80000001;
  21.    int min = 0x7fffffff;
  22.    int imax = -1, imin = -1;
  23.  
  24.    long long p;
  25.    unsigned i, j;
  26.    for (i = 0; i < n; ++i)
  27.    {
  28.       p = 1;
  29.       for (j = 0; j < m; ++j)
  30.       {
  31.          x[i][j] = rand()%9 + 1;
  32.          p *= x[i][j];
  33.          printf("%4d", x[i][j]);
  34.       }
  35.       printf("\n");
  36.       if (p > max)
  37.       {
  38.          max = p;
  39.          imax = i;
  40.       }
  41.       if (p < min)
  42.       {
  43.          min = p;
  44.          imin = i;
  45.       }
  46.    }
  47.  
  48.    printf("Максимум= %d в строке %d\n", max, imax + 1);
  49.    printf("Минимум= %d в строке %d\n", min, imin + 1);
  50.    printf("Преобразованная матрица:\n");
  51.  
  52.    for (j = 0; j < m; ++j)
  53.    {
  54.       int tmp = x[imin][j];
  55.       x[imin][j] = x[imax][j];
  56.       x[imax][j] = tmp;
  57.    }
  58.  
  59.    for (i = 0; i < n; ++i)
  60.    {
  61.       for (j = 0; j < m; ++j)
  62.       {
  63.          printf("%4d", x[i][j]);
  64.       }
  65.       printf("\n");
  66.    }
  67.  
  68.    system("PAUSE");
  69.  
  70.    return 0;
  71. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут