Переписать код перемножения строк и столбцов матрицы с С++ - 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. Включаем необходимые заголовочные файлы
  2. Инициализируем генератор случайных чисел
  3. Запрашиваем размер матрицы
  4. Создаем массив указателей
  5. Заполняем матрицу случайными числами от 1 до 10
  6. Выводим матрицу на экран
  7. Запрашиваем номер строки и столбца
  8. Вычисляем скалярное произведение
  9. Выводим скалярное произведение на экран
  10. Удаляем массив

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы