| Prethodna tema :: Sljedeća tema   | 
	
	
	
		| Autor/ica | 
		Poruka | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 17:24 pet, 3. 10. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         U pravu je vsego
 fazon je bio samo u ovome    fprintf(dat1,"%s %s %d %s\n",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer); 
 
 
 
 hvala....(ne bi ja to nikad primjetio) 
					
					U pravu je vsego
 
fazon je bio samo u ovome    fprintf(dat1,"%s %s %d %s\n",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer); 
 
 
 
 
hvala....(ne bi ja to nikad primjetio)
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		Luuka Forumaš(ica)
  
  
  Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16 
Spol:   
Lokacija: Hakuna Matata 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 10:34 sub, 11. 10. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [code:1]#include <stdio.h>
 #include <stdlib.h>
 
 void unija (int *A,int *B,int na,int nb,int *C,int *k)
 {
 	int i,j,nc;
 	for(i=0;i<na;i++)
 		*(C+i)=*(A+i);
 	nc=na;
 	for (i=0;i<nb;i++)
 	{
 		for (j=0;j<nc && *(B+i)!=*(C+j);j++);
 			if(j==nc)
 				*(C+nc)=*(B+i);
 			nc++;
 	}
 	*k=nc;
 	
 }
 
 
 void main()
 {
 int i,j,na,nb,k,*A,*B,*C;
 printf("unesite duzine skupova A i B\n");
 scanf("%d%d",&na,&nb);
 A=(int*)malloc(na*sizeof(int));
 B=(int*)malloc(nb*sizeof(int));
 C=(int*)malloc(na*sizeof(int));
 printf("unesite elemente skupa A\n");
 for (i=0;i<na;i++)
 scanf("%d",A+i);
 printf("unesite elemente skupa B\n");
 for (j=0;j<nb;j++)
 scanf("%d",B+j);
 unija(A,B,na,nb,C,&k);
 realloc(C,k*sizeof(int));
 printf("unija skupova A i B je\n ");
 for (i=0;i<k;i++)
 printf("%d",*(C+i));
 printf("\n");
 free(A);
 free(B);
 free(C);
 }
 
 
 
 opet nece da radi,u cemu je fora.....u pitanju je unija 2 skupa[/code:1] 
  [size=9][color=#999999]Added after 22 minutes:[/color][/size]
   [code:1]#include <stdio.h>
 
 int *pomeri(int *niz,int n,int k)
 {
 	int i;
 	for(i=0;i<n;i++)
 		niz[i]=niz[(i+n-k)%n];
 	return niz;
 }
 main () {
 	int mat,m,n,i,j;
 	printf("unesite dimenzije matrice");
 	scanf("%d%d",&m,&n);
 	mat=calloc(m,sizeof(int));
 	for (i=0;i<m;i++)
 		mat[i]=calloc(m,sizeof(int));
 	for(i=0;i<m;i++){
 		pomeri(mat[i],n,i);
 	for(i=0;i<m;i++)
 		for(j=0;j<n;j++)
 			printf("%d",mat[i][j]);
 		printf("\n");
 }
 for (i=0;i<m;i++)
 free(mat[i]);
 free(mat);
 }
 
 
 uradio sam ovaj 1 zadatak iz ove teme al ni on ne funkcionira kako treba.....za rotaciju elemenata niza[/code:1] 
					
					 	  | Kod: | 	 		  #include <stdio.h>
 
#include <stdlib.h>
 
 
void unija (int *A,int *B,int na,int nb,int *C,int *k)
 
{
 
   int i,j,nc;
 
   for(i=0;i<na;i++)
 
      *(C+i)=*(A+i);
 
   nc=na;
 
   for (i=0;i<nb;i++)
 
   {
 
      for (j=0;j<nc && *(B+i)!=*(C+j);j++);
 
         if(j==nc)
 
            *(C+nc)=*(B+i);
 
         nc++;
 
   }
 
   *k=nc;
 
   
 
}
 
 
 
void main()
 
{
 
int i,j,na,nb,k,*A,*B,*C;
 
printf("unesite duzine skupova A i B\n");
 
scanf("%d%d",&na,&nb);
 
A=(int*)malloc(na*sizeof(int));
 
B=(int*)malloc(nb*sizeof(int));
 
C=(int*)malloc(na*sizeof(int));
 
printf("unesite elemente skupa A\n");
 
for (i=0;i<na;i++)
 
scanf("%d",A+i);
 
printf("unesite elemente skupa B\n");
 
for (j=0;j<nb;j++)
 
scanf("%d",B+j);
 
unija(A,B,na,nb,C,&k);
 
realloc(C,k*sizeof(int));
 
printf("unija skupova A i B je\n ");
 
for (i=0;i<k;i++)
 
printf("%d",*(C+i));
 
printf("\n");
 
free(A);
 
free(B);
 
free(C);
 
}
 
 
 
 
opet nece da radi,u cemu je fora.....u pitanju je unija 2 skupa | 	   
 
 
Added after 22 minutes:
 
 
  	  | Kod: | 	 		  #include <stdio.h>
 
 
int *pomeri(int *niz,int n,int k)
 
{
 
   int i;
 
   for(i=0;i<n;i++)
 
      niz[i]=niz[(i+n-k)%n];
 
   return niz;
 
}
 
main () {
 
   int mat,m,n,i,j;
 
   printf("unesite dimenzije matrice");
 
   scanf("%d%d",&m,&n);
 
   mat=calloc(m,sizeof(int));
 
   for (i=0;i<m;i++)
 
      mat[i]=calloc(m,sizeof(int));
 
   for(i=0;i<m;i++){
 
      pomeri(mat[i],n,i);
 
   for(i=0;i<m;i++)
 
      for(j=0;j<n;j++)
 
         printf("%d",mat[i][j]);
 
      printf("\n");
 
}
 
for (i=0;i<m;i++)
 
free(mat[i]);
 
free(mat);
 
}
 
 
 
uradio sam ovaj 1 zadatak iz ove teme al ni on ne funkcionira kako treba.....za rotaciju elemenata niza | 	  
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		Mad Wilson Forumaš(ica)
  
  
  Pridružen/a: 29. 05. 2006. (22:51:14) Postovi: (121)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 17:03 sub, 11. 10. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [code:1]#include<stdio.h>
 
 void pomjeri(int *pa,int k,int n)
 {
 	int i,x[100];
 	for(i=0;i<n;i++){
 		x[i]=pa[i];
 	}
 	for(i=0;i<n;i++){
 		pa[i]=x[(i+n+k)%n];
 	}
 }
 main(){
 	int i,j,k,n,a[100][100];
 	printf("unesite dimenziju kvadratne matrice:");
 	scanf("%d",&n);
 	printf("unesite elemente kvadratne matrice:\n");
 	for(i=0;i<n;i++){
 		for(j=0;j<n;j++){
 			scanf("%d",&a[i][j]);
 		}
 	}
 	printf("matrica a pre transformacije:\n");
 	for(i=0;i<n;i++){
 		for(j=0;j<n;j++){
 			printf("%d ",a[i][j]);
 		}
 		printf("\n");
 	}
 	for(i=0,k=0;i<n;i++,k++){
 		pomjeri(&a[i][0],k,n);
 	}
 	printf("matrica a posle transformacije:\n");
 	for(i=0;i<n;i++){
 		for(j=0;j<n;j++){
 			printf("%d ",a[i][j]);
 		}
 		printf("\n");
 	}
 }
 
 
 
 Evo naso sam neki primjer onog zadatka samo neznam zasto je ovako pomjeri(&a[i][0],k,n)  ,malo me buni to sto na izgled ce rotirati elemente po koloni ,zasto nije a[0][j] i j mijenjati a i drzati konstantnim.....ako je neko skonto nek pojasni...[/code:1] 
					
					 	  | Kod: | 	 		  #include<stdio.h>
 
 
void pomjeri(int *pa,int k,int n)
 
{
 
   int i,x[100];
 
   for(i=0;i<n;i++){
 
      x[i]=pa[i];
 
   }
 
   for(i=0;i<n;i++){
 
      pa[i]=x[(i+n+k)%n];
 
   }
 
}
 
main(){
 
   int i,j,k,n,a[100][100];
 
   printf("unesite dimenziju kvadratne matrice:");
 
   scanf("%d",&n);
 
   printf("unesite elemente kvadratne matrice:\n");
 
   for(i=0;i<n;i++){
 
      for(j=0;j<n;j++){
 
         scanf("%d",&a[i][j]);
 
      }
 
   }
 
   printf("matrica a pre transformacije:\n");
 
   for(i=0;i<n;i++){
 
      for(j=0;j<n;j++){
 
         printf("%d ",a[i][j]);
 
      }
 
      printf("\n");
 
   }
 
   for(i=0,k=0;i<n;i++,k++){
 
      pomjeri(&a[i][0],k,n);
 
   }
 
   printf("matrica a posle transformacije:\n");
 
   for(i=0;i<n;i++){
 
      for(j=0;j<n;j++){
 
         printf("%d ",a[i][j]);
 
      }
 
      printf("\n");
 
   }
 
}
 
 
 
 
Evo naso sam neki primjer onog zadatka samo neznam zasto je ovako pomjeri(&a[i][0],k,n)  ,malo me buni to sto na izgled ce rotirati elemente po koloni ,zasto nije a[0][j] i j mijenjati a i drzati konstantnim.....ako je neko skonto nek pojasni... | 	  
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		Mad Wilson Forumaš(ica)
  
  
  Pridružen/a: 29. 05. 2006. (22:51:14) Postovi: (121)16 
 
		 | 
		
			
				 Postano: 17:41 sub, 11. 10. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [b]a[/b] je matrica 2X2, tj. [b]pointer[/b] na polje [b]pointera[/b] na [b]int[/b]-ove
 
 [b]a[y][/b] je redak u matrici, tj. [b]pointer[/b] na [b]int[/b]-ove, tj. [b]polje[/b] [b]int[/b]-ova
 
 [b]a[y][x][/b] je element matrice, dakle zadnje uglate dereferenciraju onaj [b]pointer[/b] na [b]int[/b]-ove (tj. ono polje [b]int[/b]-ova), pa dobijemo [b]int[/b]
 
 [b]&a[y][x][/b] je adresa elementa matrice, kao sto je &a adresa od a
 
 [b]&a[y][0][/b] je adresa prvog elementa matrice u redu y, sto ce reci &a[y][0] je [b]pointer[/b]* na y-ti red u matrici, tj. to je y-to polje [b]int[/b]-ova.
 Tu uoci da je to [b][u]isto[/u][/b] sto i a[y], jer je [b]&a[0][/b] isto sto i [b]a[/b].
 
 
 Konacno [b]&a[i][0][/b] je i-ti red matrice.. i upravo to i zelis rotirati.
 
 _____________________
 
 *potencijali pointer... &a je adresa od a ... nije pointer 
					
					a je matrica 2X2, tj. pointer na polje pointera na int-ove
 
 
a[y] je redak u matrici, tj. pointer na int-ove, tj. polje int-ova
 
 
a[y][x] je element matrice, dakle zadnje uglate dereferenciraju onaj pointer na int-ove (tj. ono polje int-ova), pa dobijemo int
 
 
&a[y][x] je adresa elementa matrice, kao sto je &a adresa od a
 
 
&a[y][0] je adresa prvog elementa matrice u redu y, sto ce reci &a[y][0] je pointer* na y-ti red u matrici, tj. to je y-to polje int-ova.
 
Tu uoci da je to isto sto i a[y], jer je &a[0] isto sto i a.
 
 
 
Konacno &a[i][0] je i-ti red matrice.. i upravo to i zelis rotirati.
 
 
_____________________
 
 
*potencijali pointer... &a je adresa od a ... nije pointer
					
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 0:21 sri, 12. 11. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [code:1]/*Napisati funkciju na C-u koja se od celog broja, prenesenog kao parametar funkcije, 
 formira niz ciji su elementi cifre unetog broja. 
 U glavnom programu ucitati ceo broj, pozvati funkciju i formirani niz ciklicno pomeriti za jedno mesto ulevo. 
 stampati ceo broj i dobijeni vektor.
 */
 #include<stdio.h>
 
 void formniz (int br,int *pa,int *pn)
 {
 	int i=0,j,pom[100],n=0;
 	//printf("broj prosledjen funkciji:%d",br);
 	while(br>0){
 		pom[i]=br%10;
 		//printf("\n%d. u nizu je:%d",i,pom[i]);
 		i++;
 		n++;
 		br=br/10;
 	}
 	/* printf("\nniz pom u funkciji:\n");
 	for(i=0;i<n;i++){
 		printf("%d ",pom[i]);
 	} */
 	for(i=0,j=n-1;i<n;i++,j--){
 		pa[i]=pom[j];
 	}
 	/* printf("\nniz pa u funkciji:\n");
 	for(i=0;i<n;i++){
 		printf("%d ",pa[i]);
 	} */
 	
 	*pn=n;
 }
 
 main()
 {
 	int i,x[100],a[100],n,br,k;
 	printf("unesite zeljeni broj:");
 	scanf("%d",&br);
 	formniz(br,a,&n);
 	printf("\nniz a prosledjen iz funkcije:\n");	
 	for(i=0;i<n;i++){
 		printf("%d ",a[i]);
 	}
 	for(i=0,k=0;i<n;i++,k++){
 		x[k]=a[i];
 	}
 	//pomjeranje za jedno mjesto ulijevo
 	for(i=0;i<n;i++){
 		a[i]=x[(i+1)%n];
 	}
 	printf("\n\nniz pomjeren za jedno mjesto ulijevo:\n");
 	for(i=0;i<n;i++){
 		printf("%d ",a[i]);
 	}
 }
 
 
 
 
 Zanima me ovaj dio sto pise //pomjeranje za jedno mjesto ulijevo
 nikako mi se ne poklapaju rezultati koje odradi C i koje ja uradim na papiru cisto radi boljeg shvatanja. Npr.unesemo broj 123    niz je  1  2  3 , a kad ga pomjerimo za jedno mjesto u lijevo niz ce biti 2 3 1 sto pokazuje C, a na papiru glasi a[0]=x[1]  a[1]=x[2]  a[2]=x[0] po formuli a[i]=x[(i+1)%n] sto ukazuje na niz  3 1 2. Moze li mi neko ovo malo pojasniti.......Hvala[/code:1] 
					
					 	  | Kod: | 	 		  /*Napisati funkciju na C-u koja se od celog broja, prenesenog kao parametar funkcije, 
 
formira niz ciji su elementi cifre unetog broja. 
 
U glavnom programu ucitati ceo broj, pozvati funkciju i formirani niz ciklicno pomeriti za jedno mesto ulevo. 
 
stampati ceo broj i dobijeni vektor.
 
*/
 
#include<stdio.h>
 
 
void formniz (int br,int *pa,int *pn)
 
{
 
   int i=0,j,pom[100],n=0;
 
   //printf("broj prosledjen funkciji:%d",br);
 
   while(br>0){
 
      pom[i]=br%10;
 
      //printf("\n%d. u nizu je:%d",i,pom[i]);
 
      i++;
 
      n++;
 
      br=br/10;
 
   }
 
   /* printf("\nniz pom u funkciji:\n");
 
   for(i=0;i<n;i++){
 
      printf("%d ",pom[i]);
 
   } */
 
   for(i=0,j=n-1;i<n;i++,j--){
 
      pa[i]=pom[j];
 
   }
 
   /* printf("\nniz pa u funkciji:\n");
 
   for(i=0;i<n;i++){
 
      printf("%d ",pa[i]);
 
   } */
 
   
 
   *pn=n;
 
}
 
 
main()
 
{
 
   int i,x[100],a[100],n,br,k;
 
   printf("unesite zeljeni broj:");
 
   scanf("%d",&br);
 
   formniz(br,a,&n);
 
   printf("\nniz a prosledjen iz funkcije:\n");   
 
   for(i=0;i<n;i++){
 
      printf("%d ",a[i]);
 
   }
 
   for(i=0,k=0;i<n;i++,k++){
 
      x[k]=a[i];
 
   }
 
   //pomjeranje za jedno mjesto ulijevo
 
   for(i=0;i<n;i++){
 
      a[i]=x[(i+1)%n];
 
   }
 
   printf("\n\nniz pomjeren za jedno mjesto ulijevo:\n");
 
   for(i=0;i<n;i++){
 
      printf("%d ",a[i]);
 
   }
 
}
 
 
 
 
 
Zanima me ovaj dio sto pise //pomjeranje za jedno mjesto ulijevo
 
nikako mi se ne poklapaju rezultati koje odradi C i koje ja uradim na papiru cisto radi boljeg shvatanja. Npr.unesemo broj 123    niz je  1  2  3 , a kad ga pomjerimo za jedno mjesto u lijevo niz ce biti 2 3 1 sto pokazuje C, a na papiru glasi a[0]=x[1]  a[1]=x[2]  a[2]=x[0] po formuli a[i]=x[(i+1)%n] sto ukazuje na niz  3 1 2. Moze li mi neko ovo malo pojasniti.......Hvala | 	  
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		
			
				 Postano: 1:39 sri, 12. 11. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         Tvoj broj, zapisan po znamenkama, [b]nije[/b] [latex]a = (a_{n-1}a_{n-2}\dots{}a_0)[/latex], nego [latex]a = (a_0a_1\dots{}a_{n-2}a_{n-1})[/latex], pa je zato pomak u lijevo definiran sa
 [latex]a_i \mapsto a_{(i+1)\ \mathrm{mod}\ n}[/latex],
 odnosno, C-ovski,
 [tt]x[i] = a[(i+1) % n][/tt]. ;)
 
 Inace, ne znam koliko te detaljno ispituju oni koji te ispituju... ovo sto si napravio je kreiranje novog niza, cirkularno pomaknutog u odnosu na original. :? Stvarno cirkularno pomicanje niza bi bilo:
 
 [code:1]int t = a[0];
 for (i = 1; i < n; ++i) a[i-1] = a[i];
 a[n-1] = t;[/code:1]
 
 Slicno, i invertiranje niza (u funkciji) se lako radi bez pomocnog niza. :) Pogledaj u mojoj skripti (na stranicama kolegija Programiranje 1); ima tocno to objasnjeno. :)
 
 Nadalje:
 
 [code:1]for(i = 0, k = 0; i < n; i++, k++) {
   x[k] = a[i];
 }[/code:1]
 
 U svakom koraku petlje je [tt]i == k[/tt], dakle cemu dvije varijable? :grebgreb: Nije li bolje ovako:
 
 [code:1]for(i = 0; i < n; ++i) {
   x[i] = a[i];
 }[/code:1]
 
 Iako, kako sam vec naveo, to pridruzivanje ti uopce ne treba (zapravo ti ne treba niti pomocni niz). ;) 
					
					Tvoj broj, zapisan po znamenkama, nije  , nego  , pa je zato pomak u lijevo definiran sa
 
 ,
 
