Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 12:06   #1
Alex009
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 32
По умолчанию Что не правильно???

Подскажите что не правильно я сделал нужно чтоб это приложение вычисляло дискриминант и корни через a; b; и с...
Дискриминант вычисляет правильно а вот корни тупит...

Код:
#include <iostream>
using namespace std;

int main()
{
 int a, b, c, D, A1, A2;
 
 cout << "Vedite a; b; c, po o4eredno nagimaia ENTER: ";
 cin >> a;
 cin >> b;
 cin >> c;
 D = b*b-4*a*c;
 A1 = (-b-(D)^(1/2))/2*a;
 A2 = (-b+(D)^(1/2))/2*a;
 cout << "Diskriminant raven: " << D;
 cout << "Koren` 1 raven: " << A1;
 cout << "Koren` 2 raven: " << A2;
 system ("pause");
 return 0;
}

Последний раз редактировалось ACE Valery; 07.03.2013 в 12:53.
Alex009 вне форума Ответить с цитированием
Старый 07.03.2013, 12:09   #2
Alex009
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 32
По умолчанию

Да кстати забыл сказать компилирую через Dev-cpp
Alex009 вне форума Ответить с цитированием
Старый 07.03.2013, 12:35   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Программный код на форуме оформляется тегом CODE.

1) Сверьтесь с используемым Вами учебником касательно того, что делает оператор ^. Также имейте в виду, что корни уравнения могут и не быть целыми числами. Также имейте в виду, что операторы * и / имеют одинаковый приоритет - то есть, запись
Код:
x/y*z
эквивалентна
Код:
(x/y)*z
Также учтите, что при делении int на int по умолчанию происходит целочисленное деление, то есть
Код:
1/2 == 0
1.0/2 == 0.5
Abstraction вне форума Ответить с цитированием
Старый 07.03.2013, 12:43   #4
Alex009
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 32
По умолчанию

В учебнике нет этого примера это моя инициатива и я незнаю как мне написать те строчки A1 и A2
Alex009 вне форума Ответить с цитированием
Старый 07.03.2013, 12:52   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
В учебнике нет этого примера, это моя инициатива, и я не знаю, как мне написать те строчки A1 и A2
В учебнике не готовые примеры, а информация. Если в Вашем этого нет - выкиньте к чёртовой матери и купите нормальный.
Ещё раз: где угодно найдите сведения о том, что означает
Код:
a = b^c;
Abstraction вне форума Ответить с цитированием
Старый 07.03.2013, 12:57   #6
Alex009
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 32
По умолчанию

В своем учебники я дошел только до простейших переменных а это эксперемент
Alex009 вне форума Ответить с цитированием
Старый 07.03.2013, 13:18   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
В своем учебники я дошел только до простейших переменных а это эксперемент
Книга отличается от жизни тем, что всегда можно заглянуть вперёд.

Проблемы мной указаны. Наиболее разумный для Вас способ их решения - воспользоваться учебником. Менее разумный - ждать, пока кто-нибудь напишет в этой теме то же самое, что написано в учебнике. Поскольку формат форума не особо располагает к обстоятельным разъяснениям, во втором случае объяснение скорее всего окажется и менее качественным.
Abstraction вне форума Ответить с цитированием
Старый 07.03.2013, 14:22   #8
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию

Код:
A1 = (-b-(D)^(1/2))/2*a; //A1 = (-b-(D)^(1/2))/(2*a);
 A2 = (-b+(D)^(1/2))/2*a; // A2 = (-b+(D)^(1/2))/(2*a);
Ты делишь на 2, а умножаешь на a, тогда как на a надо делить.
Поставь скобки, как в комментариях, и всё заработает.
Или же можешь писать так:
Код:
 
A2 = (-b+(D)^(1/2))/2/a;
 A1 = (-b-(D)^(1/2))/2/a;
Kaela вне форума Ответить с цитированием
Старый 07.03.2013, 14:44   #9
Alex009
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Kaela Посмотреть сообщение
Код:
A1 = (-b-(D)^(1/2))/2*a; //A1 = (-b-(D)^(1/2))/(2*a);
 A2 = (-b+(D)^(1/2))/2*a; // A2 = (-b+(D)^(1/2))/(2*a);
Ты делишь на 2, а умножаешь на a, тогда как на a надо делить.
Поставь скобки, как в комментариях, и всё заработает.
Или же можешь писать так:
Код:
 
A2 = (-b+(D)^(1/2))/2/a;
 A1 = (-b-(D)^(1/2))/2/a;
Ооо точно спасибо но се равно там должно получиться -1.2/3 и 1. а получается -11; 10.
Alex009 вне форума Ответить с цитированием
Старый 07.03.2013, 17:10   #10
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Корни вычисляются так:
Код:
#include <math.h>//в этой библиотеке содержатся функции математических операций
A1 = (-b - sqrt(D)) / (2 * a);//Функция sqrt вычисляет квадратный корень
A2 = (-b + sqrt(D)) / (2 * a);//из переданного ей аргумента(в данном случае из дискрименанта)
Но вам нужно ещё учесть ситуацию, если ползователь введёт a равное нулю, а как мы помним из курса алгебры средней школы такого быть не должно. Так же, если дискрименант отрицателен следовало бы вывести сообщение, что корней нет, а если он равен нулю, вычислить один корень по формуле Xобщее = -b / (2 * a)
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что не правильно? kemper1990 Помощь студентам 3 12.10.2010 08:29
Что не правильно? misher Общие вопросы Delphi 8 28.05.2010 17:30
что не правильно? danlex Общие вопросы C/C++ 3 26.05.2010 21:32
Что не правильно Ser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.12.2009 08:12