[C++] Funkcja kwadratowa
Ostatnio zmodyfikowano 2013-12-24 16:32
dawid Temat założony przez niniejszego użytkownika |
[C++] Funkcja kwadratowa » 2013-12-23 17:50:53 Cześć, nie wiem w czym jest problem. Dlaczego przy tym kodzie: float delta =( delta_b * delta_b ) -( 4 * delta_a * delta_c ); std::cout << "Delta = " << delta << std::endl;
pojawia mi się błąd: Kompilator: MinGW GCC 4.7.2 32-bit Release Building Makefile "E:\dawid\PROGRAMOWANIE MATERIAŁY\C++\C++\Matma\Makefile.win" Wykonywanie make... mingw32-make.exe -f "E:\dawid\PROGRAMOWANIE MATERIAŁY\C++\C++\Matma\Makefile.win" all g++.exe -c matma.cpp -o matma.o -I"C:/Program Files/Dev-Cpp/MinGW32/include" -I"C:/Program Files/Dev-Cpp/MinGW32/lib/gcc/mingw32/4.7.2/include/c++"
matma.cpp: In function 'int main()': matma.cpp:209:3: error: jump to case label [-fpermissive]
matma.cpp:168:10: error: crosses initialization of 'float delta' E:\dawid\PROGRAMOWANIE MATERIAŁY\C++\C++\Matma\Makefile.win:29: recipe for target 'matma.o' failed mingw32-make.exe: *** [matma.o] Error 1
Compilation failed after 0,56 seconds with errors
O co chodzi? Co jest nie tak? Po pojawieniu się błędu automatycznie program przenosi mnie do linijki gdzie znajduje się "default" ze switch`a. |
|
MrPoxipol |
» 2013-12-23 17:59:51 Pokaż ten fragment kodu.. |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-23 18:10:14 Ok. To jest całość dotycząca funkcji kwadratowej: case 11:
int delta_b; std::cout << "Wybrales funkcje kwadratowa." << std::endl; std::cout << "Wzor ogolny: ax^2 + bx + c" << std::endl; std::cout << "Wzor na Delte: b^2 - 4 * a * c" << std::endl; std::cout << "Podaj b: "; std::cin >> delta_b;
int delta_a; std::cout << "Podaj a: "; std::cin >> delta_a;
int delta_c; std::cout << "Podaj c: "; std::cin >> delta_c;
std::cout << "Delta = " << delta_b * delta_b - 4 * delta_a * delta_c << std::endl;
double pierwiastek_z_delty;
pierwiastek_z_delty = sqrt( delta_b * delta_b - 4 * delta_a * delta_c ); sqrt( pierwiastek_z_delty ) == pow( pierwiastek_z_delty,( 1 / 2.0 ) );
int m_zerowe1;
m_zerowe1 = sqrt( - delta_b - pierwiastek_z_delty / 2 * delta_a );
int m_zerowe2;
m_zerowe2 = sqrt( - delta_b + pierwiastek_z_delty / 2 * delta_a );
int m_zerowe0;
m_zerowe0 = sqrt( - delta_b / 2 * delta_a );
std::cout << "Pierwiastek z delty = " << pierwiastek_z_delty << std::endl;
if( delta_b * delta_b - 4 * delta_a * delta_c > 0 ) std::cout << "Funkcja kwadratowa posiada 2 miejsca zerowe. \nObliczenia dotyczace miejsc zerowych:\n" << std::cout;
std::cout << "WZORY MIEJSC ZEROWYCH\n" << std::endl; std::cout << " x1 = -b-pierwiastek z delty / 2*a = " << m_zerowe1 << std::endl; std::cout << " x2 = -b+pierwiastek z delty / 2*a = " << m_zerowe2 << std::endl; break; if( delta_b * delta_b - 4 * delta_a * delta_c == 0 ) std::cout << "Funkcja kwadratowa posiada 1 miejsce zerowe." << std::cout;
std::cout << "WZOR MIEJSA ZEROWEGO:\n" << std::endl; std::cout << " x0 = -b/2a= " << m_zerowe0 << std::endl; break; if( delta_b * delta_b - 4 * delta_a * delta_c < 0 ) std::cout << "Fukncja kwadratowa nie posiada miejsc zerowych." << std::cout;
std::cout << "Aby powrocic do menu glownego wcisnij 7" << std::endl; break;
|
|
MrPoxipol |
» 2013-12-23 18:28:54 Jak chcesz przerwać break'iem jak już przerwałeś wcześniej? |
|
pekfos |
» 2013-12-23 18:45:21 |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-23 19:10:30 Ok, działa. Mam za to iny problem z tym kodem. Wszystko jest zaznaczone ramką tu: http://iv.pl/images/30163866453865452232.png Opis: 1. Dlaczego przed "WZORY MIEJSC ZEROWYCH" pojawia mi się coś takiego? 0x473f84? 2. Dlaczego 1 miejsce zerowe (x1) liczy mi tak: -2147483648 ? To samo tyczy się dla x0. Ta sama liczba ujemna się pojawiam. Drugie miejsce zerowe liczy się bez problemu. To fragment kodu: int m_zerowe1; m_zerowe1 = sqrt( - delta_b - pierwiastek_z_delty / 2 * delta_a );
int m_zerowe2;
m_zerowe2 = sqrt( - delta_b + pierwiastek_z_delty / 2 * delta_a );
int m_zerowe0;
m_zerowe0 = sqrt( - delta_b / 2 * delta_a );
std::cout << " x1 = -b-pierwiastek z delty / 2*a = " << m_zerowe1 << std::endl; std::cout << " x2 = -b+pierwiastek z delty / 2*a = " << m_zerowe2 << std::endl; std::cout << " x0 = -b/2 * a = " << m_zerowe0 << std::endl;
Cóż zrobiłem źle? |
|
pekfos |
» 2013-12-23 19:15:59 1. Bo mylisz std::cout z std::endl. 2. Źle zapisany wzór |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-23 19:19:59 Ok, pierwsze faktycznie, drobna pomyłka. A drugie?
Jak zły wzór?
x1 = -b-pierwiastek z delty podzielone przez 2 * a(nie działa)
x2 = -b+pierwiastek z delty podzielone przez 2 * a (to działa)
x0 = -b podzielone przez 2 * a (nie działa)
Jak to powinno wyglądać? |
|
« 1 » 2 |