odnosno, C-ovski,
 
x[i] = a[(i+1) % n].  
 
 
Inace, ne znam koliko te detaljno ispituju oni koji te ispituju... ovo sto si napravio je kreiranje novog niza, cirkularno pomaknutog u odnosu na original.   Stvarno cirkularno pomicanje niza bi bilo:
 
 
 	  | Kod: | 	 		  int t = a[0];
 
for (i = 1; i < n; ++i) a[i-1] = a[i];
 
a[n-1] = t; | 	  
 
 
Slicno, i invertiranje niza (u funkciji) se lako radi bez pomocnog niza.   Pogledaj u mojoj skripti (na stranicama kolegija Programiranje 1); ima tocno to objasnjeno.  
 
 
Nadalje:
 
 
 	  | Kod: | 	 		  for(i = 0, k = 0; i < n; i++, k++) {
 
  x[k] = a[i];
 
} | 	  
 
 
U svakom koraku petlje je i == k, dakle cemu dvije varijable?   Nije li bolje ovako:
 
 
 	  | Kod: | 	 		  for(i = 0; i < n; ++i) {
 
  x[i] = a[i];
 
} | 	  
 
 
Iako, kako sam vec naveo, to pridruzivanje ti uopce ne treba (zapravo ti ne treba niti pomocni niz).  
					_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
 
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.   
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 19:48 sri, 12. 11. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [/code]
 
 /*Zadatak 4: Napisati program na C-u kojim se iz zadatog celogrojnog niza A={a1, a2, ..., an}
  izbacuju svi duplikati. Stampati niz S pre i posle transformisanja. 
 NAPOMENA: Niz A pamtiti u dinamickoj zoni memorije i pre i posle transformisanja on treba da 
 zauzima onoliki deo memorijskog prostora koliko je potrebno za pam?enje njegovih elemenata. 
 Elementima niza uvek pristupati koriscenjem pokazivaca.*/
 
 #include<stdio.h>
 #include<stdlib.h>
 void main()
 {
 	int i,j,N,k=0,*A,br;
 	printf("Unesite duzinu niza N: ");
 	scanf("%d",&N);
 	A=(int*)malloc(N*sizeof(int));
 	if(A==NULL)
 		printf("Nema mjesta u memoriji.");
 	else
 	{
 	printf("Unesite elemente niza A:\n");
 	for(i=0;i<N;i++)
 		scanf("%d",A+i);
 	printf("Niz A prije transformacije izgleda ovako:\n");
 	for(i=0;i<N;i++)
 		printf("%3d",*(A+i));
 	[b]for(i=0;i<N;i++)
 	{
 		br=0;
 		j=i+1;
 		//printf("j=%d ",j);          
 		//printf("br=%d ",br);
 		while(j<N && br<1) 
 		{
 			
 			if(*(A+i)==*(A+j))
 				br++;
 			j++;
 		//printf("j=%d ",j);
 		//printf("br=%d ",br);
 		}
 		
 		printf("i=%d ",i);
 		printf("j=%d ",j);
 		printf("br=%d ",br);
 		if(br==0)
 			*(A+(k++))=*(A+i);
 			//printf("k=%d ",k);[/b]
 	}
 	}
 	realloc(A,k*sizeof(int));
 	printf("\nPoslije transformacije niz izgleda ovako:\n");
 	for(i=0;i<k;i++)
 		printf("%3d",*(A+i));
 	printf("\n");
 	free(A);
 }
 
 
 
 
 
 Ovaj dio sto je bold-ovan nije mi jasno kako funkcionira...Ako moze da mi neko pojasni.....malo me buni ova while petlja 
					
					[/code]
 
 
