Перевод программы с языка С# - C (СИ)
Формулировка задачи:
Кто разбирается перевидите программу на язык Си.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int m,n;
do
{
Console.Clear();
Console.Write("введи M:");
} while (!int.TryParse(Console.ReadLine(), out m));
do
{
Console.Clear();
Console.WriteLine("M = " + m.ToString());
Console.Write("введи N: ");
} while (!int.TryParse(Console.ReadLine(), out n));
Random rnd = new Random();
int[,] matr = new int[m, n];
Console.WriteLine("\nматрица");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
matr[i, j] = rnd.Next(10);
Console.Write(matr[i, j] + " ");
}
Console.WriteLine();
}
int max=matr[0,0], iMax=0;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (matr[i, j] > max)
{
max = matr[i, j];
iMax = i;
}
}
}
Console.WriteLine("\nта самая строка");
for (int j = 0; j < n; j++)
{
Console.Write(matr[iMax, j] + " ");
}
Console.ReadKey();
}
}
}Решение задачи: «Перевод программы с языка С#»
textual
Листинг программы
#include <stdio.h>
#include "time.h"
#include <stdlib.h>
int main(int argc, char **argv){
int m, n, **matr, max, iMax=0;
srand(time(NULL));
do{
printf("Enter M: ");
scanf("%d", &m);
printf("Enter N: ");
}while(!scanf("%d", &n));
matr=(int**)malloc(m*sizeof(int*));
printf("\nMatrix:\n");
for(int i=0;i<m;i++){
matr[i]=(int*)malloc(n*sizeof(int));
for(int j=0;j<n;j++){
matr[i][j]=rand()%10;
printf("%2d", matr[i][j]);
}
printf("\n");
}
max=matr[0][0];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matr[i][j]>max){
max=matr[i][j];
iMax=i;
}
}
}
printf("\nThis row: ");
for(int j=0;j<n;j++){
printf("%2d", matr[iMax][j]);
}
printf("\n");
for(int i=0;i<m;i++){
free(matr[i]);
}
free(matr);
getchar();
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , . - Объявляются переменные: — m, n — входные параметры функции main, представляют собой количество строк и столбцов матрицы соответственно; — matr — указатель на указатель целых чисел, который будет представлять собой матрицу; — max — переменная для хранения максимального элемента матрицы; — iMax — переменная для хранения номера строки с максимальным элементом.
- Инициализируется генератор случайных чисел с помощью функции srand(time(NULL)).
- В цикле do-while считываются значения m и n до тех пор, пока они корректно введены.
- Выделяется память под матрицу с помощью функции malloc(msizeof(int)).
- Выводится шаблон для ввода элементов матрицы.
- В цикле два вложенных циклах заполняются элементы матрицы случайными числами от 0 до 9 с помощью функции rand()%10.
- Выводится на экран содержимое матрицы.
- Находится максимальное значение в матрице.
- Находится номер строки с максимальным значением.
- Выводится на экран строка с максимальным значением.
- Освобождается память, выделенная под матрицу.
- Программа ожидает нажатия любой клавиши с помощью функции getchar().
- Функция main возвращает 0, что означает успешный конец работы программы.