#c #if-statement #calculator #quadratic
#c #if-оператор #калькулятор #квадратичный
Вопрос:
Этот код предназначен для калькулятора разрешающей способности (переменные указаны на испанском языке, но я думаю, у вас не возникнет проблем с его чтением). Я не знаю, почему этот код не работает.
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main() {
int a, b, c, raiz, r, resultado1, resultado2;
cout<<"Determine el valor de A: "; cin>> a; cout<<"n";
cout<<"Determine el valor de B: "; cin>> b; cout<<"n";
cout<<"Determine el valor de C: "; cin>> c; cout<<"n";
raiz = pow(b,2) - (4 * a * c);
r = sqrt(raiz);
if (raiz > 0) {
resultado1 = ((b * -1) r) / (2 * a);
resultado2 = ((b * -1) - r) / (2 * a);
cout<<"El valor de X1 es: "<<resultado1<<endl<<endl;
cout<<"El valor de X2 es: "<<resultado2<<endl<<endl;
}
if (raiz < 0) {
cout<<"La raiz posee un valor negativo, por lo que no podra resolverse. El valor negativo dentro
de la raiz es "<<raiz;
}
getch();
return 0;
}
Комментарии:
1. Вам нужно точно описать, как ваша программа не работает. Покажите пример ввода, вывода и ожидаемого результата.
2. Каким именно образом это «не работает»? Вам нужно быть более конкретным.
3. Совет: вместо того, чтобы объявлять кучу переменных сразу, объявляйте их по отдельности по мере необходимости в контексте, в котором они используются. Как в:
double r = sqrt(raiz)
.4. Тактическое замечание: компиляторы становятся все умнее и умнее, и некоторые знают этот трюк, но
pow(b,2)
обычно он менее эффективен, чемb*b
. простое умножение может быть быстрее, и посколькуpow
оно работает с числами с плавающей запятой, а числа с плавающей запятой неточны, в вычислениях может быть нанесен некоторый ущерб, который становится действительно заметным при обратном преобразовании в целые числа.5. Вы могли
getch()
бы заменитьstd::cin.ignore(1000000, 'n');
и удалить #include <conio.h>`
Ответ №1:
Даже если a
, b
и c
равно int
s, результаты для r
, resultado1
и resultado2
не должны быть. Они должны быть определены как double
s:
double r, resultado1, resultado2;
Комментарии:
1. Спасибо вам и всем!!