Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
#include <iostream>
#include <math.h> // for sqrt() function
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int a, b, c;
double D;
cout << "Введите a, b, c (ax^2 + bx + c = 0) : ";
cin >> a >> b >> c;
D = b*b - 4*a*c;
if(D < 0){
cout << "\nДискриминант меньше нуля, действительных корней нет!";
return 0;
}
else if(D == 0){
cout << "\nДискриминант равен нулю, x0 = " << -(b/2*a);
return 0;
}
else if(D > 0){
cout << "Дискриминант больше нуля, x1 = " <<
(-b + sqrt(D))/(2*a) << ", x2 = " <<
(-b - sqrt(D))/(2*a);
}
return 0;
}
ПроверкаВведите a, b, c (ax^2 + bx + c = 0) : 2 4 7
Дискриминант меньше нуля, действительных корней нет!
Введите a, b, c (ax^2 + bx + c = 0) : 1 6 9
Дискриминант равен нулю, x0 = -3
Введите a, b, c (ax^2 + bx + c = 0) : 2 4 -7
Дискриминант больше нуля, x1 = 1.12132, x2 = -3.12132