Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2022, 16:51   #1
Silvergg1
Новичок
Джуниор
 
Регистрация: 19.12.2022
Сообщений: 2
По умолчанию Двумерные массивы, язык Си

Здравствуйте, нужна помощь по 1 -2 пункту. Написал следующую программу, но не работает. Где ошибка или я полностью неправильно написал?

Дана целочисленная прямоугольная матрица. Определить:
1) количество строк, не содержащих ни одного нулевого элемента;
2) максимальное из чисел, встречающихся в заданной матрице более одного раза;
3) номер столбца, сумма элементов которого максимально. Вывести на экран номер столбца и его элементы.


Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    srand(time(NULL));
    int a[3][4];
    for (int i=0; i<3; i++)
    {
        for (int j=0; j<4; j++)
        {
            a[i][j]=rand()%10;
        }

    }
    printf(" Massiv\n");

    for (int i=0; i<3; i++)
    {
        for (int j=0; j<4; j++)
        {
            printf( "%d ", a[i][j] );
        }
        printf( "\n");
    }
}
    int sum = 0;
    for (int i=0; i<3; i++)
    {
        for (int j=0; j<4; j++)
        {
            if ( a[i][j] = 0);
            break;
        }
    }
    else
    {
        sum+= 1;
    }
    printf("%d", sum);
}
Silvergg1 вне форума Ответить с цитированием
Старый 19.12.2022, 16:56   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Скобка закрывается лишняя перед int sum = 0;

Вам программа зачем отступы расставляет. Так легко определить вложенность и кратность скобок.
macomics вне форума Ответить с цитированием
Старый 19.12.2022, 17:03   #3
Silvergg1
Новичок
Джуниор
 
Регистрация: 19.12.2022
Сообщений: 2
По умолчанию

Эту я сейчас нечаянно поставил, а так выдает массив чисел и всё. Как дальше по 1 пункту написать правильно? Я не понимаю
Silvergg1 вне форума Ответить с цитированием
Старый 19.12.2022, 17:09   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
for (int i = 0; i < 3; ++i) {
  sum++; // Увеличили счетчик строк в начале цикла анализа элементов строки
  for (int j = 0; j < 4; ++j)
    if (a[i][j] == 0) {
      sum--; // В строке присутствует 0, уменьшили счетчик строк
      break; // и перешли к следующей строке
    }
}
или используем переменную flag
Код:
for (int i = 0; i < 3; ++i) {
  int flag = 1;
  for (int j = 0; j < 4; ++j)
    if (a[i][j] == 0) {
      flag = 0; // В строке присутствует 0, уменьшили счетчик строк
      break; // и перешли к следующей строке
    }
  sum += flag;
}

Последний раз редактировалось macomics; 19.12.2022 в 17:12.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные и двумерные массивы. Язык C. Nero123 Общие вопросы C/C++ 0 19.06.2018 13:42
Добавление в готовую программу функций.Двумерные массивы.Язык Си. East Undia Trading Помощь студентам 2 12.03.2014 21:21
Язык Си. Двумерные массивы. Димас20 Помощь студентам 0 24.12.2013 16:35
Язык C (Двумерные массивы с использованием указателей). Winsic Помощь студентам 0 25.03.2012 14:41
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16