Return в функции - найти ошибку - C (СИ)
Формулировка задачи:
Помогите пожалуйста найти ошибку, связанную с return в функции
#include <stdio.h>
int f(Float a, float b, float c, float x)
{
if(x < 0 && b != 0)
f = a * x*x + b;
else if(x > 0 && b == 0)
f = (x - a) / x;
else if( c != 0)
f = x /c;
else {
printf("Na nol delit nelzya ('c')\n");
continue;
}
}
int main ()
{
float x1, x0, dx, a, b, c, x;
printf("Vvpd x1, x0, dx, a, b, c, x\n);
scanf("%f%f%f%f%f%f", &x1, &x0, &dx, &a, &b, &c);
for(x = x0; x <= x1; x += dx)
{
float j=f(a, b, c, x);
printf("x=%f; f=%f\n", x, j);
}
return 0;
}Решение задачи: «Return в функции - найти ошибку»
textual
Листинг программы
#include <stdio.h>
float f(float a, float b, float c, float x) //возвращать,мне кажеться,ф-ция должна float
{
float t; // присваивать значения в функции надо не ф-ции а переменной созданой
if(x < 0 && b != 0)
t = a * x*x + b;
else if(x > 0 && b == 0)
t = (x - a) / x;
else if( c != 0)
t = x /c;
else {
printf("Na nol delit nelzya ('c')\n");
// continue; // continue только для цыклво работает
}
return t; // функция возваращает переменную t
}
int main ()
{
float x1, x0, dx, a, b, c, x;
printf("Vvpd x1, x0, dx, a, b, c, x\n");
scanf("%f%f%f%f%f%f", &x1, &x0, &dx, &a, &b, &c);
for(x = x0; x <= x1; x += dx)
{
float j=f(a, b, c, x);
printf("x=%f; f=%f\n", x, j);
}
return 0;
}
Объяснение кода листинга программы
- В функции
fнужно правильно указать тип возвращаемого значения какfloat. - В функции
mainобъявлены следующие переменные:x1,x0,dx,a,b,c,x. - Далее пользователю предлагается ввести значения этих переменных с помощью функции
scanf. - Затем в цикле
forперебираются все значенияxотx0доx1с шагомdx. - Для каждого значения
xвызывается функцияfс передачей в нее переменныхa,b,cиx. - Результат работы функции
fсохраняется в переменнойj. - Затем на экран выводятся значения
xиjс помощью функцииprintf. - В конце программы возвращается значение 0, что означает успешный конец работы программы.