so, pewnie zrobilbym cos takiego:
#include <iostream>
#include <cmath>
#include <iomanip>
int main()
{
double a;
do {
std::cin >> a;
if (a == 0) {
std::cout << "Zla wartosc";
}
} while (a == 0);
std::cout << "Podaj b: ";
double b;
std::cin >> b;
std::cout << "Podaj wartość dla c: ";
double c;
std::cin >> c;
double dyskriminanta = pow (b,2) - (4*a*c);
if (dyskriminanta >= 0) {
double x1 = 0 - (b/2*a) + sqrt (pow (b,2) - 4*a*c)/(4*pow(a,2));
double x2 = 0 - (b/2*a) - sqrt (pow (b,2) - 4*a*c)/(4*pow(a,2));
std::cout << "x1 = " << std::setprecision(5) << x1 << "\n";
std::cout << "x2 = " << std::setprecision(5) << x2 << "\n";
std::cout << "P11 ( " << x1 << " | 0) \n";
std::cout << "P2 ( " << x2 << "| 0) \n";
} else {
std::cout << "Brak miejsc zerowch";
}
return 0;
}
ale objasnienia i ewentualne poprawki:
1. zamiast math.h uzyj cmath
2. using namespace std; nie uzywaj, pisz po prostu std:: jak ja
3. zobacz na uklad yzmiennych w moim kodzie, ich inicjalizacja i deklaracja odbywa sie w miejscu, gdzie sa potrzebne, a nie na samej gorze
4. miejsca zerowe moga miec przecinek, przez co typ int nie ma sensu
5. petle for zmienilem na do while, ktora powtarza sie, az ktos nie wpisze nic innego niz zero
6. pozostale 2 petle nie maja sensu, bo funkcja moze miec postac x^2, wiec ma rozwiazanie. Raczej a nie moze byc rowne 0, bo wtedy nie ma mowy o funkcji kwadratowej a liniowej
7. nazwy zmiennych, co prawda ja zostawilem tak jak sa, ale warto nazywamy je po angielsku i daje im nazwe taka, zeby miala sens i znaczenie
8. Współrzędne wierzchołka x: jezeli mowi sie o wspolrzednych to ma sie zazwyczaj na mysli 2 punkty, wiec to troch bez sensu, ale to nie dotyczy kodu
9.
break;
}
else {
cout << "Niepoprawna wartość: " << endl;
cout << "Niepoprawna wartość: " << endl;
}
}
cout << "Podaj b: " << endl;
for(int i = 0 ; i < 10 ; i++){
cin >> i;
if (i != 0) {
b = i;
break;
} else {
cout << "Nieprawidłowa wartość." << endl;
cout << "Podaj poprawną wartość: " << endl;
}
trzymaj sie jednego code style, czyli jesli zrobic } else czy cos innego, to rob to wszedzie.
To chyba tyle z mojej strony