Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Phoenix Forumaš(ica)
Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
|
[Vrh] |
|
PermutiranoPrase Forumaš(ica)
Pridružen/a: 10. 09. 2011. (16:08:19) Postovi: (F4)16
Spol:
|
Postano: 0:45 pet, 18. 11. 2011 Naslov: |
|
|
Hvala! Da, to ima smisla. :D
Ok, onaj redak koda (koji je postojao prije edita) je trebao biti (a-a2)%a1!=0... Da provjeri hoće li to dijeljenje biti bez ostatka jer ako ima ostatka, alfa ne valja.
Zapravo, malo bolje gledam kod, mislim da fale neke stvari jer prilično sam sigurna da sam prije petlje stavila računati alfu... Mislim da sam dodala krivi privitak ili sam krenula u preinake koda i nisam ih dovršila prije spremanja, a i uvjet za do-while je tipfeler... Jest, vidim neki zalutali točka-zarez, tu je prije bila naredba neka... (mislim da je to znak da odem spavati, očito mi je dio mozga zaspao, možda i odumro...:thinking2: )
Idem doradit ovo...
Edit: evo sad radi. Ok, više ne na forum u kasne sate pilati ljude. :roll:
Hvala! Da, to ima smisla.
Ok, onaj redak koda (koji je postojao prije edita) je trebao biti (a-a2)%a1!=0... Da provjeri hoće li to dijeljenje biti bez ostatka jer ako ima ostatka, alfa ne valja.
Zapravo, malo bolje gledam kod, mislim da fale neke stvari jer prilično sam sigurna da sam prije petlje stavila računati alfu... Mislim da sam dodala krivi privitak ili sam krenula u preinake koda i nisam ih dovršila prije spremanja, a i uvjet za do-while je tipfeler... Jest, vidim neki zalutali točka-zarez, tu je prije bila naredba neka... (mislim da je to znak da odem spavati, očito mi je dio mozga zaspao, možda i odumro... )
Idem doradit ovo...
Edit: evo sad radi. Ok, više ne na forum u kasne sate pilati ljude.
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 0:57 pet, 18. 11. 2011 Naslov: |
|
|
Pitanje asistentima/profesorima u vezi 17. zadatka (bar mislim, onaj koji se diskutirao malo prije)
Ovaj kod:
[code:1]
#include <stdio.h>
int main()
//Vecina printf-ova su neke moje zvrljarije koje nazivam "debagiranje"
{
double x,g ;
unsigned int cijelia, ostalo;
scanf("%lg", &x);
printf("x je predstavljen kao: %.20lf\n", x);
cijelia=(int)x;
printf("cijeli dio x-a: %d\n", cijelia);
g=x-cijelia;
printf("g= %.20lf\n", g);
g=g*10000;
printf("g*10000 = %.20lf\n", g);
ostalo=g;
printf("decimalni dio x-a: %d\n", ostalo);
while((ostalo%10)==0) {
ostalo/=10;
}
printf("%d.%d", ostalo,cijelia);
return 0;
}
[/code:1]
Je evidentno "tocan" (ako zanemarimo da za npr [tt]12.0[/tt] upada u beskonacnu petlju) - ovaj zakljucak izvodim iz toga da za gore navedene slicne kodove nitko od asistenata/profesora nije komentirao "gresku" koja se nalazi u njemu.
Ali, za unos [tt]15.2[/tt] program ispisuje ovo:
[code:1]
x je predstavljen kao: 15.19999999999999928946
cijeli dio x-a: 15
g= 0.19999999999999928946
g*10000 = 1999.99999999999295141606
decimalni dio x-a: 1999
1999.15
[/code:1]
Dakle, do problema je doslo kod samog ucitavanja jer svi brojevi iz zadanog skupa nisu predstavljivi u racunalu.
Sad konacno da pitam to pitanje:
Da li se od studenata ne ocekuje da ovo znaju na prakticnom kolokviju, pa ce se ovakav program bodovati kao tocan ili treba napomenuti studentima da to sto u zadatku pise da se ucitava broj tipa double [b] ne znaci da ga oni moraju i ucitati kao double[/b]?
P.S. Hvala kolegici koja je pronasla ovaj primjer.
Pitanje asistentima/profesorima u vezi 17. zadatka (bar mislim, onaj koji se diskutirao malo prije)
Ovaj kod:
Kod: |
#include <stdio.h>
int main()
//Vecina printf-ova su neke moje zvrljarije koje nazivam "debagiranje"
{
double x,g ;
unsigned int cijelia, ostalo;
scanf("%lg", &x);
printf("x je predstavljen kao: %.20lf\n", x);
cijelia=(int)x;
printf("cijeli dio x-a: %d\n", cijelia);
g=x-cijelia;
printf("g= %.20lf\n", g);
g=g*10000;
printf("g*10000 = %.20lf\n", g);
ostalo=g;
printf("decimalni dio x-a: %d\n", ostalo);
while((ostalo%10)==0) {
ostalo/=10;
}
printf("%d.%d", ostalo,cijelia);
return 0;
}
|
Je evidentno "tocan" (ako zanemarimo da za npr 12.0 upada u beskonacnu petlju) - ovaj zakljucak izvodim iz toga da za gore navedene slicne kodove nitko od asistenata/profesora nije komentirao "gresku" koja se nalazi u njemu.
Ali, za unos 15.2 program ispisuje ovo:
Kod: |
x je predstavljen kao: 15.19999999999999928946
cijeli dio x-a: 15
g= 0.19999999999999928946
g*10000 = 1999.99999999999295141606
decimalni dio x-a: 1999
1999.15
|
Dakle, do problema je doslo kod samog ucitavanja jer svi brojevi iz zadanog skupa nisu predstavljivi u racunalu.
Sad konacno da pitam to pitanje:
Da li se od studenata ne ocekuje da ovo znaju na prakticnom kolokviju, pa ce se ovakav program bodovati kao tocan ili treba napomenuti studentima da to sto u zadatku pise da se ucitava broj tipa double ne znaci da ga oni moraju i ucitati kao double?
P.S. Hvala kolegici koja je pronasla ovaj primjer.
Zadnja promjena: gflegar; 1:19 pet, 18. 11. 2011; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
BlameGame Forumaš(ica)
Pridružen/a: 14. 09. 2011. (19:17:53) Postovi: (6C)16
|
|
[Vrh] |
|
spik2nick Forumaš(ica)
Pridružen/a: 28. 09. 2011. (12:41:01) Postovi: (D)16
|
Postano: 1:23 pet, 18. 11. 2011 Naslov: |
|
|
[quote="Phoenix"]@spik2nick: Hint za tebe: isprobaj ovaj input:
[code:1]5
1 2 4 5 4[/code:1][/quote]
Hvala. Previdio sam...
[code:1]#include<stdio.h>
int main(void)
{
int n, x=0, y=0, z=0, i, alfa=0,nije=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
z=y;
y=x;
scanf("%d",&x);
if(i==2)
if((x-y)%z==0)
alfa=(x-y)/z;
else
nije=1;
if(i>2 && (x-y)%z)
nije=1;
if(i>2 && (x-y)%z==0)
{
if (alfa!=(x-y)/z)
nije=1;
}
}
if(nije)
printf("Ucitani niz nije fibonaccijevski.");
else
printf("Ucitani niz brojeva je fibonaccijevski sa alfa = %d",alfa);
return 0;
}[/code:1]
[size=9][color=#999999]Added after 5 minutes:[/color][/size]
[quote="BlameGame"]@spik2nick i ostali za fibonaccijev niz koji si napisao, to sve radi, radi i moj nacin mada je pun nepotrebnih gluposti, ali ja nigdje da uguram ono n < 20, probala sam i u tvoj prije prve for petlje i svejedno mi radi :/
??[/quote]
koliko ja znam te uvijete je potpuno nepotrebno pisati zato što se ovdje radi o zadacima i test primjeri su točno određeni i ograničeni samim zadatkom. Tako da nitko kada bude provjeravao program neće upisivati neki n koji je veći od 20. Mislim da je i vsego napisao nesto slično na tu temu...
Phoenix (napisa): | @spik2nick: Hint za tebe: isprobaj ovaj input:
|
Hvala. Previdio sam...
Kod: | #include<stdio.h>
int main(void)
{
int n, x=0, y=0, z=0, i, alfa=0,nije=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
z=y;
y=x;
scanf("%d",&x);
if(i==2)
if((x-y)%z==0)
alfa=(x-y)/z;
else
nije=1;
if(i>2 && (x-y)%z)
nije=1;
if(i>2 && (x-y)%z==0)
{
if (alfa!=(x-y)/z)
nije=1;
}
}
if(nije)
printf("Ucitani niz nije fibonaccijevski.");
else
printf("Ucitani niz brojeva je fibonaccijevski sa alfa = %d",alfa);
return 0;
} |
Added after 5 minutes:
BlameGame (napisa): | @spik2nick i ostali za fibonaccijev niz koji si napisao, to sve radi, radi i moj nacin mada je pun nepotrebnih gluposti, ali ja nigdje da uguram ono n < 20, probala sam i u tvoj prije prve for petlje i svejedno mi radi
?? |
koliko ja znam te uvijete je potpuno nepotrebno pisati zato što se ovdje radi o zadacima i test primjeri su točno određeni i ograničeni samim zadatkom. Tako da nitko kada bude provjeravao program neće upisivati neki n koji je veći od 20. Mislim da je i vsego napisao nesto slično na tu temu...
_________________ 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: 1:30 pet, 18. 11. 2011 Naslov: |
|
|
[quote="spik2nick"]
koliko ja znam te uvijete je potpuno nepotrebno pisati zato što se ovdje radi o zadacima i test primjeri su točno određeni i ograničeni samim zadatkom. Tako da nitko kada bude provjeravao program neće upisivati neki n koji je veći od 20. Mislim da je i vsego napisao nesto slično na tu temu...[/quote]
Tocno tako, kako je i vsego rekao na jednom od predavanja, mi se tu igramo "skolice" i ako u zadatku glasi da se ucitavaju brojevi koji zadovoljavaju neki kriterij onda nije bitno sto ce se desiti s programom ako se upise nesto sto ne zadovoljava taj kriterij pa to nije potrebno provjeravati.
A za one koji misle da treba:
Ako se vodite time da treba ispitati svaki moguci unosi, tj provjeriti kriterij, sto vam onda garantira da ce unos uopce biti broj, jer tada trebate provjeravati i taj slucaj, pokusajte umjesto broja unjeti [tt]akjglakdgjag[/tt], garantiram vam da ce se program srusiti.
spik2nick (napisa): |
koliko ja znam te uvijete je potpuno nepotrebno pisati zato što se ovdje radi o zadacima i test primjeri su točno određeni i ograničeni samim zadatkom. Tako da nitko kada bude provjeravao program neće upisivati neki n koji je veći od 20. Mislim da je i vsego napisao nesto slično na tu temu... |
Tocno tako, kako je i vsego rekao na jednom od predavanja, mi se tu igramo "skolice" i ako u zadatku glasi da se ucitavaju brojevi koji zadovoljavaju neki kriterij onda nije bitno sto ce se desiti s programom ako se upise nesto sto ne zadovoljava taj kriterij pa to nije potrebno provjeravati.
A za one koji misle da treba:
Ako se vodite time da treba ispitati svaki moguci unosi, tj provjeriti kriterij, sto vam onda garantira da ce unos uopce biti broj, jer tada trebate provjeravati i taj slucaj, pokusajte umjesto broja unjeti akjglakdgjag, garantiram vam da ce se program srusiti.
|
|
[Vrh] |
|
mila majka Forumaš(ica)
Pridružen/a: 10. 11. 2011. (16:33:35) Postovi: (13)16
|
Postano: 3:18 pet, 18. 11. 2011 Naslov: |
|
|
Evo jednog laganog.
Napišite program koji učitava dva realna broja x i y, te ispisuje vrijednost izraza f = x*x*x*x + y*y, za x>= 2*y, odnosno f = x*x - y*y*y*y, za x < 2*y.
Moj kôd je ovaj:
#include <stdio.h>
int main (void) {
double x, y;
scanf ("%lg\n", &x);
scanf ("%lg\n", &y);
if (x>=2*y)
printf ("x*x*x*x+y*y=%g\n", x*x*x*x+y*y);
else
printf ("x*x-y*y*y*y=%g\n", x*x-y*y*y*y);
return 0;
Zbog čega, nakon što unesem prva dva broja, moram unesti još jedan da bi mi program radio? Nakon šta unesem treći broj u obzir mi uzima samo prva dva unešena i za njih izvršava operaciju, tako da je taj treći ionako beskoristan.
Evo jednog laganog.
Napišite program koji učitava dva realna broja x i y, te ispisuje vrijednost izraza f = x*x*x*x + y*y, za x>= 2*y, odnosno f = x*x - y*y*y*y, za x < 2*y.
Moj kôd je ovaj:
#include <stdio.h>
int main (void) {
double x, y;
scanf ("%lg\n", &x);
scanf ("%lg\n", &y);
if (x>=2*y)
printf ("x*x*x*x+y*y=%g\n", x*x*x*x+y*y);
else
printf ("x*x-y*y*y*y=%g\n", x*x-y*y*y*y);
return 0;
Zbog čega, nakon što unesem prva dva broja, moram unesti još jedan da bi mi program radio? Nakon šta unesem treći broj u obzir mi uzima samo prva dva unešena i za njih izvršava operaciju, tako da je taj treći ionako beskoristan.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 7:19 pet, 18. 11. 2011 Naslov: |
|
|
[quote="BlameGame"]On bi trebao pokupiti i taj zadnji broj (npr. 1234) i pribrojati ga?[/quote]
Ne, on je terminator. Isto kao zadaci tipa "unosi brojeve dok ne uneses nulu i onda pljuni produkt". Da u produkt gurnes i tu nulu, rezultat bi uvijek bio nula, ne? A sustinski je rijec o istom zadatku.
[quote="spik2nick"]Ali pošto nemamo test primjera nisam siguran jel radi točno ono što bi i trebao...[/quote]
Student matematike bi morao biti u stanju samostalno sloziti nekoliko Fibonaccijevskih i nekoliko ne-Fibonaccijevskih nizova i onda testirati program.
[quote="gflegar"]Je evidentno "tocan" (ako zanemarimo da za npr [tt]12.0[/tt] upada u beskonacnu petlju) - ovaj zakljucak izvodim iz toga da za gore navedene slicne kodove nitko od asistenata/profesora nije komentirao "gresku" koja se nalazi u njemu.[/quote]
Zakljucak je apsolutno pogresan. Pogledaj kolicinu postova dnevno. Ti stvarno mislis da mi po cijele dane analiziramo vase kodove ovdje? NHF, ali imamo i drugih obaveza. Osobno, uletim kad primijetim nesto sto bas zahtijeva moj odgovor, no kodove jednostavno ne stignem proucavati i pustam vas da si medjusobno pomazete.
[quote="gflegar"]Da li se od studenata ne ocekuje da ovo znaju na prakticnom kolokviju, pa ce se ovakav program bodovati kao tocan ili treba napomenuti studentima da to sto u zadatku pise da se ucitava broj tipa double [b] ne znaci da ga oni moraju i ucitati kao double[/b]?[/quote]
Asistenti su dobri (sjetite se ovoga kad popunjavate ankete O:)) i svi test-primjeri ce biti prikazivi. Nagradno pitanje (bez nagrada): koji su brojevi prikazivi?
[quote="mila majka"]Zbog čega, nakon što unesem prva dva broja, moram unesti još jedan da bi mi program radio? Nakon šta unesem treći broj u obzir mi uzima samo prva dva unešena i za njih izvršava operaciju, tako da je taj treći ionako beskoristan.[/quote]
Iznimno, pogledao sam kod; inace ne gledam ako nije zapakiran u code-blokove (dakle, obicni c/p, attachmenti i sl). Stvar je u new-lineu na kraju [tt]scanf()[/tt]-ova, koji su tu ocito ubaceni bez ikakve svrhe.
Usput, verifikator ti nece prihvatiti to rjesenje niti kad ga ispravis. Procitaj help; koristan je.
BlameGame (napisa): | On bi trebao pokupiti i taj zadnji broj (npr. 1234) i pribrojati ga? |
Ne, on je terminator. Isto kao zadaci tipa "unosi brojeve dok ne uneses nulu i onda pljuni produkt". Da u produkt gurnes i tu nulu, rezultat bi uvijek bio nula, ne? A sustinski je rijec o istom zadatku.
spik2nick (napisa): | Ali pošto nemamo test primjera nisam siguran jel radi točno ono što bi i trebao... |
Student matematike bi morao biti u stanju samostalno sloziti nekoliko Fibonaccijevskih i nekoliko ne-Fibonaccijevskih nizova i onda testirati program.
gflegar (napisa): | Je evidentno "tocan" (ako zanemarimo da za npr 12.0 upada u beskonacnu petlju) - ovaj zakljucak izvodim iz toga da za gore navedene slicne kodove nitko od asistenata/profesora nije komentirao "gresku" koja se nalazi u njemu. |
Zakljucak je apsolutno pogresan. Pogledaj kolicinu postova dnevno. Ti stvarno mislis da mi po cijele dane analiziramo vase kodove ovdje? NHF, ali imamo i drugih obaveza. Osobno, uletim kad primijetim nesto sto bas zahtijeva moj odgovor, no kodove jednostavno ne stignem proucavati i pustam vas da si medjusobno pomazete.
gflegar (napisa): | Da li se od studenata ne ocekuje da ovo znaju na prakticnom kolokviju, pa ce se ovakav program bodovati kao tocan ili treba napomenuti studentima da to sto u zadatku pise da se ucitava broj tipa double ne znaci da ga oni moraju i ucitati kao double? |
Asistenti su dobri (sjetite se ovoga kad popunjavate ankete ) i svi test-primjeri ce biti prikazivi. Nagradno pitanje (bez nagrada): koji su brojevi prikazivi?
mila majka (napisa): | Zbog čega, nakon što unesem prva dva broja, moram unesti još jedan da bi mi program radio? Nakon šta unesem treći broj u obzir mi uzima samo prva dva unešena i za njih izvršava operaciju, tako da je taj treći ionako beskoristan. |
Iznimno, pogledao sam kod; inace ne gledam ako nije zapakiran u code-blokove (dakle, obicni c/p, attachmenti i sl). Stvar je u new-lineu na kraju scanf()-ova, koji su tu ocito ubaceni bez ikakve svrhe.
Usput, verifikator ti nece prihvatiti to rjesenje niti kad ga ispravis. Procitaj help; koristan je.
_________________ 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] |
|
anamarie Forumaš(ica)
Pridružen/a: 07. 09. 2011. (10:59:19) Postovi: (87)16
Spol:
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 12:19 pet, 18. 11. 2011 Naslov: |
|
|
[quote="anamarie"][quote="boksi"]nisam sigurna je li moje ok, ispisuje dobro, ali meni djeluje malo prevarantski ;)[/quote]
ne ispisuje ti dobro,npr.za 134.34[b]5[/b] ispiše 34[b]4[/b].134[/quote]
Ne ispisuje dobro, ali ne u tom smislu u kojem ti mislis, nego cisto zato jer [tt]134.345[/tt] nije prikaziv u racunalu, pa se tu ustvari radi s [tt]134.34499999999999886313[/tt].
[size=9][color=#999999]Added after 13 minutes:[/color][/size]
[quote="vsego"]
Asistenti su dobri (sjetite se ovoga kad popunjavate ankete O:)) i svi test-primjeri ce biti prikazivi. Nagradno pitanje (bez nagrada): koji su brojevi prikazivi?[/quote]
Odgovor na nagradno pitanje, da dobim nepostojeccu nagradu: prikazivi su samo brojevi oblika [tex] \pm\frac{a}{2^{52}} \cdot 2^b [/tex] gdje je [tex] a \in \mathbb{N}, b \in \mathbb{Z}, a < 2^{53}, -1023 < b < 1024[/tex]. Vise - manje, nisam ukljucio denormalizirane brojeve, a moguce da sam ovak na brzinu zaboravio na jos nesto.
anamarie (napisa): | boksi (napisa): | nisam sigurna je li moje ok, ispisuje dobro, ali meni djeluje malo prevarantski |
ne ispisuje ti dobro,npr.za 134.345 ispiše 344.134 |
Ne ispisuje dobro, ali ne u tom smislu u kojem ti mislis, nego cisto zato jer 134.345 nije prikaziv u racunalu, pa se tu ustvari radi s 134.34499999999999886313.
Added after 13 minutes:
vsego (napisa): |
Asistenti su dobri (sjetite se ovoga kad popunjavate ankete ) i svi test-primjeri ce biti prikazivi. Nagradno pitanje (bez nagrada): koji su brojevi prikazivi? |
Odgovor na nagradno pitanje, da dobim nepostojeccu nagradu: prikazivi su samo brojevi oblika [tex] \pm\frac{a}{2^{52}} \cdot 2^b [/tex] gdje je [tex] a \in \mathbb{N}, b \in \mathbb{Z}, a < 2^{53}, -1023 < b < 1024[/tex]. Vise - manje, nisam ukljucio denormalizirane brojeve, a moguce da sam ovak na brzinu zaboravio na jos nesto.
|
|
[Vrh] |
|
mila majka Forumaš(ica)
Pridružen/a: 10. 11. 2011. (16:33:35) Postovi: (13)16
|
|
[Vrh] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
Postano: 14:54 pet, 18. 11. 2011 Naslov: |
|
|
Dok imamo neki broj, i onda ga moramo invertirat, naprimjer: imamo 102, i moramo dobiti 201. Tu radim sa onim algoritmom za invertiranje:
b=0;
while (n>0)
{ b=b*10+n%10;
n=n/10;
}
To mi okrene broj, ali sta ako mi broj koji okrecem zavrsava s 0, naprimjer: 120, u okretanju ce se izgubiti 0, i bit ce 21. A to mi u binarnim sustavima nije dobro, jer 021 je drugaciji broj od 21 u bazi 3 recimo.Kako da ne izgubim krajnje 0, odnosno pocetne kada okrenem broj?
Dok imamo neki broj, i onda ga moramo invertirat, naprimjer: imamo 102, i moramo dobiti 201. Tu radim sa onim algoritmom za invertiranje:
b=0;
while (n>0)
{ b=b*10+n%10;
n=n/10;
}
To mi okrene broj, ali sta ako mi broj koji okrecem zavrsava s 0, naprimjer: 120, u okretanju ce se izgubiti 0, i bit ce 21. A to mi u binarnim sustavima nije dobro, jer 021 je drugaciji broj od 21 u bazi 3 recimo.Kako da ne izgubim krajnje 0, odnosno pocetne kada okrenem broj?
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 15:00 pet, 18. 11. 2011 Naslov: |
|
|
@gflegar: Konkretne potencije ovise o izabranom realnom tipu i arhitekturi racunala, no da, ideja je skroz ok. Dakle, od nas mozete ocekivat (lupam napamet) 12.375 ([tex]12\frac{3}{8}[/tex]), ali ne i nesto poput 12.1.
@mila majka: Ako pricamo o tome da verifikator nesto nece prihvatiti, onda treba gledati njegov help. Hint: ukrasni ispisi.
@kiara: Ne razumijem sto te muci. Ako invertiras 120, dobijes 021 = 21. Nitko ne kaze da je invertiranje involutorna operacija (i.e., da je inverz inverza pocetni broj). Injektivnost ne postoji, upravo zbog zavrsne nule.
@gflegar: Konkretne potencije ovise o izabranom realnom tipu i arhitekturi racunala, no da, ideja je skroz ok. Dakle, od nas mozete ocekivat (lupam napamet) 12.375 ([tex]12\frac{3}{8}[/tex]), ali ne i nesto poput 12.1.
@mila majka: Ako pricamo o tome da verifikator nesto nece prihvatiti, onda treba gledati njegov help. Hint: ukrasni ispisi.
@kiara: Ne razumijem sto te muci. Ako invertiras 120, dobijes 021 = 21. Nitko ne kaze da je invertiranje involutorna operacija (i.e., da je inverz inverza pocetni broj). Injektivnost ne postoji, upravo zbog zavrsne nule.
_________________ 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] |
|
mdoko Forumaš(ica)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol:
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
Zenon Forumaš(ica)
Pridružen/a: 09. 09. 2011. (19:14:43) Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]
|
Postano: 16:26 pet, 18. 11. 2011 Naslov: |
|
|
[quote="gflegar"]
Meni ne dijeluje, stovise je bi ovo ovako rijesio, jer mi je logicno zakljuciti da za ulaz dobijemo broj [b]formatiran[/b] kao double, a mene su ucili (tu mislim na bivseg olimpijca koji danas radi u google-u) da je najbolje realan broj ucitati tako da ne gubimo na preciznosti.
[code:1]
#include <stdio.h>
int main(void){
int c, f;
scanf("%d.%d", &c, &f);
while(f % 10 == 0 && f != 0) f/= 10;
printf("%d.%d", f, c);
return 0;
}
[/code:1]
(Nisam ovo kompajlirao ali valjda radi :D )[/quote]
Priznaje li se ovo kao riješenje zadatka?
Zadatak očito zahtjeva da zamijeni decimalni dio s cijelim, da ga sad ne prepisujem doslovno. 12.345 => 345.12
Mislim, ovdje su očito učitana dva inta a ne jedan double, a sad ne razumijem šta je Flegar tu pokušao objasniti pa...
gflegar (napisa): |
Meni ne dijeluje, stovise je bi ovo ovako rijesio, jer mi je logicno zakljuciti da za ulaz dobijemo broj formatiran kao double, a mene su ucili (tu mislim na bivseg olimpijca koji danas radi u google-u) da je najbolje realan broj ucitati tako da ne gubimo na preciznosti.
Kod: |
#include <stdio.h>
int main(void){
int c, f;
scanf("%d.%d", &c, &f);
while(f % 10 == 0 && f != 0) f/= 10;
printf("%d.%d", f, c);
return 0;
}
|
(Nisam ovo kompajlirao ali valjda radi ) |
Priznaje li se ovo kao riješenje zadatka?
Zadatak očito zahtjeva da zamijeni decimalni dio s cijelim, da ga sad ne prepisujem doslovno. 12.345 ⇒ 345.12
Mislim, ovdje su očito učitana dva inta a ne jedan double, a sad ne razumijem šta je Flegar tu pokušao objasniti pa...
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 17:28 pet, 18. 11. 2011 Naslov: |
|
|
Ovisi sto kaze text zadatka (ne trazi mi se sada, a ne znam ih napamet). Ako kaze "ucitati realni broj", onda treba ucitati realni broj. Isto tako, ako kaze naci invertirani broj i ispisati ga, onda "lazni" ispis nije dosta.
Ovisi sto kaze text zadatka (ne trazi mi se sada, a ne znam ih napamet). Ako kaze "ucitati realni broj", onda treba ucitati realni broj. Isto tako, ako kaze naci invertirani broj i ispisati ga, onda "lazni" ispis nije dosta.
_________________ 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] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
Postano: 21:57 pet, 18. 11. 2011 Naslov: |
|
|
[quote="vsego"]
@kiara: Ne razumijem sto te muci. Ako invertiras 120, dobijes 021 = 21. Nitko ne kaze da je invertiranje involutorna operacija (i.e., da je inverz inverza pocetni broj). Injektivnost ne postoji, upravo zbog zavrsne nule.[/quote]
Nisam bas najbolje objasnila. Npr. 40. zadatak,ako upisem broj 78, i bazu 2. Meni ce to prvo prebaciti pomocu
z=0;
while (n>0)
{
z=z*10+n%b;
n=n/b;
}
u obrnuti broj od binarnog zapisa 78. I to ce biti 111001. I u sljedecem algoritmu za invertiranje broja bi taj broj okrenula. Ali problem je što mi ne ispisuje početnu nulu, ne ispisuje 0111001 da bi mi okrenuti bio tocan.
vsego (napisa): |
@kiara: Ne razumijem sto te muci. Ako invertiras 120, dobijes 021 = 21. Nitko ne kaze da je invertiranje involutorna operacija (i.e., da je inverz inverza pocetni broj). Injektivnost ne postoji, upravo zbog zavrsne nule. |
Nisam bas najbolje objasnila. Npr. 40. zadatak,ako upisem broj 78, i bazu 2. Meni ce to prvo prebaciti pomocu
z=0;
while (n>0)
{
z=z*10+n%b;
n=n/b;
}
u obrnuti broj od binarnog zapisa 78. I to ce biti 111001. I u sljedecem algoritmu za invertiranje broja bi taj broj okrenula. Ali problem je što mi ne ispisuje početnu nulu, ne ispisuje 0111001 da bi mi okrenuti bio tocan.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 23:21 pet, 18. 11. 2011 Naslov: |
|
|
Prvo: ne glumi prebacivanje u bazu 10. Recimo da je b=2. Tada je [tex](1 111 111 111)_2[/tex] = 2^10-1 = 1023 najviše što ti stane u [tt]int[/tt] jer u njega stanu brojevi do 2 milijarde i nesto (ili [tt]unsigned int[/tt], svejedno; u njega stane 4 milijarde i nesto). Dakle, program ti je [b]jako[/b] ogranicen i to rjesenje nikako ne prolazi pod tocno.
Drugo: cemu invertirati broj? Kreni lijepo slijeva na desno.
1. nadji [tex]p = b^k[/tex], [tex]k \in \mathbb{N}_0[/tex] takav da je [tex]p = b^k \leq n < b^{k+1} = p \cdot b[/tex] (to je jednostavna [tt]while[/tt]-petlja),
2. najljevija znamenka broja [tt]n[/tt] je ocito: [tt]n / p[/tt],
3. najljeviju znamenku odrezes s [tt]n -= p * (n / p)[/tt].
Provjeri formule jer pisem napamet i nabrzinu, no vjerujem da nisam nesto bitno fulao.
Prvo: ne glumi prebacivanje u bazu 10. Recimo da je b=2. Tada je [tex](1 111 111 111)_2[/tex] = 2^10-1 = 1023 najviše što ti stane u int jer u njega stanu brojevi do 2 milijarde i nesto (ili unsigned int, svejedno; u njega stane 4 milijarde i nesto). Dakle, program ti je jako ogranicen i to rjesenje nikako ne prolazi pod tocno.
Drugo: cemu invertirati broj? Kreni lijepo slijeva na desno.
1. nadji [tex]p = b^k[/tex], [tex]k \in \mathbb{N}_0[/tex] takav da je [tex]p = b^k \leq n < b^{k+1} = p \cdot b[/tex] (to je jednostavna while-petlja),
2. najljevija znamenka broja n je ocito: n / p,
3. najljeviju znamenku odrezes s n -= p * (n / p).
Provjeri formule jer pisem napamet i nabrzinu, no vjerujem da nisam nesto bitno fulao.
_________________ 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] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
Postano: 23:32 pet, 18. 11. 2011 Naslov: |
|
|
Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?
Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?
|
|
[Vrh] |
|
Zenon Forumaš(ica)
Pridružen/a: 09. 09. 2011. (19:14:43) Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]
|
Postano: 0:08 sub, 19. 11. 2011 Naslov: |
|
|
[b]Zadatak 23:[/b]
Napisati program koji će učitati cijeli broj n i za taj n izračunati vrijednost Eulerove funkcije od n. Eulerova funkcija definira se kao broj prirodnih brojeva u skupu {1,...,n} koji su relativno prosti s n.
Valja li moje riješenje?
[code:1]#include<stdio.h>
int main(void)
{
int n,k,i,brojac=0,rp,div;
scanf("%d",&n);
if (n==1) brojac++;
for( k=1; k<n; k++ )
{
rp=1;
div=2;
while ( div<=k && rp )
{
if ( n%div==0 && k%div==0) rp=0;
div++;
}
if ( rp ) brojac++;
}
printf ("%d",brojac);
return 0;
}
[/code:1]
[b]Zadatak 30:[/b]
Kažemo da je matrica koja se sastoji samo od binarnih znamenki "hrvatska" ako u svakom retku i u svakom stupcu naizmjenično dolaze znamenke 1 i 0. Napišite program koji učitava broj redaka m i broj stupaca n i matricu koja će se sastojati samo od binarnih znamenki (ne treba provjeravati), te ispisuje riječ "DA" ako je učitana matrica hrvatska, a riječ "NE" u protivnom.
Gornji lijevi element hrvatske matrice smije biti i 0 i 1.
[code:1]#include<stdio.h>
int main(void)
{
int mxn,ODGOVOR=1,m,n,a,b,i;
scanf("%d %d",&m,&n);
mxn=n*m;
scanf("%d",&a);
if ( a!=0 && a!=1 ) ODGOVOR=0;
for ( i=1; i<mxn; i++ )
{
scanf("%d",&b);
if ( (b!=0 && b!=1) || b==a ) ODGOVOR=0;
a=b;
}
if (ODGOVOR) printf("DA");
else printf("NE");
return 0;
}[/code:1]
Valja li mi?
Hvala unaprijed.
Zadatak 23:
Napisati program koji će učitati cijeli broj n i za taj n izračunati vrijednost Eulerove funkcije od n. Eulerova funkcija definira se kao broj prirodnih brojeva u skupu {1,...,n} koji su relativno prosti s n.
Valja li moje riješenje?
Kod: | #include<stdio.h>
int main(void)
{
int n,k,i,brojac=0,rp,div;
scanf("%d",&n);
if (n==1) brojac++;
for( k=1; k<n; k++ )
{
rp=1;
div=2;
while ( div<=k && rp )
{
if ( n%div==0 && k%div==0) rp=0;
div++;
}
if ( rp ) brojac++;
}
printf ("%d",brojac);
return 0;
}
|
Zadatak 30:
Kažemo da je matrica koja se sastoji samo od binarnih znamenki "hrvatska" ako u svakom retku i u svakom stupcu naizmjenično dolaze znamenke 1 i 0. Napišite program koji učitava broj redaka m i broj stupaca n i matricu koja će se sastojati samo od binarnih znamenki (ne treba provjeravati), te ispisuje riječ "DA" ako je učitana matrica hrvatska, a riječ "NE" u protivnom.
Gornji lijevi element hrvatske matrice smije biti i 0 i 1.
Kod: | #include<stdio.h>
int main(void)
{
int mxn,ODGOVOR=1,m,n,a,b,i;
scanf("%d %d",&m,&n);
mxn=n*m;
scanf("%d",&a);
if ( a!=0 && a!=1 ) ODGOVOR=0;
for ( i=1; i<mxn; i++ )
{
scanf("%d",&b);
if ( (b!=0 && b!=1) || b==a ) ODGOVOR=0;
a=b;
}
if (ODGOVOR) printf("DA");
else printf("NE");
return 0;
} |
Valja li mi?
Hvala unaprijed.
|
|
[Vrh] |
|
|