Другие языки программирования и технологии

Пожалуйста, поясните ошибки в коде. Думал долго - так и не дошло)

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b, c;
int d;
double x1, x2;

cout << "Wwedite a, b, c " << endl;
cin >> a, b, c;
d = (b * b) - 4 * a * c;
switch ( d ){
case 'd > 0'
x1 = ( ( -b ) + pow(d, 1./2 ) ) / 2 * a;
x2 = ( ( -b ) - pow(d, 1./2 ) ) / 2 * a;
cout << x1, x2; << endl;
cin.get();
break;
case 'd == 0';

x1 = ( -b ) / 2 * a;
x2 = ( -b ) / 2 * a;

cout << x1, x2; << endl;
cin.get();
break;

case 'd < 0';

cout << "Net kornei" << endl;
cin.get();
}
}
Дело не только в C++.

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b, c; // почему int, а не double?
int d; // аналогично, и зачем отдельной строкой?
double x1, x2;

cout << "Wwedite a, b, c " << endl;
cin >> a, b, c; // неправильно, почему, уже указали
d = (b * b) - 4 * a * c; // зачем лишние скобки?
switch ( d ){ // по целой части дискриминанта вообще ничего сказать нельзя
case 'd > 0' // ни в какие ворота не лезет
x1 = ( ( -b ) + pow(d, 1./2 ) ) / 2 * a; // вместо pow лучше sqrt, лишние скобки и вместо деления на а множишь на него, не говоря уже о печальном случае когда а равно нулю
x2 = ( ( -b ) - pow(d, 1./2 ) ) / 2 * a; // аналогично
cout << x1, x2; << endl; // та же ошибка, что с cin
cin.get(); // можно было вынести из тswitch, чтобы не повторять три раза
break;
case 'd == 0'; // то же что с первым case

x1 = ( -b ) / 2 * a; // те же ошибки, что в более сложной формуле, кроме того, отдельная формула вообще тут без надобности
x2 = ( -b ) / 2 * a; // аналогично

cout << x1, x2; << endl; // уже было сказано
cin.get();
break;

case 'd < 0'; // уже было сказано

cout << "Net kornei" << endl;
cin.get();
}
}

P.S. "Уже сам все решил, спасибо за подсказки - получилось как - то так"
Это значит лишь, что компилятор все смог хоть как-то истолковать. На самом деле приведенная тобой после этих слов программа считает неправильно. Мало добиться, чтобы проглотил компилятор, надо придумать тесты, протестировать и устранить ошибки. На это уходит обычно вдвое-втрое больше времени, чем на то, чтобы написать программу и исправить в ней синтаксические ошибки.
Добавлю, что у тебя математически вообще решение на школьном уровне, в вычислительной математике квадратные уравнения решают несколько иначе, чтобы избежать потери точности в некоторых случаях.
Илья Ковальский
Илья Ковальский
5 067
Лучший ответ
Р. Лафоре "Обьектно-ориентированное программирование в С++".

До кучи : cout << x1, x2; << endl; , конечно же, тоже должно выглядеть, как : cout << x1<< x2; << endl; или cout << x1 << ' ' << x2; << endl;, что бы цифры не сливались.
DD
Diablo Day
37 556
Вот отсюда неверно:
switch ( d ){
case 'd > 0'

switch не так работает. Читай учебник. В данном случае только if подойдет.
На ошибки тебе уже указали а книгу посоветую авторов Дейтлов. Удачи.
Valentin Potolkov
Valentin Potolkov
1 518
Вот тут ошибка cin >> a, b, c; Надо так: cin >> a >> b >> c;