| Prethodna tema :: Sljedeća tema   | 
	
	
	
		| Autor/ica | 
		Poruka | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 15:49 ned, 13. 12. 2009    Naslov: zadatak iz skripte | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         Riječ je o zadatku 10.2, koji učitava cijele brojeve a, b, c te ispisuje brojeve x,y te GCD(x,y), pri čemu je 
 x=min GCD(p,q) , p,q E {a,b,c}
 y=max GCD(p,q), p,q E {a,b,c}
 
 u skripti su dana 2 rješenja od čega je jedno ovo:
 [code:1]#include <stdio.h>
 #include <stdlib.h>
 
 int gcd(int x, int y) {
     if(x<0) x=-x;
     if(y<0) y=-y;
     if(x<y) {
             int t=x;
             x=y;
             y=t;
             }
     while(y) {
              int t=x%y;
              x=y;
              y=t;
              }
     return x;
 }
 
 int main() {
     int a, b, c, p, x, y;
     scanf("%d", &a);
     scanf("%d", &b);
     scanf("%d", &c);
     x = y = gcd(a,b);
     p = gcd(a,c);
     if (p < x) x = p;
     if (p > y) y = p;
 printf("x=%d, y=%d, gcd(%d,%d)=%d", x, y, x, y, gcd(x,y));
 system("pause");
 return 0;
 }[/code:1]
 
 ali taj program kada unesem redom brojeve 20, 32, 64 ispisuje 
 x=4 y=4 gcd(4,4)=4
 
 a za 64, 32, 20 ispisuje
 x=4 y=32 gcd(4,32)=4
 
 drugo dano rješenje radi dobro! zašto je to tako? tj.meni od početka nije jasno zašto ne gledamo gcd(b,c)?
 ono što želim pitati,kako da modificiram zadatak da dobro radi? 
					
					Riječ je o zadatku 10.2, koji učitava cijele brojeve a, b, c te ispisuje brojeve x,y te GCD(x,y), pri čemu je 
 
x=min GCD(p,q) , p,q E {a,b,c}
 
y=max GCD(p,q), p,q E {a,b,c}
 
 
u skripti su dana 2 rješenja od čega je jedno ovo:
 
 	  | Kod: | 	 		  #include <stdio.h>
 
#include <stdlib.h>
 
 
int gcd(int x, int y) {
 
    if(x<0) x=-x;
 
    if(y<0) y=-y;
 
    if(x<y) {
 
            int t=x;
 
            x=y;
 
            y=t;
 
            }
 
    while(y) {
 
             int t=x%y;
 
             x=y;
 
             y=t;
 
             }
 
    return x;
 
}
 
 
int main() {
 
    int a, b, c, p, x, y;
 
    scanf("%d", &a);
 
    scanf("%d", &b);
 
    scanf("%d", &c);
 
    x = y = gcd(a,b);
 
    p = gcd(a,c);
 
    if (p < x) x = p;
 
    if (p > y) y = p;
 
printf("x=%d, y=%d, gcd(%d,%d)=%d", x, y, x, y, gcd(x,y));
 
system("pause");
 
return 0;
 
} | 	  
 
 
ali taj program kada unesem redom brojeve 20, 32, 64 ispisuje 
 
x=4 y=4 gcd(4,4)=4
 
 
a za 64, 32, 20 ispisuje
 
x=4 y=32 gcd(4,32)=4
 
 
drugo dano rješenje radi dobro! zašto je to tako? tj.meni od početka nije jasno zašto ne gledamo gcd(b,c)?
 
ono što želim pitati,kako da modificiram zadatak da dobro radi?
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		
			
				 Postano: 0:56 pon, 14. 12. 2009    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         Pogledao sam vjezbe na siteu kolegija. Str. 87:
 [code:1]...
 x = y = gcd(a, b);
 p = gcd(a, c);
 if (p < x) x = p;
 if (p > y) y = p;
 p = gcd(b, c);
 if (p < x) x = p;
 if (p > y) y = p;
 printf("x = %d, y = %d, gcd(%d, %d) = %d\n",
    x, y, x, y, gcd(x, y));
 ...[/code:1]
 Mozes li preciznije napisati gdje se nalazi ovaj kod koji si ti napisala? 
					
					Pogledao sam vjezbe na siteu kolegija. Str. 87:
 
 	  | Kod: | 	 		  ...
 
x = y = gcd(a, b);
 
p = gcd(a, c);
 
if (p < x) x = p;
 
if (p > y) y = p;
 
p = gcd(b, c);
 
if (p < x) x = p;
 
if (p > y) y = p;
 
printf("x = %d, y = %d, gcd(%d, %d) = %d\n",
 
   x, y, x, y, gcd(x, y));
 
... | 	  
 
Mozes li preciznije napisati gdje se nalazi ovaj kod koji si ti napisala?
					_________________ 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] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 18:55 uto, 22. 12. 2009    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         riječ je o zadatku 11.4 u kojem se ispisuje koliko se puta pojavila pojedina znamenka(0-9):
 
 [code:1] #include <stdio.h>
 #include <stdlib.h>
 
 int main() {
     int i=0, x, zn[10]={0};
     while(1) {
     scanf("%d", &x);
     if(x==0) break;
     while(x) {
              zn[x%10]++;
              x/=10;
              }
              }
     for(i=0; i<10; i++)
     printf("%d: %d\n", i, zn[i]);
 system("pause");
 return 0;
 }[/code:1]
 
 zašto je na početku potrebno napisati zn[10]={0}, tj.napisati 1.element tog niza? znam da bez tog ne radi dobro,ali ne kužim zašto. 
					
					riječ je o zadatku 11.4 u kojem se ispisuje koliko se puta pojavila pojedina znamenka(0-9):
 
 
 	  | Kod: | 	 		   #include <stdio.h>
 
#include <stdlib.h>
 
 
int main() {
 
    int i=0, x, zn[10]={0};
 
    while(1) {
 
    scanf("%d", &x);
 
    if(x==0) break;
 
    while(x) {
 
             zn[x%10]++;
 
             x/=10;
 
             }
 
             }
 
    for(i=0; i<10; i++)
 
    printf("%d: %d\n", i, zn[i]);
 
system("pause");
 
return 0;
 
} | 	  
 
 
zašto je na početku potrebno napisati zn[10]={0}, tj.napisati 1.element tog niza? znam da bez tog ne radi dobro,ali ne kužim zašto.
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		Luuka Forumaš(ica)
  
  
  Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16 
Spol:   
Lokacija: Hakuna Matata 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 14:31 pon, 28. 12. 2009    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         evo još jedan zadatak,neće mi radit dobro.. riječ je ozadatku 11.14:
 Napisite dio programa koji ucitava realni broj x,
 te za zadani niz a duljine 2*n ispisuje vrijednost p1(x) · p2(x) gdje je
 p1(x) = a0 + a2*x + a4*x2 + · · · + a2n−2*xn−1
 p2(x) = a1 + a3*x + a5*x2 + · · · + a2n−1*xn−1 
 ->ovo s n-ovima su indeksi:
 
 [code:1]#include <stdio.h>
 #include <stdlib.h>
 
 int horner(double* a, int n, double x) {
     int i;
     double p1=0, p2=0, h;
     for(i=2*n-2; i>=0; i-=2) p1=p1*x+a[i];
     for(i=2*n-1; i>0; i-=2) p2=2+p2*x+a[i];
     h=p1*p2;
     return h;
 }
 
 int main() {
     int n, i;
     double x;
     double a[1024];
     scanf("%d", &n);
     for(i=2*n-1; i>=0; i--) scanf("%lg", &a[i]);
     scanf("%lg", &x);
     printf("%lg", horner(a, n, x));
     system("pause");
 }
 [/code:1]
 
 npr.za n=2, i koeficijente 1, 1, 2, 2 i x=1 mi ispiše nešto s e.. 
					
					evo još jedan zadatak,neće mi radit dobro.. riječ je ozadatku 11.14:
 
Napisite dio programa koji ucitava realni broj x,
 
te za zadani niz a duljine 2*n ispisuje vrijednost p1(x) · p2(x) gdje je
 
p1(x) = a0 + a2*x + a4*x2 + · · · + a2n−2*xn−1
 
p2(x) = a1 + a3*x + a5*x2 + · · · + a2n−1*xn−1 
 
