Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

input float-pointing numbers problem
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=215
Страница 1 от 1

Автор:  HCL [ Съб Дек 11, 2004 2:36 am ]
Заглавие:  input float-pointing numbers problem

Íÿêîé çíàåëè êàê ñå ðåàëèçèðà ïðîâåðêà, äàëè ïîòðåáèòåëÿ å âúâåë ÷èñëî ñàñ çàïåòàÿ èëè ñ òî÷êà íà Ñ++. Çàùîòî 3,4 ãî èíòåðïðåòèðà êàòî 3-êà è íå äàâà ñàîáùåíèå çà ãðåøêà.

Автор:  Реконструктор [ Съб Дек 11, 2004 10:20 am ]
Заглавие: 

Къде го въвежда? :)

Автор:  HCL [ Съб Дек 11, 2004 2:11 pm ]
Заглавие:  konsole

Ñòàâà âúïðîñ çà åëåìåíòàðíà ïðîãðàìêà êîÿòî ñìÿòà arcoth(x), áåç ãðàôè÷åí èíòåðôåéñ, âñè÷êî å äèðåêòíî íà êîíñîëàòà.
Ïðîãðàìàòà èñêà ñòîéíîñò íà õ:
cin >> õ;
ïîòðåáèòåëÿ âçâåæäà ñòîéíîñòòà îò êëàâèàòóðàòà è òîâà å.
cin.fail() íå âúðøè ìíîãî ðàáîòà çàùîòî çàäà÷àòà å àêî ïîòðåáèòåëÿ âúâåäå ÷èñëîòî ñàñ çàïåòàÿ, ïðîãðàìàòà äà ãî èíòåðïðåòèðà âñå åäíî ÷å å ñ òî÷êà.
Òîâà å,
áëÿãîäàðÿ ïðåäâàðèòåëíî

Автор:  Реконструктор [ Пон Дек 13, 2004 11:01 am ]
Заглавие: 

Ето ти една примерна програмка:

Код:
#include <iostream.h>
#include <math.h>

float Str2Float(char* pszBuff)
{
   char* pTest = pszBuff;
   
   do
   {
      if (*pTest == ',') *pTest = '.';
   }
   while(*pTest++);

   return atof(pszBuff);
}

int main(int argc, char* argv[])
{
   char strNum[50];
   float f;

   cin >> strNum;
   
   f = Str2Float(strNum);

   cout << f << "\n";

   return 0;
}



Ако доразвиеш Str2Float, можеш да си направиш какъвто искаш филтър.

Автор:  HCL [ Пон Дек 13, 2004 1:33 pm ]
Заглавие:  :)

Ðåêîíñòðóêòîð, áëàãîäàðÿ!

Автор:  Реконструктор [ Пон Дек 13, 2004 1:46 pm ]
Заглавие: 

за нищо :)

Автор:  HCL [ Вто Дек 14, 2004 3:57 am ]
Заглавие:  Ei POLUDQWAM!!!!!!

naprawo 6te otka4a, 2 4asa e we4e a g++ mi dawa nqkakwa gre6ka deto me pobarkwa:
3.cpp:23: error: stray '\240' in program
3.cpp:23: error: stray '\240' in program
3.cpp:24: error: stray '\240' in program
3.cpp:24: error: stray '\240' in program
3.cpp:26: error: stray '\240' in program
3.cpp:26: error: stray '\240' in program
3.cpp:28: error: stray '\240' in program

koda e napalno 4ist. Prinudih se da iztriq wsi4ko i da ostawq samo edna definicia na int i pak mi dawa gre6ka !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
posle napisah programata na edin red bez nito interwal i proraboti. Towa da ne e nqkakw bug w kwrite-a ili az ne6to? nqkoi sblaskwal li se e s problema?

Автор:  Реконструктор [ Вто Дек 14, 2004 10:03 am ]
Заглавие: 

Просто внимавай при copy-paste. Стават такива работи. :)

Автор:  HCL [ Вто Дек 14, 2004 1:10 pm ]
Заглавие:  Îùå åäèí âàïðîñ

Òúé êàòî íÿìàì ãîëÿì îïèò ñ ïèñàíåòî íà ïðîãðàìè ñëåä êàòî ïðåãëåäàõ ñîðñà ïî÷åòîõ ìàëêî ùî å òîâà ïîèíòåð :) èäåÿòà íàèñòèíà å åëåãàíòíà, íî ñè ìèñëÿ íå ìîæå ëè äà ãî îïðîñòèì ìàëêî. Íàêðàÿ ñå ïîëó÷è:

#include <iostream>
#include <cmath>

using namespace std;

const int c = 50;

float conv(char str[c])
{ int i = 0;

while (i<c)
{ if (str[i]==',')
{str[i]= '.';}
i++;
}

return atof(str);
}

int main()
{ char num[c];
float f;

cin >> num;

f = conv(num);

cout << f << "\n";

return 0;
}

ïðèíöèïà å ñàùèÿ, ñàìî äåòî çàîáèêàëÿì ïîèíòåðà. Ñìÿòàø ëè, ÷å èìà íåùî ãðåøíî â êîíöåïöèÿòà? Ñåãà ñå ó÷à äà ïèøà ñîðñ è ñå ñòàðàÿ ìàëêî ïîíå äà ñè ñúçäàì ñòèë íà ïèñàíå òàêà ÷å âñÿêàêâè êîìåíòàðè è çàáåëåæêè ñà äîáðå äîøëè.
Áëàãîäàðÿ çà âíèìàíèåòî.

Автор:  Реконструктор [ Вто Дек 14, 2004 1:21 pm ]
Заглавие: 

Хех, ако не знаеш кво е указател, де си тръгнал. :) Тъй като паметта е един голяяям масив, най-общо казано указателят е индексът на първия елемент на подмасив в големия масив (паметта).
За твоя случай имам 2 забележки. Първо, прието е да се използва for, когато броят на итерациите е известен (по-естествено е). Второ, като се има предвид, че ANSI стринговете са null-terminated и ти не се възползваш от този факт, ще имаш безсмислена загуба на производителност.

И вземи се регистрирай, човече. :) Да дигнеш малко статистиката ;)

Автор:  HCL [ Вто Дек 14, 2004 1:46 pm ]
Заглавие: 

Готово, работим за статистиката :lol:
за производителноста си напално прав, при положение че използвам и код от този вид

for (int=0, i<10; i++)
cout << "\n";

да ми направи програмката да дава по подреден изход на екрана :). Абе има още доста работа, ама няма страшно като сам почнал :) 10х още веднаж.
Между другото като си говорим за грешки, вчера си направих пзрвата платка и таман се каних да етцвам вече и забелязах че когато сам я осветявал сам обарнал фолиото наобртно и сега имам огледален образ
на пистите на платка :oops: .... за боклука.
Е поне вече ще ънам да внимавам повече :)

Автор:  Реконструктор [ Вто Дек 14, 2004 2:00 pm ]
Заглавие: 

Въпроса беше, че няма смисъл да извърташ всички 50 елемента на масива. Достатъчно е да спреш, като срещнеш 0

Код:
do
{
    if (str[i]==',')
     { str[i]= '.'; }
}
while (str[i++])

Автор:  danov [ Вто Дек 14, 2004 8:30 pm ]
Заглавие: 

Може да пробваш и това:
Код:
float conv (char *s) {
char *p;

   if ((p = strchr (s, ','))) *p = '.';
   return atof (s);
}

Автор:  Реконструктор [ Сря Дек 15, 2004 12:19 pm ]
Заглавие: 

Прав си, че няма смисъл да се преобразуват всички запетайки. :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/