Почему переменная b не принимает значение? - C (СИ)
Формулировка задачи:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
double inline getUravnenie(double a, double b)
{
if (a != 0){
double x;
x = (-b) / a;
printf("Koren' uravnenia x= %.2f", x);
}
else {
printf("Net resheniy.");
}
return 0;
}
double inline getUravnenie(double a, double b, double c )
{
double x;
double D;//дискриминант
D = pow(b,2) - 4 * a * c;
if (D < 0){
printf("Net korney.");
}
else{
if(D==0){
x = (-b) / (2 * a);
printf("Koren' uravnenia x= %.2f", x);
}
else if(D>0){
double x1;
double x2;
x1 = (-b + (sqrt(D))) / (2 * a*b);
x2 = (-b - (sqrt(D))) / (2 * a*b);
printf("Korni uravnenia x1= %.2f; x2= %.2f;", x1, x2);
}
}
return 0;
}
int main()
{
double a, b, c;
printf("Vvedite koefficienty uravnenia ax+b=0; ax^2+bx+c=0.\n");
printf("a=");
scanf("%d", &a);
printf("\nb=");
scanf("%d", &b);
printf("\nc=");
scanf("%d", &c);
printf("Nayti koren' uravnenia %dx+ %d =0\n", a,b);
getUravnenie(a, b);
printf("\nNayti korni uravnenia %dx^2+%dx+%d=0\n", a, b, c);
getUravnenie(a, b, c);
return 0;
}Решение задачи: «Почему переменная b не принимает значение?»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
float inline getUravnenie(float a, float b)
{
if (a != 0){
float x;
x = (-b) / a;
printf("Koren' uravnenia x= %.2f", x);
}
else {
printf("Net resheniy.");
}
return 0;
}
float inline getUravnenie(float a, float b, float c )
{
float x;
float D;//дискриминант
D = pow(b,2) - 4 * a * c;
if (D < 0){
printf("Net korney.");
}
else{
if(D==0){
x = (-b) / (2 * a);
printf("Koren' uravnenia x= %.2f", x);
}
else if(D>0){
float x1;
float x2;
x1 = (-b + (sqrt(D))) / (2 * a*b);
x2 = (-b - (sqrt(D))) / (2 * a*b);
printf("Korni uravnenia x1= %.2f; x2= %.2f;", x1, x2);
}
}
return 0;
}
int main()
{
float a, b, c;
printf("Vvedite koefficienty uravnenia ax+b=0; ax^2+bx+c=0.\n");
printf("a=");
scanf("%f", &a);
printf("\nb=");
scanf("%f", &b);
printf("\nc=");
scanf("%f", &c);
printf("Nayti koren' uravnenia %.2fx+ %.2f =0\n", a,b);
getUravnenie(a, b);
printf("\nNayti korni uravnenia %.2fx^2+%.2fx+%.2f=0\n", a, b, c);
getUravnenie(a, b, c);
return 0;
}
Объяснение кода листинга программы
- Создается функция
getUravnenieс двумя или тремя аргументами типаfloat:a,bиc. - Внутри функции
getUravnenieприa != 0вычисляется кортеж(x = (-b) / a)и выводится на экран. - Если
a == 0, то выводится сообщениеNet resheniy.. - В функции
getUravnenieприD < 0выводится сообщениеNet korney.. - Если
D == 0, то вычисляется кортеж(x = (-b) / (2 * a))и выводится на экран. - Если
D > 0, то вычисляются кортежи(x1 = (-b + (sqrt(D))) / (2 * a*b))и(x2 = (-b - (sqrt(D))) / (2 * a*b)), и выводятся на экран. - В функции
mainс помощьюscanfвводятся значенияa,bиc. - Вызывается функция
getUravnenieс аргументамиa,b. - Вызывается функция
getUravnenieс аргументамиa,b,c.