Отговори на тема  [ 14 мнения ] 
input float-pointing numbers problem 
Автор Съобщение
Мнение input float-pointing numbers problem
Íÿêîé çíàåëè êàê ñå ðåàëèçèðà ïðîâåðêà, äàëè ïîòðåáèòåëÿ å âúâåë ÷èñëî ñàñ çàïåòàÿ èëè ñ òî÷êà íà Ñ++. Çàùîòî 3,4 ãî èíòåðïðåòèðà êàòî 3-êà è íå äàâà ñàîáùåíèå çà ãðåøêà.


Съб Дек 11, 2004 2:36 am
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Къде го въвежда? :)


Съб Дек 11, 2004 10:20 am
Профил
Мнение konsole
Ñòàâà âúïðîñ çà åëåìåíòàðíà ïðîãðàìêà êîÿòî ñìÿòà arcoth(x), áåç ãðàôè÷åí èíòåðôåéñ, âñè÷êî å äèðåêòíî íà êîíñîëàòà.
Ïðîãðàìàòà èñêà ñòîéíîñò íà õ:
cin >> õ;
ïîòðåáèòåëÿ âçâåæäà ñòîéíîñòòà îò êëàâèàòóðàòà è òîâà å.
cin.fail() íå âúðøè ìíîãî ðàáîòà çàùîòî çàäà÷àòà å àêî ïîòðåáèòåëÿ âúâåäå ÷èñëîòî ñàñ çàïåòàÿ, ïðîãðàìàòà äà ãî èíòåðïðåòèðà âñå åäíî ÷å å ñ òî÷êà.
Òîâà å,
áëÿãîäàðÿ ïðåäâàðèòåëíî


Съб Дек 11, 2004 2:11 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ето ти една примерна програмка:

Код:
#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, можеш да си направиш какъвто искаш филтър.


Пон Дек 13, 2004 11:01 am
Профил
Мнение :)
Ðåêîíñòðóêòîð, áëàãîäàðÿ!


Пон Дек 13, 2004 1:33 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
за нищо :)


Пон Дек 13, 2004 1:46 pm
Профил
Мнение 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 3:57 am
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Просто внимавай при copy-paste. Стават такива работи. :)


Вто Дек 14, 2004 10:03 am
Профил
Мнение Îùå åäèí âàïðîñ
Òúé êàòî íÿìàì ãîëÿì îïèò ñ ïèñàíåòî íà ïðîãðàìè ñëåä êàòî ïðåãëåäàõ ñîðñà ïî÷åòîõ ìàëêî ùî å òîâà ïîèíòåð :) èäåÿòà íàèñòèíà å åëåãàíòíà, íî ñè ìèñëÿ íå ìîæå ëè äà ãî îïðîñòèì ìàëêî. Íàêðàÿ ñå ïîëó÷è:

#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:10 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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

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


Вто Дек 14, 2004 1:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Готово, работим за статистиката :lol:
за производителноста си напално прав, при положение че използвам и код от този вид

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

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


Вто Дек 14, 2004 1:46 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Въпроса беше, че няма смисъл да извърташ всички 50 елемента на масива. Достатъчно е да спреш, като срещнеш 0

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


Вто Дек 14, 2004 2:00 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Ное 16, 2004 4:43 pm
Мнения: 85
Местоположение: София
Мнение 
Може да пробваш и това:
Код:
float conv (char *s) {
char *p;

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


Вто Дек 14, 2004 8:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Прав си, че няма смисъл да се преобразуват всички запетайки. :)


Сря Дек 15, 2004 12:19 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: jordan-bg и 8 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни