Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4 / 4 / 3
Регистрация: 26.07.2016
Сообщений: 96

Определить второй по величине элемент двумерного массива

14.09.2016, 13:11. Показов 2355. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!
По условию задачи надо определить второй по величине элемент двумерного массива и вывести на экран номера строк и количество данных элементов в этих строках.
вот что получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
int main()
{
    system ("chcp 1251");
    system ("cls");
    int a[10][10],n,m,i,j;               
    printf("введите количество строк от 1 до 10\n");
    scanf("%d",&n);
       while(n<1||n>10)
       {printf("введено неверное значение, пробуй еще\n");         
       scanf("%d",&n);
       }
    printf("введите количество элементов в каждой строке от 1 до 10\n");
    scanf("%d",&m);
       while(m<1||m>10)
       {printf("введено неверное значение, пробуй еще\n");
        scanf("%d",&m);
       }
    srand(time(0));
    for(i=0;i<n;i++)
    {   
        for(j=0;j<m;j++)
        {
        a[i][j]=rand()%30+1;
        } 
    }
    for(i=0;i<n;i++)
    { 
        for(j=0;j<m;j++)
        {
        printf("%4d",a[i][j]);
        }
    printf("\n"); 
    }
    int max=a[0][0],max2=a[0][0];
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
       {   
           if(a[i][j]>max) 
           {
           max=a[i][j];
           }
              if(a[i][j]>max2&&a[i][j]<max)
              {
               max2=a[i][j];
              }
       }
    }
    
    printf("second max element =%d\n",max2);
    int sum[i];
    for(i=0;i<n;i++)
    {
     sum[i]=0;
       for(j=0;j<m;j++)
       {
          if(a[i][j]==max2)
          {sum[i]++;
          }
       }
    if(sum[i]>0) printf("количество вторых по величине элементов %d строки равно %d\n",i+1,sum[i]);   
    }
return 0;
}
Проблема в том, что программа иногда выводит максимальный элемент вместо второго по величине...
подскажите где ошибка.

Добавлено через 47 минут
Вроде как если в условии:
C
1
2
3
4
              if( ( a[i][j]>max2 ) && ( a[i][j]<max ) )
              {
               max2=a[i][j];
              }
добавить выделенные скобки, то вроде как ошибка появляется реже, но все равно проскакивает
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2016, 13:11
Ответы с готовыми решениями:

Определить второй по величине максимальный элемент массива, не равный первому
Дан одномерный массив А(N).Определить второй по величине максимальный элемент этого массива, не равный первому. #include...

Найти третий по величине элемент во второй половине массива
Есть массив из ста елементов. Нужно найти третий по величине элемент во второй половине массива. Помогите, пожалуйста!

Определить второй наибольший элемент одномерного массива
Доброго времени суток, это лабораторная работа которую мне нужно принести через две недели в универ, с прошлой лабороторной я мучался как...

21
4 / 4 / 3
Регистрация: 26.07.2016
Сообщений: 96
14.09.2016, 20:11  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от LFC Посмотреть сообщение
не заморачивайтесь пока с bool,используйте int flag = 0; как я в одном из примеров написал, это тоже самое по сути.
false это 0, true это 1.

Добавлено через 7 минут
flag это обычная переменная,используется для проверки условия,если флаг поднят(т.е. равен 1)-делаем одно,если опущен (равен нулю) делаем другое.Вот и всё.

Добавлено через 1 минуту
выражение if(!flag) это тоже самое что if(flag == 0)
Спасибо!
0
 Аватар для ata
269 / 253 / 186
Регистрация: 28.10.2015
Сообщений: 723
18.09.2016, 08:16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdio.h"
 
#define N 5
#define M 4
 
int a[N][M] = {{79,79,79,67},{54,69,70,11},{23,64,78,45},{56,1,-5,0},{-47,23,53,61}};
int* p[N * M];
 
int cmp_ptr(const void* a, const void* b)
{
    int* p1 = *(int**)a;
    int* p2 = *(int**)b;
    return *p1 > *p2 ? -1 : *p1 != *p2;
}
 
int main(void)
{
    int i;
    int j;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            p[i * N + j] = &(a[i][j]);
        }
    }
    qsort(p, N * M, sizeof(int*), cmp_ptr);
    int max1 = *(p[0]);
    int max2 = *(p[1]);
    printf("max1: %d\nmax2: %d\n", max1, max2);
    int count1;
    int count2;
    for (i = 0; i < N; i++)
    {
        count1 = 0;
        count2 = 0;
        for (j = 0; j < M; j++)
        {
            count1 += a[i][j] == max1;
            count2 += a[i][j] == max2;
        }
        if (count1 != 0) printf("max1 in row%d: %d\n", i, count1);
        if (count2 != 0) printf("max2 in row%d: %d\n", i, count2);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2016, 08:16

Определить наибольший элемент в каждой колонке двумерного массива E
Определить наибольший элемент в каждой колонке двумерного массива E Напишите на языке СИ,если можно дайте коментарии

Вывод третьего по величине элемента второй половины массива
Добрый день, срочно нужно решение этой задачки Буду весьма признателен за оказанную помощь &gt;&lt; Массив должен состоять из 100...

В чем может быть ошибка? Нахождение третьего по величине элемента во второй половине массива
Читала, что для массивов нужно грамотно выделять память, эффективней всего динамическую. Честно говоря, не знаю, правильно ли я это...

Ошибки в задаче "Определить наименьший элемент каждой четной строки двумерного массива"
Задание: определить наименьший элемент каждой четной строки матрицы A #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Найти четвертый по величине элемент в первой половине одномерного массива (через указатели)
(Массив рандом)Нужно найти четвертый по величине элемент в первой половине одномерного массива. при этом запрещается использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru