![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] String to double |
|
C/C++ - [решено] String to double
|
Пользователь Сообщения: 64 |
Доброго времени суток, ув. форумчане! Нужно написать ф-цию которая строку типа 1:0.2:2 разбивает на переменные типа double (float) со значениями 1, 0.2, 2. Вся проблема в том что в десятичном виде отбрасывает дробную часть.
int input_interval() { string interval, interval_part[3]; getline(cin, interval, '\n'); for (int i = 0, j = 0, from = 0; i <= interval.length(); i++) if ((interval[i] == ':') || (i == interval.length())) { interval_part[j] = interval.substr(from, i - from); from = i + 1; j++; } x1 = atof(interval_part[0].c_str()); dx = atof(interval_part[1].c_str()); x2 = atof(interval_part[2].c_str()); return 0; } |
|
Отправлено: 00:41, 06-04-2014 |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать В фортране есть функции FRACTION, FLOOR См.
Справочное руководство по языку Fortran 95 Выделение дробной части в Fortran И там эта проблема решается довольно просто, а вот есть ли такие на Сях мне невеведомо...???... --- Поищите... |
Отправлено: 09:11, 06-04-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Так пойдёт?
... String interval = "1:0.2:2"; // Тест-строка TStringList *lDigital = new TStringList(); // Сюда будем сохранять разбиваемую строку по знаку ":" TSysCharSet chPoint; chPoint << ':'; // Объявляем разбиваемый символ, можно например указать несколько << '#' << ':' ExtractStrings(chPoint, chPoint, interval.c_str(), lDigital); // разбиваем нашу строку по заданому символу в chPoint и сохраняем все разбивки в массив строк double *array = new double[lDigital->Count]; // Создаём динамический массив для double for(int i = 0; i < lDigital->Count; i++) // обходим циклом массив строк array[i] = lDigital->Strings[i].ToDouble(); // в array наши числа delete lDigital; delete array; ... //Строки, использование strtok #include <iostream.h> using std::cout; using std::cin; using std::endl; #include <cstring.h> int main() { char string[] = "ETO PREDLOGENIE SODERGIT PYAT LEKSEM"; char *tokenPtr; int z; cout << "STROKA RAZBIVAETSYA NA LEKSEMI:\n" << string <<"\n\nLEKSEMI: \n\n"; tokenPtr = strtok(string, " "); // Разбивка предложения по пробелу while(tokenPtr != NULL){ cout << tokenPtr << '\n'; // Вместо вывода на экран, сохраняйте в массив. tokenPtr = strtok(NULL, " "); } cin >> z; return 0; } //--------------------------------------------------------------------------- Цитата Prof:
|
|
------- Отправлено: 15:59, 06-04-2014 | #3 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Разобрался, вся проблема была в форме представления десятичного числа. 0,1 переводит нормально, а в 0.1 отбрасывает дробную часть
|
Отправлено: 21:56, 06-04-2014 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Double Commander 0.5.3 + Portable | OSZone Software | Новости программного обеспечения | 0 | 25-02-2012 13:30 | |
Java - проблема с Double в Scanner'е | Kremlin | Программирование и базы данных | 2 | 14-10-2011 21:40 | |
Double Driver 4.0 | OSZone Software | Новости программного обеспечения | 0 | 14-04-2010 22:30 | |
Double Vision 3.0 | OSZone Software | Новости программного обеспечения | 0 | 08-04-2010 16:30 | |
Как округлить double? | Sharkky | Программирование и базы данных | 2 | 23-09-2003 09:27 |
|