Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 4.647 pregleda

Najnovija ↓

[Zadatak] Generisanje slucajnih brojeva bez ponavljanja 08.10.2007. u 23:36 · pre 232 meseca
izmenjeno 2 puta, poslednji put X Files 09.10.2007. u 07:30
  1. X Files09.10.2007. u 07:30zapis iz teksta poruke
  2. X Files09.10.2007. u 07:28zapis iz teksta poruke
#1
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 ;)
Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja 09.10.2007. u 08:45 · pre 232 meseca #2
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.
Potpis
Pera električar 0637129710, BG, preporučujem.
Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja 09.10.2007. u 23:41 · pre 232 meseca #3
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--;
            }

Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja 11.10.2007. u 08:23 · pre 232 meseca #4
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.
Potpis
Ipak se ++uje.
Re: [Zadatak] Generisanje slucajnih brojeva bez ponavljanja 15.10.2007. u 16:27 · pre 232 meseca #5
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 :(((
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme