eMatematikas Prisijunk Forumas Egzaminų užduotys ONLINE testai

C++ kelių vienodų didžiausių/mažiausių reikšmių masyve suradimas ir išspausdinimas


Sveiki, super paprasta užduotis, bet niekaip nesugalvoju iki galo.. : iš masyvo surasti ir išspausdinti didžiausią reikšmę, o jei jų yra kelios, tada išspausdinti visas. Tik vienai reikšmei rasti algoritmą žinau, o ką daryti, kai yra kelios didžiausios ar mažiausios ir visas reikia išspaudint?

Įkelk kodą, kurį dabar turi pasirašęs, pamėginsim patobulinti.

#include <iostream>

using namespace std;

int Didziausia(int n, int A[]);

int main()
{
    int mas[10] = {3, 4, 9, 9, 2};
    int n = 5;
   
    return 0;
}

int Didziausia(int n, int A[])
{
    int didziausia=A[0];
    for(int i=1; i<n; i++){
        if(A[i] > didziausia){
            didziausia = A[i];
        }
    }
    return didziausia;
}


Na čia kaip ir sakiau tiesiog vieną didžiausią reikšmę randa, jei kelias turbūt jau ne int o void funkcijos reikėtų?

Dabar greitai nesugalvoju gero sprendimo būdo, bet turiu idėją jog turėtum pirmiausiai išskirti kokius turi aplamai skirtingus skaičius (juos įsirašyti į masyvą), o tada nustatyti kiek kievieno iš šių skaičių turi. Vėliau nustatyti didžiausią pasikartojimo dažnį ir išspausdinti visus elementus turinčius šitą dažnį.

pakeista prieš 5 m

O tai nebūtų paprasčiau dabar prasukt ciklą ir tikrinti ar A[i]==didziausia jei teisinga sąlyga išspausdinti A[i]

Tai čia kiek suprantu tau reikia spausdint didžiausią skaičių, ir kiek jis kartų pasikartoja tai tavo atveju būtų du 9.
Principas yra toks kad tu isivedi maine dar vieną int kintamaji ir ji prilygini nuliui
int k=0;//pasikartojimu skaičius
Ir tada kur randi ta viena didžiausią tu jį rask ir tada suk dar vieną for'ą kad surastum pasikartojimu skaičiu ir toj salygoj bus
for(int i=0;i<n;i++)
    if(M[i]==didziausia)
        k++;
tai reiktu vietoj int funkcijos i void pasidaryt nes ne viena kintamaji taip gražinsi.
O tuos kur gražinsi tai su & ženkliuku pamarkink
ir tada turėsi k kiek kartu pasikartos ir gali arba 20 sykiu kartot tą pati skaičiu konsolej arba parašyt 9x20 :D

Dėkui :)

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »