Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 3:10 pon, 14. 11. 2011 Naslov: |
|
|
Sto ti tocno nije jasno?
[tex]2^0 = 1[/tex],
[tex]2^1 = 2[/tex],
[tex]2^2 = 4[/tex].
Dakle, ispisuje potencije broja 2.
Takodjer, [tt]p *= 2[/tt] je isto sto i [tt]p = p * 2[/tt], sto je lijepo objasnjeno na predavanjima.
Sto ti tocno nije jasno?
[tex]2^0 = 1[/tex],
[tex]2^1 = 2[/tex],
[tex]2^2 = 4[/tex].
Dakle, ispisuje potencije broja 2.
Takodjer, p *= 2 je isto sto i p = p * 2, sto je lijepo objasnjeno na predavanjima.
_________________ 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] |
|
angelika Forumaš(ica)
Pridružen/a: 08. 02. 2011. (17:26:51) Postovi: (5F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 9:51 pon, 14. 11. 2011 Naslov: |
|
|
Bez obzira je l' pise 75.1250 ili 75.125, to je isti broj -- 75.125, dakle treba ga tako tretirati. Kao i uvijek, naglasavam: razlikujte broj i zapis broja.
Krace: "ignorirate" zadnju nulu.
Bez obzira je l' pise 75.1250 ili 75.125, to je isti broj -- 75.125, dakle treba ga tako tretirati. Kao i uvijek, naglasavam: razlikujte broj i zapis broja.
Krace: "ignorirate" zadnju nulu.
_________________ 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] |
|
angelika Forumaš(ica)
Pridružen/a: 08. 02. 2011. (17:26:51) Postovi: (5F)16
|
|
[Vrh] |
|
malalodacha Forumaš(ica)
Pridružen/a: 11. 10. 2011. (17:06:13) Postovi: (79)16
|
Postano: 19:13 pon, 14. 11. 2011 Naslov: |
|
|
int a=0,b=0,m,n,i=2,j=2;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m;m<n;m++)
{
for(i;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m)
printf("%d %d",a,b);
}
}
return 0;
}
može li mi netko objasniti što tu ne valja, radi se o zadatku s prijateljskim brojevima?? 4. zadatak je to, ja mislim
int a=0,b=0,m,n,i=2,j=2;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m;m<n;m++)
{
for(i;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m)
printf("%d %d",a,b);
}
}
return 0;
}
može li mi netko objasniti što tu ne valja, radi se o zadatku s prijateljskim brojevima?? 4. zadatak je to, ja mislim
|
|
[Vrh] |
|
logikaus Forumaš(ica)
Pridružen/a: 12. 10. 2011. (17:55:23) Postovi: (45)16
|
|
[Vrh] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
|
[Vrh] |
|
lost_soul Forumaš(ica)
Pridružen/a: 18. 10. 2009. (17:38:41) Postovi: (133)16
|
|
[Vrh] |
|
wrathchild Forumaš(ica)
Pridružen/a: 09. 07. 2010. (21:25:00) Postovi: (31)16
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 22:11 pon, 14. 11. 2011 Naslov: |
|
|
U ovom zadatku bi bilo isto, ali [tt]p++[/tt] i [tt]++p[/tt] se ne razlikuju samo kod printf-a, razlika je u tome sto [tt]p++[/tt] prvo vrati vrijednost od [tt]p[/tt] pa ga tek onda poveca za 1, a [tt]++p[/tt] prvo poveca p za 1 pa onda vrati vrijednost, npr.
[code:1]
int m, p = 0;
m= p++; //prvo se vrati vrijednost od p, sto je 0, pa je sada m = 0, a tada se poveca p za 1, pa j p = 1
m+= ++p //prvo se poveca vrijednost od p za 1, pa je sada p = 2, a onda se vrati vrijednost od p, tj. m se poveca za 2, pa je m = 2
printf("%d %d\n", m, ++p);
printf("%d\n", p++);
printf("%d\n", p);
[/code:1]
ispis:
[code:1]2 3
3
4
[/code:1]
U ovom zadatku bi bilo isto, ali p++ i ++p se ne razlikuju samo kod printf-a, razlika je u tome sto p++ prvo vrati vrijednost od p pa ga tek onda poveca za 1, a ++p prvo poveca p za 1 pa onda vrati vrijednost, npr.
Kod: |
int m, p = 0;
m= p++; //prvo se vrati vrijednost od p, sto je 0, pa je sada m = 0, a tada se poveca p za 1, pa j p = 1
m+= ++p //prvo se poveca vrijednost od p za 1, pa je sada p = 2, a onda se vrati vrijednost od p, tj. m se poveca za 2, pa je m = 2
printf("%d %d\n", m, ++p);
printf("%d\n", p++);
printf("%d\n", p);
|
ispis:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 23:16 pon, 14. 11. 2011 Naslov: |
|
|
[quote="logikaus"]smijemo li se na prakticnom koristiti s <math.h>, jer su meni osobno laksi zadaci, kada se rjesavaju s pow(x,y)?[/quote]
To ne znaci da su tocni. Treba dobro poznavati stvari, da bi znalo kada je ok na cjelim brojevima koristiti funkcije iz [tt]math.h[/tt].
Primjer: Koliko znamenaka ima broj [tex](100000)_3 = 3^5 = 243[/tex] kad ga prikazujemo u ternarnoj bazi (baza 3)?
[code:1]#include <stdio.h>
#include <math.h>
int main(void) {
int n = 3*3*3*3*3, cnt = 0;
printf("Broj znamenaka u bazi 3 od %d je:\n * %.20f, tj. %d (preko log)\n", n, 1+log(n)/log(3), (int)(1+log(n)/log(3)));
while (n > 0) {
n /= 3;
++cnt;
}
printf(" * %d (direktno)\n", cnt);
return 0;
}[/code:1]
Ispis (moze se razlikovati od racunala do racunala; ovo je kod mene doma):
[code:1]Broj znamenaka u bazi 3 od 243 je:
* 5.99999999999999911182, tj. 5 (preko log)
* 6 (direktno)[/code:1]
Ovdje bi se trebalo sjetiti upotrijebiti zaokruzivanje, umjesto standardnog castanja na [tt]int[/tt]. Negdje drugdje bi vjerojatno bio neki drugi stos.
Ako smatrate da te stvari dovoljno dobro znate ili vam se riskira, koristite [tt]math.h[/tt] kad nije zabranjen. Ososbno, preferiram cjelobrojne algoritme skoro uvijek kad se radi s cijelim brojevima (funkcije u [tt]math.h[/tt] [b]sve[/b] rade s realnim brojevima).
logikaus (napisa): | smijemo li se na prakticnom koristiti s <math.h>, jer su meni osobno laksi zadaci, kada se rjesavaju s pow(x,y)? |
To ne znaci da su tocni. Treba dobro poznavati stvari, da bi znalo kada je ok na cjelim brojevima koristiti funkcije iz math.h.
Primjer: Koliko znamenaka ima broj [tex](100000)_3 = 3^5 = 243[/tex] kad ga prikazujemo u ternarnoj bazi (baza 3)?
Kod: | #include <stdio.h>
#include <math.h>
int main(void) {
int n = 3*3*3*3*3, cnt = 0;
printf("Broj znamenaka u bazi 3 od %d je:\n * %.20f, tj. %d (preko log)\n", n, 1+log(n)/log(3), (int)(1+log(n)/log(3)));
while (n > 0) {
n /= 3;
++cnt;
}
printf(" * %d (direktno)\n", cnt);
return 0;
} |
Ispis (moze se razlikovati od racunala do racunala; ovo je kod mene doma):
Kod: | Broj znamenaka u bazi 3 od 243 je:
* 5.99999999999999911182, tj. 5 (preko log)
* 6 (direktno) |
Ovdje bi se trebalo sjetiti upotrijebiti zaokruzivanje, umjesto standardnog castanja na int. Negdje drugdje bi vjerojatno bio neki drugi stos.
Ako smatrate da te stvari dovoljno dobro znate ili vam se riskira, koristite math.h kad nije zabranjen. Ososbno, preferiram cjelobrojne algoritme skoro uvijek kad se radi s cijelim brojevima (funkcije u math.h sve rade s realnim brojevima).
_________________ 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] |
|
spik2nick Forumaš(ica)
Pridružen/a: 28. 09. 2011. (12:41:01) Postovi: (D)16
|
Postano: 23:27 pon, 14. 11. 2011 Naslov: 11.zadatak |
|
|
Zadatak 11:
Napiˇsite program koji uˇcitava neparne m, n (ne treba provjeravati neparnost od m i n), te ispisuje “reˇsetkastu” matricu po
recima popunjenu brojevima 1, 2, . . . .
Matrica je M je “reˇsetkasta” ako za sve neparne parove indeksa (i, j) vrijedi da je Mi,j = 0.
Primjeri:
m = 3, n = 5
1 2 3 4 5
6 0 7 0 8
9 10 11 12 13
m = 3, n = 7
1 2 3 4 5 6 7
8 0 9 0 10 0 11
12 13 14 15 16 17 18
m = 5, n = 5
1 2 3 4 5
6 0 7 0 8
9 10 11 12 13
14 0 15 0 16
17 18 19 20 21
Imam samo jedno pitanje vezano uz ovaj zadatak... U zadatku piše ua neparne parove(i,j) da je Mi,j=0... a čini mi se da je u test primjerima za parne parove (i,j) Mi,j=0. Zanima me jel to graška u postavljanju zadatka ili sam ja krivo razumio zadatak?
Zadatak 11:
Napiˇsite program koji uˇcitava neparne m, n (ne treba provjeravati neparnost od m i n), te ispisuje “reˇsetkastu” matricu po
recima popunjenu brojevima 1, 2, . . . .
Matrica je M je “reˇsetkasta” ako za sve neparne parove indeksa (i, j) vrijedi da je Mi,j = 0.
Primjeri:
m = 3, n = 5
1 2 3 4 5
6 0 7 0 8
9 10 11 12 13
m = 3, n = 7
1 2 3 4 5 6 7
8 0 9 0 10 0 11
12 13 14 15 16 17 18
m = 5, n = 5
1 2 3 4 5
6 0 7 0 8
9 10 11 12 13
14 0 15 0 16
17 18 19 20 21
Imam samo jedno pitanje vezano uz ovaj zadatak... U zadatku piše ua neparne parove(i,j) da je Mi,j=0... a čini mi se da je u test primjerima za parne parove (i,j) Mi,j=0. Zanima me jel to graška u postavljanju zadatka ili sam ja krivo razumio zadatak?
_________________ Pokušaj je prvi korak prema neuspjehu!!
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 23:54 pon, 14. 11. 2011 Naslov: Re: 11.zadatak |
|
|
Bas sam testirao funkciju pow iz math.h i meni savrseno tocno izracunava sve cijelobrojne potencije < 100000000 za prirodne baze < 20.
Kod "realnih" baza u rasponu od 0.01 najveca razlika izmedju funkcije pow i iterativnog mnozenja je bila [tt]0.00048828125000000000[/tt] za potencije < 100000000000.
Evo koda koristenog za testiranje:
[code:1]#include <stdio.h>
#include <math.h>
#define MAX 100000000000.0
int main(void){
int j;
double i, pot, corr, max_err= 0.0;
printf("potencija | funkc. pow | tocno rj. | greska\n", i);
for (i= 2; i < 20; i+= 0.01){
corr= 1;
for (j= 1; corr < MAX; ++j){
corr*= i;
pot= pow(i, j);
if (pot - corr > max_err)max_err= pot - corr;
if (corr - pot > max_err)max_err= corr - pot;
printf("%9d | %15.4lf | %15.4lf | %12.10lf\n", j, pot, corr, pot - corr);
}
}
printf("najveca greska: %.20lf\n", max_err);
return 0;
}
[/code:1]
Tako da, barem na mojem racunalu, ovo radi prilicno dobro. A sad je na vama da li se hocete kockati ili ne. (Ja se necu :D )
[size=9][color=#999999]Added after 6 minutes:[/color][/size]
[quote="spik2nick"]
Imam samo jedno pitanje vezano uz ovaj zadatak... U zadatku piše ua neparne parove(i,j) da je Mi,j=0... a čini mi se da je u test primjerima za parne parove (i,j) Mi,j=0. Zanima me jel to graška u postavljanju zadatka ili sam ja krivo razumio zadatak?[/quote]
Indeksi pocinju od 0, a ne od 1.
Bas sam testirao funkciju pow iz math.h i meni savrseno tocno izracunava sve cijelobrojne potencije < 100000000 za prirodne baze < 20.
Kod "realnih" baza u rasponu od 0.01 najveca razlika izmedju funkcije pow i iterativnog mnozenja je bila 0.00048828125000000000 za potencije < 100000000000.
Evo koda koristenog za testiranje:
Kod: | #include <stdio.h>
#include <math.h>
#define MAX 100000000000.0
int main(void){
int j;
double i, pot, corr, max_err= 0.0;
printf("potencija | funkc. pow | tocno rj. | greska\n", i);
for (i= 2; i < 20; i+= 0.01){
corr= 1;
for (j= 1; corr < MAX; ++j){
corr*= i;
pot= pow(i, j);
if (pot - corr > max_err)max_err= pot - corr;
if (corr - pot > max_err)max_err= corr - pot;
printf("%9d | %15.4lf | %15.4lf | %12.10lf\n", j, pot, corr, pot - corr);
}
}
printf("najveca greska: %.20lf\n", max_err);
return 0;
}
|
Tako da, barem na mojem racunalu, ovo radi prilicno dobro. A sad je na vama da li se hocete kockati ili ne. (Ja se necu )
Added after 6 minutes:
spik2nick (napisa): |
Imam samo jedno pitanje vezano uz ovaj zadatak... U zadatku piše ua neparne parove(i,j) da je Mi,j=0... a čini mi se da je u test primjerima za parne parove (i,j) Mi,j=0. Zanima me jel to graška u postavljanju zadatka ili sam ja krivo razumio zadatak? |
Indeksi pocinju od 0, a ne od 1.
|
|
[Vrh] |
|
spik2nick Forumaš(ica)
Pridružen/a: 28. 09. 2011. (12:41:01) Postovi: (D)16
|
Postano: 0:07 uto, 15. 11. 2011 Naslov: Re: 11.zadatak |
|
|
[quote="malalodacha"]int a=0,b=0,m,n,i=2,j=2;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m;m<=n;m++)
{
for(i;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m)
printf("%d %d",a,b);
}
}
return 0;
}
može li mi netko objasniti što tu ne valja, radi se o zadatku s prijateljskim brojevima?? 4. zadatak je to, ja mislim[/quote]
Baš sam malo bolje pogledo zadatak. Prva greška ti je što su varijable i i j definirane gore kod inicijalizacije i kasniej ih povećaš u petljama a ne vratiš ih na početnu vrijednost. znaci for petlja ti se vrti od i do m i onda ti i zavrsi kao i=m i u sljedecem koraku kreces od i=m, a trebas ga vratit na i=1. (ne 2) u test primjeru je pokazano da se i jedinice računaju kao djeljitelji.
i druga greška je bila slična vrijednosti varijabli a i b isto moras vratit na a=0, b=0 nakon izvrsavanaj petlje svaki put.
i treća je bilo što piše u zadatku da jedan par treba ispisati jednom. a tebi nađe broj 220 pa ispiše 220 i 284 i nakon toga dođe do broja 284 pa onda ispiše 284 i 220. To sam rješio sa dodanim uvjetom na kraju da je a<=b.
evo kod pa ako još nest nije jasno moze pogledat:
[code:1]#include <stdio.h>
int main(void)
{
int a=0,b=0,m,n,i=1,j=1;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m=m;m<n;m++)
{
a=0;
b=0;
for(i=1;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j=1;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m && a<=b)
printf("%d %d",a,b);
}
}
return 0;
}
[/code:1]
[size=9][color=#999999]Added after 2 minutes:[/color][/size]
[quote="gflegar"]
Indeksi pocinju od 0, a ne od 1.[/quote]
Zaboravih... Hvala.
malalodacha (napisa): | int a=0,b=0,m,n,i=2,j=2;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m;m⇐n;m++)
{
for(i;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m)
printf("%d %d",a,b);
}
}
return 0;
}
može li mi netko objasniti što tu ne valja, radi se o zadatku s prijateljskim brojevima?? 4. zadatak je to, ja mislim |
Baš sam malo bolje pogledo zadatak. Prva greška ti je što su varijable i i j definirane gore kod inicijalizacije i kasniej ih povećaš u petljama a ne vratiš ih na početnu vrijednost. znaci for petlja ti se vrti od i do m i onda ti i zavrsi kao i=m i u sljedecem koraku kreces od i=m, a trebas ga vratit na i=1. (ne 2) u test primjeru je pokazano da se i jedinice računaju kao djeljitelji.
i druga greška je bila slična vrijednosti varijabli a i b isto moras vratit na a=0, b=0 nakon izvrsavanaj petlje svaki put.
i treća je bilo što piše u zadatku da jedan par treba ispisati jednom. a tebi nađe broj 220 pa ispiše 220 i 284 i nakon toga dođe do broja 284 pa onda ispiše 284 i 220. To sam rješio sa dodanim uvjetom na kraju da je a⇐b.
evo kod pa ako još nest nije jasno moze pogledat:
Kod: | #include <stdio.h>
int main(void)
{
int a=0,b=0,m,n,i=1,j=1;
printf("unesite 2 broja: ");
scanf("%d %d", &m,&n);
if(m<n)
{
for(m=m;m<n;m++)
{
a=0;
b=0;
for(i=1;i<m;i++)
{
if(m%i==0)
a=a+i;
}
for(j=1;j<a;j++)
{
if(a%j==0)
b=b+j;
}
if(b==m && a<=b)
printf("%d %d",a,b);
}
}
return 0;
}
|
Added after 2 minutes:
gflegar (napisa): |
Indeksi pocinju od 0, a ne od 1. |
Zaboravih... Hvala.
_________________ Pokušaj je prvi korak prema neuspjehu!!
|
|
[Vrh] |
|
malalodacha Forumaš(ica)
Pridružen/a: 11. 10. 2011. (17:06:13) Postovi: (79)16
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
|
[Vrh] |
|
spik2nick Forumaš(ica)
Pridružen/a: 28. 09. 2011. (12:41:01) Postovi: (D)16
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
|
[Vrh] |
|
Zenon Forumaš(ica)
Pridružen/a: 09. 09. 2011. (19:14:43) Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]
|
Postano: 3:15 uto, 15. 11. 2011 Naslov: 7. zadatak, praktični kolokvij |
|
|
[b]Zadatak[/b]:
Napišite program koji učitava prirodne brojeve n i d, te pomoću zvjezdica “crta” niz “praznih” kvadrata stranice duljine n,
n − d, . . . (svaki u svoj redak).
Znam da ima, pa bih htio da mi netko pokaže jednostavnije rješenje od moga:
[code:1]#include<stdio.h>
int main(void)
{
int n,b,i,pz=1,sred; // i je broj redka, pz za print zvjezdica, sred su redovi zimedu prvog i zadnjeg redka
scanf("%d %d",&n,&b); //ucitava n i b
while (n>0)
{
for (i=1;i<=n;i++) //broj redka
{
if(i==1 || i==n) //prvi i zadnji redak
{
while (pz<=n)
{
printf("*");
pz++;
}
printf("\n");
pz=1;
}
else //redci izmedu
{
for (sred=1;sred<=n;sred++)
{
if (sred==1 || sred==n) printf("*"); //prvi i zadnji znak
else printf(" "); //znakovi izmedu
}
printf("\n");
}
}
n-=b;
}
return 0;
}
[/code:1]
Hvala unaprijed!
Zadatak:
Napišite program koji učitava prirodne brojeve n i d, te pomoću zvjezdica “crta” niz “praznih” kvadrata stranice duljine n,
n − d, . . . (svaki u svoj redak).
Znam da ima, pa bih htio da mi netko pokaže jednostavnije rješenje od moga:
Kod: | #include<stdio.h>
int main(void)
{
int n,b,i,pz=1,sred; // i je broj redka, pz za print zvjezdica, sred su redovi zimedu prvog i zadnjeg redka
scanf("%d %d",&n,&b); //ucitava n i b
while (n>0)
{
for (i=1;i<=n;i++) //broj redka
{
if(i==1 || i==n) //prvi i zadnji redak
{
while (pz<=n)
{
printf("*");
pz++;
}
printf("\n");
pz=1;
}
else //redci izmedu
{
for (sred=1;sred<=n;sred++)
{
if (sred==1 || sred==n) printf("*"); //prvi i zadnji znak
else printf(" "); //znakovi izmedu
}
printf("\n");
}
}
n-=b;
}
return 0;
}
|
Hvala unaprijed!
Zadnja promjena: Zenon; 4:40 uto, 15. 11. 2011; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
|