Программа выводит только целые корни уравнения - C (СИ)
Формулировка задачи:
Добрый вечер, вот решил напистаь программку, которая считает квадратные уравнения, но при выводе данных столкнулся с тем, что она правильно считает только целые корни, а дробные не выводит никак.. Помогите разобраться с типом переменных (или ошибка в другом? ).
В Терминале ( ползуюсь Xcode) получаю следующее:
#include <stdio.h> #include <math.h> int main() { int a,b,c; float d,x1,x2,x; printf ("Решение квадратных уравнений вида ax^2+bx+c=0\n"); printf ("Введите a = "); scanf ("%d", &a); printf ("Введите b = "); scanf ("%d", &b); printf ("Введите c = "); scanf ("%d", &c); if (a==0) { x=-(c/b); printf ("Корень уравнения единственный x = %d", x); } else { d=b*b-4*a*c; if (d < 0) printf ("Нет действительных корней"); else { if ( d == 0 ) { x = -b/(2*a); printf ("Корень уравнения единственный x = %d", x); } else { x1 = (-b+sqrt(d))/(2*a); x2 = (-b-sqrt(d))/(2*a); printf ("Корени уравнения : x1 = %d x2 = %d", x1, x2); } } } return 0; }
[Session started at 2010-09-24 18:20:06 +0400.] Решение квадратных уравнений вида ax^2+bx+c=0 Введите a = 10 Введите b = 15 Введите c = -3 Корени уравнения : x1 = -536870912 x2 = 1069998061
Решение задачи: «Программа выводит только целые корни уравнения»
textual
Листинг программы
#include <stdio.h> #include <math.h> int main() { int a,b,c; float d,x1,x2,x; printf ("Решение квадратных уравнений вида ax^2+bx+c=0\n"); printf ("Введите a = "); scanf ("%d", &a); printf ("Введите b = "); scanf ("%d", &b); printf ("Введите c = "); scanf ("%d", &c); if (a==0) { x=-((float)c/b); printf ("Корень уравнения единственный x = %g", x); } else { d=b*b-4*a*c; if (d < 0) printf ("Нет действительных корней"); else { if ( d == 0 ) { x = -b/(2*(float)a); printf ("Корень уравнения единственный x = %g", x); } else { x1 = (-(float)b+sqrt(d))/(2*a); x2 = (-(float)b-sqrt(d))/(2*a); printf ("Корени уравнения : x1 = %g x2 = %g", x1, x2); } } } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами и вводом/выводом
- Объявление переменных типа int для коэффициентов уравнения и типа float для его корней
- Вывод сообщения о решении квадратных уравнений
- Ввод коэффициентов a, b и c с помощью функции scanf
- Проверка на случай, когда a равно нулю (такое уравнение решается просто)
- Вычисление значения корня и вывод сообщения об этом
- Проверка на случай, когда дискриминант (значение переменной d) меньше нуля
- Если дискриминант равен нулю, то уравнение имеет один корень, который и вычисляется
- Если дискриминант больше нуля, то уравнение имеет два корня, которые и вычисляются
- Вывод значений корней на экран
- Возврат нуля, чтобы программа завершилась успешно
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д