Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
ceps Forumaš(ica)
Pridružen/a: 08. 10. 2010. (13:03:07) Postovi: (13A)16
|
Postano: 19:08 sri, 15. 12. 2010 Naslov: Zadatak iz 4. domaće zadaće |
|
|
[i]Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve oblika 2⋅5i-32 koji se nalaze između a i b (bez a i b). Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b![/i]
Ja sam krenuo nekako s ovakvom idejom:
[code:1]
#include <stdio.h>
int main ()
{
int a, b, i, t, temp;
scanf("%d %d", &a, &b);
if (b > a)
{
temp = b;
b = a;
a = temp;
}
for (i = a + 1; i < b; i++)
{
t = i + 32;
if (t % 2 == 0)
{
t = t / 2;
while (t % 5 == 0)
{
t = t / 5;
}
}
if (t == 1) printf("%d ", i);
}
return 0;
}
[/code:1]
ali mi to ne pali... ne znam zbilja odakle da krenem. Hint?
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve oblika 2⋅5i-32 koji se nalaze između a i b (bez a i b). Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b!
Ja sam krenuo nekako s ovakvom idejom:
Kod: |
#include <stdio.h>
int main ()
{
int a, b, i, t, temp;
scanf("%d %d", &a, &b);
if (b > a)
{
temp = b;
b = a;
a = temp;
}
for (i = a + 1; i < b; i++)
{
t = i + 32;
if (t % 2 == 0)
{
t = t / 2;
while (t % 5 == 0)
{
t = t / 5;
}
}
if (t == 1) printf("%d ", i);
}
return 0;
}
|
ali mi to ne pali... ne znam zbilja odakle da krenem. Hint?
|
|
[Vrh] |
|
Cobs Forumaš(ica)
Pridružen/a: 21. 01. 2008. (13:32:15) Postovi: (206)16
Spol:
Lokacija: Geto
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 1:54 čet, 16. 12. 2010 Naslov: |
|
|
Vjerujem da se misli na [latex]2 \cdot 5^i - 32[/latex] (treba paziti sto se copy/pastea).
Preporuceni nacin: krenuti od [tt]i=1[/tt] i racinati izraz za sve [tt]i[/tt]-jeve. Dok je dobiveni broj manji od donje granice, samo se racuna, a ako je veci, onda se i ispisuje. Kad premasi gornju granicu, petlja staje.
Preporucam samostalno rjesavanje, no ako bas zapnes...
[spoiler][code:1]pot = 1; /* pot = 5^i */
while (1) {
pot *= 5;
value = 2 * pot - 32;
if (value >= b) break;
if (value >= a) printf("%d ", value);
}[/code:1][/spoiler]
Vjerujem da se misli na (treba paziti sto se copy/pastea).
Preporuceni nacin: krenuti od i=1 i racinati izraz za sve i-jeve. Dok je dobiveni broj manji od donje granice, samo se racuna, a ako je veci, onda se i ispisuje. Kad premasi gornju granicu, petlja staje.
Preporucam samostalno rjesavanje, no ako bas zapnes...
Spoiler [hidden; click to show]: | Kod: | pot = 1; /* pot = 5^i */
while (1) {
pot *= 5;
value = 2 * pot - 32;
if (value >= b) break;
if (value >= a) printf("%d ", value);
} |
|
_________________ 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] |
|
A-tom Forumaš(ica)
Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 12:58 ned, 19. 12. 2010 Naslov: |
|
|
[b]Izmedju[/b] "44 i 41 (ukljucivo)" nalaze se brojevi 41, 42, 43 i 44, a ti valjda imaju nekakve proste djelitelje.
Izmedju "44 i 41 (ukljucivo)" nalaze se brojevi 41, 42, 43 i 44, a ti valjda imaju nekakve proste djelitelje.
_________________ 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] |
|
A-tom Forumaš(ica)
Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol:
|
|
[Vrh] |
|
travana Forumaš(ica)
Pridružen/a: 22. 09. 2010. (17:12:41) Postovi: (16)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
A-tom Forumaš(ica)
Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol:
|
Postano: 17:59 pet, 24. 12. 2010 Naslov: |
|
|
Moze pomoc oko zadatka? Testirala sam na malim brojevima i program radi, no u izvjesce o dz veli da je program pao na 803 i 930.
/* Napišite program koji u�itava prirodne brojeve a i b, te u padaju�em poretku ispisuje sve cijele brojeve
koji se nalaze izme�u a i b (bez a i b), a u zapisu s bazom 6 imaju samo znamenke izme�u 1 i 4 (uklju�ivo i granice).
Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.".
Pazite da tekst bude naveden to�no kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b! */
[code:1]
#include <stdio.h>
int main ()
{
int a, b, max, i, x, min, ima,po=0;
scanf("%d %d", &a, &b);
if (a>b){
max=a;
min=b;
}
else{
max=b;
min=a;
}
for (i=max-1; i>min; i--){
x=i;
ima=1;
while(x!=0)
{
if ((x%6)>4 || x%6==0) {
ima=0;
break;
}
x/=10;
}
if (ima==1){
printf("%d ", i);
po=1;
}
}
if (po==0)
printf("Nema takvih brojeva.");
return 0;
}[/code:1]
Moze pomoc oko zadatka? Testirala sam na malim brojevima i program radi, no u izvjesce o dz veli da je program pao na 803 i 930.
/* Napišite program koji u�itava prirodne brojeve a i b, te u padaju�em poretku ispisuje sve cijele brojeve
koji se nalaze izme�u a i b (bez a i b), a u zapisu s bazom 6 imaju samo znamenke izme�u 1 i 4 (uklju�ivo i granice).
Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.".
Pazite da tekst bude naveden to�no kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b! */
Kod: |
#include <stdio.h>
int main ()
{
int a, b, max, i, x, min, ima,po=0;
scanf("%d %d", &a, &b);
if (a>b){
max=a;
min=b;
}
else{
max=b;
min=a;
}
for (i=max-1; i>min; i--){
x=i;
ima=1;
while(x!=0)
{
if ((x%6)>4 || x%6==0) {
ima=0;
break;
}
x/=10;
}
if (ima==1){
printf("%d ", i);
po=1;
}
}
if (po==0)
printf("Nema takvih brojeva.");
return 0;
} |
|
|
[Vrh] |
|
Flame Forumaš(ica)
Pridružen/a: 12. 08. 2009. (02:14:39) Postovi: (53)16
Spol:
|
|
[Vrh] |
|
A-tom Forumaš(ica)
Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol:
|
|
[Vrh] |
|
ceps Forumaš(ica)
Pridružen/a: 08. 10. 2010. (13:03:07) Postovi: (13A)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 23:28 ned, 26. 12. 2010 Naslov: |
|
|
Ako je t izmedju a i b (ukljucivo granice), onda t moze poprimati vrijednosti a, a+1, a+2,..., b-1, b. Za a=b, moze poprimiti samo tu vrijednost (a, odnosno b). Dakle, program treba ispisati sto vec treba za broj 41. Zasto bi to bio neki posebni slucaj?
Ako je t izmedju a i b (ukljucivo granice), onda t moze poprimati vrijednosti a, a+1, a+2,..., b-1, b. Za a=b, moze poprimiti samo tu vrijednost (a, odnosno b). Dakle, program treba ispisati sto vec treba za broj 41. Zasto bi to bio neki posebni slucaj?
_________________ 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] |
|
zbunjena Forumaš(ica)
Pridružen/a: 28. 06. 2010. (09:50:31) Postovi: (14)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
zbunjena Forumaš(ica)
Pridružen/a: 28. 06. 2010. (09:50:31) Postovi: (14)16
Spol:
|
|
[Vrh] |
|
Phoenix Forumaš(ica)
Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
|
[Vrh] |
|
pbakic Forumaš(ica)
Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol:
|
Postano: 0:52 čet, 30. 12. 2010 Naslov: |
|
|
Dvije greske su u zadatku, ali lako ispravljive na srecu :)
prva je tehnicka: prvi if:
umjesto i >= -34 treba stajati uvjet n >= -34
druga se tice samog zadatka; trazi se suma svih prostih brojeva uvazavajuci kratnost. To znaci da za, npr, broj 8 neces u sumu dodati samo 2 (jer to je jedini prosti djelitelj) nego 2+2+2 (zato sto je 2 3struki djelitelj broja 8 )
ili, za broj 36, u sumu bi trebalo dodati 2+2+3+3 (jer je 36=2*2*3*3)
to se lako promijeni tako da na svim mjestima gdje pise
if(prost(j)&&t%j==0)
zamijenis if sa while (dakle, dok god je broj djeljiv s j, dijeli ga s j i dodaj j u sumu)
Dvije greske su u zadatku, ali lako ispravljive na srecu
prva je tehnicka: prvi if:
umjesto i >= -34 treba stajati uvjet n >= -34
druga se tice samog zadatka; trazi se suma svih prostih brojeva uvazavajuci kratnost. To znaci da za, npr, broj 8 neces u sumu dodati samo 2 (jer to je jedini prosti djelitelj) nego 2+2+2 (zato sto je 2 3struki djelitelj broja 8 )
ili, za broj 36, u sumu bi trebalo dodati 2+2+3+3 (jer je 36=2*2*3*3)
to se lako promijeni tako da na svim mjestima gdje pise
if(prost(j)&&t%j==0)
zamijenis if sa while (dakle, dok god je broj djeljiv s j, dijeli ga s j i dodaj j u sumu)
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
zbunjena Forumaš(ica)
Pridružen/a: 28. 06. 2010. (09:50:31) Postovi: (14)16
Spol:
|
|
[Vrh] |
|
|