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

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

Войти
Регистрация
Восстановить пароль
 
alekola
21 / 21 / 1
Регистрация: 04.08.2011
Сообщений: 103
#1

Цикл до символа - C++

18.07.2012, 06:28. Просмотров 483. Ответов 9
Метки нет (Все метки)

Здравствуйте, разбираюсь в С++
Хочу сделать консольный калькулятор(простой который будет выполнять операции над двумя числами.)
Кусок:
C++
1
2
3
4
5
6
7
std::string input=""; 
std::string tmp="";
getline(std::cin,input); // принимаем ввод до нажатия Enter
    
for(int i=0; input[i] != '-' || input[i] != '+' || input[i] != '/' || input[i] != '*'; i++){ //цикл до знака чтобы отделить первое слагаемое
tmp+=input[i];  // 
    }
Результат Segmentatino fault
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 06:28     Цикл до символа
Посмотрите здесь:

Бесконечный цикл при попытке ввода символа вместо числа - C++
При вводе буквы или символы вместо цифры,программа начинает бесконечно выводить последний записанный для выхода текст.Как это можно...

2 символа s2 последние и средние 3 символа s1 - соединить - C++
Помогите пожалуйста! Ввести строки s1 и s2. Последние 2 символа s2 и средние 3 символа s1 - соединить. В полученной строке посчитать...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с...

Путь символа - C++
Здорова господа! Есть интересная задачка: "Проследите путь символа в вашей системе от клавиатуры до экрана на примере следующего...

сравнение символа - C++
вот написал if (strcmp(&a," ")) то что a бывает пробел доказано но не получается сравнить что можно подставить вместо "...

Сравнения символа - C++
Как сравнить символ из массива с символом ";" Так не получается: if(buffer==";")

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
18.07.2012, 06:50     Цикл до символа #2
можно так

C++
1
2
3
4
5
6
7
for(size_t i=0; i<input.length(); i++)
    { //цикл до знака чтобы отделить первое слагаемое
       if(input[i] == '-' || input[i] == '+' || input[i] == '/' || input[i] == '*')
            continue;
       else
                tmp.push_back(input[i]);  //
    }
alekola
21 / 21 / 1
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 07:01  [ТС]     Цикл до символа #3
А в чем у меня ошибка?
ForEveR
В астрале
Эксперт С++
7967 / 4729 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
18.07.2012, 07:12     Цикл до символа #4
alekola, Ну в том, что может не встретится ни одного такого знака и тогда будем пытаться брать данные из некой области памяти, которая находится за пределом нашей строки. Ну и плюс бесконечный цикл.

Достаточно переписать так.

C++
1
for(int i=0; i < input.length() && input[i] != '-' && input[i] != '+' && input[i] != '/' && input[i] != '*'; i++)
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
18.07.2012, 07:14     Цикл до символа #5
у вас в цикле for несколько !=, а может быть не больше одного
!=||==
alekola
21 / 21 / 1
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 07:43  [ТС]     Цикл до символа #6
C++
1
2
у вас в цикле for несколько !=, а может быть не больше одного
!=||==
Покажите пожалуйста как синтаксически правильно нужно это составить
zss
Модератор
Эксперт С++
6277 / 5880 / 1902
Регистрация: 18.12.2011
Сообщений: 15,079
Завершенные тесты: 1
18.07.2012, 09:04     Цикл до символа #7
Цитата Сообщение от defer Посмотреть сообщение
у вас в цикле for несколько !=, а может быть не больше одного
!=||==
С чего бы это.
Логический оператор можно написать любой сложности.
А еще можно, например, использовать оператор "запятая":
C++
1
2
3
4
5
6
7
for(int i=0,bool b; 
    b=i < input.length(), 
    b&&=input[i] != '-',
    b&&=input[i] != '+', 
    b&&=input[i] != '/',
    b&&=input[i] != '*';
 i++)
alekola
21 / 21 / 1
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 09:27  [ТС]     Цикл до символа #8
Ну в том, что может не встретится ни одного такого знака и тогда будем пытаться брать данные из некой области памяти, которая находится за пределом нашей строки. Ну и плюс бесконечный цикл.
Если я подаю корректную строку ошибка все равно появляется(первый код)
ForEveR
В астрале
Эксперт С++
7967 / 4729 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
18.07.2012, 09:57     Цикл до символа #9
alekola, Там дальше. Читайте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2012, 10:19     Цикл до символа
Еще ссылки по теме:

32 символа VS 2010 - C++
Дан текст 32 символа, состоящий из слов разделенный одним пробелом. Определить количество слов, и количество букв в каждом слове. Вот...

Удаление символа - C++
как удалить последний символ в файле ???

Дублирование символа - C++
есть строка.. Необходимо продублировать символ... т.е. есть строка например 'qwerty' надо получить 'qweerty' по идее строка -...

Повторение символа - C++
Как сделать так чтобы при вводе с клавииатуры некоторые симовлы разрешено было повторять определенное количество раз? Т.е. : &quot;I&quot;...


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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6277 / 5880 / 1902
Регистрация: 18.12.2011
Сообщений: 15,079
Завершенные тесты: 1
18.07.2012, 10:19     Цикл до символа #10
А с кодировкой у Вас все в порядке?
getline прочитает в кодировке CP866,
а сравниваете Вы в Windows 1251.
Yandex
Объявления
18.07.2012, 10:19     Цикл до символа
Ответ Создать тему
Опции темы

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