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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
#1

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

24.01.2014, 12:31. Просмотров 571. Ответов 8
Метки нет (Все метки)

С клавиатуры вводятся 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение вещественных чисел из строки (C++):

Из строки получить массив вещественных чисел - C++
Здравствуйте! Завтра экзамен, а мыслей нет... на СИ надо написать простенькую программу используя указатели при работе с массивами,...

Перевод символьной строки в массив вещественных чисел - C++
Помогите написать программу перевода введенной с клавиатуры строки в массив вещ-ых чисел, не используя scanf. Чем больше пишу, тем больше...

Чтение положительных чисел из строки - C++
Здравствуйте. Есть задача: дана строка с числами, разделенными пробелами. Необходимо из строки сохранить положительные числа. Разделение...

Создать класс для работы с двумерным массивом вещественных чисел. В двоичной матрице найти совпадающие строки - C++
прошу помочь с решением задачи Создать класс для работы с двумерным массивом вещественных чисел. Разработать следующие элементы класса: ...

Среди 5 вещественных чисел найти количество чисел, принадлежащих отрезку от -5 до 7 - C++
Написать программу которая среди 5 вещественных чисел находит кол-во чисел принадлежащих отрезку от -5 до 7

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20 - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
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
Эксперт С++
5097 / 1535 / 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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;?
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
24.01.2014, 21:19 #9
Потому что не охота сваливать все функции и переменные в одно пространство имен.
Я не хочу чтоб компилятор что-то там дописал и оказалось, что моя функция, названная вполне логично, sort, оказалась бы перегрузкой или не вызывалась бы. Что уж там говорить о насущной проблеме всех VS-ников - max и min как макросы.
А если в проекте используется более одной библиотеки, начинаются конфликты, трудноуловимые ошибки. Когда все вроде работает, но функцию вызывает не ту, что надо. И ведь не ругнется.

Добавлено через 54 секунды
Т.е. я предпочитаю держать все под своим контролем, а не перекладывать столь важную вещь как расстановка scope-ов на глупую машину.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 21:19
Привет! Вот еще темы с ответами:

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.

Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3 - C++
Помогите, пожалуйста. Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3.

Ввести целое число и набор из вещественных чисел, вывести сумму и произведение чисел из набора - C++
ввести целое число N (больше 0) и набор из N вещественных чисел вывести сумму и произведение чисел из данного набора

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 - C++
В последовательности вещественных чисел подсчитать произведение чисел, кратных 3.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.01.2014, 21:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru