Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 24 odgovora
  • 10.771 pregleda

Najnovija ↓

Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 16:26 · pre 257 meseci #1
Molim vas pomoć.

Trebao bi napisati program o izumitelju saha.

Ako niste culi pricu evo ukratko: sahovska ploca ima 8x8 polja, i sad u prvo polje se stavi 1 zrno zita, u drugo duplo vise znaci 2, u trece 4, u peto 8.....

i sad treba to sve zbrojiti i ispisati ukupni broj zrna...

ako ko ima kakve ideje nek se javi ;)
Re: Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 17:01 · pre 257 meseci #2
Code:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
  int zbroj = 0;
  for (int i=1; i<65; i++) zbroj += pow(2, i);
  cout << zbroj << endl;
  char z; cin >> z;
  return 0;
}
Re: Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 17:35 · pre 257 meseci
izmenjeno 1 put, poslednji put japan 14.09.2005. u 17:37
  1. japan14.09.2005. u 17:37zapis iz teksta poruke
#3
to može na papiru, inače se dobija prekoračenje i netačan rezultat...

po meni je, kad se radi sa velikim brojevima, pogotovo stepenima dvojke, najlogičnije predstavljati brojeve kao stringove, i to njihovu binarnu reprezentaciju. npr 2 = '10', 13 = '1101', itd, i implementirati funkcije za aritmetičke operacije sa ovakvim reprezentacijama brojeva...

mada ovo može da se uradi i primenom brze furijeove transformacije, ali je algoritam prilično komplikovan za implementaciju, i mislim da u ovom slučaju nije baš isplativo...
Re: Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 17:42 · pre 257 meseci #4
Imas i klase za rad sa velikim brojevima, mada mozes da napravis i svoju klasu koja ca da odradi taj posao. :O)
Re: Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 20:18 · pre 257 meseci #5
Probao sam program od NeznamTkoSam i nije radilo. U programu samo crni ekran.
Onda sam ja to malo promjenio..i..opet nista...evo kak sam ja to zamislio

#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream.h>
using namespace std;
void main()
{
long int zbroj = 0;
for (int i=1; i<65; i++) zbroj += pow(2, i);
cout << "Zbroj zrna je: " << zbroj;
}

Re: Pomoc oko c++ programa - Izumitelj igre sah 14.09.2005. u 20:31 · pre 257 meseci
izmenjeno 1 put, poslednji put Buffy 14.09.2005. u 20:32
  1. Buffy14.09.2005. u 20:32zapis iz teksta poruke
#6
Koristi "Infinite Integer class"(rad sa velikim brojevima) koju je NrmMyth napravio i ne davno objavio na ovom forumu.
https://www.elitesecurity.org/t134491-Infinite-Integer-Class
Pozdrav
Potpis
[email protected]
Re: Pomoc oko c++ programa - Izumitelj igre sah 23.09.2005. u 20:30 · pre 256 meseci #7
Evo code za program, ali nije jos finalna verzija,trebam pomoc.

Code:

#include <math.h>
#include <iostream.h>
void main()
{
  double brojac=1;
  for (int i=1; i<64; i++) brojac+=pow(2,i);
  cout << "Broj zrna je: " << brojac;
}


Program ispise broj zrna ali u ovom obliku 1.84467e+19
Ali meni treba cijeli broj bez decimala, kako to izvesti ???

Znam 100% da se to moze izvesti i bez "Infinite Integer class", ali pitanje je kako ??

Pls Help!
Re: Pomoc oko c++ programa - Izumitelj igre sah 23.09.2005. u 20:52 · pre 256 meseci #8
pa u toj prici kaze car "zar samo to... trazi nesto drugo sta god hoces blabla..." a ovaj hoce "samo" to... i onda kada su carevi ljudi preracunali koliko je to zita, skontali su da cijelo carstvo nema toliko zita... i ti hoces taj broj zrna da predstavis u decimalnom obliku bez Inf. int class :)
Potpis
"nice town, i'll take it..."
Re: Pomoc oko c++ programa - Izumitelj igre sah 23.09.2005. u 21:18 · pre 256 meseci #9
2^64 je 18,446,744,073,709,551,616, a max 64-bitni int je 9,223,372,036,854,775,807.
Zakljucak je da ne postoji ugradjeni tip u koji mozes spremiti trazeni broj. :)
Re: Pomoc oko c++ programa - Izumitelj igre sah 24.09.2005. u 02:50 · pre 256 meseci
izmenjeno 1 put, poslednji put danio 24.09.2005. u 02:51
  1. danio24.09.2005. u 02:51zapis iz teksta poruke
