Member 14955513 Ответов: 4

Ошибка: недопустимый операнд в двоичном формате ^ (есть 'int' и 'double')


Я пытаюсь написать программу, которая вычисляет x1 и x2 квадратичного уравнения.

Что я уже пробовал:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("ax^2+bx+c\n\n");
    int a, b, c;
    printf("enter integer a\n");
    scanf("%d", &a);
    printf("enter integer b\n");
    scanf("%d", &b);
    printf("enter integer c\n");
    scanf("%d", &c);

printf("x1=%d, x2=%d",(-b+(b*b-4*a*c)^0.5)/2*a, (-b-(b*b-4*a*c)^0.5)/2*a);




    return 0;
}

4 Ответов

Рейтинг:
8

CPallini

Чтобы разработать решение Рика и Ричарда, попробуйте

#include <stdio.h>
#include <math.h>

int main()
{
    printf("ax^2+bx+c\n\n");
    int a, b, c;
    printf("enter integer a\n");
    scanf("%d", &a);
    printf("enter integer b\n");
    scanf("%d", &b);
    printf("enter integer c\n");
    scanf("%d", &c);
    double d = b * b - 4 * a * c;
    if ( b < 0)
    {
      //TODO: show here the complex solutions 

    }
    else
    {
      d = sqrt(d);
      double x1, x2;
      x1 = (- b + d)/2/a;
      x2 = (- b - d)/2/a;
      printf("x1=%g, x2=%g\n", x1, x2);
    }
    return 0;
}


Пожалуйста, обратите внимание:
  • Вы должны включить в себя <math.h> заголовок (и, возможно, ссылка на математическую библиотеку)
  • На самом деле вам это не нужно pow функция, то sqrt функции как раз достаточно
  • Для того чтобы разделить что-то на 2a, вы должны написать либо
    something/2/a
    или
    something/(2*a)
    (пишу,как и ты, something/2*a это просто неправильно).


Рейтинг:
32

Rick York

Оператор '^' в языке Си является двоичным исключающим или. Это не возведение в степень.


CPallini

5.

Maciej Los

5ed!

Рейтинг:
26

CPallini

5.

Richard MacCutchan

:большой палец вверх:

Maciej Los

5ed!

Рейтинг:
15

Shao Voon Wong

Просто используйте функция sqrt функция для вычисления квадратного корня.


CPallini

5. Действительно.

Shao Voon Wong

Спасибо!