С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 2 / 3
Регистрация: 07.03.2018
Сообщений: 217
1

Вывод одиннаковых мод массива

25.09.2018, 19:51. Показов 741. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, тут такая проблема..у меня есть программа,которая осуществляет поиск моды(наиболее часто встречающееся значение),все прекрасно работает. Проблема в том,что иногда генерируется несколько одинаковых максимальных мод, и мне нужно выводить их все. Объясните,как это реализовать.
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
    srand(time(NULL));
    setlocale(0, "");//строка локализации,позволяет отображать русский шрифт нормально
                     //Объявление массива
    int raz,// размер массива
        min,
        max,// максимальное значение элемента массива (n<100000)
        povt; // мода
    cout << "Введите размер массива:\n\n";
    cin >> raz;
    cout << "Задайте минимально значение массива:\n\n";
    cin >> min;
    cout << "Задайте максимальное значение массива:\n\n";
    cin >> max;
    int *a = new int[raz];//создается колво цифр равное элементу raz,где * указывает на то что а-это массив 
    for (int i = 0; i < raz; i++)
        a[i] = min + rand() % (max - min);
 
    //вывод массива
    cout << "\n\n                                  Генерация массива...\n\n";
    for (int i = 0; i < raz; i++)
    {
        if (i % 10 == 0)
            cout << endl;    //
        cout << setw(8) << a[i] << ' ';//изменение ширины массива
    }
 
    cout << "\n\n\ Заданное кол-во элементов " << raz << "\n\n\n\n";
 
 
    int b[100000] = { 0 };
    for (int i = 0; i < raz; i++)
        b[a[i]]++;
 
    povt = b[0];
    int x = 0;
    for (int i = 0; i < max; i++)
        if (b[i] > povt)
        {
            povt = b[i];
            x = i;
        }
    cout << "Мода числа " << x
        << " является самой большой, и равна: "
        << povt << endl;
 
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2018, 19:51
Ответы с готовыми решениями:

Вывод одинаковых мод массива
Помогите,пожалуйста, с задачей.Нужно сделать так,чтобы если встречались одинаковые...

Исключить вывод двух и более одиннаковых записей
здравствуйте! нужна помощь в создании запроса который будет сравнивать строки из двух таблиц и при...

Показать одну запись из множества одиннаковых
Всем привет, возник вопрос, мне необходимо получить значение поля Тема_ID находящейся в Вопросы.,...

Вывод заголовков полей массива / Вывод содержимого массива на веб-страницу не через print_r
Есть некий массив массивов, который передаётся в какой-то документ и там переприсваивается через ...

10
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
25.09.2018, 20:01 2
Цитата Сообщение от Draka_za_edy Посмотреть сообщение
a[i] = min + rand() % (max - min);
тут нет ошибки?
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
25.09.2018, 20:02 3
stu4ent, в чём?
Цитата Сообщение от Draka_za_edy Посмотреть сообщение
int b[100000]
судя по коду, что такое new вам уже в школе рассказывали.Зачем же тогда такое выкладывать, ведь нам количество элементов точно известно!
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
25.09.2018, 20:04 4
Цитата Сообщение от Draka_za_edy Посмотреть сообщение
int b[100000] = { 0 };
зачем такой большой массив?

Добавлено через 40 секунд
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
stu4ent, в чём?
после процента в скобках надо кое-что другое вроде написать .
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
25.09.2018, 20:06 5
Цитата Сообщение от Draka_za_edy Посмотреть сообщение
int b[100000]
судя по коду, что такое new вам уже в школе рассказывали.Зачем же тогда такое выкладывать, ведь нам количество элементов точно известно!

Добавлено через 44 секунды
Цитата Сообщение от stu4ent Посмотреть сообщение
зачем такой большой массив?
я первый спросил

Добавлено через 1 минуту
Цитата Сообщение от stu4ent Посмотреть сообщение
после процента в скобках надо кое-что другое вроде написать .
давай без загадок, я считаю, что всё правильно. Это генерация случайных чисел в диапазоне от min до max/ Не согласен? отвечай прямо, потому что я не понял, что неверно.
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
25.09.2018, 20:11 6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
судя по коду, что такое new вам уже в школе рассказывали.Зачем же тогда такое выкладывать, ведь нам количество элементов точно известно!
можно и без new, вот пример:
C++
1
2
3
int a;
cin >> a;
int b[a];
Добавлено через 57 секунд
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
давай без загадок, я считаю, что всё правильно. Это генерация случайных чисел в диапазоне от min до max
нет это генерация чисел принадлежащих множеству [a, b)

Цитата Сообщение от Draka_za_edy Посмотреть сообщение
a[i] = min + rand() % (max - min);
может стоит заменить на:
C++
1
a[i] = min + rand() % (max - min + 1);
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
25.09.2018, 20:14 7
Цитата Сообщение от stu4ent Посмотреть сообщение
зачем такой большой массив?
у тебя заданы конкретные min и max по которым можно завести массив вполне конкретной длины.
например
C++
1
2
3
int b=new int[max-min];
//...
b[a[i]-min]++;
Добавлено через 2 минуты
Цитата Сообщение от stu4ent Посмотреть сообщение
можно и без new, вот пример:
так нельзя. По крайней мере в С++ без нестандартных расширений. Такую дурную привычку нужно жесточайше пресекать.

То что ты пишешь тебе скорее всего компилятор gcc позволил. Но не факт, что так писать нормально.
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
25.09.2018, 20:15 8
Цитата Сообщение от Draka_za_edy Посмотреть сообщение
Объясните,как это реализовать.
1. считаем сколько раз встречаются все элементы (это сделано);
2. находит в массиве с результатами максимальное значение;
3. выводим все значение, у которых частота равна максимальному значению.
0
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
25.09.2018, 20:16 9
Цитата Сообщение от stu4ent Посмотреть сообщение
может стоит заменить на:
C++
1
a[i] = min + rand() % (max - min + 1);
зачем? тогда во всей программе к макс придётся прибавлять 1 (например у меня строкой выше придётся в new +1 дописывать). Макс не включён у автора в множество значений.
0
3 / 2 / 3
Регистрация: 07.03.2018
Сообщений: 217
25.09.2018, 20:18  [ТС] 10
спасибо,попробую
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
25.09.2018, 20:20 11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
То что ты пишешь тебе скорее всего компилятор gcc позволил. Но не факт, что так писать нормально.
Вы серьёзно? Я раньше использовал visual studio и там так делать было нельзя. Только через define и м.б. const int. А в gcc так можно. Я думал это новый стандарт такой? А так можно писать:
C++
1
2
3
struct Data {
    int array[0];
};
0
25.09.2018, 20:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2018, 20:20
Помогаю со студенческими работами здесь

инициализация массива, вывод массива и обработка массива должны быть реализованы с помощью функций.
1 Последовательность a1; a2; ...; an состоит из нулей и единиц. Поставить в начало этой...

Мод деньги
Здравствуйте. Хочу поставить себе мод деньги, вот на скрине он представлен...

оператор мод
Почему дельфи ругается на этот код а именно на оператор мод может надо какую библиотеку подключить?...

Сложение по мод 2
Помогите реализовать сложение по модулю 2 двух 2-х чисел( причем числа уже записаны в label), чтобы...


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

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