szneqz Temat założony przez niniejszego użytkownika |
Dziwne zachowanie float » 2014-06-01 14:59:44 Witam! Jestem trochę początkujący, więc też mam dość spory problem, ponieważ chcąc napisać program, w którym obliczam miejsca zerowe w funkcji sześciennej moje zmienne po prostu nie działają. Oto kod: do { xl -= 0, 1; std::cout << xl; zeros =( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0, 1 ) *( xl - 0, 1 ) *( xl - 0, 1 ) + b *( xl - 0, 1 ) *( xl - 0, 1 ) + c *( xl - 0, 1 ) + d ); std::cout << zeros; } while( zeros > 0 && xl > - d2 ); Problem polega na tym, że według tego "xl" (wcześniej podałem tej zmiennej wartość 1) nie ulega zmianie, natomiast zmienna "zeros" wypisuje zamiast liczb słowa "inf". Obie zmienne oznaczone są jako float. Dziękuję i pozdrawiam. |
|
pekfos |
» 2014-06-01 15:04:56 Ułamki pisze się z kropką, a nie przecinkiem. |
|
szneqz Temat założony przez niniejszego użytkownika |
» 2014-06-01 15:09:01 Niezły błąd z mojej strony, jednak zmienna "zeros" nadal zamiast liczb wypisuje "inf" |
|
pekfos |
» 2014-06-01 15:14:27 Podaj kod. |
|
szneqz Temat założony przez niniejszego użytkownika |
» 2014-06-01 15:20:02 #include <iostream> int main() { float xl, xp, a, b, c, d, x1, x2, x3, liczba, d2, zeros; float y, wynik; liczba = 0; xl = 1; xp = 1; std::cout << "Wprowadz liczby a, b, c i d do rownania:\n0 = ax^3 + bx^2 + cx + d\n"; std::cout << "a:"; std::cin >> a; std::cout << "b:"; std::cin >> b; std::cout << "c:"; std::cin >> c; std::cout << "d:"; std::cin >> d; std::cout << "0 = " << a << "x^3 + " << b << "x^2 + " << c << "x + " << d << std::endl; std::cout << "Obliczanie liczby x w przyblizeniu:\n"; d = d2; d2 = 100 * d2; if( d2 < 0 ) { d2 = - d2; } else { d2 = d2; } std::cout << "1"; do { xl -= 0.1; std::cout << xl; zeros =( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0.1 ) *( xl - 0.1 ) *( xl - 0.1 ) + b *( xl - 0.1 ) *( xl - 0.1 ) + c *( xl - 0.1 ) + d ); std::cout << zeros; } while( zeros > 0 && xl > - d2 ); if( zeros < 0 ) { liczba = liczba + 1; std::cout << "2"; do xl = xl - 0.1; while(( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0.1 ) *( xl - 0.1 ) *( xl - 0.1 ) + b *( xl - 0.1 ) *( xl - 0.1 ) + c *( xl - 0.1 ) + d ) > 0 && xl > - d2 ); if(( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0.1 ) *( xl - 0.1 ) *( xl - 0.1 ) + b *( xl - 0.1 ) *( xl - 0.1 ) + c *( xl - 0.1 ) + d ) < 0 ) { liczba = liczba + 1; std::cout << "3"; do xl = xl - 0.1; while(( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0.1 ) *( xl - 0.1 ) *( xl - 0.1 ) + b *( xl - 0.1 ) *( xl - 0.1 ) + c *( xl - 0.1 ) + d ) > 0 && xl > - d2 ); if(( a * xl * xl * xl + b * xl * xl + c * xl + d ) *( a *( xl - 0.1 ) *( xl - 0.1 ) *( xl - 0.1 ) + b *( xl - 0.1 ) *( xl - 0.1 ) + c *( xl - 0.1 ) + d ) < 0 ) { liczba = liczba + 1; } } } else { std::cout << "4"; do xp = xp + 0.1; while(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) > 0 && xp < d2 ); if(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) < 0 ) { liczba = liczba + 1; std::cout << "5"; do xp = xp + 0.1; while(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) > 0 && xp < d2 ); if(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) < 0 ) { liczba = liczba + 1; std::cout << "6"; do xp = xp + 0.1; while(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) > 0 && xp < d2 ); if(( a * xp * xp * xp + b * xp * xp + c * xp + d ) *( a *( xp + 0.1 ) *( xp + 0.1 ) *( xp + 0.1 ) + b *( xp + 0.1 ) *( xp + 0.1 ) + c *( xp + 0.1 ) + d ) < 0 ) { liczba = liczba + 1; } } } } std::cout << "Sa" << liczba << "miejsca zerowe" << std::endl; return 0; }
Wiem, że kod ma pewnie jeszcze wiele błędów, ale tylko ten jest trudny do rozwiązania. |
|
pekfos |
» 2014-06-01 15:24:21 d2 jest niezainicjalizowane. |
|
szneqz Temat założony przez niniejszego użytkownika |
» 2014-06-01 15:34:11 Dzięki, teraz wystarczy, że uporam się z całą resztą, ale to dam sobie radę sam. |
|
« 1 » |