Funkcja w C++ Iteracyjna - Pomocy

0

Witajcie jestem tu nowy, przepraszam że od razu proszę o pomoc. Możecie mi wskazać błąd który mam aby funkcja iter liczyła tak samo jak rekur czy Horner?

Zestaw danych wejściowych:
0.3
2

Wyjście:
Wynik z Biblioteki standardowej: 1.04534
Wynik z Rekurencyjnie: 1.045
Wynik Metoda Hornera: 1.04534
Wynik z Iteracyjnie: 0.955337

Proszę pomocy - mam to na jutro na zajęcia :)

a tu jest kod:

#include <iostream>
#include <math.h>
#include <iomanip>
#include <fstream>
using namespace std;

int sil(int n)
{
if(n==0) return 1;
else return sil(n-1)*n;
}
double rekur (double x, int n)
{
if(n<=1) return 1;
else if (n>8)return rekur(x,n-2)-pow(x,n)/sil(n);
else return rekur(x,n-2)+pow(x,n)/sil(n);
}

double iter(double x,int n)
{
int sil=1;
double wynik=1;
double potega=1;

for(int i=1;i<=n;i++)
{
sil =sil (2i)(2i-1);
potega=potegaxx;

    if(i%2==1)wynik= wynik - potega/sil;
    else wynik=wynik + potega/sil;
}
    return wynik;

}

double hor (double x, int n)
{
x=x*x;
double wynik=0.0;
double k=1.0;

wynik=(k/(double)(sil(2*(n))));

for(int i=n;i>0;--i)
{
if(i%2==1)
{
wynik=(k/(double)(sil(2*(i-1)))) + wynikx;
cout<<wynik<<endl;
}
else
{
wynik= (k/(double)(sil(2
(i-1))) + wynik*x);
cout<<wynik<<endl;
}

} return wynik;
}
int main()
{
cout.precision(1000);
double x;
int n;
ifstream plik;
plik.open("dane.txt");
if( plik.good() )
{
plik >>x;
plik >>n;

}
else cout<<"Error - brak danych lub zle"<<endl;
plik.close();

    ofstream plik2;
    plik2.open("wynik.txt", ios::out);
    cout<<"Wynik z Biblioteki standardowej: "<<cosh(x)<<endl;

    cout<<"Wynik z Rekurencyjnie: "<<rekur(x,n)<<endl;

    cout<<"Wynik Metoda Hornera: "<<hor(x,n)<<endl;

    cout<<"Wynik z Iteracyjnie: "<<iter(x,n)<<endl;
   

plik2<<"Wynik z Biblioteki standardowej: "<<cosh(x)<<endl;

plik2<<"Wynik z Rekurencyjnie: "<<rekur(x,n)<<endl;

plik2<<"Wynik Metoda Hornera: "<<hor(x,n)<<endl;
  
plik2<<"Wynik z Iteracyjnie: "<<iter(x,n)<<endl;

    cout<<"Wyniki zapisano w  wynik.txt\n";
    plik2.close();
return 0;  

}

0

n>8 to inny warunek niż i%2==1

0

Dzięki wielkie ! ;) Działa aż miło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1