Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Buki Forumaš(ica)

Pridružen/a: 17. 10. 2010. (20:15:17) Postovi: (56)16
|
|
[Vrh] |
|
Joker Forumaš(ica)

Pridružen/a: 19. 09. 2010. (10:19:16) Postovi: (8C)16
Spol: 
|
|
[Vrh] |
|
Buki Forumaš(ica)

Pridružen/a: 17. 10. 2010. (20:15:17) Postovi: (56)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
lost_soul Forumaš(ica)

Pridružen/a: 18. 10. 2009. (17:38:41) Postovi: (133)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Sekanta Forumaš(ica)

Pridružen/a: 13. 09. 2009. (10:14:33) Postovi: (48)16
|
Postano: 17:48 pet, 19. 11. 2010 Naslov: |
|
|
Moze pomoc na ovom zadatku, ne kuzim zast mi zaokruzi :?
[code:1]/*Zadatak 41:
Napisite program koji ce ucitati double broj te ispisati onaj broj koji bi nastao okretanjem njegovih znamenaka. Primjerice,
ukoliko je ulazni broj bio 521.75, funkcija ce vratiti broj 57.125. Napomena: Mozete pretpostaviti da ulazni broj nije veci
od 9999 i da nema vise od 4 decimale.*/
#include<stdio.h>
int main ()
{
int i,j;
double n,f;
scanf("%lg",&n);
i=(int)n;
f=n-i;
f*=10000;
j=(int)f;
while(j%10==0)
j/=10;
while(j>0){
printf("%d",j%10);
j/=10;
}
printf(".");
while(i>0){
printf("%d",i%10);
i/=10;
}
return 0;
}
[/code:1]
Moze pomoc na ovom zadatku, ne kuzim zast mi zaokruzi
Kod: | /*Zadatak 41:
Napisite program koji ce ucitati double broj te ispisati onaj broj koji bi nastao okretanjem njegovih znamenaka. Primjerice,
ukoliko je ulazni broj bio 521.75, funkcija ce vratiti broj 57.125. Napomena: Mozete pretpostaviti da ulazni broj nije veci
od 9999 i da nema vise od 4 decimale.*/
#include<stdio.h>
int main ()
{
int i,j;
double n,f;
scanf("%lg",&n);
i=(int)n;
f=n-i;
f*=10000;
j=(int)f;
while(j%10==0)
j/=10;
while(j>0){
printf("%d",j%10);
j/=10;
}
printf(".");
while(i>0){
printf("%d",i%10);
i/=10;
}
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Sekanta Forumaš(ica)

Pridružen/a: 13. 09. 2009. (10:14:33) Postovi: (48)16
|
|
[Vrh] |
|
Phoenix Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
Postano: 18:59 pet, 19. 11. 2010 Naslov: |
|
|
Zato što f ima pohranjenu vrijednost 3400, a nakon naredbe j=(int)f, j ima vrijednost 3399. Zato test primjer i izgleda kao da si grdno pogriješila, a zapravo je opet riječ o već navedenom problemu s realnim brojevima.
Ako profesor ne kaže drukčije ili ne uoči zašto ti program ispisuje toliko različiti rezultat, trebalo bi ti uvažiti jer, koliko sam saznao, takvi slučajevi nisu bitni za praktični kolokvij.
I da, još jedna sitnica: ako je u zadatku moguće unijeti cijeli broj (dakle, da nema decimalnog dijela ili da mu decimalni dio čini proizvoljan broj nula), program neće ništa ispisati, nego će "zaglaviti" u jednoj beskonačnoj while petlji. Taj bi slučaj trebalo onda popraviti.
(Ne znam je li taj slučaj uključen, čisto napomena ako jest.)
(Isto tako, ako program učita, npr., "0.3", ispisat će "3.", no to je valjda dobro. Ako ne, i to se lako sredi. :))
Zato što f ima pohranjenu vrijednost 3400, a nakon naredbe j=(int)f, j ima vrijednost 3399. Zato test primjer i izgleda kao da si grdno pogriješila, a zapravo je opet riječ o već navedenom problemu s realnim brojevima.
Ako profesor ne kaže drukčije ili ne uoči zašto ti program ispisuje toliko različiti rezultat, trebalo bi ti uvažiti jer, koliko sam saznao, takvi slučajevi nisu bitni za praktični kolokvij.
I da, još jedna sitnica: ako je u zadatku moguće unijeti cijeli broj (dakle, da nema decimalnog dijela ili da mu decimalni dio čini proizvoljan broj nula), program neće ništa ispisati, nego će "zaglaviti" u jednoj beskonačnoj while petlji. Taj bi slučaj trebalo onda popraviti.
(Ne znam je li taj slučaj uključen, čisto napomena ako jest.)
(Isto tako, ako program učita, npr., "0.3", ispisat će "3.", no to je valjda dobro. Ako ne, i to se lako sredi. )
|
|
[Vrh] |
|
Sekanta Forumaš(ica)

