Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla for krok

Ostatnio zmodyfikowano 2016-11-20 02:42
Autor Wiadomość
wokub
Temat założony przez niniejszego użytkownika
Pętla for krok
» 2016-11-20 02:13:35
Witam.
Mam problem z jednym zadaniem:

Napisz program, który wypisze do konsoli wartości x, funkcji sin(x) oraz kwadrat tej funkcji
dla liczb z zakresu -pi do pi z krokiem co 0.02 (wszystkie dane w kolumnach, oddzielone znakiem tabulacji)

No i zrobiłem najprostszy kod jaki był możliwy:
C/C++
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    int x;
    for( int x = - M_PI; x <= M_PI; x + 0.02 )
         cout << "\t x " << x << "\t sinus" << sin( x ) << "\t kwadrat" << x * x << endl;
   
    cin.get();
}

Jednak jakbym nie zmieniał, za każdym razem wyświetla mi się ta sama liczba, tzn wygląda to mniej więcej tak

x -3 sinus-0.14112   kwadrat9
x -3 sinus-0.14112   kwadrat9
x -3 sinus-0.14112   kwadrat9
Co za tym idzie, krok, który wpisuję (0.02) nie jest w żaden sposób brany pod uwagę. Wiem mniej więcej jak się to pisze, no ale wszędzie tylko x++ etc

P-153947
karambaHZP
» 2016-11-20 02:27:07
int x;
Ta zmienna jest typu całkowitego, dodajesz do niej ułamek, który notabene jest za każdym razem obcinany do wartości całkowitej.

Poza tym aktualizacja kroku jest nieprawidłowa.
Powinno być
x += 0.02
P-153948
wokub
Temat założony przez niniejszego użytkownika
» 2016-11-20 02:33:32
A jest jakiś sposób na stworzenie zmiennej, która nie będzie całkowita i będzie wyświetlać liczby po przecinku?

A po zmianie tego kroku mam teraz:

x 0 sinus0   kwadrat0 w niekończącej się pętli
P-153949
karambaHZP
» 2016-11-20 02:34:46
» Kurs C++ » Poziom 1Pojęcie zmiennej i podstawowe typy danych lekcja

PS: zmienną krokową możesz zadeklarować w nagłówku pętli, bo nigdzie więcej jej nie używasz.
P-153950
wokub
Temat założony przez niniejszego użytkownika
» 2016-11-20 02:38:22
No i się udało, chyba. Dobrze to napisałem? Tak na pierwszy rzut oka?

C/C++
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
    double x;
    for( double x = - M_PI; x <= M_PI; x += 0.02 )
         cout << "\t i " << x << "\t sinus" << sin( x ) << "\t kwadrat" << x * x << endl;
   
    cin.get();
}
P-153951
karambaHZP
» 2016-11-20 02:40:04
double x;
To możesz wywalić, bo i tak zakrywasz zmienną
x
 definiując ponownie zmienną o tej nazwie w nagłówku pętli.
P-153952
wokub
Temat założony przez niniejszego użytkownika
» 2016-11-20 02:42:49
Faktycznie. Dzięki wielkie za cierpliwość. To już drugie zapytanie na które odpowiedziałeś. Nauczyłem się dziś więcej C++ niż przez ostatnie 2 tyg. Jeszcze raz dzięki
P-153953
« 1 »
  Strona 1 z 1