Делаю упражнение из книги господина Страуструпа, застрял на этом задании (я начинающий). Необходимо вывести число, которое повторяется в последовательности наибольшее количество раз (мода).
Я сделал цикл, который сравнивает по порядку числа вектора. Он сравнивает их до тех пор, пока число выше не окажется больше текущего (так как я использовал функцию sort()). Затем процесс должен повторяться. Сравнивая переменную moda_loop и moda_loop_2 я нахожу наибольшую моду вектора.
В какой части цикла я должен исправить свою ошибку?
цикл
moda_loop = 0;
moda_loop_2 = 0;
sort(i);
for(zum=0; zum<i.size(); zum++){
for(zumzum=1; zumzum<i.size(); zumzum++){
if(i[zum]==i[zumzum]){
moda_min=i[zum];
moda_max=i[zum];
if(moda_min==i[zumzum+1]){
while(moda==i[b]){
moda_min=i[zumzum+1];
b=zumzum+1;
b++;
moda_loop++;
}
}
if(moda_min<i[zumzum+1]){
moda_min=i[zumzum+1];
if(moda_min==i[zumzum+1]){
while(moda_min==i[b]){
moda_max=i[zumzum+1];
c=zumzum+1;
c++;
moda_loop_2++;
}
}
}
}
}
}
if(moda_loop>moda_loop_2){
moda_min=moda;
}
if(moda_loop<moda_loop_2){
moda_max=moda;
}
Общий вид программы
#include <D:\C\std_lib_facilities.h>
int main()
{
int num, zum, zumzum;
vector<int> i;
int c, moda, b, moda_loop, moda_loop_2, moda_min, moda_max;
int max, min;
int num_core;
for(int num_core; cin >> num_core; )
i.push_back(num_core);
min = i[0];
max = i[0];
for(num = 1; num<i.size(); num++){
if(max>i[num]) max = i[num];
if(min<i[num]) min = i[num];
}
moda_loop = 0;
moda_loop_2 = 0;
sort(i);
for(zum=0; zum<i.size(); zum++){
for(zumzum=1; zumzum<i.size(); zumzum++){
if(i[zum]==i[zumzum]){
moda_min=i[zum];
moda_max=i[zum];
if(moda_min==i[zumzum+1]){
while(moda==i[b]){
moda_min=i[zumzum+1];
b=zumzum+1;
b++;
moda_loop++;
}
}
if(moda_min<i[zumzum+1]){
moda_min=i[zumzum+1];
if(moda_min==i[zumzum+1]){
while(moda_min==i[b]){
moda_max=i[zumzum+1];
c=zumzum+1;
c++;
moda_loop_2++;
}
}
}
}
}
}
if(moda_loop>moda_loop_2){
moda_min=moda;
}
if(moda_loop<moda_loop_2){
moda_max=moda;
}
cout << "MAX: " << min << '\n';
cout << "MIN: " << max << '\n';
cout << "MODA: " << moda;
return 0;
}