Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится символ «+» или «-» (например, «4+7-2-8»). Вывести значение данного выражения (целое число)
#include
#include "string.h"
#include
#include
using namespace std;
int main()
{
char s[ 100 ];
int i,sum,cis,sch;
cout << "vvedite stroku" << endl;
cin >> s; cout << endl;
sum=0;
sch=strlen(s);
for (i=1; i < = sch; i++)
{
if ( непонятное условие ) cis=StrToInt(s);
else { if (s=="+") sum=sum+cis;
else sum=sum+cis; }
}
system("pause");
}
Другие языки программирования и технологии
Прошу помочь с задачей по C++
Т. к. у тебя "цифра", а не "число", то анализировать надо только знаки операций, которые находятся на всех нечётных позициях твоей строки. А чтобы преобразовать код символа цифры (все чётные позиции твоей строки) в значение цифры, достаточно отнять от него код символа '0'.
cin >> s;
sch = strlen(s);
sum = s[0] - '0';
for(i = 1; i < sch; i += 2) { sum += s[i] == '+' ? s[i + 1] - '0' : '0' - s[i + 1]; }
count << sum;
cin >> s;
sch = strlen(s);
sum = s[0] - '0';
for(i = 1; i < sch; i += 2) { sum += s[i] == '+' ? s[i + 1] - '0' : '0' - s[i + 1]; }
count << sum;
Так работать не будет, ведь Вы пытаетесь перевести всю строку s, а должны только часть.
Возможно Вы хотели сначала проверить является ли строка числом, но в цикле это делать не имеет смысла, да и StrToInt работает не так, как похоже Вы думаете. (н-р запросто слопает 123s или 0x1E).
Кроме этого - индекс в строках начинается с 0, а не с 1. Если Вы хотели пройти по всем символам от начала до признака конца строки то for(i=0; i< sch;i++)
StrToInt - нестандартная для C++ функция. Она из C++ Builder и работать будет только (?) там.
(s=="+") - сравнение символа со строкой. Должно быть s=='+'
Не вижу _адекватных_ способов решения с помощью простой вставки условия вместо "( непонятное условие )".
Примерно так (на пальцах и без сильных наворотов =) - запоминаете текущую позицию (изначально нулевая), изначально знак "+", двигаетесь вперед по строке пока символ число (про отрицательные числа ничего не сказано). Как только нашли не число - сравниваете его с '+' и '-' или концом строки ('\0').(про пробелы между числами в условии нет). Если всё ок - преобразовываете подстроку от текущей позиции до найденной-1 в число и учитывая предыдущий знак суммируете. Если конец строки - выходите из цикла, иначе запоминаете этот новый знак, перемещаете текущую позицию на найденную.
Код написать был-бы короче, но лучше сами.
Возможно Вы хотели сначала проверить является ли строка числом, но в цикле это делать не имеет смысла, да и StrToInt работает не так, как похоже Вы думаете. (н-р запросто слопает 123s или 0x1E).
Кроме этого - индекс в строках начинается с 0, а не с 1. Если Вы хотели пройти по всем символам от начала до признака конца строки то for(i=0; i< sch;i++)
StrToInt - нестандартная для C++ функция. Она из C++ Builder и работать будет только (?) там.
(s=="+") - сравнение символа со строкой. Должно быть s=='+'
Не вижу _адекватных_ способов решения с помощью простой вставки условия вместо "( непонятное условие )".
Примерно так (на пальцах и без сильных наворотов =) - запоминаете текущую позицию (изначально нулевая), изначально знак "+", двигаетесь вперед по строке пока символ число (про отрицательные числа ничего не сказано). Как только нашли не число - сравниваете его с '+' и '-' или концом строки ('\0').(про пробелы между числами в условии нет). Если всё ок - преобразовываете подстроку от текущей позиции до найденной-1 в число и учитывая предыдущий знак суммируете. Если конец строки - выходите из цикла, иначе запоминаете этот новый знак, перемещаете текущую позицию на найденную.
Код написать был-бы короче, но лучше сами.
Владимир Павлов
P.S: Если действительно только цифры конечно проще как у Андрея =)
Так входная строка "конкретная" по знакам или самому вычислять ГДЕ и КАК расположены + или - ?
Похожие вопросы
- Помогите решить задачи на C#
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачи по C++
- Помогите решить задачу на C или C++, пожалуйста.
- Помогите решить задачу по C++
- Помогите решить задачу (Visual c++)
- Помогите сделать задачу на C++.
- помогите решить задачу математически. C++
- помогите с задачей в C ++
- Помогите решить задачу на C++