Interpretacja funkcji atof, atoi, itoa

0

Witam,

Prosiłbym o rozpisanie jak postępują kolejno algorytmy w funkcjach atof, ftoa, atoi oraz itoa. Mam na myśli rozpisanie w formie pseudokodu. Poniżej zamieszczę kod funkcji:

ATOI

 
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}

ITOA

 
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}

ATOF

 
float atof_new(char* string)
{ unsigned int i=0, minus=0, lenght=0, pos=0;
long tmp1=0; float f=0;
lenght=strlen(string); 

if (string[i]=='-') 
{minus=1; i++;}

while(i<lenght)
{
if (string[i]!='.')
{tmp1*=10;
tmp1+=(string[i]-0x30);
}else { pos=i; break;}
i++;
}

if (pos>0) 
{while (lenght>(pos+1))
{ lenght--; 
f+=(string[lenght]-0x30);
f*=0.1; } 
}

f+=tmp1;
if (minus==1) f*=-1.0;

return f; 
}

FTOA

 
void ftoa_new(float data,char *string, int k)
{
long i, v, temp, x,y, minusas=0, num_skaic=0, nr=0; float c=1;
for (i=0; i<k; i++)
{c*=10;
}
temp=data*c;
data=(float)temp/c;
if(data<0){
data=-data;
minusas=1;
}
x=data;
y=data*c;

temp=x;
while(temp > 0) {
nr++;
temp/=10;
}
if (nr==0) nr=1;
if (minusas==1) nr++;
temp=abs(y-(x*c));
for (i=0;i<=11;i++)string[i]=0;
for (i=(nr+k);i>nr;i--)
{
v=temp%10;
temp/=10;
string[i]=v+0x30;
}
string[i]='.';
temp=data;
i--;
if (temp!=0)
for (k=i;k>=0;k--){
{v=temp%10;
temp/=10;
if ((temp==0)&(v==0)){ string[k]=0x2D; break;}
string[k]=v+0x30;
}}else{ string[i]=0x30; if (minusas==1) string[--i]=0x2D;}
}

Wiem, że wygląda to jak szukanie "gotowca", ale mam takie zadanie do wykonania, w internecie nic sensownego nie znalazłem, a sam kodu rozpisać nie potrafię.

Z góry dzięki za pomoc,

0

Rozpisana ATOI do sprawdzenia:

  1. Pętla sprawdza kolejne znaki
  2. Kiedy trafi na cyfrę:
  3. Mnoży ją razy 10 i dodaję ją do jedności
  4. Jeżeli nie trafi na cyfrę kończy pętlę.

Najbardziej prosiłbym o rozpisanie ATOF i FTOA.

1 użytkowników online, w tym zalogowanych: 0, gości: 1