Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Generisanje slucajnih brojeva bez ponavljanja

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja

[ Pregleda: 3627 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

invazija
stormwind

Član broj: 159225
Poruke: 126
..x.zj.dynamic.163data.com.cn.



Profil

icon [Zadatak] Generisanje slucajnih brojeva bez ponavljanja08.10.2007. u 22:36 - pre 200 meseci
poz... ovako imam neki program, koji iznacuje random brojeve od 0-10. sad ne mogu nikako da realizujem da mi ne ponavlja vec izbacene brojeve, i kako sta da izmenim da mi izbacuje brojeve od 1-10, tj bez nule...
kod:

Code:

#include<stdio.h>
#include<stdlib.h>
main(){
int n,a[10],i,j,b;
for(;;){
printf("\n duzina niza (max 10)");
scanf("%d",&n);
if(n<=0 || n>dim) break;
printf("\n pocetni niz");
for(i=0; i<n; i++)
printf("%d%c", a[i]=rand()/((double)RAND_MAX+1)*10, (i%30==29 || i==n-1)?('\n'):(' '));
for(i=0; i<n-1; i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j]) b=a[i], a[i]=a[j], a[j]=b;
printf("\n sortirani niz");
for(i=0;i<n;i++)
printf("%d%c",a[i], (i%30==29 || i==n-1)?('\n'):(' '));
}}


ako bi mogla neka brza pomoc )

[Ovu poruku je menjao invazija dana 09.10.2007. u 00:07 GMT+1]

EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]

Tako uokviren (formatizovan) kod će se videti ovako:

Code:

int main ( int argc, char *argv[] )
{
   // ...
   return 0;
}


EDIT2: Sem u tvom slučaju

[Ovu poruku je menjao X Files dana 09.10.2007. u 07:28 GMT+1]

[Ovu poruku je menjao X Files dana 09.10.2007. u 07:30 GMT+1]
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja09.10.2007. u 07:45 - pre 200 meseci
S obzirom na to da se radi o malom opsegu, moguce je i resenje koje obezbedjuje da sigurno ne dobijes dvaput isti broj. Prvi put zamislis broj od 1 do 10 i zapamtis ga. Sledeci put trazis random broj od 1 do 9 i on ti predstavlja poziciju zeljenog broja u nizu slobodnih mesta.

Npr. prvi put si zamislio broj 2. Sledeci put zamislis broj 3. Postavis brojac na 0. Onda krenes u neku petlju i kazes: pozicija 1 je slobodna, inkrementiras brojac, pozicija 2 je zauzeta, nastavis u novi ciklus, pozicija 3 je slobodna, inkrementiras brojac, pozicija 4 je slobodna, inkrementiras brojac. E sada je brojac isti kao i zamisljen broj, a ti si na poziciji 4. E to je broj koji si zamislio. Kasnije samo ima vise popunjenih brojeva, ali nikada nemas ponavljanje vec zamisljenog.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

laserjat
Vojvodina

Član broj: 43327
Poruke: 50
77.46.176.*



Profil

icon Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja09.10.2007. u 22:41 - pre 200 meseci
Sa ovim kodom ti ne ponavlja brojeve ;) ako si na to mislio

Code:

        for(i=0; i<n-1; i++) 
            if(a[i+1]==a[i]) {
                for(j=i+1;j<n-1;j++)
                    a[j]=a[j+1];
                n--;
                i--;
            }

 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja11.10.2007. u 07:23 - pre 200 meseci
Tebi u stvari treba slučajna permutacija brojeva 1-10. Evo jedne ideje (vidi attachment).

Algoritam počinje od jednog niza, i pri svakom sledećem pozivu proklazi kroz njega zamenjujući mesta trenutnom i slučajno izabranom elementu. Ideja se može dalje razraditi.
Ipak se ++uje.
Prikačeni fajlovi
 
Odgovor na temu

invazija
stormwind

Član broj: 159225
Poruke: 126
*.dialup.neobee.net.



Profil

icon Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja15.10.2007. u 15:27 - pre 200 meseci
hvala vam.. iskoristio sam
Code:

  for(i=0; i<n-1; i++) 
            if(a[i+1]==a[i]) {
                for(j=i+1;j<n-1;j++)
                    a[j]=a[j+1];
                n--;
                i--;
            }



@ Mali Misha, hvala ti na ideji ali jos ne razumem taj program :(((
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja15.10.2007. u 19:32 - pre 200 meseci
Citat:
invazija: ali jos ne razumem taj program

A da li razumeš pojam permutacije?
U startu imaš svih 10 brojeva i samo ih mešaš, mešaš.. na slučajan način.
Ipak se ++uje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja

[ Pregleda: 3627 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.