Перевести код с 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;
- }
Объяснение кода листинга программы
- Программа начинается с инициализации генератора случайных чисел с помощью функции srand(time(NULL)).
- Создается матрица x[5][10] и две переменные n и m для хранения размеров матрицы.
- С помощью цикла do-while программа запрашивает у пользователя размеры матрицы до тех пор, пока они не будут введены корректно (не больше 5 строк и 10 столбцов).
- Выводится сообщение
Матрица:
и переменные max и min инициализируются значениями 0x80000001 и 0x7fffffff соответственно, а также imax и imin устанавливаются на -1. - С помощью двух вложенных циклов перебираются все элементы матрицы. Значение каждого элемента x[i][j] вычисляется как произведение всех элементов строки и записывается в переменную p. Также выводится значение элемента x[i][j] и значение p.
- Если p больше max, то max присваивается новое значение p, а imax заменяется на i. Аналогично, если p меньше min, то min присваивается новое значение p, а imin заменяется на i.
- После завершения циклов выводится сообщение
Максимум= %d в строке %d
с текущими значениями max и imax. - Выводится сообщение
Минимум= %d в строке %d
с текущими значениями min и imin. - С помощью двух вложенных циклов осуществляется перестановка элементов матрицы так, чтобы на месте min было максимальное значение, а на месте max - минимальное.
- С помощью двух вложенных циклов выводятся все элементы матрицы.
- Программа завершается с помощью функции system(
PAUSE
). - Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д