Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Странная ошибка (lldb)


Автор: ChinaUA 12.4.2012, 23:42
Доброго времени суток.
Пришлось сесть за изучение С++, пока решил повспоминать азы, написать решения квадратного уравнения. Во всех случаях корни находятся и выводятся на экран, кроме случая, когда дискриминант равен 0. 

КОД:


Код

#include <iostream>
#include <math.h>

int main(int argc, const char * argv[])
{
    float a, b, c, d, x2, x1;
    
    // insert code here...
    std::cout << "Решение квадратного уравнения ax2+bx+c=0!\n";
    std::cout << "Введите значение для a:";
    std::cin>>a;
  
    std::cout << "Введите значение для b:";
    std::cin>>b;
    
    std::cout << "Введите значение для c:";
    std::cin>>c;
    
 if (a==0)
 {
   std::cout<<"Уравнение не является квадратным!";
     x1=-c/b;
     std::cout<<"X= "<<x1;
     return 0;
 
 }
    
    d=b*b-(4*a*c); 
    
    if (d<0) {
        std::cout<<"Уравнение не имеет решений!";
        return 0;
    }
    
     if (d==0) {
         std::cout<<"Корни уравнения равны!\n";
        x2=-b/2*a;
        std::cout<<"X1=X2= "<<x2;
        return 0;
    }
    
    else {
      
        x1=(-b+sqrt(d))/2*a;
        x2=(-b+sqrt(d))/2*a;
        std::cout<<"X1= "<<x1<<"\n";
        std::cout<<"X2= "<<x2;
    }
    
    return 0;
}


При случаи, когда Д=0 отображает слудующее:

Решение квадратного уравнения ax2+bx+c=0!
Введите значение для a:2
Введите значение для b:4
Введите значение для c:
2
Корни уравнения равны!
(lldb) 


Программу писал в Xcode на Mac. Подскажите, что не так, и что это за (lldb) вместо значения корня.
Заранее большое спасибо

Автор: bsa 12.4.2012, 23:56
ChinaUA, попробуй добавлять вывод std::endl или std::flush после вывода значений.

Автор: ChinaUA 13.4.2012, 00:12
Думаю дело не в этом, программа не ругается, но выделяет после запуска строку
  x2=-b/2*a;

В ней вроде как все так... пробовал уже и переписывать, не понимаю что в не не так...

Автор: volatile 13.4.2012, 00:27
Цитата(ChinaUA @  13.4.2012,  00:12 Найти цитируемый пост)
 x2=-b/2*a;

Это трактуется как (b/2)*a
вам нужно:
b/(2*a)

Хотя формально (с точки зрения компилятора) это не ошибка.


Автор: ChinaUA 13.4.2012, 00:33

Цитата(volatile @  13.4.2012,  00:27 Найти цитируемый пост)
Это трактуется как (b/2)*a
вам нужно:
b/(2*a)


Попробовал и так... Результат тот же. Может дело в каком-то глюке Xcode, никто не сталкивался с программированием в этой среде?

Автор: volatile 13.4.2012, 00:55
Цитата(ChinaUA @  13.4.2012,  00:12 Найти цитируемый пост)
программа не ругается, но выделяет после запуска строку

Телепатирую...
Возможно брякпоинт на ней стоит.  smile 

Автор: ChinaUA 13.4.2012, 09:56
Цитата(volatile @  13.4.2012,  00:55 Найти цитируемый пост)
Телепатирую...
Возможно брякпоинт на ней стоит.    


Именно так) Оно там и стояло)) Спасибо. Вот только теперь ели можно расскажите, что это за брякпоинт такой?)

Автор: bsa 13.4.2012, 10:06
Цитата(ChinaUA @  13.4.2012,  10:56 Найти цитируемый пост)
Именно так) Оно там и стояло)) Спасибо. Вот только теперь ели можно расскажите, что это за брякпоинт такой?) 

используется при отладке. программа останавливается, когда доходит до точки останова (breakpoint по-русски). Далее ты можешь нажать на продолжить выполнение или начать пошаговую отладку. Зайди в раздел debug твоей среды программирования, там есть все необходимые рычаги управления.

Автор: ChinaUA 13.4.2012, 12:59
Спасибо огромное за помощь, будем разбираться дальше

Автор: bsa 13.4.2012, 14:25

M
bsa
Если ответ на вопрос получен, то пометь тему решенной

Автор: ChinaUA 14.4.2012, 00:43
Ок, сделал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)