[ invazija @ 08.10.2007. 22:36 ] @
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]
[ vilyu @ 09.10.2007. 07:45 ] @
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.
[ laserjat @ 09.10.2007. 22:41 ] @
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--;
            }

[ Mali Misha @ 11.10.2007. 07:23 ] @
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.
[ invazija @ 15.10.2007. 15:27 ] @
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 :(((
[ Mali Misha @ 15.10.2007. 19:32 ] @
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.