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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Есть ли ошибка в операторах http://www.cyberforum.ru/cpp-beginners/thread989493.html
Задано опис: FILE f1,f2; float f; long l; char c;Каждый вариант вопроса содержит фрагмент программы, использующей приведенные переменные. Надо определить, допущены ошибки в операторах и где. f1=fopen(“c:\\file2.txt”,”r”); fputc(f,f1);
C++ Определить длину строки,удалить из строки все символы, которые равны заданному Доброго времени суток уважаемые форумчане. Помогите пожалуйста с написанием кода для данной задачи в вижуале. Если будет возможно,то с комментариями. Заранее благодарен. Пусть дано строку и некий символ. Необходимо определить длину строки, сколько раз встречается данный символ в строке, удалить из строки все символы, которые равны заданному. Нарисовать блок-схему. НАПРИМЕР: символ - 'в'... http://www.cyberforum.ru/cpp-beginners/thread989490.html
C++ Найти ошибку
Задано опис: truct t1{char s; double d; int i;}; t1 a, *b; Каждый вариант вопрос содержит несколько операторов, использующих приведенные переменные. Надо определить, допущены ошибки в операторах и где. b->i=5; cout<<b;
C++ вместо отсортированного массива выводятся нули
задание: ввести число, посчитать его цифры и вывести их расставленными в порядке возрастания. у меня выводятся нули, никак не пойму, почему, помогите пожалуйста( #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { clrscr(); int n,i,k,min=0,j,buf;
C++ НУжно Поправить класс студент http://www.cyberforum.ru/cpp-beginners/thread989468.html
Есть код программы но выбрасывает ошибки на всех компиляторах, скажите в чем проблема. заранее спасибо. Задача: Создать класс студент, имеющий имя (указатель на строку), курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс – студент-дипломник, имеющий тему диплома. Определить конструкторы по умолчанию и с разным числом...
C++ Файл с записями вида: наименование товара,стоимость,дата использования Задание: Задан файл с записями вида: • наименование товара; • стоимость; • дата использования. На его основе сформировать файл, куда войдут записи для определенного заранее товара, срок годности которого истечет к некоторой указанной дате. помогите с заданием плз подробнее

Показать сообщение отдельно
DEMON_RUS
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 124
27.10.2013, 15:39     Функция не возвращает 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.


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;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru