Wartości zmiennej zmienia się w stałą Eulera

Odpowiedz Nowy wątek
2015-02-08 22:08
Kamil95
0

Witam, mam problem z fragmentem programu w C++, mam pewną zmienną, wypisuję jej wartość (500) na ekranie, w następnej linijce kodu robię to drugi raz. Za pierwszym razem wszystko jest w porządku ale za drugim razem wartość wypisana jest w postaci stałej eulera. To tylko fragment programu. Będę bardzo wdzięczny za wszelką pomoc.

Pozostało 580 znaków

2015-02-08 22:14
0

To wrzuć ten fragment kodu albo przenieś się na forum jasnowidzów :)

Pozostało 580 znaków

2015-02-08 22:14
6

To nie jest żadna postać Eulera.

Przy wypisywaniu liczb typu float/double przez cout jest kilka możliwych formatów.
Jednym z nich jest std::scientific, http://www.cplusplus.com/reference/ios/scientific/.
Zapis x e y oznacza x*10^y, czyli zwykła notacja naukowa. e to skrót od exponent
Domyślnie cout korzysta z niej dla dużych/małych liczb.
To samo dzieje się w niektórych kalkulatorach.
Przyczyną są ograniczenia konsoli i prostych wyświetlaczy LCD.

edytowany 3x, ostatnio: Sopelek, 2015-02-08 22:16
Wygrywasz nagrodę dla jasnowidza dnia - msm 2015-02-08 22:28

Pozostało 580 znaków

2015-02-08 22:21
Kamil95
0

Tak, ale ja nie zmieniłem wartości tej zmiennej tzn używając cout każę wypisać zmienną która ma wartość 500 w następnej linijce kody robię to samo ale tym razem program wypisuje już całkiem co innego.

To już jest inna sprawa, na którą niestety nie mam odpowiedzi. Musisz podać kod. - Sopelek 2015-02-08 22:22

Pozostało 580 znaków

2015-02-08 22:25
Kamil95
1
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;

long double f(long double x, long double n, long double wsp[])
{
int i=2;
long double fx=0;
    while (i<=n)
    {
    fx=fx+wsp[i]*pow(x,i);
    i++;
    }
cout<<endl<<"LICZE FX  "<<wsp[1]<<endl;

return fx+wsp[0]+wsp[1]*x;
}

int glowna()
{
cout<<"Podaj stopien funkcji: ";
int n;
cin>>n;
cout<<endl<<endl<<"Podaj pierwszy wyraz funkcji: ";
long double a;
cin>>a;
cout<<"Podaj drugi wyraz funkcji: ";
long double b;
cin>>b;
long double wsp[n];
    for (int i=0; i<=n; i++)
    {
    cout<<"Podaj wspolczynik przy x^"<<i<<": ";
    cin>>wsp[i];
    }
cout<<"Jakiej dokladnosci wyniku oczekujesz: ";
long double d;
cin>>d;
long double fb=f(b, n, wsp);
if ( f(a,n,wsp)*fb>=0)
{
cout<<endl<<"Warunek f(a)*f(b)<0 nie jest spelniony"<<endl<<endl;
return 0;
}
bool pr=1;
    while (pr=1)
    {
    long double x=(a+b)/2;
    cout<<endl<<endl<<"TUTAJx: "<<wsp[1]<<endl<<endl;
    long double fx=f(x,n,wsp);
    cout<<endl<<endl<<"TUTAJy: "<<wsp[1]<<endl<<endl;
    fb=f(b, n, wsp);
    cout<<endl<<endl<<"TUTAJz: "<<wsp[1]<<endl<<endl;

    cout<<endl<<endl<<"TUTAJsss: "<<wsp[1]<<endl<<endl;

    system ("pause");
    }
}

int main()
{
bool pg=1;
    while (pg==1)
    {
    glowna();
    }
}

znaczniki code

edytowany 1x, ostatnio: msm, 2016-12-13 18:26
użyj odpowiednich znaczników =.= - Schadoow 2015-02-08 22:26
to anonim, nie zedytuje, ech. Ale używaj &lt;code=cpp&gt; przyszłościowo autorze. - msm 2015-02-08 22:30

Pozostało 580 znaków

2015-02-08 22:26
Kamil95
0

Dodam jeszcze że na innym kompie gdzie mam procesor 64 i na kompilatorze DEV nie było problemu.

Pozostało 580 znaków

2015-02-08 22:27
0

Tego nie idzie przeczytać :)

Pozostało 580 znaków

2015-02-08 22:28
Kamil95
0

Co masz na myśli znaczników "=="

to był emotikon =.= - Schadoow 2015-02-08 22:32

Pozostało 580 znaków

2015-02-08 22:29
Kamil95
0

Wiem ale tak naprawdę szukam kogoś kto mi powie co może wpłynąć na to że zmienna która w jednej linijce kodu ma wartość np 500 w następnej ma już nie wiadomo co? Mam na jutro ten program na uczelnie i już mnie krew zalewa.

Pozostało 580 znaków

2015-02-08 22:30
0

Aby pokolorowało składnie.
NP:

int main()
{
bool pg=1;
    while (pg==1)
    {
    glowna();
    }
} 

Pozostało 580 znaków

2015-02-08 22:34
0

Jakie dane podajesz, że wyskakuje taki błąd jak opisujesz ?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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