| 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: (3562)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: (3562)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: (3562)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: (3562)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: (3562)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: (3562)16 
Spol:   
Lokacija: /sbin/init 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		zbunjena Forumaš(ica)
  
 
  Pridružen/a: 28. 06. 2010. (09:50:31) Postovi: (14)16 
Spol:   
 
		 | 
		 | 
	
	
		| [Vrh] | 
		 | 
	
	
		 |