problem z sinusem

Odpowiedz Nowy wątek
2011-10-19 17:29
Piotr
0

jestem (bardzo:>) początkowym programistą. moj problem polega na tym, ze nie da sie z jakiegos powodu uruchomic ponizszego programu przez fakt, ze w dolnej czesci kodu znajduje sie komenda y=sin(a). w przypadku nadania zmiennej 'y' jakiejkolwiek innej wartości, program uruchamia się normalnie. co zrobić, by to działało z przypisaniem wartości sinusa z 'a'?

i drugi, mniej znaczący problem- chciałbym, żeby w kolumnie X wyswietlaly sie 2 liczby po przecinku, a w kolumnie Y - 4

bardzo prosze o pomoc

oto kod:

#include <iostream>
#include <iomanip.h>
using namespace std;
int main()

{
    float a,b,N,r,y; //deklaracja zmiennych (r = roznica miedzy punktami, y = wartosc funkcji)

    cout<<"Podaj wartosc poczatku przedzialu"<<endl;
    cin>>a;      //pobranie wartosci a
    cout<<"Podaj wartosc konca przedzialu"<<endl;
    cin>>b;      //pobranie wartosci b

    if (a>b)     //sprawdzenie poprawnosci podania wartosci
    cout<<"Wartosc koncowa nie moze byc nizsza od wartosci poczatkowej"<<endl;
    if (a>b)
    system("pause");
    if (a>b)
    return 0; 

    cout<<"Podaj ilosc punktow znajdujacych sie w przedziale"<<endl;
    cin>>N;      //pobranie wartosci N
    if (N<1)
    cout<<"Przedzial musi zawierac co najmniej 1 punkt"<<endl;
    if (N<1)
    system("pause");
    if (N<1)
    return 0;

    r=(b-a)/(N-1);  //wyliczenie odleglosci miedzy punktami

    cout<<"X\t\tY"<<endl;
    for(int i=1; i<=N; i++)
    {
            cout<<a; //wyswietlenie wartosci X
            cout<<"\t\t";

            if(a<-1)
            y=(-1);
            else if(a<8)
            y=sin(a);
            else
            y=7-a;

    cout<<y<<endl;
    a=a+r;

}

system("pause");
return 0; 

}

Pozostało 580 znaków

2011-10-19 17:35
0

Kod straszny:

  • nie używaj system("pause");
  • co to za nagłówek iomanip.h? Nie znam takiego, nie miało być iomanip a z resztą po co Ci on tam skoro go nie używasz?
  • WTF?
    if (a>b)     //sprawdzenie poprawnosci podania wartosci
    cout<<"Wartosc koncowa nie moze byc nizsza od wartosci poczatkowej"<<endl;
    if (a>b)
    system("pause");
    if (a>b)
    return 0;

    Powinno być raczej

    if (a>b)  {    //sprawdzenie poprawnosci podania wartosci
         cout<<"Wartosc koncowa nie moze byc nizsza od wartosci poczatkowej"<<endl;
         return 0; 
    }
  • by użyć sin potrzebny jest nagłówek cmath

edytowany 1x, ostatnio: hauleth, 2011-10-19 17:35
Pokaż pozostałe 2 komentarze
Ale mogłeś mu powiedzieć co zamiast system("sraóze") używać - xeo545x39 2011-10-19 18:05
Najlepiej nic. - hauleth 2011-10-19 18:31
Zależy kiedy, jak program ma tylko się wykonać to nic, ale jak trzeba pausy to trzeba nie ;D - xeo545x39 2011-10-20 15:05
Programy konsolowe są jak nazwa wskazuje przeznaczone do tego żeby je uruchamiać z konsoli. Wstrzymywanie programu po wykonaniu powoduje jedynie że nie można go automatycznie testować/uruchamiać. Żeby daleko nie szukać, taki gcc nie pauzuje się po wykonaniu i dziwne by było gdyby było inaczej. - msm 2011-10-20 15:43
jeśli już musi być pauza, lepiej zacisnąć zęby i dać getch() z <conio.h>. na pewno lepsze to niż system("pause"). - Azarien 2011-10-20 18:50

Pozostało 580 znaków

2011-10-19 17:39
Piotr
0

wielkie dzieki. dziala. prosze jeszcze tylko o to ustawiania wyswietlania ilosci cyfr po przecinku- 2 cyfry po w kolumnie X (wartosci a) i 4 cyfry po w kolumnie Y (wartosci y)

Pozostało 580 znaków

2011-10-19 18:31
0

cout.setprecision(<coś>);


Pozostało 580 znaków

2011-10-20 17:48
0

winerfresh, a nie

cout << setprecision(<coś>); 

?
Bo Twój sposób użycia, przynajmniej u mnie, jest niekompilowalny.
(@autor, teraz już <iomanip> będzie potrzebny)

EDIT: Jest jeszczecout.precision(<coś>);, więc stąd pewnie omyłka.

edytowany 4x, ostatnio: Jadeszek, 2011-10-20 17:52

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