Pridružen/a: 13. 09. 2009. (10:14:33) Postovi: (48)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Joker Forumaš(ica)

Pridružen/a: 19. 09. 2010. (10:19:16) Postovi: (8C)16
Spol: 
|
|
[Vrh] |
|
ninaaaaaaa Forumaš(ica)

Pridružen/a: 12. 07. 2010. (16:54:36) Postovi: (C)16
Spol: 
|
Postano: 23:22 pet, 19. 11. 2010 Naslov: |
|
|
Još jedan problem sa zadatkom s datumima.. :lol: Ovaj put se radi o 38. zadatku. :)
Zadatak 38:
Napisite program koji ce ucitati tri datuma (svaki se sastoji od po 3 prirodna broja, redom dan, mjesec i godina), te ispisati
datum kojem je dan preuzet iz najranijeg datuma, mjesec iz srednjeg datuma, a godina iz najkasnijeg.
Napomene: Datumi ce bit iz segmenta od 1.1.1950. (nedjelja) do 31.12.2050. Treba pripaziti da je ucitani datum postojeci,
a u protivnom vratiti poruku “Greska!”. Svaka cetvrta godina je prijestupna (npr. jedna od takvih je i 2008), sto znaci da
veljaca tada ima 29, a ne 28 dana. Sijecanj, ozujak, svibanj, srpanj, kolovoz, listopad i prosinac imaju po 31 dan, a ostali
mjeseci, osim veljace, po 30 dana.
Datum ispisite u formatu “d.m.g.”.
Sto ispisati ako je na primjer:
prvi datum: 31.1.2010.
drugi datum: 20.2.1999.
treći datum: 1.5.2020.?
To bi ispalo 31.2.2020., a drugi mjesec nema 31 dan. Da li onda kao kad se učitavaju datumi treba ispisati grešku? Ili nešto drugo? :D
Još jedan problem sa zadatkom s datumima.. Ovaj put se radi o 38. zadatku.
Zadatak 38:
Napisite program koji ce ucitati tri datuma (svaki se sastoji od po 3 prirodna broja, redom dan, mjesec i godina), te ispisati
datum kojem je dan preuzet iz najranijeg datuma, mjesec iz srednjeg datuma, a godina iz najkasnijeg.
Napomene: Datumi ce bit iz segmenta od 1.1.1950. (nedjelja) do 31.12.2050. Treba pripaziti da je ucitani datum postojeci,
a u protivnom vratiti poruku “Greska!”. Svaka cetvrta godina je prijestupna (npr. jedna od takvih je i 2008), sto znaci da
veljaca tada ima 29, a ne 28 dana. Sijecanj, ozujak, svibanj, srpanj, kolovoz, listopad i prosinac imaju po 31 dan, a ostali
mjeseci, osim veljace, po 30 dana.
Datum ispisite u formatu “d.m.g.”.
Sto ispisati ako je na primjer:
prvi datum: 31.1.2010.
drugi datum: 20.2.1999.
treći datum: 1.5.2020.?
To bi ispalo 31.2.2020., a drugi mjesec nema 31 dan. Da li onda kao kad se učitavaju datumi treba ispisati grešku? Ili nešto drugo?
|
|
[Vrh] |
|
Joker Forumaš(ica)

