Премини към съдържанието

Препоръчан отговор


Имам проблем с една задача,трябва да се намери най-малкото положително число в масива.Нали правя си всичко но като натисна да ми изведе нищо не става. 

 mini=0; mini_index=0;    for(int i=0;i<l;i++)    {        if(ak[i]>0&&ak[i]<mini)        {            mini = ak[i];            mini_index = i;        }    }     if((mini)!=0)        {            cout<<"Nai-malkoto polojitelno chislo v masiva e: "<<maxi<<" Namira se na poziciq: "<<maxi_index+1<<endl;            mini=0; mini_index=0;        }

Ако може да помогне някой,че е спешно :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Няма да сработи :  най-малкото положително винаги е по-голямо от 0 

1. трябва в началото да инициализираш mini не с 0 , а примерно с първото ak >0 

2. защо търсиш mini, а при извеждането с cout е  maxi?

Редактирано от ined (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Няма да сработи най-малкото положително винаги е по-голямо от 0 

1. трябва в началото да инициализираш mini не с 0 , а с ak[0], а преди извеждането да го провериш дали е по-голямо от 0

По - скоро mini трябва е максималната положителна числова стойност за съответния тип, ако не искаме да променяме логиката на текущия код - ak[0] може да е отрицателно число и тогава проверката за 

ak[i]<mini

пропада, дори и за положителни ak-та.

 

Това твърдение е валидно в случая, че масива може да съдържа и положителни и отрицателни числа. Ако сме сигурни, че елементите на масива са > 0, то решението на @ined е валидно.

 

P.S.

 

2. защо търсиш mini, а при извеждането с cout е  maxi?

Сигурно става дума за copy-paste грешка :). Just a thought ... 

 

Поздрави !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

ми не става нещо намира ми най-малката стойност в целия масив,а не от положителните

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

ми не става нещо намира ми най-малката стойност в целия масив,а не от положителните

няма как да се получи това ако проверяваш ak дали е по-голямо от 0

    mini=0;    for(i=0;i<l;i++)       if((ak[i]>0)&&((mini==0)||(ak[i]<mini))) mini = ak[i];            if (mini) {            cout<<"Nai-malkoto polojitelno chislo v masiva e: "<<mini<<endl;            cout<<"Na poziciq: "            for (i=0;i<l;i++)                if (ak[i]==mini) cout << i+1 << "  ";            cout << enfl;    } else cout << "Niama polojitelni chisla v masivan";
Редактирано от ined (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

мерси мерси аз се оправих мерси за помощта все пак :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

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