Форум программистов, компьютерный форум CyberForum.ru

Чтение вещественных чисел из строки - C++

Восстановить пароль Регистрация
 
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 12:31     Чтение вещественных чисел из строки #1
С клавиатуры вводятся 2 строки, содержащие вещ. числа. Надо найти результат умножения этих чисел попарно. Без использования функций scanf и sscanf.
Есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    string str1, str2;
    cout << "First: ";
    getline(cin, str1);
    cout << "Second: ";
    getline(cin, str2);
    istringstream ist1(str1), ist2(str2);
    for (string s1, s2; ist1 >> s1 && ist2 >> s2;
        cout << atof(s1.c_str()) * atof(s2.c_str()) << " ");
system("pause");
}
Но он вещ. числа читает, как целые. Подскажите, как его можно доработать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 12:31     Чтение вещественных чисел из строки
Посмотрите здесь:

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 C++
Из строки получить массив вещественных чисел... C++
C++ Чтение положительных чисел из строки
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. C++
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
24.01.2014, 15:45     Чтение вещественных чисел из строки #2
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main ()
{
 string str1, str2;
    cout << "First: ";
    getline(cin, str1);
    cout << "Second: ";
    getline(cin, str2);
    istringstream ist1(str1), ist2(str2);
    float first, second;
    
    ist1 >> first;
    ist2 >> second;
    cout << "first = " << first << " second = " << second << endl;
 
  system("PAUSE");
  return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
24.01.2014, 15:52     Чтение вещественных чисел из строки #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::string firstString;
    std::cout << "First string: ";
    std::getline(std::cin, firstString);
 
    std::string secondString;
    std::cout << "Second string: ";
    std::getline(std::cin, secondString);
 
    std::stringstream firstStream(firstString);
    std::stringstream secondStream(secondString);
    
    std::string firstStringNumber, secondStringNumber;
    while (firstStream >> firstStringNumber && secondStream >> secondStringNumber) {
        std::cout << firstStringNumber << " * " << secondStringNumber << " = ";
        std::cout << (atof(firstStringNumber.c_str()) * atof(secondStringNumber.c_str())) << std::endl;
    }
 
    std::system("pause");
    return 0;
}
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 16:18  [ТС]     Чтение вещественных чисел из строки #4
Расскажите, пожалуйста, как работает stringstream. Никак не могу понять
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.01.2014, 18:13     Чтение вещественных чисел из строки #5
Цитата Сообщение от Bright Color Посмотреть сообщение
Расскажите, пожалуйста, как работает stringstream.
Для начала стоит понять, что std::stringstream наследуется от std::iostream, который в свою очередь тоже наследуется от некоторых классов. Поэтому чтобы понять как работает stringstream имеет смысл разобраться с работой его базовых классов.
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 20:15  [ТС]     Чтение вещественных чисел из строки #6
Спасибо
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,422
24.01.2014, 20:57     Чтение вещественных чисел из строки #7
Цитата Сообщение от Bright Color Посмотреть сообщение
Расскажите, пожалуйста, как работает stringstream
Вот вам небольшой примерчик с комментариями:
Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС)
По сути, это буфер между вводом и выводом. Мы инициализируем его и работаем как будто с объектами iostream.
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 21:10  [ТС]     Чтение вещественных чисел из строки #8
Вот еще вопрос, зачем использовать std::, если есть using namespace std;?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 21:19     Чтение вещественных чисел из строки
Еще ссылки по теме:

C++ Перевод символьной строки в массив вещественных чисел
C++ Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3
Создать класс для работы с двумерным массивом вещественных чисел. В двоичной матрице найти совпадающие строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,422
24.01.2014, 21:19     Чтение вещественных чисел из строки #9
Потому что не охота сваливать все функции и переменные в одно пространство имен.
Я не хочу чтоб компилятор что-то там дописал и оказалось, что моя функция, названная вполне логично, sort, оказалась бы перегрузкой или не вызывалась бы. Что уж там говорить о насущной проблеме всех VS-ников - max и min как макросы.
А если в проекте используется более одной библиотеки, начинаются конфликты, трудноуловимые ошибки. Когда все вроде работает, но функцию вызывает не ту, что надо. И ведь не ругнется.

Добавлено через 54 секунды
Т.е. я предпочитаю держать все под своим контролем, а не перекладывать столь важную вещь как расстановка scope-ов на глупую машину.
Yandex
Объявления
24.01.2014, 21:19     Чтение вещественных чисел из строки
Ответ Создать тему
Опции темы

Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru