Forum » Programiranje » [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:
tukaj pa je seveda del v katerem uporabnik poda svoje poljubno stevilo..:
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 ::
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 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] array v voiduOddelek: Programiranje | 2290 (1989) | Spura |
» | RekurzijaOddelek: Programiranje | 2379 (1839) | lebdim |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1195 (874) | PecenkA |
» | c++ two dimensional array v classuOddelek: Programiranje | 1398 (1201) | Senitel |
» | program ki bo sestel tri stevilaOddelek: Programiranje | 1169 (970) | MasterMind |