Loading...
Yoana_Borisova avatar Yoana_Borisova 4 Точки

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 54 Точки

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

0
j.petrov_90 avatar j.petrov_90 373 Точки

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

Мисля че ти бяга малко идеята на масивите.
Както например си създала 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 54 Точки

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

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.