Динамическое заполнение матрицы - C (СИ)
Формулировка задачи:
Есть вот такой код нужно перевести его на Си и чтобы можно было ввести N и M вводились с клавиатуры.
#include "stdafx.h" #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { int N, M; cout << "Введите количество строк" << endl; cin >> N; cout << "Введите количество столбцов" << endl; cin >> M; // заполняем массив случаныйми числами srand(time(NULL)); float matrix[N][M]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { matrix[i][j] = rand() % 100; cout << matrix[i][j] << " "; } cout << endl; } //находим индекс минимального значения и максимальное значение в каждой строке float arrayMAX[N], arrayMIN[N]; int index_j[N]; for (int i = 0; i < N; i++) { arrayMAX[i] = matrix[i][0]; arrayMIN[i] = matrix[i][0]; index_j[i] = 0; for (int j = 0; j < M; j++) { if (arrayMAX[i] < matrix[i][j]) arrayMAX[i] = matrix[i][j]; if (arrayMIN[i] > matrix[i][j]) { arrayMIN[i] = matrix[i][j]; index_j[i] = j; } } } // заменяем минимальное значение на средние из максимальных значений других строк float arithmet_mean; for (int i = 0; i < N; i++) { arithmet_mean = 0; for (int j = 0; j < N; j++) { if (i != j) arithmet_mean += arrayMAX[j]; } arithmet_mean /= N - 1; matrix[i][index_j[i]] = arithmet_mean; } //выводим результат cout << endl; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << matrix[i][j] << " "; } cout << endl; } system("pause"); return 0; }
Решение задачи: «Динамическое заполнение матрицы»
textual
Листинг программы
#include <stdio.h> #include <time.h> int main(void) { int rows, cols; int i, j; printf("Rows: "); scanf("%d", &rows); printf("Columns: "); scanf("%d", &cols); int *Matrix = malloc(rows*cols * sizeof(int)); for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { Matrix[i*cols + j] = rand() % 100; printf("%3d ", Matrix[i*cols + j]); } printf("\n"); } free(Matrix); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде происходит следующее:
- Объявляются переменные rows и cols типа int, которые будут использоваться для хранения количества строк и столбцов матрицы соответственно.
- В цикле с помощью функции scanf() с клавиатуры считываются значения переменных rows и cols.
- Динамически выделяется память под матрицу с помощью функции malloc(). В качестве аргумента функции передается произведение количества строк на количество столбцов, умноженное на размер памяти, занимаемой одним элементом массива (sizeof(int)).
- В двух вложенных циклах происходит инициализация всех элементов матрицы случайными целыми числами от 0 до 99 с помощью функции rand().
- С помощью цикла внешнего уровня и функции printf() выводится на экран содержимое матрицы.
- Выделяется лишняя память с помощью функции free().
- Запускается функция system(
pause
), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу. - Программа возвращает 0, что означает успешный конец работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д