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

[C++] Funkcja kwadratowa

Ostatnio zmodyfikowano 2013-12-24 16:32
Autor Wiadomość
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:

C/C++
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.
P-99966
MrPoxipol
» 2013-12-23 17:59:51
Pokaż ten fragment kodu..
P-99967
dawid
Temat założony przez niniejszego użytkownika
» 2013-12-23 18:10:14
Ok. To jest całość dotycząca funkcji kwadratowej:

C/C++
case 11:
//Delta
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 );

//double pierwiastek_z_delty = pow(delta_b * delta_b - 4 * delta_a * delta_c,( 1 / 5.0 ) );
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;
P-99970
MrPoxipol
» 2013-12-23 18:28:54
Jak chcesz przerwać break'iem jak już przerwałeś wcześniej?
P-99974
pekfos
» 2013-12-23 18:45:21
Wstaw kod w blok.
C/C++
case 11:
{
    //tu kod
}
break;
P-99976
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:

C/C++
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?
P-99979
pekfos
» 2013-12-23 19:15:59
1. Bo mylisz std::cout z std::endl.
2. Źle zapisany wzór
P-99981
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ć?
P-99984
« 1 » 2
  Strona 1 z 2 Następna strona