Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 31
1

Определить число, которое встречается в массиве наиболее часто

12.02.2019, 16:59. Показов 1063. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано натуральное число n и массив вещественных чисел a [1..n]. Определить число m, что встречается в массиве наиболее часто. Если в массиве несколько таких цифр, количество вхождений которых совпадают, то вывести соответствующее сообщение
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2019, 16:59
Ответы с готовыми решениями:

В массиве найти наиболее часто встречающиеся числа
В массиве целых чисел с количеством элементов N(N вводится с клавиатуры) найти наиболее часто...

Определить, встречается ли число 7 в массиве целых чисел
Напишите программу, которая дает ответ "да" или "нет", в зависимости от того, встречается ли число...

В символьном массиве найти наиболее часто встречающееся значение
В символьном массиве найти наиболее часто встречающееся значение. Вывести это значение и все его...

Определить, сколько раз встречается каждое число в массиве
Не могу отловить ошибку. Выводит белеберду , надеюсь на вашу скорую помощь. пометил самые слабые...

6
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
12.02.2019, 17:18 2
А где проблема? Есть какой-нибудь код, идеи?
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 31
12.02.2019, 17:23  [ТС] 3
Есть код, но он работает криво... Он как бы ставит числа по порядку, а не выводит число
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
#include <stdio.h>;
#include <stdlib.h>;
#include <iostream.h>;
#include <conio.h>;
int main ()
{
clrscr ( );
const n=20, m=10;
int a[n], b[m-1],i,mx;
rand ( );
cout<<"масив: ";
for (i=1; i<n; i++)
{
a[i]=random(m);
cout<<" "<<a[i]; ++b[a[i]];
}
for (i=1; i<m-1; i++)
if (b[mx]<b[a[i]])
mx=a[i];
cout<<endl<<"наиболее часто встречающееся число:";
for (i=0; i<m-1; i++)
if (b[mx]=b[i])
cout<<"  "<<i;
return 0;
}
0
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
12.02.2019, 17:51 4
Немного подправил:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main () {
   const int n = 20, m = 10;
   int a[n], b[m-1], i, mx = 0;
   printf("array: ");
for (i = 0; i < n; i++) {
    a[i] = rand() % m;
    printf(" %d", a[i]); 
    ++b[a[i]];
}
 
    for (i = 1; i < m - 1; i++)
        if (b[mx] < b[a[i]])
           mx = a[i];
 
        printf("\nmuch");
   for (i = 0; i < m - 1; i++)
       if (b[mx] == b[i])
        printf("  %d",i);
   return 0;
}
С обработкой случая нескольких повторений:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAXIMAL 20
 
int main(int argc, char *argv[]) {
    srand(time(NULL));
    int n;
    scanf("%d", &n);
    int i = 0, a[n], res[MAXIMAL] = { };
 
    for (; i < n; i++) {
       a[i] = rand() % MAXIMAL;
       res[a[i]]++;
       printf("%d ", a[i]);
    }
   
    int repeats = 0, max = *res, maxnum;
    for (i = 1; i < MAXIMAL; i++) {
       if (max < res[i]) {
          max = res[i];  
          maxnum = i; 
          repeats = 0;
       } else if (max == res[i])
                  repeats++;
    }
    if (repeats) printf("\nToo much repeats. First such element: ");
    else printf("\nResult: ");
      printf("%d\n", maxnum);
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 31
12.02.2019, 18:10  [ТС] 5
Спасибо большое) Благодарен
0
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
12.02.2019, 18:13 6
Пожалуйста.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
15.02.2019, 01:46 7
Цитата Сообщение от Shadowmoon Посмотреть сообщение
int a[n], b[m-1],i,mx;
Цитата Сообщение от coder0 Посмотреть сообщение
int i = 0, a[n], res[MAXIMAL] = { };
И всё бы ничего, если не прочитать задание чуть внимательнее:
Цитата Сообщение от Shadowmoon Посмотреть сообщение
Дано натуральное число n и массив вещественных чисел a [1..n].
Кстати,
Цитата Сообщение от coder0 Посмотреть сообщение
C
1
2
3
    int n;
    scanf("%d", &n);
    int /*...*/ a[n] /*...*/;
стек не резиновый, а максимально допустимый размер массива никак не оговорён...
Ну допустим, и размер массива известен, и с генерацией нужного количества вещественных(!!!) чисел мы как-то справились... Если библиотеки GLib нет, или просто не лень писать велосипед, можно и с велосипедом, но мне лень!
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
#include <glib.h>
 
#define N_VALUES 10
#define PRECISION 2
 
void lookup_max_meetings(gpointer value, gpointer meets, gpointer mmax) {
    int * pMaxMeets = (int *)mmax;
    int currentMeets = GPOINTER_TO_INT(meets);
 
    if ( currentMeets > *pMaxMeets )
        *pMaxMeets = currentMeets;
}
 
void print_max_meeting_values(gpointer value, gpointer meets, gpointer mmax) {
    int * pMaxMeets = (int *)mmax;
    int currentMeets = GPOINTER_TO_INT(meets);
 
    if ( currentMeets == *pMaxMeets )
        g_print("%.*f\n", PRECISION, *(double *)value);
}
 
int main(void) {
    double array[N_VALUES] = { 3.34, 1.76, 5.25, 5.25, 1.76, 4.23, 1.76, 3.14, 9.21, 5.25 };
    int i, maxMeets = 0;
    GHashTable * hash = g_hash_table_new(g_double_hash, g_double_equal);
 
    for ( i = 0; i < N_VALUES; ++i )
        g_hash_table_insert(hash, &array[i], GINT_TO_POINTER(GPOINTER_TO_INT(g_hash_table_lookup(hash, &array[i])) + 1));
    
    g_hash_table_foreach(hash, lookup_max_meetings, (gpointer)&maxMeets);
 
    g_print("Max meeting (%d) value(s):\n", maxMeets);
 
    g_hash_table_foreach(hash, print_max_meeting_values, (gpointer)&maxMeets);
 
    g_hash_table_destroy(hash);
 
    return 0;
}
Код
[andrew@easybook numbers]$ gcc -Wall max_meets_real_numbers.c \
> `pkg-config --cflags --libs glib-2.0`
[andrew@easybook numbers]$ ./a.out 
Max meeting (3) value(s):
1.76
5.25
[andrew@easybook numbers]$
0
15.02.2019, 01:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2019, 01:46
Помогаю со студенческими работами здесь

Получить 10 наиболее часто встречающихся букв и число их появления
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв...

Получить 10 наиболее часто встречающихся слов и число их появлений
Помогите с задачей пожалуйста Дан текстовый файл f, содержащий произвольный текст. Слова в тексте...

100 наиболее часто встречающихся слов и число из появлений в тексте
Здравствуйте! Очень нужна помощь. Программа по теме файлы. Дан текст, для простоты разделенный...

Найти натуральное число, которое во входе встречается нечетное число раз и вывести на экран
задача. на вход подается сначала кол-во эл-тов массива&lt;500 000, затем сами элементы, каждый из...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru