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

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

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

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

01.05.2013, 12:15. Просмотров 687. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 12:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ Не правильно работает if (C++):

Не могу понять почему не работает (или правильно не работает) - C++
#include <iostream.h> #include <conio.h> #define N 5 #define M 3 void main() { int a; int i,j; cout<<"nachalnya...

Не правильно работает! - C++
#include "stdafx.h" #include <iostream> #include <math.h> #include <stdio.h> using namespace std; double...

Не правильно работает! - C++
Дана матрица размера M × N. Найти номера строки и столбца для элемента матрицы, наиболее близкого к среднему значе-нию всех ее...

Не правильно работает. s = (a/(b*(c/(d*(e/(f*h)))))); - C++
2. На входе имеются вещественные числа a, b, c, d, e, f, h. Напишите программу для вычисления значения выражения В программе...

Не правильно работает sin() - C++
Здравствуйте, есть задача: найти площадь треугольника разными способами. Во втором способе не правильно вычисляется синус угла, иногда...

Код работает не правильно - C++
#include <stdio.h> void mystrcpy (char *d, char *s) { while (*s != '\0') { *d = *s;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
01.05.2013, 12:17 #2
полный код.
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
01.05.2013, 12:45 #4
Цитата Сообщение от StaR0sTa Посмотреть сообщение
Have_Point()
с ошибкой, неправильно работает
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
01.05.2013, 12:47 #5
Цитата Сообщение от StaR0sTa Посмотреть сообщение
все f точно true!
Доказывай. Останови выполнение на шаге if и выведи в дебаггере переменные.
0
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 12:58  [ТС] #6
Попробовал вывести на экран перед блоком..он в этот if тоже не заходит..т.е не выводит..

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

Добавлено через 8 минут
Сейчас попробовал задать явно как посоветовал lemegeton..тогда он заходит в этот блок. Но как так? Если я вижу, что функция возвращает также все точки как true, но не заходит туда..мой мозг..
0
phantom96
MЫW
124 / 109 / 1
Регистрация: 15.02.2013
Сообщений: 538
01.05.2013, 13:47 #7
В функцию Have_Point вместо содержимого return true поставьте и проверяйте. Если сработает значит и копать вам в вашу функцию.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 15:20  [ТС] #9
Всем спасибо за помощь=) Проблему вроде как нашёл..Всё дело в том, что Have_Point() когда принимала точку, если ни одно из условий в этой функции не выполнялось, то оно выходило из функции просто так ничего не возвращая, почему-то точке всё равно присваивалось true, но видать это не такое true которое было нужно условию=)
0
zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
01.05.2013, 16:38 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Выведет "not true"
а разве в ифе все ненулевое не "true"?
0
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 18:28  [ТС] #11
Верно говоришь
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 21:55
Привет! Вот еще темы с ответами:

Не правильно работает функция - C++
Функция должна проверят четные строки матрицы. Если в строке есть более трех отрицательных значений возвращать 1 если нет 0. Но что то я...

Программа работает не правильно - C++
Задача:Найти среди 10 русских существительных отглагольные(типа хождение) и вывести их. AnsiString A; AnsiString B; int C; int...

Не правильно работает 1 из счетчиков - C++
Помогите, не правильно считает счетчик nw, в упор не понимаю по чему... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #define eof -1 ...

Почему работает не правильно??? - C++
// kjh.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; void f(void); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.05.2013, 21:55
Ответ Создать тему
Опции темы

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