Marys Temat założony przez niniejszego użytkownika |
Pomoc przy funkcjach » 2010-11-27 04:36:16 Witam,
jest nowicjuszem w programowanie (programuje od paru miesięcy) i mam problem z funkcjami, chyba ogólnie ze zrozumieniem tych funkcji.
Wiem, że funkcje definiujemy przed główną funkcją, lecz nie wiem co należy wpisywać w nawiasach np. double funkcja (?); tam gdzie znak zapytania co by należało wpisać?
Później dodaje swoją funkcję to głównej funkcji i też za bardzo nie wiem co wpisać w te nawiasy :/
Napisanie instrukcji, to chyba kumam, no może jeszcze jakiś przykład z return.
Jeżeli można to proszę o mówienie na tym przykładzie:
#include <iostream> #include <conio> #include <math> using namespace std;
duble f( double x ) { return exp( - 1.5 * x ) - 0.3 *( x * x ); }
int main() { double a =, b = 1, x0, fa, fb, f0, eps; cout << "Podaj eps: "; cin >> eps; fa = f( a ); fb = f( b ); if( fa * fb > 0 ) cout << "Error\n"; while( fabs( a - b ) > eps ) { x0 =( a + b ) / 2; f0 = f( x0 ); if( fabs( f0 ) < eps ) break; if( fa * f0 < 0 ) b = x0; else { fa = x0; fa = f0; } } cout << "x0=" << x0 << endl; return 0; }
To teraz jak można prosić, to proszę o przerobienie tego na program z funkcjami i wytłumaczenie tego co się robi, zmienia.
Z góry dziękuje za pomoc! |
|
Pirotechnik |
» 2010-11-27 08:18:30 w nawiasach wpisujesz argumenty tzn. takie dane które chcesz użyć we funkcji. np: int Main() { int y; cin >> y; int x = 4 - y; cout << "teraz x wynosi: " << x << endl; x = funkcja( 32 ); cout << "teraz x wynosi: " << x << endl; return 0; }
int funkcja( int zmienna ) { int x -= zmienna; return x; } Możliwe że kod ma błędy bo pisałem go na szybkiego. |
|
ison |
» 2010-11-27 12:00:23 Pirotechnik, u Ciebie funkcja zwróci losową wartość Marys w nawiasach podajesz argumenty czyli zmienne jakie chcesz przekazać do funkcji przykłady powinny Ci wszystko wyjaśnić #include <iostream>
void funkcja( int zmienna ) { std::cout << "Zmienna wynosi: " << zmienna << std::endl; }
int main() { funkcja( 50 ); funkcja( 10 ); int x = 2; funkcja( x ); funkcja( 500 - 100 ); }
#include <iostream>
int funkcja( int zmienna ) { return zmienna - 5; }
int main() { int x = 100; x = funkcja( x ); x = funkcja( x ); std::cout << funkcja( x ) << std::endl; }
|
|
Pirotechnik |
» 2010-11-27 13:01:09 Ison, faktycznie!! Zapomniałem przypisać początkową wartość zmiennej 'x' we funkcji |
|
Marys Temat założony przez niniejszego użytkownika |
» 2010-11-27 13:47:39 To teraz chce zrobić funkcję z tej pętli while, będzie to wyglądać tak?:
double petla( double a = 0, duble b = 1, double fa, double fb, double f0, double eps );
int mai { petla( x0 ); } double petla( double a = 0, duble b = 1, double fa, double fb, double f0, double eps ) { while( fabs( a + b ) > eps ) { x0 =( a + b ) / 2; f0 = f( x0 ); if( fabs( f0 ) < eps ) break; if( fa * f0 < 0 ) b = x0; else { fa = x0; fa = f0; } } }
chce żeby mi wypisało x0 do int main |
|
DejaVu |
» 2010-11-27 14:18:28 Ja widzę, że Ty nie wiesz w ogóle co się dzieje w tym kodzie, który przedstawiłeś. Proponuję poczytać książkę lub kurs od podstaw. Z pewnością rozdział poświęcony funkcjom będzie nieocenioną pomocą naukową. |
|
ison |
» 2010-11-27 14:18:29 przeanalizuj dokładnie kod który ci podałem, jeśli to nie pomoże to powtórz sobie podstawy petla( x0 ); ... } double petla( double a = 0, duble b = 1, double fa, double fb, double f0, double eps ) {
do funkcji musisz przekazać tyle elementów ile ona oczekuje... a Ty przekazujesz tylko jeden chce żeby mi wypisało x0 do int main
|
więc Twoja funkcja musi coś zwracać... to co zwróci funkcja możesz wypisać na standardowe wyjście: std::cout << funkcja( argumenty ) << std::endl;
|
|
Marys Temat założony przez niniejszego użytkownika |
» 2010-11-28 22:19:12 Dobra poczytałem trochę i teraz proszę o komentarz czy dobrze to zrozumiałem. Na przykładzie mojego programy: W głównej funkcji na początku definiuje sobie a, b oraz eps -> na podstawie tych elementów jest obliczane x0. Czyli zdefiniuje sobie tą funkcję tak: double petla(double a, double b, double eps); W programie główny wywołam ją tak samo np. zmienna=double petla(double a, double b, double eps); fa, fb i te inne zdefiniuje sobie wewnątrz tej mojej funkcji "petla". Teraz jeszcze jak to zrobić, żeby zwróciło mi x0? 1. Na końcu funkcji pisze return x0? 2. Czy całą pętle w sadzam w return? 3. A może oba przypadki są poprawne? |
|
« 1 » 2 |