Количество элементов двумерной матрицы вводить в одной функции - 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 столбцов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д