Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
22 / 22 / 6
Регистрация: 04.08.2011
Сообщений: 103
1

Цикл до символа

18.07.2012, 06:28. Просмотров 1079. Ответов 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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2012, 06:28
Ответы с готовыми решениями:

Цикл while (удаление символа из строки)
Здравствуйте!! Ребята подскажите по такому вопросу вот код void __fastcall...

Движение символа через цикл
Помогите написать программу движения смайлика по экрану осуществляемого с помощью цикла.

Цикл для ввода с клавиатуры последовательности символов до символа f
цикл для ввода с клавиатуры последовательности символов до символа f

Цикл while. Вывести слова текста, начинающиеся с заданного символа
с клавиатуры вводится текст, заканчивающийся точкой. Вывести слова этого текста, начинающиеся с...

9
575 / 253 / 18
Регистрация: 29.11.2010
Сообщений: 868
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]);  //
    }
0
22 / 22 / 6
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 07:01  [ТС] 3
А в чем у меня ошибка?
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
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++)
0
575 / 253 / 18
Регистрация: 29.11.2010
Сообщений: 868
18.07.2012, 07:14 5
у вас в цикле for несколько !=, а может быть не больше одного
!=||==
0
22 / 22 / 6
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 07:43  [ТС] 6
C++
1
2
у вас в цикле for несколько !=, а может быть не больше одного
!=||==
Покажите пожалуйста как синтаксически правильно нужно это составить
0
Модератор
Эксперт С++
9686 / 8283 / 5053
Регистрация: 18.12.2011
Сообщений: 22,131
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++)
0
22 / 22 / 6
Регистрация: 04.08.2011
Сообщений: 103
18.07.2012, 09:27  [ТС] 8
Ну в том, что может не встретится ни одного такого знака и тогда будем пытаться брать данные из некой области памяти, которая находится за пределом нашей строки. Ну и плюс бесконечный цикл.
Если я подаю корректную строку ошибка все равно появляется(первый код)
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
18.07.2012, 09:57 9
alekola, Там дальше. Читайте.
0
Модератор
Эксперт С++
9686 / 8283 / 5053
Регистрация: 18.12.2011
Сообщений: 22,131
18.07.2012, 10:19 10
А с кодировкой у Вас все в порядке?
getline прочитает в кодировке CP866,
а сравниваете Вы в Windows 1251.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2012, 10:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Цикл вывода символа на экран, при нажатии клавиши
Здравствуйте! Пишу змейку, и нужно, чтобы при нажатии определённой клавишы, она начинала двигаться...

Бесконечный цикл при попытке ввода символа вместо числа
При вводе буквы или символы вместо цифры,программа начинает бесконечно выводить последний...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...

Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку
Нужно составить программу, в которой пользователь вводит вручную строку S и символ C. Результатом...


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

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

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