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

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

Войти
Регистрация
Восстановить пароль
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
#1

простейшая работа со строками - C++

28.01.2011, 18:34. Просмотров 533. Ответов 9
Метки нет (Все метки)

Дана строка вида: XOY, где X и Y – натуральные числа в десятичной системе счисления, значения которых не превышают 100, а O – один из возможных знаков математической операции: +, -, : (деление без остатка). Определите результат вычисления выражения, заданного этой строкой.
Формат входного файла

Во входном файле Input.txt содержится строка, соответствующая условию задачи.
Формат выходного файла

В выходной файл Output.txt вывести найденное число в десятичной системе счисления.
Мой код:
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
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string S;
    cin>>S;
if(S[1]=='+')
{
cout<<(int)S[0]+int(S[2])<<endl;
}
else
{
if(S[1]=='-')
{
    cout<<int(S[0])-int(S[2])<<endl;
}
else
    if(S[1]==':')
    {
    cout<<int(S[0])/int(S[2])<<endl;
    }
}
    system("pause");
}
но когда я начинаю тестить, 7:2=1, 7-2=5(единственное правильное), 7+2=105;
в чём ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2011, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос простейшая работа со строками (C++):

Работа со строками . Простейшая прога выдаёт ошибки ( - C++
код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; int main() { char s1, char s2; ...

Работа со строками - C++
Прошу помочь написать код для двух программ: 1) Написать программу подсчета числа слов в строке *) 2) написать программу подсчета букв...

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

Работа со строками - C++
Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки?

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...

Работа со строками - C++
Дана строка, содержащая полное имя файла. Выделить из этой строки название последнего каталога (без символов «\»). Если файл содержится в...

9
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
28.01.2011, 18:44 #2
C++
1
2
cout << (int)S[0] << endl;
cout << (int)S[2] << endl;
попробуйте дописать и посмотрите что выводится. посмотрите таблицы asii, скорей всего как то приводится не так как задумано .)

Добавлено через 4 минуты
а 7-5 правильно, так как 55-53 (в представлении asii) и будет 2
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
28.01.2011, 18:45  [ТС] #3
дааааа, там он считывает, как символы с ascii, а мне нужен int. Как это выполнить?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.01.2011, 18:54 #4
переделал ваш код и кстати чила до 100 она никак не учитывает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
int main()
{
    std::string S;
    std::cin >> S;
    switch(S[1])
    {
     case '+':
    std::cout << S[0] - '0' + S[2] - '0' << std::endl;
    break;
     case '-':
    std::cout << S[0] - '0' - S[2] - '0' << std::endl;
    break;
     case ':':
    std::cout << (S[0] - '0') / (S[2] - '0') << std::endl;
        break;
     }
     system("pause");
     return 0;
}
1
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
28.01.2011, 18:59  [ТС] #5
Maxwe11, прога не универсальна(
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
28.01.2011, 19:03 #6

Не по теме:

все гениальное просто ..))
не знал, спасибо.



Добавлено через 2 минуты
Hi4ko вполне хороший у него вариант, вот ваш код с его решением)
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
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string S;
        cin>>S;
if(S[1]=='+')
{
cout<<(int)(S[0] - '0')+(int)((S[2]- '0'))<<endl;
}
else
{
if(S[1]=='-')
{
        cout<<(int)(S[0] - '0')-(int)((S[2]- '0'))<<endl;
}
else
        if(S[1]==':')
        {
        cout<<(double)(S[0] - '0')/(double)((S[2] - '0'))<<endl;
        }
}
        system("pause");
}
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
28.01.2011, 19:05  [ТС] #7
она ток числа от 1 до 9 посчитать сможет. Надо до 100(
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
28.01.2011, 19:09 #8
так правильно. к примеру 10+10 - это уже не как у вас, 3 символа в строке а 5. тут надо как то с помощью цикла, пока правда не дойдет до меня каким образом)
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.01.2011, 19:52 #9
Цитата Сообщение от Hi4ko Посмотреть сообщение
она ток числа от 1 до 9 посчитать сможет. Надо до 100(
так бы сразу и писал, а не спрашивал в чем ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
int main()
{
    std::string S;
    std::cin >> S;
    size_t sign_pos = S.find_first_of("+-:");
    switch(S[sign_pos])
    {
     case '+':
         std::cout << std::stoi(S) + std::stoi(S.substr(sign_pos+1)) << std::endl;
        break;
     case '-':
        std::cout << std::stoi(S) - std::stoi(S.substr(sign_pos+1)) << std::endl;
        break;
     case ':':
        std::cout << std::stoi(S) / std::stoi(S.substr(sign_pos+1)) << std::endl;
        break;
    }
    system("pause");
    return 0;
}
0
Iron Bug
22 / 22 / 0
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 21:11 #10
как-то так:
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 <stdio.h>
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main()
{
    string str;
    cin >> str;
    istringstream reader(str);
    int x,y;
    char op;
    cout << reader.str() << endl;
    reader >> x;
    cout << x << endl;
    reader >> op;
    cout << op << endl;
    reader >> y;
    cout << y << endl;
    getchar();
    return 0;
}
это пример выковыривания значений. а дальше сам прикручивай обработку через switch(op), чтобы что-то полезное усвоить
P.S. на самом деле, всё это пишется в одну строку (reader >> x >> op >> y). просто тут расписано отдельно по пунктам.
1
28.01.2011, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2011, 21:11
Привет! Вот еще темы с ответами:

Работа со строками - C++
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв; между соседними...

Работа со строками C++ - C++
Задание: Запросить у пользователя массив из 10 строк и вывести на экран те, которые равны слову «Ура». #include &quot;stdafx.h&quot; #include...

работа со строками - C++
Помогите пожайлуста!!! Задание такое: Удалить из текста все слова с четными номерами (сквозная нумерация слов по всему тексту). Кто...

Работа со строками - C++
Даны строки S1 и S2. Удалить из строки S1 последнюю подстроку, совпадающую с S2. Если совпадающих подстрок нет, то вывести строку S1 без...


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

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

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