Перевести код с 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д