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

Pomoc oko c++ programa - Izumitelj igre sah

[es] :: C/C++ programiranje :: Pomoc oko c++ programa - Izumitelj igre sah

Strane: 1 2

[ Pregleda: 8145 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

danio
Danijel K
nema sanse
Varsava, Poljska

Član broj: 67203
Poruke: 50
*.acn.waw.pl.



Profil

icon Re: Pomoc oko c++ programa - Izumitelj igre sah26.09.2005. u 11:19 - pre 225 meseci
Rezultat je tocan, ali reprezentacija mozda nije onakva da bi zadovoljila svakoga.
Ako ti se to ne svidja probaj ovo:
Code:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    unsigned long long a=0;

    a--;

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


Rezultat je tocan.
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Pomoc oko c++ programa - Izumitelj igre sah26.09.2005. u 20:41 - pre 225 meseci
E pa nema tu lijeka, ni 64-bitni int ne moze spremiti taj broj u cijelosti, pa zato potrazi alternativni razred za rad sa velikim brojevima.
 
Odgovor na temu

dinamozagreb

Član broj: 39919
Poruke: 28
*.cmu.carnet.hr.



Profil

icon Re: Pomoc oko c++ programa - Izumitelj igre sah26.09.2005. u 20:54 - pre 225 meseci
Citat:
NrmMyth: E pa nema tu lijeka, ni 64-bitni int ne moze spremiti taj broj u cijelosti, pa zato potrazi alternativni razred za rad sa velikim brojevima.


Nema lijeka ??

Evo vam rjesenja:

Code:

#include<stdio.h>
#include<math.h>
int main(){
double brojac=1;
for (int i=1; i<64; i++) brojac+=pow(2,i);
printf("\n Broj zrna je: %.0f",brojac);
return 0;
}


Program ispise rezultat 18446744073709551620, ( a pravo rjesenje je 18446744073709551615), sto mislim da je vrlo tocno za razliku od 1.84467e+19



 
Odgovor na temu

danio
Danijel K
nema sanse
Varsava, Poljska

Član broj: 67203
Poruke: 50
*.acn.waw.pl.



Profil

icon Re: Pomoc oko c++ programa - Izumitelj igre sah26.09.2005. u 21:54 - pre 225 meseci
Zasto ne pogledate ovaj program koji sam gore napisao?! On ispisuje tocan rezultat! long long jest 64-bita. Ako napises sizeof(long long) dobit ces odgovor 8 bajta iliti 64 bita. Nazalost moj kompilator ne moze ici dalje i iskompilirati np. long long long, ali 64 bita je dovoljno, zato sto je odgovor na ovaj zadatak tocno najveca brojka koja stane u 64 bita. Naravno radi se o brojkama unsigned.
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Pomoc oko c++ programa - Izumitelj igre sah27.09.2005. u 09:57 - pre 225 meseci
Evo kako ja vidim resenje problema:
Code:

// Ivan Bulic, Dev-Cpp 4.9.9.1, Windows 2000
#include <iostream>
using namespace std;
int main(){
    unsigned long long suma = 1, p = 1;
    for (int i=0;i<64;i++){
        if (i>0){
            p *= 2;
            suma += p;
        }
        cout.width(3);    cout << i+1  <<"\t";    
        cout.width(20);   cout << p    << "\t";
        cout.width(20);   cout << suma <<endl;
    }
    system("PAUSE");
    return 0;
}


Propusti dosadasnjih resenja su koriscenje tipa double i funkcije pow.
Tip double omogucava tacnost do nekih 15 cifara u rezultatu.
Znaci, bez obzira sto tip double moze da prikaze jos vece brojeve, neces moci da postignes tacan rezultat.
Cak i ako se uzme da je long double a; nece se dobiti dobar rezultat jer su argumenti funkcije pow tipa double.

Gornji primer daje na konzoli tezultat:
Code:

  1                        1                       1
  2                        2                       3
  3                        4                       7
  4                        8                      15
  5                       16                      31
  6                       32                      63
  7                       64                     127
  8                      128                     255
  9                      256                     511
 10                      512                    1023
 11                     1024                    2047
  .
  .
  .
 56        36028797018963968       72057594037927935
 57        72057594037927936      144115188075855871
 58       144115188075855872      288230376151711743
 59       288230376151711744      576460752303423487
 60       576460752303423488     1152921504606846975
 61      1152921504606846976     2305843009213693951
 62      2305843009213693952     4611686018427387903
 63      4611686018427387904     9223372036854775807
 64      9223372036854775808    18446744073709551615
Press any key to continue . . .

 
Odgovor na temu

[es] :: C/C++ programiranje :: Pomoc oko c++ programa - Izumitelj igre sah

Strane: 1 2

[ Pregleda: 8145 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

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