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

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

Войти
Регистрация
Восстановить пароль
 
DEMON_RUS
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 124
#1

Функция не возвращает false - C++

27.10.2013, 15:39. Просмотров 448. Ответов 6
Метки нет (Все метки)

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

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


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
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.

C++
1
2
3
4
5
6
7
8
9
10
for(int i = 0; i < str.length(); i++) 
    { 
        if (isdigit(str[i])) 
        { 
            flag_Infix = chislo_i;  
            i++;  
            return true; 
        } 
    }  
    return false;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 15:39     Функция не возвращает false
Посмотрите здесь:

Если число является простым, то функция возвращает true, если не является false - C++
Напишите функцию, получающую целое число N(&gt;0). Если оно является простым, то функция возвращает true, если не является false. #include...

BASS_Init возвращает FALSE - C++
проблема следующая: BASS_Init(-1, 44100, 0, 0, NULL); возвращает FALSE, хотя BASS_ErrorGetCode() выдает 0. подскажите куда копать? вроде...

Написать функцию, находящую в строке двузначное число (возвращает true или false) - C++
bool without_double(char stroka) { int j; for (unsigned j = 0; j &lt; strlen(stroka); j++) if (isdigit(stroka) &amp;&amp; isdigit(stroka) ==...

Написать функцию, которая возвращает true, если параметр является алфавитно-цифровым и false в ином случае. - C++
Нужно написать функцию, которая возвращает истину, если переданный параметр является алфавитно - цифровым и ложь, если не является. (не...

Написать логическую функцию, которая возвращает true, если сумма чисел - положительное число, и false в обратном случае. - C++
Даны два целых числа. Написать логическую функцию, которая возвращает true, если сумма чисел - положительное число, и false в обратном...

Разработать функцию, которая возвращает True, если полученные значения могут быть сторонами треугольника, False – в противном случае - C++
Разработайте функцию, которая получает три вещественных параметра, возвращает в качестве своего результата булевское значение True, если...

Собственная функция true, false - C++
Приветствую, возникли проблемы с выполнением кода. Сначала показывал вроде правильно, потом я начал его исправлять, и вообще не показывает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
27.10.2013, 15:50     Функция не возвращает false #2
В первом цикле ошибка у вас должно быть между 0 и 9 а это >0 && <9 а не так как у вас

Добавлено через 2 минуты
Функцию проверки можно организовать так:
C++
1
2
3
4
5
6
bool check(string s) {
    for (int i = 0; i < s.length(); i++) {
        if (!isdigit(s[i])) return false;
    }
    return true;
}
Shtirliz72
201 / 161 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 16:03     Функция не возвращает false #3
C++
1
return true; break;
А break то зачем? По команде return сразу происходит выход из функции.

Добавлено через 4 минуты
Цитата Сообщение от GoldenChild Посмотреть сообщение
Функцию проверки можно организовать так:
А зачем лишнюю функцию городить? Просто заменить его цикл на ваш - и всё проблемы.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
27.10.2013, 16:05     Функция не возвращает false #4
Цитата Сообщение от Shtirliz72 Посмотреть сообщение
А зачем лишнюю функцию городить? Просто заменить его цикл на ваш - и всё проблемы.
Это не суть вопроса, я просто навел пример, всунуть его куда надо - это не проблема. "Зачем городить функцию" - за тем, что это логичнее и структурировано.
Shtirliz72
201 / 161 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 16:22     Функция не возвращает false #5
Цитата Сообщение от GoldenChild Посмотреть сообщение
"Зачем городить функцию" - за тем, что это логичнее и структурировано.
Ну не знаю. Мне почему-то запомнилось одно высказывания из одной из книг по программированию "функция ради функции - это моветон."
Зачем здесь отдельно в таком месте выводить функцию, которая будет использоваться лишь раз, - ума не приложу. Впрочем, это личное. Можешь не обращать внимание.
DEMON_RUS
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 124
27.10.2013, 16:29  [ТС]     Функция не возвращает false #6
Выходит, как и ранее, такая ошибка(( Может не тут собака зарыта?
Использовал этот фрагмент:
C++
1
2
3
4
5
6
7
for (int i = 0; i < str.length(); i++) 
   {
        if (!isdigit(str[i])) 
        return false;
    }
    flag_Infix = chislo_i;
    return true;
Миниатюры
Функция не возвращает false  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 16:37     Функция не возвращает false
Еще ссылки по теме:

Функция возвращает массив - C++
Как сделать чтобы функция возвращала массив(не исползуя указатели):(. К присмеру: ... char v; // //заполнение массива // ...

Функция не возвращает значение - C++
Функция ничего не возвращает: int Return(int s) { return s; } Передаю в аргумент S целочисленную переменную, но результата в...

Функция не возвращает значение - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int ca(int a) { int i,r; r = 0; ...

Функция не возвращает значение - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include &quot;stdafx.h&quot; using namespace std; const int max_size = 100; ...

Функция не возвращает результат=( - C++
Добрый вечер. у меня такая проблема. мне нужно перегрузить функцию для моего класса: numb numb::operator +(const numb &amp;p)const { ...


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

Или воспользуйтесь поиском по форуму:
DEMON_RUS
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 124
27.10.2013, 16:37  [ТС]     Функция не возвращает false #7
Вот моя программа, может кто глянет. Она работает с инфиксной, постфиксной и обратной польской записями.
Новичок, с помощью отладчика не смог отследить где ошибка(( Вдобавок изучал в школе немецкий(( Тяжело разбираться..
Вложения
Тип файла: rar ConsoleApplication1.rar (2.00 Мб, 1 просмотров)
Yandex
Объявления
27.10.2013, 16:37     Функция не возвращает false
Ответ Создать тему
Опции темы

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