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

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

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

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

04.01.2014, 17:38. Просмотров 314. Ответов 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();
   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2014, 17:38     Считывание чисел в строке. С++
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
564 / 532 / 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();
 
}
alsav22
5415 / 4811 / 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();
}
Yandex
Объявления
04.01.2014, 19:25     Считывание чисел в строке. С++
Ответ Создать тему
Опции темы

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