→ovo s n-ovima su indeksi:
 
 
 	  | Kod: | 	 		  #include <stdio.h>
 
#include <stdlib.h>
 
 
int horner(double* a, int n, double x) {
 
    int i;
 
    double p1=0, p2=0, h;
 
    for(i=2*n-2; i>=0; i-=2) p1=p1*x+a[i];
 
    for(i=2*n-1; i>0; i-=2) p2=2+p2*x+a[i];
 
    h=p1*p2;
 
    return h;
 
}
 
 
int main() {
 
    int n, i;
 
    double x;
 
    double a[1024];
 
    scanf("%d", &n);
 
    for(i=2*n-1; i>=0; i--) scanf("%lg", &a[i]);
 
    scanf("%lg", &x);
 
    printf("%lg", horner(a, n, x));
 
    system("pause");
 
}
 
 | 	  
 
 
npr.za n=2, i koeficijente 1, 1, 2, 2 i x=1 mi ispiše nešto s e..
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		vsego Site Admin
  
  
  Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 15:09 pon, 28. 12. 2009    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         1.jer smo tako radili na vježbama(kod hornera),pa sam se navikla..  :D 
 2.to je slučajno,krivo sam tipkala
 
 promjenila sam oboje,no i dalje mi za n=2, a={1,1,2,2} i x=1 ispisuje nešto s e, a treba ispisati 9..
 
  [Warning] converting to `int' from `double' 
 to mi ispisuje kada kompajliram,tek sam sada skužila. u funkciji horner. što to znači? no,ipak mi radi program,bez obzira na to,tj.izračuna nešto!
 hm,shvatila sam što je to,i promjenila sam int horner u double horner, i sada je u redu.. 
					
					1.jer smo tako radili na vježbama(kod hornera),pa sam se navikla..    
 
2.to je slučajno,krivo sam tipkala
 
 
promjenila sam oboje,no i dalje mi za n=2, a={1,1,2,2} i x=1 ispisuje nešto s e, a treba ispisati 9..
 
 
 [Warning] converting to `int' from `double' 
 
to mi ispisuje kada kompajliram,tek sam sada skužila. u funkciji horner. što to znači? no,ipak mi radi program,bez obzira na to,tj.izračuna nešto!
 
hm,shvatila sam što je to,i promjenila sam int horner u double horner, i sada je u redu..
					
 
  
					
					
					
  Zadnja promjena: .anchy.; 15:23 pon, 28. 12. 2009; ukupno mijenjano 1 put.
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		Luuka Forumaš(ica)
  
  
  Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16 
Spol:   
Lokacija: Hakuna Matata 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		meda Forumaš(ica)
  
 
  Pridružen/a: 09. 01. 2010. (09:29:23) Postovi: (A0)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 13:15 sri, 13. 1. 2010    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         [quote="meda"]jel može neko pomoć sa 11.19 zadatkom iz skripte? ovaj glavni dio programa?[/quote]
 
 [code:1]#include <stdio.h>
 
 double suma ( double* a, int n, int i){
 	int j;
 	double s;
 	
 	s = a[ n*(i+1) - 1 ];
 	for(j = n-2; j >= 0; --j) s = s * a[n*n] + a[j+n*i];
 	
 	return s;
 }
 
 int main(){
 	int n;
 	double a[1024];
 	int i;
 	double produkt;
 	
 	printf("n = "); scanf("%d", &n);
 	for(i = 0; i <= n*n; ++i){
 		printf("a[%d] = ", i);
 		scanf("%lg", &a[i]);
 	}
 	
 	produkt = 1;
 	for(i = 0; i < n; ++i) produkt *= suma(a, n, i);
 	
 	printf("Rezultat: %g\n", produkt);
 	
 	return 0;
 }[/code:1]
 
 to je rješenje prof.doka 
					
					 	  | meda (napisa): | 	 		  | jel može neko pomoć sa 11.19 zadatkom iz skripte? ovaj glavni dio programa? | 	  
 
 
 	  | Kod: | 	 		  #include <stdio.h>
 
 
double suma ( double* a, int n, int i){
 
   int j;
 
   double s;
 
   
 
   s = a[ n*(i+1) - 1 ];
 
   for(j = n-2; j >= 0; --j) s = s * a[n*n] + a[j+n*i];
 
   
 
   return s;
 
}
 
 
int main(){
 
   int n;
 
   double a[1024];
 
   int i;
 
   double produkt;
 
   
 
   printf("n = "); scanf("%d", &n);
 
   for(i = 0; i <= n*n; ++i){
 
      printf("a[%d] = ", i);
 
      scanf("%lg", &a[i]);
 
   }
 
   
 
   produkt = 1;
 
   for(i = 0; i < n; ++i) produkt *= suma(a, n, i);
 
   
 
   printf("Rezultat: %g\n", produkt);
 
   
 
   return 0;
 
} | 	  
 
 
to je rješenje prof.doka
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		meda Forumaš(ica)
  
 
  Pridružen/a: 09. 01. 2010. (09:29:23) Postovi: (A0)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		
			
				 Postano: 16:11 sri, 13. 1. 2010    Naslov:  | 
				            | 
			 
			
				
  | 
			 
			
				| 
                                         u zadatku 11.18,znam što mi je krivo no neznam zašto još jednom moram b pomnožit s a[m],tj.x-om. u nazivniku znam zašto,jer ispred sume imamo izlučen x.
 ovo je krivo rješenje,samo se treba u f-iji brojnik na kraju b pomnožit s a[m] da bi bilo točno,pa ako mi netko može objasnit zašto je ovo krivo..
 
 [code:1]
 #include <stdio.h>
 #include <stdlib.h>
 
 double brojnik(double* a, int m) {
        int i;
        double b;
        b=a[m-1];
        for(i=m-2; i>=0; i--) b=b*a[m]+a[i];
        printf("%g\n", b*a[m]);
        return b*a[m];
        }
 
 double nazivnik(double* a,int m,int n) {
        int i;
        double naz;
        naz=a[n+m];
        for(i=n-2; i>=0; i--) naz=naz*a[m]+a[i+m+1];
        printf("%g\n", naz*a[m]);
        return naz*a[m];
        }
 
 int main() {
     int m,n,i;
     double a[101];
     scanf("%d", &m);
     scanf("%d", &n);
     for(i=0; i<m+n+1; i++) scanf("%lg", &a[i]);
     printf("%g", brojnik(a, m)/nazivnik(a,m,n));
     system("pause");
     return 0;
 }[/code:1] 
					
					u zadatku 11.18,znam što mi je krivo no neznam zašto još jednom moram b pomnožit s a[m],tj.x-om. u nazivniku znam zašto,jer ispred sume imamo izlučen x.
 
ovo je krivo rješenje,samo se treba u f-iji brojnik na kraju b pomnožit s a[m] da bi bilo točno,pa ako mi netko može objasnit zašto je ovo krivo..
 
 
 	  | Kod: | 	 		  
 
#include <stdio.h>
 
#include <stdlib.h>
 
 
double brojnik(double* a, int m) {
 
       int i;
 
       double b;
 
       b=a[m-1];
 
       for(i=m-2; i>=0; i--) b=b*a[m]+a[i];
 
       printf("%g\n", b*a[m]);
 
       return b*a[m];
 
       }
 
 
double nazivnik(double* a,int m,int n) {
 
       int i;
 
       double naz;
 
       naz=a[n+m];
 
       for(i=n-2; i>=0; i--) naz=naz*a[m]+a[i+m+1];
 
       printf("%g\n", naz*a[m]);
 
       return naz*a[m];
 
       }
 
 
int main() {
 
    int m,n,i;
 
    double a[101];
 
    scanf("%d", &m);
 
    scanf("%d", &n);
 
    for(i=0; i<m+n+1; i++) scanf("%lg", &a[i]);
 
    printf("%g", brojnik(a, m)/nazivnik(a,m,n));
 
    system("pause");
 
    return 0;
 
} | 	  
					
 
  
					
					
					
				 | 
			 
		  | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		meda Forumaš(ica)
  
 
  Pridružen/a: 09. 01. 2010. (09:29:23) Postovi: (A0)16 
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		.anchy. Forumaš(ica)
  
 
  Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16 
Lokacija: Zgb 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		 |