Количество элементов двумерной матрицы вводить в одной функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

1)Помогите пожалуйста, что нужно изменить в программе, чтобы количество элементов массива передавать как целое, если функция

НЕ

изменяет это количество. 2) Как количество элементов двумерной матрицы вводить в одной функции? (чистый СИ)
#include "stdafx.h"
#include<stdio.h>
#include<locale.h> /*язык*/
#include  <stdlib.h> /*рандом*/
#include <time.h>
#define size 100
 
int inputn();
int inputm();
void input_matr(int *_n, int *_m, int _mass[size][size]);
int inputz(); 
void matrX(int *_n, int *_m, int _mass[size][size], int *_z);
void print_matr(int *_n, int *_m, int _mass[size][size]);
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
    int n, m,z;  /*n - размерность матрицы*/
    int mass[size][size];/*матрица*/
    printf("Данная программа позволяет вычислить сумму элементов, которые находятся по периметру матрицы\n");
    n = inputn();
    m = inputm();
    input_matr(&n, &m, mass);
    z = inputz();
    matrX(&n, &m, mass, &z);
    print_matr(&n, &m, mass);
    return 0;
}
 
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода количества строк*/
int inputn()
{
    int ver, _n;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _n - количество строк*/
    printf("Введите количество строк n: ");
    printf("n = ");
    do
    {
        fflush(stdin);
        ver = scanf("%d", &_n);
        if ((ver != 1) || (_n < 1))
        {
            printf("Введено не корректное значение, повторите ввод, n-целое число больше 0 \n");
            printf("n = ");
        }
    } while ((ver != 1) & ((getchar()) != '\n') || (_n < 1));
    return _n;
}
 
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода количества столбцов*/
int inputm()
{
    int ver, _m;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _m - количество столбцов*/
    printf("Введите количество столбцов m: ");
    printf("m = ");
    do
    {
        fflush(stdin);
        ver = scanf("%d", &_m);
        if ((ver != 1) || (_m < 1))
        {
            printf("Введено не корректное значение, повторите ввод, m-целое число больше 0 \n");
            printf("m = ");
        }
    } while ((ver != 1) & ((getchar()) != '\n') || (_m < 1));
    return _m;
}
 
/*--------------------------------------------------------------------*/
/*Подпрограмма для заполнения матрицы*/
void input_matr(int *_n, int *_m, int _mass[size][size])
{
    
    int  i, j; /*i,j - счетчик цикла*/
    time_t t;
    srand(time(&t));
    for (i = 0; i < *_n; i++){
        for (j = 0; j < *_m; j++)
        {
            _mass[i][j] = (rand() % 50)+10;
            printf("%d   ", _mass[i][j]);
        }
        printf("\n");
    }
    return;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для ввода заданного числа*/
int inputz()
{
    char ver;/*ver - переменная для проверки данных данных, введённых с клавиатуры, _z - число*/
    in  t _z;
    printf("Введите элемент z: ");
    printf("z = ");
    do
    {
        fflush(stdin);
        ver = scanf("%if", &_z);
        if (ver != 1)
        {
            printf("Введено не корректное значение, повторите ввод\n");
            printf("число = ");
        }
    } while ((ver != 1)& ((getchar()) != '\n'));
 
    return _z;
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для замены четных строк матрицы на Х*/
void matrX(int *_n, int *_m, int _mass[size][size], int *_z)
{
    int i, j; /*счетчик цикла*/
    for (i = 0; i < *_n; i++){
        for (j = 0; j < *_m; j++){
            if (i % 2 != 0) _mass[i][j] = *_z;
            
        }
    }
    
}
/*--------------------------------------------------------------------*/
/*Подпрограмма для печати матрицы*/
void print_matr(int *_n, int *_m, int _mass[size][size])
{
    int i, j;
    for (i = 0; i < *_n; i++) {
        for (j = 0; j < *_m; j++) {
            printf("%d   ", _mass[i][j]);
        }
        printf("\n");
    }
    return;
}

Решение задачи: «Количество элементов двумерной матрицы вводить в одной функции»

textual
Листинг программы
void inputsize(int *n, int *m) {
    *n = 10; // тут соответственно ввод scanf..
    *m = 10;
}

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

В данном коде реализована функция inputsize, которая принимает два указателя (n и m) на целочисленные переменные. Внутри функции происходит следующее:

  1. Номер 1: Переменная n инициализируется значением 10. Это будет количество строк в двумерной матрице.
  2. Номер 2: Переменная m инициализируется значением 10. Это будет количество столбцов в двумерной матрице.
  3. Номер 3: Функция завершается и возвращает управление в вызывающую функцию. Таким образом, после вызова функции inputsize, значения переменных n и m будут равны 10, что означает, что двумерная матрица будет иметь 10 строк и 10 столбцов.

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


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

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

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