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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2014, 16:45   #1
Light of Heaven
Новичок
Джуниор
 
Регистрация: 13.10.2014
Сообщений: 1
По умолчанию Нахождение МОДЫ через массив c++

Сегодня задали найти моду с помощью массива. Должен был быть введен массив чисел, после этого программа должна выводить МОДУ ( наиболее частое число в массиве ) и потом какие цифры есть в массиве и сколько их.
В интернете нашел код для 2 отдельных программ:
1. Находила моду ( какой это элемент и сколько раз встречается )
2. Счетчик какие цифры есть в программе и сколько их.
Благодаря людям написавшим эти коды я смог соединить эти программы( может где то можно сделать и проще и кое что убрать, если это так то буду благодарен если подскажите и напишите в комментариях ).
Вот код программы.

Код:
 
#include <conio.h>
#include <iostream>
#include <ctime>
#include <cmath>
#include <iomanip>

using namespace std;
const int size = 10;
int arr[size];
void mode(void);
int main() {
	setlocale(LC_ALL, "Russian");
	srand(time(NULL));
	int m = 10,
		n = 10,
		rmax;
	cout << "Введите массив";
	for (int i = 0; i < size; i++)
	{
		cin >> arr[i];
		cout << arr[i] << " ";
	}
	cout << endl;
	mode();
	cout << "Решение \n";
	int b[32768] = { 0 };
	for (int i = 0; i < m; i++)
		b[arr[i]]++;

	rmax = b[0];
	int I = 0;
	for (int i = 0; i < n; i++)
		if (b[i] > rmax)
		{
		rmax = b[i];
		I = i;
		}
	cout << " Элемент   " << I << "\n встречается " << rmax << " раз \n\n\n\n" << endl;
	system("pause");
	return 0;
}

void mode()
{
	const int countSize = 21;
	int count[countSize] = { 0 }, largest = 0;

	for (int i = 0; i < size; i++)
		count[arr[i]]++;

	for (int i = 0; i < countSize; i++)
		if (count[i] > largest)
			largest = count[i];

	while (largest > 0)
	{
		for (int i = 0; i < countSize; i++)
			if (count[i] == largest)
				cout << setw(2) << i << " - " << count[i] << " раз." << endl;
		largest--;
	}
}

Последний раз редактировалось Stilet; 13.10.2014 в 17:28.
Light of Heaven вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение максимальной вложенности операторов в коде на C# через Roslyn stationfuk C# (си шарп) 1 10.03.2014 20:17
Расчет моды (статистика) BioVR SQL, базы данных 5 15.04.2013 15:53
Нахождение моды Logannn Общие вопросы C/C++ 15 16.01.2013 23:11
Нахождение моды в массиве. Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.11.2011 20:00
надо сделать дек через массив и через список. CHUCKe Помощь студентам 4 20.11.2010 17:23