[C++] Problem z warunkiem w if
Ostatnio zmodyfikowano 2014-11-21 13:17
Master_Goblin Temat założony przez niniejszego użytkownika |
[C++] Problem z warunkiem w if » 2014-11-21 13:17:54 Witam Napisałem pewien program, który w skrócie wygląda tak: #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib>
using namespace std;
typedef unsigned long long int lint;
int main( void ) { lint x[ 2 ], y[ 2 ]; cout << fixed; double time, k[ 4 ][ 2 ], t[ 2 ], krok, i = 0.0, skala; t[ 0 ] = t[ 1 ] = 0; ofstream wyj; wyj.open( "macierz.txt", ios_base::out | ios_base::trunc ); if( !wyj ) { cout << "Blad pliku" << endl; exit( EXIT_FAILURE ); } x[ 1 ] = 3; y[ 1 ] = 6; time = 100; krok = 0.001; skala = 10.0; while( t[ 1 ] <= time ) { t[ 0 ] = t[ 1 ]; x[ 0 ] = x[ 1 ]; y[ 0 ] = y[ 1 ]; cout << t[ 0 ] << " == " << i * skala << endl; if( t[ 0 ] == i * skala ) { wyj << x[ 0 ] << " " << y[ 0 ] << " " << t[ 0 ] << endl; i = i + 1.0; cout << "warunek spelniony, i = " << i << endl; } x[ 1 ] = x[ 0 ] + 5; y[ 1 ] = y[ 0 ] + 3; t[ 1 ] = t[ 0 ] + krok; } cout << x[ 1 ] << endl; cout << y[ 1 ] << endl; cout << "t: " << t[ 1 ] << endl; return 0; }
W pętli mam instrukcję if, która uruchamia się jeśli t[0] jest równe i*skala, czyli dla przykładu z programu warunek powinien się spełnić dla t[0] = 0 i i = 0, t[0] = 10 i i = 1, ..., t[0] = 100 i i = 10. I problem tym, że warunek spełnia się tylko dla i = 0. Dałem nawet przed if-em cout, żeby mi wypisywał ten warunek, i te dwie zmienne na 100% są równe w pewnych momentach. Myślałem, że to może problem z konwersją typów, ale dałem "i", "skala" i "t" jako double i nic to nie zmieniło. Nie wiem już o co może chodzić. Z góry dzięki za pomoc. |
|
« 1 » |