Проверить, есть ли в матрице хотя бы одна строка, содержащая элемент, равный нулю, и найти ее номер - C (СИ)
Формулировка задачи:
Нужно проверить, есть ли в матрице хотя бы одна строка, содержащая элемент, равный нулю, и найти ее номер. Уменьшить все элементы матрицы на значение первого элемента найденной строки. Вроде бы написал, но почему-то выводит общее количество строк, а не конкретную, где нулевое значение. Что не так?
#include <stdio.h> #include <locale> #include <string.h> int menu(); int x[50][50]; int vvod(int x[50][50], int n1,int m1); int vivod(int x[50][50], int n1, int m1); void kol(char *s); int zad7_1(int x[50][50], int n1, int m1); int main() { int k1=0,n,m, switcher=999, z=0; setlocale (LC_ALL, "Russian"); char s1[20]; while (switcher!=0) { switch(menu()) { case 1: { system ("cls"); printf("Введите количество строк и столбцов.\n"); scanf_s("%d%d",&n,&m); vvod(x, n, m); system("pause"); break; } case 2: { system ("cls"); zad7_1 (x, n, m); system("pause"); break; } case 3: { system("cls"); vivod(x, n, m); system("pause"); break; } case 4: { fflush(stdin); system ("cls"); printf("Введите строку: \n"); gets_s(s1); kol(s1); system("pause"); break; } case 5: printf ("До свидания!\n"); return 0; default: { system ("cls"); printf ("Нет такого пункта!\n"); system("pause"); } } } } int menu() { int i; system ("cls"); printf("Меню\n"); printf("1. Ввести новый массив.\n2. Выполнить задание 1.\n3. Вывод массива.\n4. Выполнить задание 2.\n5. Выход.\nВаш выбор?\n"); scanf_s("%d",&i); return i; } int zad7_1(int x[50][50], int n1, int m1) { int z, indnul; for (z=0;z<n1;z++) { if (x[n1][m1]==0) { indnul=n1; } } printf ("Номер строки с нулевым элементом %d\n", n1); return n1; } void kol(char *s) { printf("Длина = %d\n", strlen(s)); } int vvod(int x[50][50], int n1, int m1) { int z,j; for (z=0;z<n1;z++) for (j=0;j<m1;j++) { printf("Введите элемент [%d,%d]\n", z+1, j+1); scanf_s("%d",&x[z][j]); } return 0; } int vivod(int x[50][50], int n1, int m1) { int z,j; for (z=0;z<n1;z++) { for (j=0;j<m1;j++) printf("%d ", x[z][j]); printf("\n"); } return 0; }
Решение задачи: «Проверить, есть ли в матрице хотя бы одна строка, содержащая элемент, равный нулю, и найти ее номер»
textual
Листинг программы
int zad7_1(int x[50][50], int n1, int m1) { int z, indnul; for (z=0;z<n1;z++) { if (x[n1][m1]==0) { indnul=n1; printf ("Номер строки с нулевым элементом %d\n", indnull); break; esli stroka takaja odna } } return indnull; }
Объяснение кода листинга программы
В данном коде реализована функция, которая проверяет наличие в матрице строки, содержащей элемент, равный нулю. Если такая строка найдена, функция выводит на экран её номер и завершает выполнение. Если строка не найдена, функция возвращает значение 0. Список элементов кода выглядит следующим образом:
- Входные параметры функции: матрица x, размерность матрицы по строкам n1 и по столбцам m1.
- Переменная z инициализируется значением 0. Переменная используется для перебора строк матрицы.
- Цикл for перебирает строки матрицы от 0 до n1-1.
- В каждой строке проверяется значение элемента x[n1][m1]. Если элемент равен нулю, выполняются следующие действия:
— Переменной indnul присваивается значение n1.
— Выводится на экран сообщение
Номер строки с нулевым элементом
и значение переменной indnul. — Цикл прерывается с помощью оператора break. - Если после выполнения цикла for значение переменной indnul не изменилось, ей присваивается значение 0.
- Функция возвращает значение переменной indnul.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д