/*Zadatak 4: Napisati program na C-u kojim se iz zadatog celogrojnog niza A={a1, a2, ..., an}
 
 izbacuju svi duplikati. Stampati niz S pre i posle transformisanja. 
 
NAPOMENA: Niz A pamtiti u dinamickoj zoni memorije i pre i posle transformisanja on treba da 
 
zauzima onoliki deo memorijskog prostora koliko je potrebno za pam?enje njegovih elemenata. 
 
Elementima niza uvek pristupati koriscenjem pokazivaca.*/
 
 
#include<stdio.h>
 
#include<stdlib.h>
 
void main()
 
{
 
	int i,j,N,k=0,*A,br;
 
	printf("Unesite duzinu niza N: ");
 
	scanf("%d",&N);
 
	A=(int*)malloc(N*sizeof(int));
 
	if(A==NULL)
 
		printf("Nema mjesta u memoriji.");
 
	else
 
	{
 
	printf("Unesite elemente niza A:\n");
 
	for(i=0;i<N;i++)
 
		scanf("%d",A+i);
 
	printf("Niz A prije transformacije izgleda ovako:\n");
 
	for(i=0;i<N;i++)
 
		printf("%3d",*(A+i));
 
	for(i=0;i<N;i++)
 
	{
 
		br=0;
 
		j=i+1;
 
		//printf("j=%d ",j);          
 
		//printf("br=%d ",br);
 
		while(j<N && br<1) 
 
		{
 
			
 
			if(*(A+i)==*(A+j))
 
				br++;
 
			j++;
 
		//printf("j=%d ",j);
 
		//printf("br=%d ",br);
 
		}
 
		
 
		printf("i=%d ",i);
 
		printf("j=%d ",j);
 
		printf("br=%d ",br);
 
		if(br==0)
 
			*(A+(k++))=*(A+i);
 
			//printf("k=%d ",k);
 
	}
 
	}
 
	realloc(A,k*sizeof(int));
 
	printf("\nPoslije transformacije niz izgleda ovako:\n");
 
	for(i=0;i<k;i++)
 
		printf("%3d",*(A+i));
 
	printf("\n");
 
	free(A);
 
}
 
 
 
 
 
 
Ovaj dio sto je bold-ovan nije mi jasno kako funkcionira...Ako moze da mi neko pojasni.....malo me buni ova while petlja
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		
			
				 Postano: 21:17 sri, 12. 11. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         Program trci po svim elementima (varijabla [tt]i[/tt]), te za svaki gleda da li se iza lokacije [tt]i[/tt] (varijabla [tt]j[/tt]) nalazi njegova kopija (broj kopija broji se brojacem [tt]br[/tt]). Ako se nalazi, preskace ga, u protivnom ga zadrzava (to je onaj [tt]if (br == 0)[/tt]). 8)
 
 Usput, zasto koristis (zbunjujucu) notaciju [tt]*(A+i)[/tt] kad je to skroz isto kao i [tt]A[i][/tt]? :-k 
					
					Program trci po svim elementima (varijabla i), te za svaki gleda da li se iza lokacije i (varijabla j) nalazi njegova kopija (broj kopija broji se brojacem br). Ako se nalazi, preskace ga, u protivnom ga zadrzava (to je onaj if (br == 0)).  
 
 
