Рандомное заполнение матрицы размер которой задан с клавиатуры - C (СИ)
Формулировка задачи:
Доброе время суток!
Помогите поправить под рандомное заполнение, программа работает, но в консоли непонятное значение.
Переполнение массива или что то в этом роде.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <malloc.h> #include <clocale> #include <ctype.h> #include <math.h> #include <stdlib.h> int** Multiply(int**, int, int, int**, int, int**); int** fill(int**, int, int); void Print(int**, int, int); int **rand_A, **rand_B; int main() { int str_A, col_A, str_B, col_B; setlocale(LC_ALL, "RUS"); printf("Размер матрицы A:\n"); printf("Введите число строк = "); scanf("%d", &str_A); printf("Введите число колонок = "); scanf("%d", &col_A); // выделение памяти под массивы int **matr_A = (int**)malloc(str_A * sizeof(int*)); for (int i = 0; i < str_A; ++i) matr_A[i] = (int *)malloc(col_A * sizeof(int)); /* printf("\nПолученная матрицы A:\n"); fill(matr_A, str_A, col_A); */ str_B = col_A; printf("\nРазмер матрицы B:\n"); printf("Введите число строк = %d\n", str_B); printf("Введите число колонок = "); scanf("%d", &col_B); int **matr_B = (int**)malloc(str_B * sizeof(int*)); for (int i = 0; i < str_B; ++i) matr_B[i] = (int *)malloc(col_B * sizeof(int)); /* printf("\nПолученная матрица B:\n"); fill(matr_B, str_B, col_B); */ int str_C = str_A, col_C = col_B; int **matr_C = (int**)malloc(str_C * sizeof(int*)); for (int i = 0; i < str_C; ++i) matr_C[i] = (int *)malloc(col_C * sizeof(int)); Multiply(matr_A, str_A, col_A, matr_B, col_B, matr_C); printf("\nМатрица A [%dx%d]:\n", str_A, col_A); Print(matr_A, str_A, col_A); printf("\nМатрица B [%dx%d]:\n", str_B, col_B); Print(matr_B, str_B, col_B); printf("\nФормула умножения C=A*B [%dx%d]:\n", str_C, col_C); Print(matr_C, str_C, col_C); // высвобождение памяти for (int i = 0; i<str_A; i++) free(matr_A[i]); free(matr_A); for (int i = 0; i<str_B; i++) free(matr_B[i]); free(matr_B); for (int i = 0; i<str_C; i++) free(matr_C[i]); free(matr_C); _getch(); return 0; } // вывод матриц на экран void Print(int **matr, int str, int col) { for (int i = 0; i<str; i++) { printf("\n"); for (int j = 0; j<col; j++) printf("%d\t", matr[i][j]); } printf("\n"); printf("\n"); } // функции рандома void random_A(const int col_B, const int col_A, int **matr_A) { for (int i = 0; i < col_B; i++) for (int j = 0; j < col_A; j++) matr_A[i][j] = 0 + rand() % 10; } void random_B(const int col_B, const int col_A, int **matr_B) { for (int i = 0; i < col_B; i++) for (int j = 0; j < col_A; j++) matr_B[i][j] = 0 + rand() % 10; } // умножение матрицы int** Multiply(int **matr_A, const int str_A, const int col_A, int **matr_B, const int col_B, int **matr_C) { int sum; for (int i = 0; i < col_B; i++) for (int j = 0; j<str_A; j++) { sum = 0; for (int q = 0; q<col_A; q++) { sum += matr_A[j][q] * matr_B[q][i]; matr_C[j][i] = sum; } } return matr_C; } // ввод элементов /* int** fill(int **matr, int str, int col) { for (int i = 0; i<str; i++) for (int j = 0; j<col; j++) //matr[i][j] = 0 + rand() % 100; { printf("Введите элемент [%d][%d]: ", i + 1, j + 1); scanf("%d", &matr[i][j]); } return matr; } */
Решение задачи: «Рандомное заполнение матрицы размер которой задан с клавиатуры»
textual
Листинг программы
void random_A(const int str_A, const int col_A, int **matr_A) { for (int i = 0; i <str_A; i++) for (int j = 0; j <col_A; j++) matr_A[i][j] = 0 + rand() % 10; }
Объяснение кода листинга программы
- Вводится постановка задачи - рандомное заполнение матрицы.
- Вводные данные: размер строки матрицы (str_A), размер столбца матрицы (col_A), двумерный массив (матрица) matr_A.
- В функции используется два вложенных цикла:
- внешний цикл для прохода по строкам матрицы (0..str_A-1).
- внутренний цикл для прохода по столбцам матрицы (0..col_A-1).
- Внутренний цикл выполняется для каждого элемента матрицы matr_A[i][j].
- Присваивается случайное число от 0 до 9 (включительно) и записывается в элемент матрицы matr_A[i][j].
- Функция не возвращает значение, так как является процедурой (не выполняет каких-либо вычислений, а только заполняет матрицу).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д