Количество элементов двумерной матрицы вводить в одной функции - 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: Переменная n инициализируется значением 10. Это будет количество строк в двумерной матрице.
- Номер 2: Переменная m инициализируется значением 10. Это будет количество столбцов в двумерной матрице.
- Номер 3: Функция завершается и возвращает управление в вызывающую функцию. Таким образом, после вызова функции inputsize, значения переменных n и m будут равны 10, что означает, что двумерная матрица будет иметь 10 строк и 10 столбцов.