Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 15:32   #1
13xXx13
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 17
По умолчанию Функция не возвращает false.

Вообщем str это строка, которая может содержать в себе знак математической операции, скобки, число (например 1, 5, 556, 33 ..).
Мне нужно сделать, чтоб если str = простому числу (например 4, 66, 356 ...), то возвращается flag_Infix = chislo_i; return true;
А вот если не число (т.е. даже если первый элемент цифра, но последующий буква - 55565gfg, qe3432, 3eq2 ), то
нужно вернуть ложь и выйти из функции.

Я делал так: загоняю в цикл str (он то как раз наверно у меня и не работает) и проверяем:
Если первый символ число - инкрементируем счетчик, проверяем второй символ.
Если он не число - то возвращаем ложь. Надо чтобы функция вернула false при таком раскладе.
Правильно ли работает цикл? И правильно ли вообще работают условия?
Просто у меня функция возвращает истину, даже если str = 5g, или 3434qwew, или qw34.

Код:
bool Proverka_Infix(string str, MyType_Infix &flag_Infix) 
{ 
switch(str[0]) 
{ 
case '+': flag_Infix = plus_i; return true; break; 
case '-': flag_Infix = minus_i; return true; break; 
case '*': flag_Infix = umnojit_i; return true; break; 
case '/': flag_Infix = delit_i; return true; break; 
case '^': flag_Infix = stepen_i; return true; break; 
case '~': flag_Infix = un_minus_i; return true; break; 
case '(': flag_Infix = open_i; return true; break; 
case ')': flag_Infix = close_i; return true; break; 
} 
for(int i = 0; i < str.length(); i++) 
{ 
if (str[i] < '0' || str[i] > '9') 
{ 
i++; 
return false; 
} 
} 
flag_Infix = chislo_i; 
return true; 
}

Такой цикл тоже не работает, и если str = например qw32 то выскакивает системная ошибка, и функция не возвращает false.
Код:
for(int i = 0; i < str.length(); i++)
	{
		if (isdigit(str[i]))
		{
			flag_Infix = chislo_i; 
			i++; 
			return true;
		}
	} 
	return false;

Последний раз редактировалось Stilet; 27.10.2013 в 17:31.
13xXx13 вне форума Ответить с цитированием
Старый 27.10.2013, 16:08   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

А так?
Код:
for (int i = 0; i < str.length(); i++)  
    if (str[i] < '0' || str[i] > '9')
        return false;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие возвращает постоянно False Shouldercannon Общие вопросы Delphi 4 09.09.2013 19:21
Функция не возвращает данные. Abuhamed JavaScript, Ajax 4 26.10.2011 10:33
Функция Pos возвращает 0 gufon Общие вопросы Delphi 16 14.03.2011 22:10
функция не возвращает результат=( Chica Bond Общие вопросы C/C++ 14 03.12.2010 18:47
Функция не возвращает значения 2.0 Winlook PHP 1 10.05.2010 00:58