Pridružen/a: 19. 09. 2010. (10:19:16) Postovi: (8C)16
Spol: 
|
|
[Vrh] |
|
Phoenix Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
Postano: 23:29 pet, 19. 11. 2010 Naslov: |
|
|
Deklariraj dvije int varijable, recimo, br1 i br2, koje su na početku postavljene na 0. U prvoj while petlji (kada j dijeliš s 10 zbog nula na kraju decimalnog dijela) postavi da br1 raste za 1. U drugoj while petlji, kada ispisuješ cjelobrojni dio novoga broja, postavi da br2 raste za 1. Prije nego što ispišeš točku, neka program ispisuje znamenku 0 4-br1-br2 puta.
Zašto ovo? Znamo da broj ima 4 decimalne znamenke, uključujući i znamenke 0 na kraju zapisa (koje ne mijenjaju vrijednost broja).
Neka je br1 broj tih "nebitnih" nula na kraju zapisa, a br2 broj "bitnih" znamenki koje moramo ispisati na ekranu. Dakle, trebali bi ispisati 4-br1 znamenku prije točke, tj. trebali bi dobiti da je br2=4-br1. Ako pak nije, tada je br2<4-br1 trebali bi ispisati n nula, tako da je br2+n=4-br1. Očito je stoga n=4-br1-br2.
Nadam se da je jasno. :)
Deklariraj dvije int varijable, recimo, br1 i br2, koje su na početku postavljene na 0. U prvoj while petlji (kada j dijeliš s 10 zbog nula na kraju decimalnog dijela) postavi da br1 raste za 1. U drugoj while petlji, kada ispisuješ cjelobrojni dio novoga broja, postavi da br2 raste za 1. Prije nego što ispišeš točku, neka program ispisuje znamenku 0 4-br1-br2 puta.
Zašto ovo? Znamo da broj ima 4 decimalne znamenke, uključujući i znamenke 0 na kraju zapisa (koje ne mijenjaju vrijednost broja).
Neka je br1 broj tih "nebitnih" nula na kraju zapisa, a br2 broj "bitnih" znamenki koje moramo ispisati na ekranu. Dakle, trebali bi ispisati 4-br1 znamenku prije točke, tj. trebali bi dobiti da je br2=4-br1. Ako pak nije, tada je br2<4-br1 trebali bi ispisati n nula, tako da je br2+n=4-br1. Očito je stoga n=4-br1-br2.
Nadam se da je jasno.
Zadnja promjena: Phoenix; 23:32 pet, 19. 11. 2010; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
ninaaaaaaa Forumaš(ica)

Pridružen/a: 12. 07. 2010. (16:54:36) Postovi: (C)16
Spol: 
|
|
[Vrh] |
|
Joker Forumaš(ica)

Pridružen/a: 19. 09. 2010. (10:19:16) Postovi: (8C)16
Spol: 
|
|
[Vrh] |
|
sailor m Forumaš(ica)

Pridružen/a: 23. 10. 2010. (10:46:13) Postovi: (4E)16
|
Postano: 20:44 sub, 20. 11. 2010 Naslov: |
|
|
5.zadatak s praktičnog.
Napišite program koji učitava cijele brojeve b (b ≤ 10) i n, a zatim n brojeva koji predstavljaju znamenke nekog broja u bazi
b. Program treba ispisati o kojem dekadskom broju se radi.
ovako sam ja rješila ali mi program ne radi:
#include <stdio.h>
int main(void) {
int b, n, d=0, x=0;
printf("upisi cijele brojeve b<=10 i n:\n");
scanf("%d %d", &b,&n);
printf("upisi %d znamenaka u bazi %d:\n", n,b);
while(x>=0 && x<b) {
d= b * d + x;
scanf("%d", &x);
}
printf("dekadski zapis broja=%d\n", d);
return 0;
}
molila bih nekog da mi pomogne
5.zadatak s praktičnog.
Napišite program koji učitava cijele brojeve b (b ≤ 10) i n, a zatim n brojeva koji predstavljaju znamenke nekog broja u bazi
b. Program treba ispisati o kojem dekadskom broju se radi.
ovako sam ja rješila ali mi program ne radi:
#include <stdio.h>
int main(void) {
int b, n, d=0, x=0;
printf("upisi cijele brojeve b<=10 i n:\n");
scanf("%d %d", &b,&n);
printf("upisi %d znamenaka u bazi %d:\n", n,b);
while(x>=0 && x<b) {
d= b * d + x;
scanf("%d", &x);
}
printf("dekadski zapis broja=%d\n", d);
return 0;
}
molila bih nekog da mi pomogne
|
|
[Vrh] |
|
Cobs Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15) Postovi: (206)16
Spol: 
Lokacija: Geto
|
|
[Vrh] |
|
|