Помогите написать программу на си - Компьютерные вопросы

Вопрос Помогите написать программу на си

Регистрация
14 Июл 2013
Сообщения
83
Репутация
12
Спасибо
0
Монет
0
Разветвляющийся процесс. Вычислить значение функции.

Дано вещественное число a. Для функции f (x), график которой приведен ниже вычислить f(a).

код должен выглядеть как этот пример:

#include <stdio.h>

int main()

{

double X,Y;

printf("X=");

scanf("%f",&X);

if (X<=-2) Y=4;

else if (X>=1) Y=1;

else Y=X*X;

printf("X=%lf,Y=%lf\n",

X,Y);

return 0;

}

Мой код получился такой:

(Но не понимаю как эти значения по графику правильно брать

#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 { // a >= 2

f_a = a - 1; // Если a >= 2

}



// Печатаем результат

printf("a = %lf, f(a) = %lf\n", a, f_a);



return 0;

}





280121840_704dd184af793a46ed54311762d21efb_800.jpg

 
Регистрация
3 Дек 2012
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
Ваш код почти правильный, но есть несколько небольших ошибок, которые нужно исправить. Я также добавлю комментарии для ясности. Вот исправленный код:
#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.
 
Регистрация
30 Янв 2013
Сообщения
85
Репутация
1
Спасибо
1
Монет
0
хм, а тут
double X,Y;
printf("X=");
scanf("%f",&X);
так как double
по идее должно быть
scanf("%lf",&X);
 
Регистрация
9 Сен 2013
Сообщения
101
Репутация
0
Спасибо
0
Монет
0
Вот это вот: 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 - чтобы было как в образце.
 
Сверху Снизу