Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
1

C++ Не правильно работает if

01.05.2013, 12:15. Просмотров 1919. Ответов 12
Метки нет (Все метки)

Ребята, привет. Возник такой вопрос..В программе выполняю следующую вещь:
C++
1
2
3
4
5
6
7
8
9
10
                          f1=   Have_Point(p1);
                 f2=    Have_Point(p2);
                 f3=    Have_Point(p3);
                 f4 =   Have_Point(p4);
 
                if(f1 == true && f2 == true && f3 == true && f4 == true)//Т.е все точки не принадлежат области
                {
                    sX[sY[i].Min].Min = sX[sY[i].Min].Min +1;
                    sY[i].Min = sY[i].Min +1;
                }
Т.е Have_Point() функция возвращает истину или ложь, дальше проверяем условие..ну вроде всё очевидно, что тут происходит. Вопрос в том, что при выполнении все f точно true! но условие if ни в какую не выполняется, т.е не заходит в этот блок..как это можно исправить, и из-за чего проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2013, 12:15
Ответы с готовыми решениями:

Почему не работает правильно? Делал по шаблону (html только начал учить) Кто может подправьте чтобы работало правильно,
Почему не работает правильно? Делал по шаблону (html только начал учить) Кто может подправьте чтобы...

Правильно ли написана прога? Работает ли правильно?
Подскажите пожалуйста, правильно ли я написал все три программы? {Program repeun; uses crt;...

Надо понять правильно работает код или нет. И работает ли он вообще
Он должен вычислить сумму с точностью эпсилон #include <iostream> using namespace std; ...

В Windows Forms некоректно работает метод, хотя в консоли работает правильно
//Данный метод должен заменять все элементы в массиве на 1, после найменьшего. public string...

12
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
01.05.2013, 12:17 2
полный код.
0
3050 / 1455 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
01.05.2013, 12:20 3
Выведите значения проверяемых переменных на экран перед блоком if.

Так точно работает:
C++
1
2
3
4
  bool f1 = true, f2 = true, f3 = true, f4 = true;
  if(f1 == true && f2 == true && f3 == true && f4 == true) {
    std::cout << true << std::endl;
  }
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,819
Записей в блоге: 12
01.05.2013, 12:45 4
Цитата Сообщение от StaR0sTa Посмотреть сообщение
Have_Point()
с ошибкой, неправильно работает
0
Почетный модератор
7266 / 2542 / 256
Регистрация: 29.07.2006
Сообщений: 13,465
01.05.2013, 12:47 5
Цитата Сообщение от StaR0sTa Посмотреть сообщение
все f точно true!
Доказывай. Останови выполнение на шаге if и выведи в дебаггере переменные.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 12:58  [ТС] 6
Попробовал вывести на экран перед блоком..он в этот if тоже не заходит..т.е не выводит..

Добавлено через 1 минуту
Я итак всё в режиме отладки проверяю..каждый шаг, с заходом в функцию Have_Point()

Добавлено через 8 минут
Сейчас попробовал задать явно как посоветовал lemegeton..тогда он заходит в этот блок. Но как так? Если я вижу, что функция возвращает также все точки как true, но не заходит туда..мой мозг..
0
MЫW
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
01.05.2013, 13:47 7
В функцию Have_Point вместо содержимого return true поставьте и проверяйте. Если сработает значит и копать вам в вашу функцию.
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
01.05.2013, 14:47 8
StaR0sTa, могу предположить, что у Вас Have_Point возвращает не bool, а int. Например вот для проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main()
{   
    int f = 2;
    if( f == true )
    {
        cout << "true" << endl;
    }
    else
    {
        cout << "not true" << endl; 
    } 
}
Выведет "not true"
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 15:20  [ТС] 9
Всем спасибо за помощь=) Проблему вроде как нашёл..Всё дело в том, что Have_Point() когда принимала точку, если ни одно из условий в этой функции не выполнялось, то оно выходило из функции просто так ничего не возвращая, почему-то точке всё равно присваивалось true, но видать это не такое true которое было нужно условию=)
0
18 / 17 / 0
Регистрация: 29.09.2010
Сообщений: 156
01.05.2013, 16:38 10
Цитата Сообщение от Tulosba Посмотреть сообщение
Выведет "not true"
а разве в ифе все ненулевое не "true"?
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 18:28  [ТС] 11
Верно говоришь
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
01.05.2013, 19:04 12
Цитата Сообщение от zybrzybr Посмотреть сообщение
а разве в ифе все ненулевое не "true"?
если убрать == true, то if сработает конечно а так - ненулевой int не обязан проходить на равенство с true.
0
Croessmah
02.05.2013, 21:55     C++ Не правильно работает if
  #13

Не по теме:

Цитата Сообщение от zybrzybr Посмотреть сообщение
а разве в ифе все ненулевое не "true"?
именно так. Но в данном случае bool будет приведен к int, а не int к bool, поэтому получится
C++
1
if( f == 1 )

0
02.05.2013, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 21:55
Привет! Вот еще темы с ответами:

На Главной странице не работает правильно вывод (неккоректно работает цикл)
Я создал тему с нуля. И мне нужно было чтоб на главной странице(Главная)...

Не могу понять почему не работает (или правильно не работает)
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define N 5 #define M 3 void main() { int a; ...

работает в proteus,но не правильно работает на плате.
Помогите..написал одну програмку на КодеВижн, для теста кабелей,в протеусе всё работает...

Не правильно работает if
Проблема заключается в следующем: Имеется набор терминов в виде вектора строк, задача состоит в...


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

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

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