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] |
|
|