Ваш код почти правильный, но есть несколько небольших ошибок, которые нужно исправить. Я также добавлю комментарии для ясности. Вот исправленный код:
#include <stdio.h>
int main() {
double a, f_a; // Переменные для ввода a и хранения результата функции f(a)
printf("Введите значение a: "
scanf("%lf", &a); // Читаем вещественное число
// Определяем значение функции f(a)
if (a < -3) {
f_a = -a - 3; // Если a < -3
} else if (a >= -3 && a < 0) {
f_a = -1; // Если -3 <= a < 0
} else if (a >= 0 && a < 2) {
f_a = 0.5 * a + 1; // Если 0 <= a < 2
} else {
f_a = a - 1; // Если a >= 2
}
// Печатаем результат
printf("a = %lf, f(a) = %lf\n", a, f_a);
return 0;
}
Обратите внимание на следующие моменты:
В вашем коде была опечатка: вместо а в последнем условии должно быть a. В C язык чувствителен к регистру, поэтому а и a — это разные переменные.
Убедитесь, что вы используете %lf в функции scanf для чтения переменной типа double.
Код теперь правильно определяет значение функции f(a) в зависимости от диапазона, в который попадает a.
Теперь программа должна работать корректно и вычислять значение функции в зависимости от введенного значения a.
Вот это вот: if (a < -3) {
f_a = -a - 3; // Если a < -3
} else if (a >= -3 && a < 0) {
f_a = -1; // Если -3 <= a < 0
} else if (a >= 0 && a < 2) {
f_a = 0.5 * a + 1; // Если 0 <= a < 2
} else { // a >= 2
f_a = a - 1; // Если a >= 2
} откровенный бред.
Функция на твоём рисунке - ДВЕ прямые линии, задаваемые ДВУМЯ выражениями: if (a <= 0) {
f_a = -a;
} else {
f_a = 0.5 * a + 1;
} И это ВСЁ.
И, разумеется, надо во всём коде заменить a на X и f_a на Y - чтобы было как в образце.