Переписать код перемножения строк и столбцов матрицы с С++ - C (СИ)
Формулировка задачи:
Здравствуйте, помогите переделать исходный текст программы из С++ в СИ.
Здесь задается матрица NxN, заполняющаяся рандомными числами от 0 до 10, после указания строки и столбца, программа их перемножает и выдает результат.
#include <iostream>
#include <ctime> // в ней функция time
#include <conio.h>
using namespace std;
int main()
{
srand(time(NULL)); // Инициализируем генератор случайных чисел.
int n = 0;
cout<< "Enter the size: ";
cin >> n; // Считываем с клавиатуры n
int **a = new int* [n]; // Создаем массив указателей
for (int i = 0; i < n; i++)
{
a[i] = new int [n]; // Создаем элементы
}
// А дальше работа как с обычным массивом.
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
a[i][j] = rand() % 10+1; // Каждый элемент случайному числу от 1 до 10
cout << a[i][j] << " "; // Вывести элементы на консольку
}
cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
}
//Введение номера строки
int m;
cout << "Enter the line";
cin >> m;
//Введение номера столбца
int l;
cout << "Enter the column";
cin>> l;
//Скалярное произведение
int scalar=0;
for (int i=0; i<n; i++)
{ scalar += a[m-1][i]*a[i][l-1];
}
//вывод ответа
cout << scalar<< endl;
// Удаление массива
for (int i = 0; i < n; i++)
{
delete[]a[i]; // Удаляем каждый элемент
}
delete [] a; // А потом массив
cout<<"Enter any key";
cin.get();
getch();
return 0;
}Решение задачи: «Переписать код перемножения строк и столбцов матрицы с С++»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n, m, l, i, j, scalar = 0;
int** a;
srand(time(NULL)); // Инициализируем генератор случайных чисел.
printf("Enter the size: ");
scanf("%d", &n); // Считываем с клавиатуры n
a = (int**) malloc(sizeof(int*) * n); // Создаем массив указателей
for (i = 0; i < n; i++)
{
a[i] = (int*) malloc(sizeof(int) * n); // Создаем элементы
}
// А дальше работа как с обычным массивом.
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
a[i][j] = rand() % 10 + 1; // Каждый элемент случайному числу от 1 до 10
printf("%3d", a[i][j]); // Вывести элементы на консольку
}
printf("\n"); // Двумерный массив. Строка кончилась, переводим строку и на консоли
}
//Введение номера строки
printf("Enter the line: ");
scanf("%d", &m);
//Введение номера столбца
printf("Enter the column: ");
scanf("%d", &l);
//Скалярное произведение
for (i = 0; i < n; i++)
{
scalar += a[m - 1][i] * a[i][l - 1];
}
//вывод ответа
printf("%d\n", scalar);
// Удаление массива
for (i = 0; i < n; i++)
{
free(a[i]);// Удаляем каждый элемент
}
free(a); // А потом массив
system("pause");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Инициализируем генератор случайных чисел
- Запрашиваем размер матрицы
- Создаем массив указателей
- Заполняем матрицу случайными числами от 1 до 10
- Выводим матрицу на экран
- Запрашиваем номер строки и столбца
- Вычисляем скалярное произведение
- Выводим скалярное произведение на экран
- Удаляем массив