[ Edo_M @ 16.01.2005. 15:47 ] @
Pozdrav raja. Da li bi neko mogao da mi pomogne oko prevoda koda iz C u C++.
Molim da pokušate. Hvala

Inače kod u C računa sqrt(2) na 2400 decimala

Code:


main(){int a=1000,b=0,c=1413,d,f[1414],n=800,k;
for(;b<c;f[b++]=14);
for(;n--;d+=*f*a,printf("%.3d",d/a),*f=d%a)
for(d=0,k=c;--k;d/=b,d*=2*k-1)f[k]=(d+=f[k]*a)%(b=100*k);}



Hvala.
[ zvrba @ 16.01.2005. 16:15 ] @
cuj, ako se kompajlira u C++ kompajleru, onda *je* C++. dakle:

na vrh stavi

#include <stdio.h>
moras staviti da main vraca int
kao zadnji statement maina moras staviti return 0;

i mislim da ce to bit to.
[ Edo_M @ 16.01.2005. 16:23 ] @
Ma kontam ja to jarane i uradio sam ja to tako ali me zanima da li je to moguće sve prebaciti u c++. Ono bez printf i drugog čisto C++ovski. Ne razumijem kod u c a treba mi u c++
[ Marko Stankovic @ 16.01.2005. 23:45 ] @
Jedino sto treba prebaciti da bude bas u stilu c++ jeste printf(), znaci kod bi trebalo da izgleda ovako:

Code:

#include <iostream>
#include <iomanip>

using namespace std;


int main(int argc, char *argv[])
{
   int a=1000,b=0,c=1413,d,f[1414],n=800,k;
   for(;b<c;f[b++]=14);
   for(;n--;d+=*f*a, cout<<setfill('0')<<setw(3)<<d/a,*f=d%a)
   for(d=0,k=c;--k;d/=b,d*=2*k-1)f[k]=(d+=f[k]*a)%(b=100*k);
  
  return 0;
}


printf("%.3d", d/a) je ispisivao zaokruzenu vrednost deljenja i to najmanje tri cifre, znaci recimo racunamo 3/1 na ekranu bi ispisao 003, zato sam stavio manipulator setfill('0') jer u c++ se ne ispisuju te vodece nule i postavio sam sirinu na tri cifre pomocu setw(3), tako da se dobija isti efekat kao i sa printf() funkcijom. Probao sam i tvoju verziju i moju i dobio sam isti ispis, tako da je to to sto se tice pretvorbe ;)

pozdrav
[ Toxter @ 17.01.2005. 00:05 ] @
Citat:
Edo_M:
Code:


for(d=0,k=c;--k;d/=b,d*=2*k-1)f[k]=(d+=f[k]*a)%(b=100*k);}




Da li si ti pisao ovo sam ili si dobio od nekoga.
Ako si pisao sam probaj da se klonis ovakvog "ruznog" koda.
Optimizacije se mogu uraditi i na drugi nacin, i bez ovih bocnih efekata.

zvrba ti je dobro rekao to je jedno te isto u ovom slucaju, samo zavisi koji kompajler koristis.
[ BaCkSpAcE @ 17.01.2005. 23:02 ] @
Code:

   for(d=0,k=c;--k;d/=b,d*=2*k-1)f[k]=(d+=f[k]*a)%(b=100*k);
 


Ovaj kod je bas ok. Samo je potrebno malo SPACE-ova da bi bilo citljivije, ali nije ni priblizno komplikovano kako moze da se iskomplikuje neki izraz ;)
[ Edo_M @ 18.01.2005. 13:30 ] @
Veliko HVALA kolegama za pomoći