Najprostsza struktura w programie do obliczania miej zerowych funkcji kwadratowe
Ostatnio zmodyfikowano 2015-12-14 21:51
bugifromkorea Temat założony przez niniejszego użytkownika |
Najprostsza struktura w programie do obliczania miej zerowych funkcji kwadratowe » 2015-12-14 20:11:02 Witam. Sporo czasu spędziłem dzisiaj nad walką z program do obliczania miejsc zerowych funkcji kwadratowej samo napisanie programu nie sprawiło mi problemu, lecz dopisanie do niego struktur już tak. Jeśli mógłby ktoś przejrzeć kod i wyłapać błędy byłbym wdzięczny :), nie chodzi mi o jakąś super poprawność program ma po prostu się kompilować i podawać poprawne wyniki. #include <iostream> #include <math.h> #include <string> #include <conio.h> using namespace std;
struct dane { float a; float b; float c; float x; float x1; float x2; float delta; }; struct dane wczytaj() { struct dane p; cout << "podaj a:" << endl; cin >> p.a; cout << "podaj b:" << endl; cin >> p.b; cout << "podaj c:" << endl; cin >> p.c; return p; } void oblicz_delte( struct dane p ) { p.delta = p.b * p.b - 4 * p.a * p.c; if( p.delta < 0 ) cout << " brak rozwiazan rzeczywistych" << endl; }
void oblicz_miejsca_zerowe( struct dane p ) { p.x = - p.b / 2 * p.a; p.x1 =( - p.b - sqrt( p.delta ) ) / 2 * p.a; p.x2 =( - p.b + sqrt( p.delta ) ) / 2 * p.a; }
void wyswietl_miejsca_zerowe( struct dane p ) { if( p.delta == 0 ) { cout << " jest jedno miejsce zerowe:" << p.x1 << endl; } if( p.delta > 0 ) { cout << "Sa dwa miejsca zerowe:" << p.x1 << endl << p.x2 << endl; } } |
|
mateczek |
ja bym zrobił klasę z metodami !!! » 2015-12-14 21:51:42 #ifndef FUNCKWARDRATOWA_H #define FUNCKWARDRATOWA_H #include<cmath> #include<iostream> using namespace std; class funcKwardratowa { float a, b, c; float delta; float x1, x2; void obliczDelte() { delta = b * b - 4 * a * c; } public: funcKwardratowa( float _a, float _b, float _c ) { a = _a; b = _b; c = _c; } void obliczZerowe() { obliczDelte(); if( delta > 0 ) { x1 = - b - sqrt( delta ) - 2 * a; x2 = - b - sqrt( delta ) - 2 * a; cout << "dwa miejsca zerowe " << x1 << " " << x2 << endl; } else if( delta == 0 ) { x1 = - b /( 2 * a ); cout << "jedno miejsce zerowe " << x1 << endl; } else if( delta < 0 ) { cout << "brak miejsc zerowych" << endl; } } };
użycie #include<iostream> #include<funckwardratowa.h> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; funcKwardratowa func( a, b, c ); func.obliczZerowe(); }
oczywiście zależy do czego Ci potrzebna by była ta klasa !!! A teraz wracając do twojego kodu. to raczej nie ma prawa działać!! bo przekazujesz do luźnych funkcji argument przez wartość a potem go zmieniasz !!! oczywiscie brak całości kodu (funkcji main) i nie wiem co chciałeś osiągnąć!!! void oblicz_delte( dane p ) { p.delta = p.b * p.b - 4 * p.a * p.c; if( p.delta < 0 ) cout << " brak rozwiazan rzeczywistych" << endl; }
jeśli już miało by zadziałać to musiało by być void oblicz_delte( dane & p ) { p.delta = 4; }
|
|
« 1 » |