#include #include int xp[1000]; void poruka(){ printf("Programiranje 1!\n"); } void uglovi(){ int a0,a1,b0,b1,c0,c1; printf("Sabira dva ugla.\n"); printf(" Unesite a0,a1,b0,b1 - redmo stepeni i minuti prvog i drugog ugla.\n"); scanf("%d %d %d %d",&a0,&a1,&b0,&b1); c1=a1+b1; c0=(a1+b1)/60; c1%=60; c0+=a0+b0; printf("Zbir je: %d stepeni i %d minuta\n",c0,c1); } void uslov(){ float x,y; printf(" Racuna y= x^2+2 za x>=0, inace y=-x^2+2\n"); printf(" Unesite realan broj x\n"); scanf("%f",&x); if(x>=0){ y=x*x+2; } else{ y=-x*x+2; } printf("Vrijednost je: %f \n",y); } void suma(){ int n,k; float x,s,p; printf("Priblizno racuna e^x-1 preko prvih n clanova odgovarajuceg reda\n"); printf(" Unesi n i x\n"); scanf("%d %f",&n,&x); s=0; p=1; for(k=1;k<=n;k++){ p*=x/k; s+=p; } printf("vrijednost je: %12.10f \n",s); } void grej(){ int n,k,i,j, sk; int a[1024][10]; printf(" Stampa n bitni Grejov kod duzine 2^n\n"); printf(" Unesi n\n"); scanf("%d",&n); a[0][0]=0; a[1][0]=1; sk=2; for(k=2;k<=n;k++){ for(i=0;i=0;j--){ printf("%d ",a[i][j]); } printf("\n"); } } void per_con(int k, int n){ int i,t,j; if(k-1==n){ // izlaz iz rekurzije tj. vec smo formirali permutaciju duzene n pa je stampamo for(i=0;i=0;i--){ // sada k pomjeramo na predposlednje mjesto, pa za jos jedno mjesto sve dok k ne dodje na pocetak t=xp[i+1]; xp[i+1]=xp[i]; xp[i]=t; per_con(k+1,n); // nakon svakog pomjeranja k za jedno mjesto dobijamo novu permutaciju koju zelimo da produzimo rekurzivno sa k+1 } /* kad smo usli u ovo else bila je formirana permutacija x[0]=a0,x[1]=a1,...,x[k-2]=a(k-2) brojeva 1,2,...,k-1 prvo smo dodali k na kraj i dobili permutaciju x[0]=a0,x[1]=a1,...,x[k-2]=a(k-2), x[k-1]=k zatim smo u prethodnoj for petlji pomjerali k za po jedno mjesto tako da na kraju for petlje domijamo permutaciju x[0]=k, x[1]=a0,x[2]=a1,...,x[k-1]=a(k-2) kad napustimo ovaj rekurzivni poziv moramo niz x vratiti na ulazno stanje tj da bude x[0]=a0,x[1]=a1,...,x[k-2]=a(k-2) zato u sledecoj for petlji pomjeramo x-ove za jedno mjeto napijed trenutne vrijednosti za x[k-1],x[k],x[k+1],... nisu bitne jer ce biti iznova popunavane */ for(j=0;j0); return 0; }