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

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

Войти
Регистрация
Восстановить пароль
 
Vladimir4720
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 17
#1

Считывание чисел в строке. С++ - C++

04.01.2014, 17:38. Просмотров 339. Ответов 2
Метки нет (Все метки)

Программа считывает арифметическое выражение (только сложение и вычитание) в формате строки и выводит результат. Но требуется считывать числа и цифры, а считываются только цифры. Например: "240-186+53-12" считывает как "2-1+5-1". Прошу помочь с исправление кода. scanf и sprintf использовать НЕЛЬЗЯ

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include"stdafx.h"
#include"iostream"
#include"string"
 
using namespace std;
 
void main()
{
int k,n,fl;
char s[20];
int sum;
 
setlocale(LC_ALL, "Russian");
cout<<"Введите арифметическое выражение: ";
cin>>s;
n=strlen(s);
sum=0;
k=0;
if(s[0]!='-') 
{
    sum+=s[0]-'0'; 
    k=1;
}
 
 
fl=0;
do
{
for(int i=k;i<n;i++)
if((s[i]>'0') && (s[i]<='9'))
{
    if(s[i-1]=='+')
    {
        sum+=s[i]-'0'; 
        fl=1;
    }
 if(s[i-1]=='-')
 {
     sum-=s[i]-'0'; 
     fl=1; 
 }
}
}
while (fl!=1);
 
setlocale(LC_ALL, "Russian");
cout<<"\nОтвет:"<<sum;
cin.get();
cin.ignore();
   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2014, 17:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание чисел в строке. С++ (C++):

Строковый ввод-вывод и считывание последнего слова в строке - C++
Добрый вечер. Возник вопрос по следующей задаче: &quot;1) Скопировать из файла F1 в файл F2 строки, начиная с 4. 2) Подсчитать количество...

Считывание чисел - C++
Здравствуйте уважаемые форумчани. Помогите новичку в с++) Требуется считать числа с плавающей запятой в массив не зная их количества...

Считывание чисел в массив - C++
Чот никак не получаецо считать из файла числа в массив. Тоесть есть например int massiv; И фаил inptu.txt содержания 1256845365. ...

Считывание нескольких чисел - C++
Суть стоящей передо мной задачи такова - мне нужно ввести несколько чисел через пробел, например 1 12 49 2 (их количество заранее...

Считывание комплексных чисел - C++
скажем если в с я считываю комплексные числа так: scanf(&quot;%d+%di&quot;,&amp;a1,&amp;b1); как это сделать в с++? покажите на...

считывание потока чисел - C++
здраствуйте:) такая вот задачка http://acm.timus.ru/problem.aspx?space=1&amp;num=1001 а вот мой код #include&lt;iostream&gt; #include&lt;vector&gt; ...

2
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
04.01.2014, 18:34 #2
Vladimir4720 Я не проверял но по идее должно работать,
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include"stdafx.h"
#include"iostream"
#include"string"
#include<vector>
#include <sstream>
 
using namespace std;
 
void main()
{
    int k,n,fl;
    char s[20];
    int sum;
 
    setlocale(LC_ALL, "Russian");
    cout<<"Введите арифметическое выражение: ";
    cin>>s;
    n=strlen(s);
    sum=0;
    k=0;
 
 
    int pos = 0;
    string * str = new string[n];
    string * str1 = new string[n-1];
    int count = 0;
    int count1 = 0;
    for(int i= 0;i<n;i++)
    {
        if(s[i]!='+' && s[i]!='-')
            str[count]+=s[i];
        else
        {
            count++;
            str1[count1]+=s[i];
            count1++;
        }
 
 
    }
 
 
 
    for(int i=0;i<count1;i++)
    {
        if(str1[i] == "+"){
            sum+=atoi(str[i].c_str()) + atoi(str[i+1].c_str());
            ostringstream ost;
            ost << sum;
            str[i] = ost.str();
            str[i+1]='\0';
        }else
        if(str1[i] == "-"){
            sum+=atoi(str[i].c_str()) - atoi(str[i+1].c_str());
            ostringstream ost;
            ost << sum;
            str[i] = ost.str();
            str[i+1]='\0';
        }
    }
 
    setlocale(LC_ALL, "Russian");
    cout<<"\nОтвет:"<<sum;
    cin.get();
    cin.ignore();
 
}
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.01.2014, 19:25 #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
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
    string str = "240-186+53-12";
 
    setlocale(LC_ALL, "Russian");
    //cout << "Введите арифметическое выражение: ";
    //getline(cin, str);
 
    int sum;
    int n;
    char ch;
    
    stringstream s(str);
    
    s >> sum >> ch;
    while (s >> n)
    {
        switch (ch)
        {
            case '+':
                sum += n;
                break;
            case '-':
                sum -= n;
                break;
        }
        s >> ch;
    }
 
    cout << "\nОтвет: " << sum;
 
    cin.get();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2014, 19:25
Привет! Вот еще темы с ответами:

считывание строк и чисел. - C++
Доброго времени суток. Столкнулся с проблемой считывания чисел и строк. Используются только &lt;string&gt; и &lt;iostream&gt;. Необходимо вначале...

Считывание отрицательных чисел из файла - C++
Собственно как считать из файла отрицательное число? Положительные числа считываются нормально, при считывание отрицательных программа...

Считывание чисел из файла в массив - C++
Делая расчетку, запнулся на считывании данных :cry: Имеется файл вида n m 2 3 2 5 1 5 Например: 3 3

Считывание чисел до нажатия Enter - C++
Нужна функция, благодаря которой цикл будет выполнятся до нажатия Enter.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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