[ neco_1986 @ 05.10.2007. 22:58 ] @
Ako bi se na prvo polje šahovske table stavilo jedno zrno, a na svako sljedeće polje dvostruko više nego na prethodno, izračunati koliko bi se zrna nalazilo na posljednjem (64-om) polju, odnosno koliko bi ukupno zrna trebalo da bude na tabli.
[ limasoft @ 05.10.2007. 23:56 ] @
Ne razumem zasto si dobio prekoracenje.

Stavi double.
U sustini problem nije uopste tesak. ovo je vise matemetika nego programiranje.

Rezultat je 2^65 = 36893488147419103000.

Evo ti kod.
Code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
         double z=0.0,pom;
         int i;
         printf("CLAN\t\t\t VREDNOST\n");
         for(i=0;i<=64;i++)
         {
             pom=(double)pow(2,i)    ;                    
            printf("%f\t\t%f\n",pom,z);
            z=z+pom;
    }
    
    printf("Z=%f\n",z);
  
  system("PAUSE");    
  return 0;
}

Mozda nije bas sve formatirano ali radi.


Lima

EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]


[Ovu poruku je menjao X Files dana 06.10.2007. u 09:05 GMT+1]
[ X Files @ 06.10.2007. 08:00 ] @
@limasoft

Mislim da nisi dobro sračunao. Zar nije:
• trenutno polje na tabli: 2(n-1) = (n=64; polje64=9223372036854775808)
• ukupno: 264-1 = 18446744073709551615

Svakako mora biti NEPARAN broj zbog prve jedinice :)
(ili se još nisam razbudio)
[ limasoft @ 06.10.2007. 23:30 ] @
Da tacno u pravu si.

rezultat je 18446744073709551615 zrna na tabli.

bio sam previse umoran i slucajno sam video tu temu. Znam da ide i posebna prica o nekom kralju koji je prosjaku olako obecao ovoliku kolicunu psenice da ga nauci da igra sah. Tako nekako ide prica...
[ neco_1986 @ 07.10.2007. 14:13 ] @
Evo uradio sam bez upotrebe funkcija iz math.h

Code:


#include <stdio.h>
#include <stdlib.h>

main()
{
  
  int i;
  double  suma=0, pom=1, baza=2, pom2=2, korak=1; 
  
  for(i=1;i<=64;i++)
    {
        
        printf("Polje %d. = %f\n", i,pom);
        suma+=pom;
        pom=baza*korak;
        korak*=pom2;
        
    }
  
  printf("\nZbir zrna je: %f\n\n", suma);
  
  system("PAUSE");    
  return 0;
}



ima jos varijanta bez upotrebe DOULBE, nesto preko nizova.