+ Нов въпрос
Yoana_Borisova 1 Точки

## 04.MostFrequentNumber

Здравейте! Изпитвам затруднения със задача 04.MostFrequentNumber от упражнението за масиви. Аз написах този код за задачата:

``````#include <iostream>
using namespace std;

{
std::cin>>lenght;
for(int i=0; i<lenght; i++)
{
std::cin>>arr[i];
}
}
int number0=0;
int number1=0;
int number2=0;
int number3=0;
int number4=0;
int number5=0;
int number6=0;
int number7=0;
int number8=0;
int number9=0;

void findMostFrequenceNumber(int arr[], int lenght)
{

for(int i=0; i<lenght; i++)
{
switch(arr[i])
{
case 0: number0+=1; break;
case 1: number1+=1; break;
case 2: number2+=1; break;
case 3: number3+=1; break;
case 4: number4+=1; break;
case 5: number5+=1; break;
case 6: number6+=1; break;
case 7: number7+=1; break;
case 8: number8+=1; break;
case 9: number9+=1; break;
}
}

}

void findBiggest()
{
if(number0>number1&&number0>number2&&number0>number3&&number0>number4&&number0>number5&&number0>number6&&number0>number7&&number0>number8&&number0>number9){
cout<<"0"<<endl;
}
else if(number1>number2&&number1>number3&&number1>number4&&number1>number5&&number1>number6&&number1>number7&&number1>number8&&number1>number9){
cout<<"1"<<endl;
}
else if(number2>number3&&number2>number4&&number2>number5&&number2>number6&&number2>number7&&number2>number8&&number2>number9){
cout<<"2"<<endl;
}
else if(number3>number4&&number3>number5&&number3>number6&&number3>number7&&number3>number8&&number3>number9){
cout<<"3"<<endl;
}
else if(number4>number5&&number4>number6&&number4>number7&&number4>number8&&number4>number9){
cout<<"4"<<endl;
}
else if(number5>number6&&number5>number7&&number5>number8&&number5>number9){
cout<<"5"<<endl;
}
else if(number6>number7&&number6>number8&&number6>number9){
cout<< "6 "<<endl;
}
else if(number7>number8&&number7>number9){
cout<< "7"<<endl;
}
else  if(number8>number9){
cout<<"8"<<endl;
}
else  if(number9>number0){cout<<"9"<<endl;}

}

int main(){
int arr[1000];
int lenghtArr=0;
findMostFrequenceNumber(arr, lenghtArr);
findBiggest();
return 0;
}
``````

Дава ми само 60 от 100. Доколкото се досещам май е, защото не покривам възможността за равен брой числа. Не ми харесва и това, че е толкова дълъг, но не мога да се досетя за друго по-ефикасно решение. Моля за малко помощ!

Тагове:
0
RaUndreundre 52 Точки

https://softuni.bg/forum/40986/cplusplusfundamentals-arrays-exercise-most-frequent-number

0
j.petrov_90 248 Точки

Привет, Йоана,

Мисля че ти бяга малко идеята на масивите.
Както например си създала 10 променливи с имена number0, number1...number9 - трябва просто да създадеш един масив с големина 10 на тяхно място.
Замисли се, ако числата не бяха 10, а бяха 100? 100 именовани променливи ли щеше да създадеш?
Ами ако бяха 1000?

Проверки като тази
if(number3>number4&&number3>number5&&number3>number6&&number3>number7&&number3>number8&&number3>number9){
със сигурност не вещаят нищо добро.
Дори и judge да ти е дал 60 от 100 - това изобщо не е варианта.

Силата, която ни дават масивите е че ние можем да пишем алгоритми върху тях. Тези алгоритми със сигурност използват цикъл в себе си.
Така задачата ще работи, ако масива ти е от 2 елемента, ще работи и ако е с 200.

Пробвай да напишеш решението с масиви и цикли и отново се върни тук за помощ.
Тогава ще можем да обсъдим проблема по-конкретно.

П.С. колега @RaUndreundre, благодаря ти за помощта. Опитай се да даваш някаква градивна критика. За жалост постове като твоя рядко помагат.
Т.е. те със сигурност помагат, но трябва да има и някакво разяснение към тях.
Иначе се получава ефекта, че правиш "мечешка услуга".
Колежката, ако погледне решението ти сигурно ще го разбере.
Ключът обаче се крие в това как тя да навакса дупката между нейното и твоето решение.

Поздрави

2
12/04/2021 11:44:22
RaUndreundre 52 Точки

Благодаря за съвета. Умишлено не постнах самия код за да дам възможност колежката сама да го напише, но сигурно съм прекалил с подсказките. Знанията ми са твърде крехки и непълни за да мога да анализирам и съветвам как най-добре се решава даден проблем.

1