Ввод и вывод двумерного массива в процедуре - 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");
    }
}

Объяснение кода листинга программы

  1. Программа начинается с заголовка, в котором подключаются необходимые библиотеки: stdlib.h и printf.h
  2. Затем определяются две функции: matrixFill и matrixPrint.
  3. В функции main происходит ввод количества строк и столбцов двумерного массива с помощью scanf.
  4. Далее, создается двумерный массив с помощью функции matrixFill и выводится на экран с помощью функции matrixPrint.
  5. После использования, двумерный массив освобождается с помощью функции free.
  6. Программа завершается возвратом 0 в функции main.
  7. Функция matrixFill создает двумерный массив, заполняет его значениями, введенными пользователем, и возвращает его.
  8. В цикле происходит выделение памяти под каждую строку массива.
  9. Затем, в цикле происходит заполнение значений каждой ячейки массива с помощью scanf.
  10. Функция matrixPrint выводит значения двумерного массива на экран.
  11. В цикле происходит обход всех ячеек массива и вывод их значений с помощью printf.
  12. Значения разделены пробелом для лучшей читаемости.

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


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

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

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