Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadatak sa pojavom prekoracenja ( u C-u)

[es] :: C/C++ programiranje :: C/C++ za početnike :: Zadatak sa pojavom prekoracenja ( u C-u)

[ Pregleda: 2384 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

neco_1986
Nebojša Sofrić
Teslić

Član broj: 69331
Poruke: 14
*.teol.net.



Profil

icon Zadatak sa pojavom prekoracenja ( u C-u)05.10.2007. u 22:58 - pre 200 meseci
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.
 
Odgovor na temu

limasoft
WEB Programer

Član broj: 158935
Poruke: 20
*.vdial.verat.net.



Profil

icon Re: Zadatak sa pojavom prekoracenja ( u C-u)05.10.2007. u 23:56 - pre 200 meseci
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]
LimaSoft ®
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Zadatak sa pojavom prekoracenja ( u C-u)06.10.2007. u 08:00 - pre 200 meseci
@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)
 
Odgovor na temu

limasoft
WEB Programer

Član broj: 158935
Poruke: 20
*.vdial.verat.net.



Profil

icon Re: Zadatak sa pojavom prekoracenja ( u C-u)06.10.2007. u 23:30 - pre 200 meseci
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...

LimaSoft ®
 
Odgovor na temu

neco_1986
Nebojša Sofrić
Teslić

Član broj: 69331
Poruke: 14
*.teol.net.



Profil

icon Re: Zadatak sa pojavom prekoracenja ( u C-u)07.10.2007. u 14:13 - pre 200 meseci
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.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Zadatak sa pojavom prekoracenja ( u C-u)

[ Pregleda: 2384 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.