#10
Tocan odgovor je 2^64-1.

Double nema problema sa pohranjivanjem toga broja:
Code:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double a=1;

    a=pow(2.0,64.0)-1.0;

    cout<<a<<endl;
    
    system("PAUSE");
    
    return 0;
}
Re: Pomoc oko c++ programa - Izumitelj igre sah 24.09.2005. u 04:24 · pre 256 meseci #12
naravno da ima... sah je navodno nastao tako sto je covek za nagradu trazio od cara onoliko zita koliko ima zrna kad se na 64 polja stavi zrna: 1 na prvo, a na svako sledece duplo toliko...

skolski zadatak... kao i proizvoljno veliki fibonacci niz...
Re: Pomoc oko c++ programa - Izumitelj igre sah 24.09.2005. u 07:53 · pre 256 meseci #13
Ma ono sam ja napiso napamet

Evo rjesenja:
Rezultat je 3.68935e+19

Code:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  long double zbroj = 1.;
  for (double i=2; i<65; i++) zbroj += pow(2, i);
  cout << zbroj << endl;
  char z; cin >> z;
  return 0;
}
Re: Pomoc oko c++ programa - Izumitelj igre sah 24.09.2005. u 09:45 · pre 256 meseci
izmenjeno 7 puta, poslednji put danio 24.09.2005. u 09:48
  1. danio24.09.2005. u 09:48zapis iz teksta poruke
  2. danio24.09.2005. u 09:47zapis iz teksta poruke
  3. danio24.09.2005. u 09:47zapis iz teksta poruke
  4. danio24.09.2005. u 09:47zapis iz teksta poruke
  5. danio24.09.2005. u 09:46zapis iz teksta poruke
  6. danio24.09.2005. u 09:46zapis iz teksta poruke
  7. danio24.09.2005. u 09:46zapis iz teksta poruke
#14
Nemoj ga slusati, odgovor je 18446744073709551615.

Evo vam link sa cijelom pricom.

I kao sto vidite ta prica nema nikakve veze sa izumom saha. Sah je izumljen u Indiji ili Kini jako davno. Zapravo tako davno da nitko nezna sigurno kad je izumljen, a pogotovo ko ga je izumio. Njavjerojatnije neki seljak koji se dosadjivao. Bas me zanima tko je izvrnuo tu legendu zato sto prvi put cujem da se radi o izumu saha...

Sto se tice odogovora, to nije nista drugo nego suma geometrijskog niza:
Code:

       63
      ---                63+1
      \     k      1 - 2     64
  S = /   2   = ---------- = 2  -1
     ---           1 - 2
     k=0
Re: Pomoc oko c++ programa - Izumitelj igre sah 25.09.2005. u 20:10 · pre 256 meseci #17
Citat:
danio: Tocan odgovor je 2^64-1.

Double nema problema sa pohranjivanjem toga broja:
Code:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double a=1;

    a=pow(2.0,64.0)-1.0;

    cout<<a<<endl;
    
    system("PAUSE");
    
    return 0;
}


[Ovu poruku je menjao danio dana 24.09.2005. u 02:51 GMT+1]



Lijepo izgleda rjesenje, samo meni compiler kaze: "a" is assigned a value that is never used in function main ()
Re: Pomoc oko c++ programa - Izumitelj igre sah 25.09.2005. u 20:48 · pre 256 meseci #18
A sitnica. Radio sam neke druge eksperimente, pa mi je ostalo od prije.
Code:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double a;

    a=pow(2.0,64.0)-1.0;

    cout<<a<<endl;
    
    system("PAUSE");
    
    return 0;
}
Re: Pomoc oko c++ programa - Izumitelj igre sah 26.09.2005. u 08:43 · pre 256 meseci #19
Citat:
danio: A sitnica. Radio sam neke druge eksperimente, pa mi je ostalo od prije.
Code:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double a;

    a=pow(2.0,64.0)-1.0;

    cout<<a<<endl;
    
    system("PAUSE");
    
    return 0;
}



Sad radi, ali opet ispisuje rezultat u obliku 1.84467e+19

Ja bi htio da se rezultat ispise u cjelosti, znaci, 18446744073709551615.
Re: Pomoc oko c++ programa - Izumitelj igre sah 26.09.2005. u 09:55 · pre 256 meseci #20
Rezultat ne samo da nije tacan, nego i ne moze da se zapise u celosti u double.
Double kao i float, koristi priblizne vrednosti za zapis brojeva, mada je dosta precizniji
od float-a, nikada nece biti dovoljno precizan za ovakve racune.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme