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


Автор: TheWanderer 29.9.2008, 16:03
Начал на днях изучать С++ и уже столкнулся с одной ошибкой:
Я использую Microsoft Visual Studio 2008.
Вот написал небольшую программку:
#include "iostream"
#include "math.h"

using namespace std;

void main()
{
    setlocale(LC_ALL,"Russian");
    int a,b,c,d;
    cout << "Введите данные:";
    cout << "\na = "; cin >> a;
    cout << "b = "; cin >> b;
    cout << "c = "; cin >> c;
    d=(b*2)-4*a*c;
    printf ("Ответ D = %i\n",d);
    system ("PAUSE");
}
После того как этот код запустишь и введёшь a,b,c то почему то ответ всегда отображается с минусом. Почему ответ отображается с минусом? И если это какая то ошибка как её исправить? 

Автор: volvo877 29.9.2008, 16:09
Если ты имеешь в виду дискриминант, то там b*b, а не b*2, возможно поэтому у тебя получается отрицательный ответ там, где ты ожидаешь положительный? Какие данные вводишь?

Автор: TheWanderer 29.9.2008, 16:43
Изменил b*2 на b*b.
Ввожу, допустим, a=5, b=5, c=5
Ответ если я не ошибаюсь должен получиться 75, а программа выводит -75.

Автор: DonPager 29.9.2008, 16:50
Цитата(TheWanderer @  29.9.2008,  08:43 Найти цитируемый пост)
Изменил b*2 на b*b.
Ввожу, допустим, a=5, b=5, c=5
Ответ если я не ошибаюсь должен получиться 75, а программа выводит -75.

почему это smile
смотри:
5*5 - 4*5*5 = сколько (?) - правильно -75 smile

Автор: TheWanderer 29.9.2008, 16:50
вопрос на свой ответ нашёл smile
тема закрыта.

Автор: Walker 29.9.2008, 16:53
Подставляем:
Код

d = 5 * 5 - 4 * 5 * 5 = 25 - 100 = -75

Откуда ждём чуда? smile 
Подумайте, Пожалуйста, также над тем, зачем Вы подключаете math.h. Может тогда Вы сможете получить нужный результат. smile 

 smile P.S. Пользуйтесь, впредь, Пожалуйста кнопкой Код для обрамления листинга.

Автор: NebelDT 30.9.2008, 08:56
 smile 
Попробуй так!))
Код

#include <stdio.h>
#include <math.h >
main()
{
float a=0,b=0,c=0,X1=0,X2=0,X=0,D=0;
scanf("%f%f%f",&a,&b,&c);
D=b*b-4*a*c;
if(D>0){
X1=(-b+sqrt(D))/2*a;
X2=(-b-sqrt(D))/2*a;
if(X2<X1){printf("%f %f",X2,X1);return (0);}
printf("%f %f",X1,X2);          return (0);
}
if(D==0){X1=-b/2*a;printf("%f",X1);return (0);}
printf("ERROR");
return (0);
}

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