#include <iostream>
#include <vector>
using namespace std;
// глобальные переменные
const int arraySize = 10;
vector <int> numbers;
// сам алгоритм.
void result(){
// совет - обьявляй все переменные в начале функции
int leader = 0;
int maxCount = 0;
int count = 0;
// поиск самого частого числа
for (int c = 0; c < 9;c++){
// обнуляем счетчик
count = 0;
for (int c1 = 0;c1 < arraySize;c1++){
if (numbers[c1] == c) count++;
}
// проверка на лидера
if (maxCount < count){
leader = c;
maxCount = count;
}
}
// ну..с посмотрим:
cout << "Leader: " << leader << " (" << maxCount << ") " << std::endl;
}
int main()
{
// подготовка масива
srand(time(NULL)); // обнулем внутрений таймер для полного рандома
for (int c = 0; c < arraySize;c++) {
numbers.push_back(rand() % 9); // заполняем масив числами
}
// посмотрим на оригинальный масив
cout << "Original array: ";
for (int c = 0;c < arraySize;c++) cout << numbers[c] << " ";
cout << std::endl;
// сортировка
result();
return 0;
}
Объяснение:
Хорошая книга по с++: Герберт Шилд - с++ базовый курс.
В 1-ом примере:
делятся ли 11100111000111000111111111 : 111?
Во 2-ом примере:
делятся ли 1110010100011100011111111 : 1110?
1-ый пример:
Переводим из десятичной в двоичную
11100111000111000111111111 {2} = 60584447 {10}
111 {2} = 7 {10}
60584447 делится на 7 (можете сами проверить на калькуляторе), а это значит что исходные двоичные числа тоже делятся.
Также, чтобы проверить делимость числа на 111, или на cемь в десятичной системе, нужно разбить число на подгруппы, состоящие из трех чисел, и просуммировать их, если полученная сумма делится на 111, то и начальное число тоже делится
Примеры:
1) Делится ли 10001100 на 111.
100 + 011 + 000 = 111.
ответ: делится
2) Делится ли 001010100111 на 111.
001 + 010 + 100 + 111 = 1110 (допишем к этому числу необходимое количество нулей, и еще раз просуммируем)
1110 = 111000
111 + 000 = 111
ответ: делится
2-ой пример:
1110010100011100011111111 {2} = 30030079 {10}
1110 {2} = 14 {10}
30030079 уже не делится на 14, понятно,что и исходные двоичные числа не делятся
Это можно проверить и другим Число делится на 14, только если оно делится на 7, и на 2. Проверка делимости на 7 уже известна, а для проверки делимости на 2, нужно просто проверить делится ли на него последняя цифра числа. Например, 936 делится на 2, так как 6 делится. В двоичной системе надо взять первые 4 разряда и проверить их делимость на 0010.
Пример:
0101 0110 1010 : 1110?
010 + 101 +101 + 010 = 1110
111 + 000 = 111 => Это число делится на 7, или 111 в двоичной.
Теперь проверим делимость на два. Возьмем первые 4 разряда - 1010.
1010 {2} = 10 {10}
10 делится на 2.
ответ: раз число делится на 7, и на 2, то оно делится и на 14, то есть на 1110 {2}.