Ввод и вывод двумерного массива в процедуре - C (СИ)
Формулировка задачи:
Не понимаю как написать процедуру для ввода и вывода двумерного массива вещественных чисел и как эту процедуру потом можно будет вызвать в main, и возможно ли это? Помогите.
for ( i = 0; i <= 2; i++ ) { for ( j = 0; j <= 3; j++ ) { scanf ("%f", &Matrix[i][j]); } }
Решение задачи: «Ввод и вывод двумерного массива в процедуре»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> float **matrixFill(unsigned rowsCount, unsigned colsCount); void matrixPrint(float **matrix, unsigned rowsCount, unsigned colsCount); int main(void) { unsigned rowsCount; printf("N: "); scanf("%d", &rowsCount); unsigned colsCount; printf("M: "); scanf("%d", &colsCount); float **matrix = matrixFill(rowsCount, colsCount); matrixPrint(matrix, rowsCount, colsCount); free(matrix); return 0; } float **matrixFill(unsigned rowsCount, unsigned colsCount) { unsigned i, j; float **matrix = (float **) malloc (rowsCount * sizeof(float *)); for (i = 0; i < rowsCount; i++) { *(matrix + i) = malloc (colsCount * sizeof(float)); for (j = 0; j < colsCount; j++) { printf("Matrix [%d][%d]: ", i, j); scanf("%f", &(*(*(matrix + i) + j))); } } return matrix; } void matrixPrint(float **matrix, unsigned rowsCount, unsigned colsCount) { unsigned i, j; printf("Matrix: \n"); for (i = 0; i < rowsCount; i++) { for (j = 0; j < colsCount; j++) { printf("%5.1f", *(*(matrix + i) + j)); } printf("\n"); } }
Объяснение кода листинга программы
- Программа начинается с заголовка, в котором подключаются необходимые библиотеки: stdlib.h и printf.h
- Затем определяются две функции: matrixFill и matrixPrint.
- В функции main происходит ввод количества строк и столбцов двумерного массива с помощью scanf.
- Далее, создается двумерный массив с помощью функции matrixFill и выводится на экран с помощью функции matrixPrint.
- После использования, двумерный массив освобождается с помощью функции free.
- Программа завершается возвратом 0 в функции main.
- Функция matrixFill создает двумерный массив, заполняет его значениями, введенными пользователем, и возвращает его.
- В цикле происходит выделение памяти под каждую строку массива.
- Затем, в цикле происходит заполнение значений каждой ячейки массива с помощью scanf.
- Функция matrixPrint выводит значения двумерного массива на экран.
- В цикле происходит обход всех ячеек массива и вывод их значений с помощью printf.
- Значения разделены пробелом для лучшей читаемости.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д