» »

[c++] vnesenemu steviluiskanje najbližjega stevila v arrayu

[c++] vnesenemu steviluiskanje najbližjega stevila v arrayu

kunkka500 ::

Hi,
torej v main()-u moran uporabnik preko 'cin' podati nek integer, korenu tega števila pa moram poiskati najbližje število v arrayu, ki je zgeneriran in napolnjen v eni izem funkcij programa...
zdaj pa me zanima kako bi lahko to najlažje naredil? kajti nisem najbolj šrepričan kako lahko medsebojno uporabljam/linkam integer iz maina() in array iz neke funkcije...

koda moje funkcije:
int funkcijatri(int x, int n){ //vrne 20 prastevil vecjih od podanega stevila n


int praarray[x];
int a=0;
int sum;
    while(a<x){
              n++;
              if(IsPrime(n) && (n>=a)){
                            praarray[a] = n;
                            cout << praarray[a] << ", ";
                            sum+= praarray[a];
                            a++;

                           
              }//konec if  
            
    }//konec while
   


    
    return sum/x; //return sestevek elementov v arrayu, deljen s stevilom elementov (povprecna vrednost)
  


    
}//konec funkcija tri 


tukaj pa je seveda del v katerem uporabnik poda svoje poljubno stevilo..:
cout << "Vnesite poljubno (pozitivno) stevilo: ";
int poljubnostevilo;
cin >> poljubnostevilo;
cout <<endl;
int koren = sqrt (poljubnostevilo);

cout << "Koren vnesenega stevila: " << koren << endl;

Spura ::

Posortiraj array. Nato gres po vrsti dokler ne najdes stevila, ki je vecje od korena. Nato pogledas kateri je blizje, to stevilo, ki je vecje, ali eno pred njim. Valda moras upostevat tut moznost, da je ze prvo stevilo vecje od korena in pa da ni nobeno stevilo vecje od korena.

kunkka500 ::

aha, torej lahko kr s sortitranje im potem enostavno primerjam ...[a] z ...[a+1] ok, hvala :)

kunkka500 ::

malo sem se zmedu, ker sem poskušal v foru z array[].length :S pa mi je javljalo napake...

mallard ::

Spura je izjavil:

Posortiraj array. Nato gres po vrsti dokler ne najdes stevila, ki je vecje od korena.


Hrmpf. Poišceš z bisekcijo.
std::lower_bound

@kunkka500 Arrayi nimajo metod. Dolžino arraya dobiš, če deliš velikost celega z velikostjo enega elementa. Nekej v tem smislu, na pamet:

int arr[] = {3, 4, 1, 8, 7, 154, 654, 673, 43, 876, 987, 564};
size_t size = sizeof(arr)/sizeof(int));
int* begin = arr;
int* end = arr + size;
std::sort(begin, end);

int i = 100;
int* it = std::lower_bound(begin, end, i);
// it je kazalec na prvi element ki NI MANJŠI od i
// ali pa enak end če takega elementa ni


Priporočam ti pa, da C-arraye zamenjaš z vektorji.

Zgodovina sprememb…

  • spremenilo: mallard ()

Spura ::

Nisem nafuraval bisekcije ker modelu osnovni algoritmi delajo probleme.

mallard ::

Fair enough. Tud jaz mu nisem rekel, da naj ga sam napiše :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] array v voidu

Oddelek: Programiranje
102284 (1983) Spura
»

Rekurzija

Oddelek: Programiranje
82376 (1836) lebdim
»

[Java] Zasnova shoot em up igre

Oddelek: Programiranje
111194 (873) PecenkA
»

c++ two dimensional array v classu

Oddelek: Programiranje
111397 (1200) Senitel
»

program ki bo sestel tri stevila

Oddelek: Programiranje
91165 (966) MasterMind

Več podobnih tem