Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
matematičarka Forumaš(ica)
Pridružen/a: 01. 10. 2011. (18:19:07) Postovi: (38)16
Lokacija: Planet Zemlja
|
Postano: 23:45 čet, 10. 11. 2011 Naslov: |
|
|
[quote="vekiqqq"]3.ZADATAK IZ 3.ZADACE:
#include<stdio.h>
#include<stdlib.h>
int main()
{
double x,y,z,f;
scanf("%lg %lg %lg",&x,&y,&z);
if(y!=0)f=abs(((x*x*x)/(y*y*y))+(z*z*z*z)-19);
printf("%g",f);
return 0;
}
zašto mi u zadaci ne priznaje zadatak?..ne mogu nikako naci kvaku...[/quote] Što kaže taj zadatak?
vekiqqq (napisa): | 3.ZADATAK IZ 3.ZADACE:
#include<stdio.h>
#include<stdlib.h>
int main()
{
double x,y,z,f;
scanf("%lg %lg %lg",&x,&y,&z);
if(y!=0)f=abs(((x*x*x)/(y*y*y))+(z*z*z*z)-19);
printf("%g",f);
return 0;
}
zašto mi u zadaci ne priznaje zadatak?..ne mogu nikako naci kvaku... | Što kaže taj zadatak?
|
|
[Vrh] |
|
vekiqqq Forumaš(ica)
Pridružen/a: 14. 10. 2010. (19:36:26) Postovi: (29)16
Spol:
Lokacija: Zagreb
|
|
[Vrh] |
|
mdoko Forumaš(ica)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol:
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 23:57 čet, 10. 11. 2011 Naslov: |
|
|
[quote="vekiqqq"]Napišite program koji učitava tri realna broja x, y ≠ 0 i z, te ispisuje vrijednost izraza
f=absolutno od { (x^3)/(y^3) + z^4 - 19 }
Rezultat obavezno ispišite koristeći format %g!....ovako glasi zadatak,
[/quote]
[code:1]#include<stdio.h>
#include<stdlib.h>
int main()
{
double x,y,z,f;
scanf("%lg %lg %lg",&x,&y,&z);
if(y!=0)f=abs(((x*x*x)/(y*y*y))+(z*z*z*z)-19);
printf("%g",f);
return 0;
}[/code:1]
Problem je u tome što se koristi funkcija [tt]int abs(int);[/tt] deklarirana u [tt]stdlib.h[/tt] koja (kao što se vidi iz deklaracije) služi za računanje vrijednosti cijelih brojeva. Funkcija za računanje apsolutnih vrijednosti doubleova je [tt]double fabs(double);[/tt], koja je deklarirana u [tt]math.h[/tt].
P.S. Kaže se a[b]p[/b]solutno, a ne absolutno :wink:
vekiqqq (napisa): | Napišite program koji učitava tri realna broja x, y ≠ 0 i z, te ispisuje vrijednost izraza
f=absolutno od { (x^3)/(y^3) + z^4 - 19 }
Rezultat obavezno ispišite koristeći format %g!....ovako glasi zadatak,
|
Kod: | #include<stdio.h>
#include<stdlib.h>
int main()
{
double x,y,z,f;
scanf("%lg %lg %lg",&x,&y,&z);
if(y!=0)f=abs(((x*x*x)/(y*y*y))+(z*z*z*z)-19);
printf("%g",f);
return 0;
} |
Problem je u tome što se koristi funkcija int abs(int); deklarirana u stdlib.h koja (kao što se vidi iz deklaracije) služi za računanje vrijednosti cijelih brojeva. Funkcija za računanje apsolutnih vrijednosti doubleova je double fabs(double);, koja je deklarirana u math.h.
P.S. Kaže se apsolutno, a ne absolutno
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
vekiqqq Forumaš(ica)
Pridružen/a: 14. 10. 2010. (19:36:26) Postovi: (29)16
Spol:
Lokacija: Zagreb
|
|
[Vrh] |
|
dodoria Forumaš(ica)
Pridružen/a: 04. 10. 2011. (13:31:15) Postovi: (E)16
|
Postano: 13:23 ned, 13. 11. 2011 Naslov: |
|
|
Može pomoć? U zadatku se traži upis 9 brojeva i ispis onih koji su djeljivi s prethodnikom. To sam čak i uspio, zanemarit ćemo u koliko vremena, ali me sad muči uvjet da se ne smije dijeliti s nulom. Ne znam gdje ga upisati i što tražiti kao naredbu nakon tog uvjeta if(b==0)....
Ovako sam ja to nekako napravio BEZ tog uvjeta:
#include<stdio.h>
int main()
{
int a, i, b;
scanf("%d", &b);
for(i=1; i<8; i++)
{
scanf("%d", &a);
if(a%b==0) printf("%d ", a);
b=a;
}
return 0;
}
Može pomoć? U zadatku se traži upis 9 brojeva i ispis onih koji su djeljivi s prethodnikom. To sam čak i uspio, zanemarit ćemo u koliko vremena, ali me sad muči uvjet da se ne smije dijeliti s nulom. Ne znam gdje ga upisati i što tražiti kao naredbu nakon tog uvjeta if(b==0)....
Ovako sam ja to nekako napravio BEZ tog uvjeta:
#include<stdio.h>
int main()
{
int a, i, b;
scanf("%d", &b);
for(i=1; i<8; i++)
{
scanf("%d", &a);
if(a%b==0) printf("%d ", a);
b=a;
}
return 0;
}
_________________ Dokaži.
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 13:31 ned, 13. 11. 2011 Naslov: |
|
|
Samo ga dodas tamo kod if-a, prije nego sto modas.
[code:1]
#include<stdio.h>
int main()
{
int a, i, b;
scanf("%d", &b);
for(i=1; i<8; i++)
{
scanf("%d", &a);
if(b != 0 && a % b == 0) printf("%d ", a);
b=a;
}
return 0;
}
[/code:1]
Samo ga dodas tamo kod if-a, prije nego sto modas.
Kod: |
#include<stdio.h>
int main()
{
int a, i, b;
scanf("%d", &b);
for(i=1; i<8; i++)
{
scanf("%d", &a);
if(b != 0 && a % b == 0) printf("%d ", a);
b=a;
}
return 0;
}
|
|
|
[Vrh] |
|
PermutiranoPrase Forumaš(ica)
Pridružen/a: 10. 09. 2011. (16:08:19) Postovi: (F4)16
Spol:
|
Postano: 19:56 ned, 13. 11. 2011 Naslov: |
|
|
Imam problemček, i u mojoj verziji i u kopi-pejstanoj dodorijinoj (s if-uvjetom), za koju sam mislila da će mi raditi... Isti je zadatak, samo treba upisati 8 brojeva, ne 9.
Sve radi dobro, jedino ne želi ispisati posljednji broj, npr. za 1 2 4 8 16 32 64 128 ispisuje sve osim 1 (što je u redu) i 128 (što nije u redu).
Moja verzija:
#include <stdio.h>
int main (void)
{
int x[7];
int i;
for (i = 0; i < 7; i++) scanf("%d ", &x[i]);
for (i=1; i < 7; i++)
if ((x[i-1] != 0) && ((x[i] % x[i-1]) == 0)) printf("%d ", x[i]);
return(0);
}
I sporedno, kako mogu postaviti da mi uvlake budu prisutne u postovima? Moram preko latexa ili?
Imam problemček, i u mojoj verziji i u kopi-pejstanoj dodorijinoj (s if-uvjetom), za koju sam mislila da će mi raditi... Isti je zadatak, samo treba upisati 8 brojeva, ne 9.
Sve radi dobro, jedino ne želi ispisati posljednji broj, npr. za 1 2 4 8 16 32 64 128 ispisuje sve osim 1 (što je u redu) i 128 (što nije u redu).
Moja verzija:
#include <stdio.h>
int main (void)
{
int x[7];
int i;
for (i = 0; i < 7; i++) scanf("%d ", &x[i]);
for (i=1; i < 7; i++)
if ((x[i-1] != 0) && ((x[i] % x[i-1]) == 0)) printf("%d ", x[i]);
return(0);
}
I sporedno, kako mogu postaviti da mi uvlake budu prisutne u postovima? Moram preko latexa ili?
Zadnja promjena: PermutiranoPrase; 20:04 ned, 13. 11. 2011; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
piccola Forumaš(ica)
Pridružen/a: 30. 11. 2009. (15:39:50) Postovi: (D7)16
|
|
[Vrh] |
|
PermutiranoPrase Forumaš(ica)
Pridružen/a: 10. 09. 2011. (16:08:19) Postovi: (F4)16
Spol:
|
|
[Vrh] |
|
piccola Forumaš(ica)
Pridružen/a: 30. 11. 2009. (15:39:50) Postovi: (D7)16
|
Postano: 20:19 ned, 13. 11. 2011 Naslov: |
|
|
ali treba paziti na dijeljenje s nulom, znači ne smije se nikad dijeliti s nulom...
[size=9][color=#999999]Added after 8 minutes:[/color][/size]
[code:1]#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, n, a = 100000;
for (i = 1; i <= 8; i++)
{
scanf("%d", &n);
if (n>0)
if ((a != 0) && (n % a == 0))
printf (" %d", n);
a = n;
}
system ("pause");
}[/code:1]
[code:1]
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, n, a = 100000;
for (i = 1; i <= 8; i++)
{
scanf("%d", &n);
if (n == 0)
printf(" %d", n);
if ((n != 0) && (a != 0) && (n % a == 0))
printf (" %d", n);
a = n;
}
system ("pause");
}
[/code:1]
meni javlja grešku i za 1.program kad nulu ne ispisuje, i za 2. kad ispisuje...ne znam u čemu je problem
ali treba paziti na dijeljenje s nulom, znači ne smije se nikad dijeliti s nulom...
Added after 8 minutes:
Kod: | #include<stdio.h>
#include<stdlib.h>
int main()
{
int i, n, a = 100000;
for (i = 1; i <= 8; i++)
{
scanf("%d", &n);
if (n>0)
if ((a != 0) && (n % a == 0))
printf (" %d", n);
a = n;
}
system ("pause");
} |
Kod: |
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, n, a = 100000;
for (i = 1; i <= 8; i++)
{
scanf("%d", &n);
if (n == 0)
printf(" %d", n);
if ((n != 0) && (a != 0) && (n % a == 0))
printf (" %d", n);
a = n;
}
system ("pause");
}
|
meni javlja grešku i za 1.program kad nulu ne ispisuje, i za 2. kad ispisuje...ne znam u čemu je problem
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 22:43 ned, 13. 11. 2011 Naslov: |
|
|
Nista nije djeljivo s nulom, a najmanje nula! U matematici jos mozete reci da je "nesto kroz nula jednako beskonacno" (s time da beskonacno nije realni broj, nego time opisujete da "nesto kroz x" neograniceno raste kad se x priblizava nuli), no "nula kroz nula" ne mozete niti tako definirati.
(Disclaimer: "nesto" i "x" smatram pozitivnima, da ne pilam s predznacima)
Ako ste na Analizi radili limese, pogledajte [tex]\lim_{x\to\infty}\frac{x}{x}[/tex] i [tex]\lim_{x\to\infty}\frac{2x}{x}[/tex]. Oboje je "nula kroz nula", a daju poprilicno razlicite rezultate. Ako jos niste obradili limese, vjerujte mi na rijec: "nula kroz nula" ne mozete nikako (korektno) definirati.
@piccola: Tebi prvi program preskace sve negativne brojeve i nulu, a drugi ispisuje i kad ima "nula kroz nula". Oboje je krivo. Jedino sto treba preskociti je dijeljenje s nulom (dakle, [tt]a == 0[/tt]), ali ne i samu nulu kad se dijeli s necim normalnim ([tt]n == 0[/tt]). Krace, u [tt]if[/tt] ti treba samo [tt]a[/tt], bez [tt]n[/tt].
Dodatno, ona inicijalizacija [tt]a[/tt] je igranje s vatrom. Tko ti garantira da prvi ucitani broj nece biti djeljiv s bilo kojim brojem koji izaberes (u tvom slucaju 100000)? U aplikaciji za zadace se to vjerojatno nece dogoditi, ali na kolokviju ce ti asistent primijetiti da to ne valja i odu bodovi. Nije li lakse samo iza [tt]scanf()[/tt] dodati[code:1]if (i == 1) {
a = n;
continue;
}[/code:1]? U konacnici, to je ono sto zelis: "za prvi broj ne provjeravaj dijeljenje s prethodnim (jer taj ne postoji)".
Ono sto je jos lakse je dodati [tt]scanf("%d", &a);[/tt] ispred petlje i smanjiti broj koraka petlje za jedan.
Nista nije djeljivo s nulom, a najmanje nula! U matematici jos mozete reci da je "nesto kroz nula jednako beskonacno" (s time da beskonacno nije realni broj, nego time opisujete da "nesto kroz x" neograniceno raste kad se x priblizava nuli), no "nula kroz nula" ne mozete niti tako definirati.
(Disclaimer: "nesto" i "x" smatram pozitivnima, da ne pilam s predznacima)
Ako ste na Analizi radili limese, pogledajte [tex]\lim_{x\to\infty}\frac{x}{x}[/tex] i [tex]\lim_{x\to\infty}\frac{2x}{x}[/tex]. Oboje je "nula kroz nula", a daju poprilicno razlicite rezultate. Ako jos niste obradili limese, vjerujte mi na rijec: "nula kroz nula" ne mozete nikako (korektno) definirati.
@piccola: Tebi prvi program preskace sve negativne brojeve i nulu, a drugi ispisuje i kad ima "nula kroz nula". Oboje je krivo. Jedino sto treba preskociti je dijeljenje s nulom (dakle, a == 0), ali ne i samu nulu kad se dijeli s necim normalnim (n == 0). Krace, u if ti treba samo a, bez n.
Dodatno, ona inicijalizacija a je igranje s vatrom. Tko ti garantira da prvi ucitani broj nece biti djeljiv s bilo kojim brojem koji izaberes (u tvom slucaju 100000)? U aplikaciji za zadace se to vjerojatno nece dogoditi, ali na kolokviju ce ti asistent primijetiti da to ne valja i odu bodovi. Nije li lakse samo iza scanf() dodati Kod: | if (i == 1) {
a = n;
continue;
} | ? U konacnici, to je ono sto zelis: "za prvi broj ne provjeravaj dijeljenje s prethodnim (jer taj ne postoji)".
Ono sto je jos lakse je dodati scanf("%d", &a); ispred petlje i smanjiti broj koraka petlje za jedan.
_________________ 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] |
|
piccola Forumaš(ica)
Pridružen/a: 30. 11. 2009. (15:39:50) Postovi: (D7)16
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (355F)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:19 pon, 14. 11. 2011 Naslov: |
|
|
[quote="gflegar"][quote="vsego"]Ono sto je jos lakse je dodati [tt]scanf("%d", &a);[/tt] ispred petlje i smanjiti broj koraka petlje za jedan.[/quote]
Ili inicijalizirati a na nulu :wink:[/quote]
U ovom partikularnom slucaju da, no bolje je nauciti opceniti princip: ako nesto neces da se desi u prvom koraku, ili izvadi iz petlje ili zapakiraj u uvjet koji ovisi o brojacu. Ovako, treba izmisljati crnu magiju za svaki primjer posebno (jer inicijalizacija ne ide uvijek na nulu).
Tipican primjer je trazenje maximuma medju pozitivnim i medju svim realnim brojevima. Samo prvi se moze sloziti inicijalizacijom (koja je, zapravo, ne jako prirodna), a oba se trivijalno rijese stosom "prvog proglasi za maximum".
gflegar (napisa): | vsego (napisa): | Ono sto je jos lakse je dodati scanf("%d", &a); ispred petlje i smanjiti broj koraka petlje za jedan. |
Ili inicijalizirati a na nulu |
U ovom partikularnom slucaju da, no bolje je nauciti opceniti princip: ako nesto neces da se desi u prvom koraku, ili izvadi iz petlje ili zapakiraj u uvjet koji ovisi o brojacu. Ovako, treba izmisljati crnu magiju za svaki primjer posebno (jer inicijalizacija ne ide uvijek na nulu).
Tipican primjer je trazenje maximuma medju pozitivnim i medju svim realnim brojevima. Samo prvi se moze sloziti inicijalizacijom (koja je, zapravo, ne jako prirodna), a oba se trivijalno rijese stosom "prvog proglasi za maximum".
_________________ 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] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
Postano: 18:36 pon, 14. 11. 2011 Naslov: |
|
|
Zadatak 4:
Napišite program koji učitava 9 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!
rješenje, koje znam da nije točno, je u privitku.
ne znam trebam li cijeli program mijenjati, ili dodati nešto, ali ako je neki od brojeva negativan, umnožak mi neće biti negativan, jer množi apsolutne vrijednosti. ne znam na koji način da riješim točno.
hvala :)
Zadatak 4:
Napišite program koji učitava 9 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!
rješenje, koje znam da nije točno, je u privitku.
ne znam trebam li cijeli program mijenjati, ili dodati nešto, ali ako je neki od brojeva negativan, umnožak mi neće biti negativan, jer množi apsolutne vrijednosti. ne znam na koji način da riješim točno.
hvala
Description: |
|
Download |
Filename: |
4.zadaca.c |
Filesize: |
314 Bytes |
Downloaded: |
118 Time(s) |
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 19:00 pon, 14. 11. 2011 Naslov: |
|
|
Moj prijedlog je da ne promijenis [tt]x[/tt] kada racunas apsolutnu vrijednost nego rezultat spremas u pomocnu varijablu, takodjer umjesto samo [tt]min[/tt] i [tt]max[/tt] imaj jos 2 varijable pa u [tt]min[/tt] i [tt]max[/tt] spremaj pravu vrijednost broja a u npr. [tt]amin[/tt] i [tt]amax[/tt] apsolutnu vrijdnost od [tt]min[/tt] i [tt]max[/tt].
[spoiler]
[code:1]#include<stdio.h>
int main(){
double x, min, max, amin, amax, tmp;
int i;
scanf("%lf", &x);
tmp= (x < 0 ? -x: x);
min= x;
max= x;
amin= tmp;
amax= tmp;
for (i= 1; i < 9; ++i){
scanf("%lf", &x);
tmp= (x < 0 ? -x: x);
if (tmp < amin){
amin= tmp;
min= x;
}
if (tmp > amax){
amax= tmp;
max= x;
}
}
printf("%g\n", min * max);
}
[/code:1]
[/spoiler]
Moj prijedlog je da ne promijenis x kada racunas apsolutnu vrijednost nego rezultat spremas u pomocnu varijablu, takodjer umjesto samo min i max imaj jos 2 varijable pa u min i max spremaj pravu vrijednost broja a u npr. amin i amax apsolutnu vrijdnost od min i max.
Spoiler [hidden; click to show]: |
Kod: | #include<stdio.h>
int main(){
double x, min, max, amin, amax, tmp;
int i;
scanf("%lf", &x);
tmp= (x < 0 ? -x: x);
min= x;
max= x;
amin= tmp;
amax= tmp;
for (i= 1; i < 9; ++i){
scanf("%lf", &x);
tmp= (x < 0 ? -x: x);
if (tmp < amin){
amin= tmp;
min= x;
}
if (tmp > amax){
amax= tmp;
max= x;
}
}
printf("%g\n", min * max);
}
|
|
Zadnja promjena: gflegar; 19:22 pon, 14. 11. 2011; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
Postano: 19:21 pon, 14. 11. 2011 Naslov: |
|
|
mislim da sam shvatila što hoćeš reći, i pokušala sam to napraviti, ali izbacuje mi nebulozne rezultate. imaš li strpljenja pogledati jer ne znam što radim krivo?
mislim da sam shvatila što hoćeš reći, i pokušala sam to napraviti, ali izbacuje mi nebulozne rezultate. imaš li strpljenja pogledati jer ne znam što radim krivo?
Description: |
|
Download |
Filename: |
4.zadaca.c |
Filesize: |
397 Bytes |
Downloaded: |
114 Time(s) |
Zadnja promjena: boksi; 19:22 pon, 14. 11. 2011; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
PermutiranoPrase Forumaš(ica)
Pridružen/a: 10. 09. 2011. (16:08:19) Postovi: (F4)16
Spol:
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
|
[Vrh] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
|
[Vrh] |
|
|