Професионална програма
Loading...
+ Нов въпрос
Yoana_Borisova avatar Yoana_Borisova 1 Точки

04.MostFrequentNumber

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

#include <iostream>
using namespace std;

void readInput(int arr[], int& lenght)
{
    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;
readInput(arr, lenghtArr);
findMostFrequenceNumber(arr, lenghtArr);
findBiggest();
return 0;
}

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

Тагове:
0
C++ Fundamentals
RaUndreundre avatar RaUndreundre 52 Точки

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

0
j.petrov_90 avatar 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 avatar RaUndreundre 52 Точки

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

1