Usput, zasto koristis (zbunjujucu) notaciju *(A+i) kad je to skroz isto kao i A[i]?  
					_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
 
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.   
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		nemanja065 Forumaš(ica)
  
 
  Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16 
 
		 | 
		
			
				 Postano: 23:57 sri, 12. 11. 2008    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [code:1]
 
 or(i=0;i<N;i++)
 {
 br=0;
 j=i+1;
 //printf("j=%d ",j);
 //printf("br=%d ",br);
 while(j<N && br<1)
 {
 
 if(*(A+i)==*(A+j))
 br++;
 else
 j++;
 //printf("j=%d ",j);
 //printf("br=%d ",br);
 }
 
 printf("i=%d ",i);
 printf("j=%d ",j);
 printf("br=%d ",br);
 if(br==0)
 *(A+(k++))=*(A+i);
 //printf("k=%d ",k); 
 
 
 
 
 
 
 
 
 sad je malo jasnije kako sam dodao else u if petlji....pa mora se pristupati elementima pomocu pokazivaca  tako je naglaseno u zadatku......hvala tebi[/code:1] 
					
					 	  | Kod: | 	 		  
 
 
or(i=0;i<N;i++)
 
{
 
br=0;
 
j=i+1;
 
//printf("j=%d ",j);
 
//printf("br=%d ",br);
 
while(j<N && br<1)
 
{
 
 
if(*(A+i)==*(A+j))
 
br++;
 
else
 
j++;
 
//printf("j=%d ",j);
 
//printf("br=%d ",br);
 
}
 
 
printf("i=%d ",i);
 
printf("j=%d ",j);
 
printf("br=%d ",br);
 
if(br==0)
 
*(A+(k++))=*(A+i);
 
//printf("k=%d ",k); 
 
 
 
 
 
 
 
 
 
sad je malo jasnije kako sam dodao else u if petlji....pa mora se pristupati elementima pomocu pokazivaca  tako je naglaseno u zadatku......hvala tebi | 	  
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		 |