Всем привет. Совсем недавно начал изучение плюсов (да и программирования в целом, до этого лишь немного писал на Python).
Суть проблемы: Программа для решения квадратного уравнения. Создал функцию для безопасного ввода переменных(защиту от дураков). Все работает хорошо, за исключением одного аспекта: если ввод некорректен, то при последующем вводе игнорируется даже корректный ввод, однако с 3 попытки переменной все же присваивается значение.
Вот скрин для тех кто не понял. В данном случае переменным присвоились значения 2, 6, 9.
Код:
#include <iostream>
#include <cmath>
using namespace std;
double setValue(string description){
cout << description;
double value;
while(!(cin >> value)){
cout << description;
cin.clear();
cin.sync();
cin >> value;
}
return value;
}
int main(){
cout << "Quadratic Equation\n\nax^2 + bx + c = 0\n\n";
double a, b, c;
a = setValue("Enter a: ");
b = setValue("Enter b: ");
c = setValue("Enter c: ");
if (a == 0){
cout << "\nAn error occurred! The equation isn't quadratic!";
}
else{
double D = b*b - 4*a*c;
cout << "\nD = " << D;
if(D > 0){
double x1 = (-b + sqrt(D)) / (2*a);
double x2 = (-b - sqrt(D)) / (2*a);
cout << "\n\nx1 = " << x1 << "\nx2 = " << x2;
}
else if(D == 0){
double x = -b / (2*a);
cout << "\n\nx = " << x;
}
else{
cout << "\n\nThe equation has no roots!";
}
}
cin.sync();
cin.get();
return 0;
}
Всех заранее благодарю.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте я новенький в мире программирования c++вот решил устроится стажером в фирму
Я использую Firebird API для программного создания базыДля создания базы я использую код из этого поста
Всем приветПомогите решить проблему