Code:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
char *cifre[]={"nula","jedan","dva","tri","cetiri","pet","sest","sedam",
"osam","devet","deset","tacka"};
char znak[]="minus";
class transform
{
public:
transform(double=0.0);
transform(transform&);
friend char *text(transform);
private:
double broj;
char *text(transform x)
{
char *rezultat=NULL;
double skala;
int ukupnaduzzapisa=0;
char skladiste[500];//privremeni zapis
char strzapis[100];//prvo belez. string pa ga smest. sa desna
int pomdec,cifra; //da uklonimo eventualne nule
//ako je broj<0
double broj=x.broj;
int dec=10; //broj decimala
zapis=strzapis;
if(br<0.0)
{
[red]for(int prolaz=0;*(znak+prolaz);prolaz++,ukupnaduzzapisa++) [/red] //not inline
{skladiste[ukupnaduzzapisa]=znak[prolaz];
br=-br;}
}
pomdec=dec;
skala=2.0;
while (pomdec--) skala*=10.0;
br+=1.0/skala;//na broj dodata greska na planiran. decimali sa ulaza
pomdec=0; //broji broj cifara pre dec. tacke
skala=1.0; //1.0 jer se tada uzima da je bas pokretni zarez
while (br>=skala)
{
skala*=10.0;
pomdec++;
}
if (pomdec==0) *zapis++='0';//kada je samo 0 pre dec. tacke
//ovaj deo formira cifre pre dec. tacke
while (pomdec==)
{
skala=floor(0.5+skala*0.1); //floor je ceo deo
cifra=(int)(br/skala);
*zapis++=cifra+'0';
br-=(double)cifra*skala;
}
if (dec<=0)
{
*zapis=0;
return NULL;
}
//tacka
*zapis++='.';
while (dec--)
{
br*=10.0;
cifra=(int)br;
*zapis++=cifra+'0';
br-=cifra;
}
while (*(zapis-1)=='0') zapiz--;
*zapis=0;
for (int j=0;*(strzapis+j);j++)
if ((*strzapis+j) !='-') && (*(strzapis+j) != '.'))
for(int prolaz=0;*(cifra[*(strzapis+j)-'0']+prolaz;prolaz++,ukupnaduzzapisa++)
skladiste[ukupnaduzzapisa]=*(cifre[*(strzapis+j)-'0']+prolaz;
else
if(*(strzapis+j)=='.')
for(int prolaz=0;*(cifre[10]+prolaz);prolaz++,ukupnaduzzapisa++)
skladiste[ukupnaduzzapisa]=*(cifre[10]+prolaz);
ukupnaduzzapisa--;
skaldiste[ukupnaduzzapisa]='\0';
rezultat=new char[strlen(skladiste)+1];
strcpy(rezultat,skladiste);
return rezultat;
}
[red] transform::transform(double br) : broj(br) {} //ne prihvata ovako
transform::transform(transform &drugi) : broj(drugi.broj) {} [/red]
int main()
{
transform x(-12.45);
char *p=text(x);
printf("%s\n",p);
delete p;
transform y=x;
system("PAUSE");
return 0;
}
Pomoc :-(