Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один нулевой элемент - C (СИ)

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

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

помогите)
#include <stdio.h>
#include<locale.h>
    int main()
    {
        setlocale(0, "rus");
        int i, j, max=0, min=0,n,k;
        double a[100][100], b, sum=0;
        printf ("Введите количество строк: ");
        scanf("%d", &n);
        printf ("Введите количество столбцов: ");
        scanf("%d", &k);
        for(i=0; i<n; i++)
        {
            for (j=0; j<k;j++)
            {
                printf ("Введите элемент [%d,%d]: ", i+1, j+1);
                scanf ("%lf", &a[i][j]);
            }
        }
        printf("\n матрица:\n\n");
        for(i=0;i<n;i++)
        {
            for(j=0;j<k;j++)
                printf("%.0lf\t", a[i][j]);
            printf("\n");
        }
        for(i=0; i<n; i++)
        {
            for(j=0; j<k; j++)
            {
                printf("%4d ", a[i][j]);
            }
            printf("\n");
         }
    }
что не так ?

Решение задачи: «Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один нулевой элемент»

textual
Листинг программы
#include <stdio.h>
#include<locale.h>
    int main()
    {
        setlocale(0, "rus");
        int i, j, max=0, min=0,n,k;
        double a[100][100], b, sum=0;
        printf ("Введите количество строк: ");
        scanf("%d", &n);
        printf ("Введите количество столбцов: ");
        scanf("%d", &k);
        for(i=0; i<n; i++)
        {
            for (j=0; j<k;j++)
            {
                printf ("Введите элемент [%d,%d]: ", i+1, j+1);
                scanf ("%lf", &a[i][j]);
            }
        }
        printf("\n матрица:\n\n");
        for(i=0;i<n;i++)
        {
            for(j=0;j<k;j++)
                printf("%.0lf\t", a[i][j]);
            printf("\n");
        }
    int count(0);
    for(i = 0; i < n; ++i){
        for(j = 0; j < k; ++j){
            if(a[j][i] == 0)
                ++count;
        }
    }
       printf("количество строк, содержащих хотя бы один нулевой элемент: %d\n", count);     
          for (int i = 0; i <n; i++)
            {
                for (int j = 0; j <k; j++);
              int t = 0;
           
            for (int j = 0; j < n-1; j++)
            {
                for (int i = 0; i < k; i++)
                {
                    if (a[i, j] == a[ i,j+1 ])
                       t = t + 1;
                    if (max < t)
                    {
                        max = t;
                        k = i + 1;
                    }
                }
            }
          }
            printf("Наибольшее число одинаковых элементов в столбце № %d", k);
           printf("\n");
        }

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

Код начинается с объявления переменных и ввода данных от пользователя. Сначала пользователю предлагается ввести количество строк и столбцов матрицы, а затем заполнить саму матрицу. С помощью двух вложенных циклов происходит заполнение матрицы. Затем выводится на экран сама матрица. Далее идет подсчет количества строк, содержащих хотя бы один нулевой элемент. Для этого используется еще два вложенных цикла, который проверяют каждый элемент матрицы. Если элемент равен нулю, то к переменной count прибавляется единица. После этого выводится на экран количество строк, содержащих хотя бы один нулевой элемент. Затем идет поиск наибольшего числа одинаковых элементов в столбце. Для этого используется два вложенных цикла, который сравнивают каждый элемент матрицы. Если элементы равны, то к переменной t прибавляется единица. Если максимальное значение t меньше текущего, то обновляются значения максимального значения и столбца с максимальным числом одинаковых элементов. В конце выводится на экран наибольшее число одинаковых элементов в столбце и номер этого столбца.

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

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