Skip to content

Instantly share code, notes, and snippets.

@Levik
Created April 14, 2011 12:08
Show Gist options
  • Select an option

  • Save Levik/919342 to your computer and use it in GitHub Desktop.

Select an option

Save Levik/919342 to your computer and use it in GitHub Desktop.
lab3
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
void main()
{
float x, n, res, form;
int i;
cout<<"Enter x,n: ";
cin>>x>>n;
res=1;
form=pow(1+x, (float) -1/4);
if (fabs(x)<1)
for (i = 0; i < n; i++)
res=res+pow(-1,n)*(4*n-3)*pow(x,n)/4/n;
else
cout<<"Ne vernaya oblast ";
cout<<"Result= "<<res<<" Formula= "<<form;
getch();
}
@aXe1
Copy link

aXe1 commented Apr 16, 2011

Функция pow перегружена. В Visual Studio встань курсором между названием функции и скобками и нажми Ctrl+Space - справа от списка функций появится подсказка со списоком всех pow функций.
В строке 13 form=pow(1+x,-1/4); у тебя первый параметр в функцию передается как float, а второй идет как int. Из-за этого второй параметр не правильно делится и в итоге выходит 0, а любое число в степени 0 дает 1 :) Собсно ошибки у тебя не возникало, т.к. есть и pow(float, int) и pow(float, float). Тут нужно использовать явное приведение типов (оно же преобразование): form=pow(1+x, (float) -1/4);. У тебя не первая такая ошибка - наверно ты не очень хорошо знаешь как работает типизация в Си. Почитай главу 2.7 Преобразование типов в книге Кернигана и Ритчи "Язык программирования C" - там четко расписано.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment