Witam
wykonałem program do zamiany tablicy znaków w zmienna double, a następnie zamieniłem go w procedurę i niestety program działa a procedura nie. Pomóżcie znaleźć błąd.
kod programu
kod procedury
tak wywołuję procedurę
newspeed - double
speed - char[16]
P.s. wiem ze są do tego funkcje ale nie umiem ich wykorzystać mimo lektury elektrody.
wykonałem program do zamiany tablicy znaków w zmienna double, a następnie zamieniłem go w procedurę i niestety program działa a procedura nie. Pomóżcie znaleźć błąd.
kod programu
for (b=0; b<16; b++)
{
if (speed[(15-b)]==0x00) {z=15-b;} // wyszukiwanie konca tablicy
if (speed[(15-b)]=='.') {w=15-b;} // wyszukiwanie przecinka
}
for (b=0; b<w; b++)
{
newspeed=(newspeed*10)+speed[b]-0x30; //zapis czesci przed przecinkiem
}
for (b=w+1; b<z; b++)
{
newspeed2=speed[b]-0x30;
for (y=0; y<(b-w); y++)
{
newspeed2= newspeed2/10; //ustawienie właściwej ilosci miejsc
// za przecinkiem
}
newspeed=newspeed+newspeed2; //zapis za przecinkiem
}
kod procedury
double chartab_to_double(unsigned char tab[16])
{
char n,m,j,u;
double wynik,wynik2;
for (n=0; n<16; n++){
if (tab[(15-n)]==0x00) {m=15-n;}
if (tab[(15-n)]=='.') {j=15-n;}
}
for (n=0; n<j; n++){
wynik=(wynik*10)+tab[n]-0x30;
}
for (n=j+1; n<m; n++){
wynik2=tab[n]-0x30;
for (u=0; u<(n-j); u++){
wynik2= wynik2/10;
}
wynik=wynik+wynik2;
}
return(wynik);
}
tak wywołuję procedurę
newspeed = chartab_to_double(speed);
newspeed - double
speed - char[16]
P.s. wiem ze są do tego funkcje ale nie umiem ich wykorzystać mimo lektury elektrody.