jak zmodyfikowac program aby...

0

jak zmodyfikować poniższy program , aby przy danym wielomianie, móc zmieniać tak wartosc n, by program wyliczał mi wartość z formuły a ponadto liczył w pojedynczej i podwójnej precyzji. Muszę obliczyć w której precyzji szybciej wyskoczy błąd

#include <iostream>
using namespace std;
 
template <class T>
T f(T x)
{
    return (2*x*x)+3*x+1;
}
 
template <class T>
void functionTwo(int n)
{
    T h = 1.0/T(n);
    T sum = 0.0;
    for(int i=0; i<n; i++)
    {
        T x=T(i)*h;
         sum+=f<T>(x);
    }
    cout<<" blad = "<<f<T>((T)n)-sum<<endl;
}
 
int main()
{
    int n = 100000;
    for(int i=1;i<n;i++){
        cout<<"float, n = "<<i;
        functionTwo<float>(n);
        cout<<"double, n = "<<i;
        functionTwo<double>(n);
    }
    return 0;
}

i drugie, mam zadanie z Fortrana przerobić na c czy c++ by liczył mi wilomian:

X=0.0
h=1.0/float(N)
do 10 I=1,N
X=X+h
write(6,*)F(x)
10continue
0

po kompilacjii i uruchomieniu programu wyskakuje mi ekran:n=double,n=float1,n=2double...itd aż do n=9.
co jest nie tak.
chciałam wielomian podzielić przez n=10, kolejno 100, 1000 itd

0

a w pojedynczej czy podwójnej precyzji nie powinno być więcej miejsc po przecinku?

int n = 1000000000 dla takiej wartości wyskakuje mi "float, n = 1 blad = 2e+18" czy to oznacza ze już pogram nie może wykonac obliczeń w podwójnej prcyzji?

ponadto wyskakuje mi błąd wykonania " przy n=1000... może znów robie cos nie tak

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