Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

надо решить задачу с использованием процедуры (в данном случаем процедура степени) на языке си через программу dev c ++

Альмир Салахов Знаток (289), на голосовании 9 лет назад
вот сама задача
z=(a^5+a^-5)/(2*a^8)-4^a
вот что у меня имеется (она работает)
#include
#include
#include
int p;
void stepeni(int x,int n)

{
int i;
p=1;
for (i=1;i<=n;i++)
{
p=p*x;
}
}
main()
{
int a,a1,a2,a3,a4,a5;
float z;
printf("vvedi a=");
scanf("%d",&a);
stepeni(a,5);
a1=p;
stepeni(a,-5);
a2=p;
stepeni(a,8);
a3=p;
stepeni(8,7);
a4=p;
stepeni(4,a);
a5=p;
z=float(a1+a2)/float(2*a3+a4)-a5;
printf("\nz=%f",z);
getch();
}
но у меня есть загвосткаю.
до main() это подпрограмма возведения в степень там надо указать результат не пойму просто как это сделать
помогите пожалуйста!!))
Голосование за лучший ответ
Дед Мазай Гений (58119) 9 лет назад
int stepeni(int x,int n)
{
int p=1;
int i;
for (i=1;i<=n;i++)
p*=x;
return p;
}
или вместо for можно так:
while (--n >= 0) /* переменная i не нужна */
Глобальную переменную p убери или перенеси её в main().
Вызов функции:
a1 = stepeni(a,5);
Переменные a1...a5 не нужны. Можно всё записать одним выражением:
z = float( stepeni(a,5) + stepeni(a,-5) ) ...
Но с отрицательными степенями твоя функция работает неправильно. Есть стандартная функция pow. Она работает с числами с плавающей точкой (double). Зачем ты написал свою - непонятно.
Книгу почитай: у тебя нет элементарных знаний языка Си.
Обращай внимание на предупреждения компилятора. Их не должно быть.
Альмир СалаховЗнаток (289) 9 лет назад
спасибо!)
ОЧЕНЬ ПОМОГЛИ)))
Похожие вопросы