реклама на сайте
подробности

 
 
> Преобразование числа в строку, непонятки 8)
GIGAWAT
сообщение Apr 10 2007, 11:51
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 9-02-07
Из: Санкт-Петербург
Пользователь №: 25 221



Здраствуйте 8)
Есть проблема с кодом, написан под WinAVR
==========================================
#include <inttypes.h>
#include <stdlib.h>

int main()
{

long int kub;
char st[10];

int32_t calculation()
{
int tempc;
int area;
//int32_t kub;
int32_t total;
//int32_t rezult;
//int32_t sqrkub;
int32_t mux(int32_t x,int32_t y)
{
int32_t rezult;
return rezult=((x*y)/100);
}
int32_t divis(int32_t x,int32_t y)
{
int32_t rezult;
return rezult=((x*100)/y);
}
int32_t sqrk(int32_t temp)
{
int32_t iter1;
int32_t iter2;
iter1=((300+300+divis(divis(temp,300),300))*100)/300;
iter2=((iter1+iter1+divis(divis(temp,iter1),iter1))*100)/300;
}
tempc=0x7d0;
area=0x0FA;
return total=((mux(area,150)*mux(sqrk(tempc),tempc))/100);
}

while(1)
{
kub=calculation();
st=ltoa(kub,st,9); <====ВОТ СДЕСЬ ВЫДАЕТ ОШИБКУ.
}
}
=============================================================
Вот такую выдает ошибку:
../float_test.c:44: error: incompatible types in assignment

Разъясните, кто может, а то я уж и размер строки менять пробовал и так, вобще не работает сволоч cranky.gif
Заранее спасибо 8)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Apr 11 2007, 00:58
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Может кому пригодится (для обратного преобразования, строки в число) ;>.. Ничего нового в ней нет:

U8 - unsigned char
S32 - signed long

Код
/******************************************
* Conversion routine                      *
* --> pStr, pointer to AsciiZ string      *
* --> pResult - pointer to signed result  *
* <-- returns: 0 if conversion succeed    *
    position of incorrect digit otherwise *
******************************************/
U8 StrToInt(U8 *pStr, S32 *pResult)
{
    S32 temp = 0;
    U8 sign = 0;

    if (!(pStr && pResult))
        return 0xFF; // invalid pointer
    else
    {
        U8 ch;
        U8 digit = 0;
        if (*pStr == '-')
        {
            sign = TRUE;
            pStr++;
        }
        while(*pStr)
        {
            ch = *pStr++;
            digit += 1;
            if (digit > 10)
            { // the string is too long to be U32/S32 value
                return digit;
            }
            temp *= 10;
            if ( (ch >= 0x30) && (ch < 0x3A) )
            {
                temp += ch - 0x30;
            }
            else // conversion error
            { // return problematic digit num from 1
                return digit;
            }
        }
    }
    if (sign)
        *pResult = -temp;
    else
        *pResult = temp;
    return 0;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 12:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016