matematykaszkolna.pl
c++ Metis: C++ Funkcje / return Cześć emotka Jak rozwiązać najlepiej ten problem: Mam funkcje: int wzrost() { cout << "Podaj twoj wzrost w cm" << endl; cin >> x; if (x < 100) cout << "Jestes karlem!"; if (x > 220) cout << "Nie przesadzaj gigancie!"; if (x >= 100 && x < 150) cout << "Jestes niski!"; if (x >= 150 && x < 180) cout << "Jestes sredni!"; if (x >= 180 && x<=220) cout << "Jestes wysoki!"; return 0; } wywołuje ją w funkcji głównej, ale dodatkowo zwracana jest wartość 0. Nie wiem jak rozwiązać to tak by 0 nie było zwracane. Mogę zrobić to tak, ale nie na tym mi zależy... ... cout << "Jestes wysoki!"; cout <<"Twoj wzrost "<<endl; return x; }
26 gru 17:22
Atar8Bit: Możesz zmienić typ funkcji z "int" na "void" i wówczas return nie będzie Ci potrzebne i niczego nie będziesz zwracać.
26 gru 17:38
Metis: Własnie tak robię, ale kompilator wyrzuca błędy z wywołaniem tej funkcji w funkcji głównej
26 gru 17:40
5-latek: Czesc emotka Ile jesczcze bedziesz w domu ?
26 gru 17:42
Atar8Bit: A jak wyglądają te błędy?
26 gru 17:45
Metis: Ok, chyba to mam, ale czy to najlepsze wyjscie? void wzrost() { cout << "Podaj twoj wzrost w cm" << endl; cin >> x; if (x < 100) cout << "Jestes karlem!"; if (x > 220) cout << "Nie przesadzaj gigancie!"; if (x >= 100 && x < 150) cout << "Jestes niski!"; if (x >= 150 && x < 180) cout << "Jestes sredni!"; if (x >= 180 && x<=220) cout << "Jestes wysoki!"; getch(); } wywołanie: return return wzrost();
26 gru 17:46
Metis: Oczywiscie wywołanie to tylko return wzrost();
26 gru 17:47
Metis: 5−latku , wracam 2 stycznia emotka Wesołych Świąt Krzyśku! emotka
26 gru 17:47
Atar8Bit: #include <iostream> using namespace std; int x; void wzrost() { cout << "Podaj twoj wzrost w cm" << endl; cin >> x; if (x < 100) cout << "Jestes karlem!"; if (x > 220) cout << "Nie przesadzaj gigancie!"; if (x >= 100 && x < 150) cout << "Jestes niski!"; if (x >= 150 && x < 180) cout << "Jestes sredni!"; if (x >= 180 && x<=220) cout << "Jestes wysoki!"; } int main() { wzrost(); return 0; } To jest cały działający kod z wykorzystaniem void
26 gru 17:48
Metis: A return 0; w wywołaniu piszemy w jakim celu? Bez niego działa też idealnie emotka
26 gru 17:50
Atar8Bit: Return 0; piszemy zawsze w funkcji main po to aby dać znać kompilatorowi, że program został wykonany bez błędów (po prostu trzeba pamiętać aby na końcu funkcji main znajodowało się return 0, taka zasada)
26 gru 17:55
jc: Atar8bit, a po co kompilatorowi informacja o tym, jak został wykonany program?
26 gru 18:28
Dziadek Mróz: Rozróżniamy dwa rodzaje bloków instrukcji z wywołaniem: − procedury: wykonują jakieś działanie i nic nie zwracają lub powracają do punktu wywołania, są typu void −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− void procedura1() { // nic } void procedura2(int dana) { std::cout << dana << std::endl; } void procedura3() { return; // zwraca void, czyli powraca tam skąd się wywołała } ================================================== − funkcje: wykonują jakieś działanie i zwracają wynik w zdefiniowanym typie −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− int funkcja1() { return 123; } int funkcja2(int dana) { return dana+1; } ================================================== Z tego co rozumiem, tworzysz blok obliczający wiek i wypisujący coś na ekran bez zwracania wartości. Wg moich definicji wykorzystać musisz procedurę: −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− void wzrost() { cout << "Podaj twoj wzrost w cm" << endl; cin >> x; if (x < 100) cout << "Jestes karlem!"; if (x > 220) cout << "Nie przesadzaj gigancie!"; if (x >= 100 && x < 150) cout << "Jestes niski!"; if (x >= 150 && x < 180) cout << "Jestes sredni!"; if (x >= 180 && x<=220) cout << "Jestes wysoki!"; } int main(int argc, char **argv) { wzrost(); return 0; } ================================================== void wzrost(int x) // w main tworzysz zmienną o wzroście i wywołujesz ją z tą procedurą { if (x < 100) cout << "Jestes karlem!"; if (x > 220) cout << "Nie przesadzaj gigancie!"; if (x >= 100 && x < 150) cout << "Jestes niski!"; if (x >= 150 && x < 180) cout << "Jestes sredni!"; if (x >= 180 && x<=220) cout << "Jestes wysoki!"; } int main(int argc, char **argv) { int wz; cout << "Podaj twoj wzrost w cm" << endl; cin >> wz; wzrost(wz); return 0; } −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
26 gru 20:41
Mariusz: Metis dopiero takie rzeczy masz ? Co ze wskaźnikami , dynamiczną alokacją pamięci , rekurencyjnymi strukturami danych opartymi na wskaźnikach , przepisywaniem algorytmów rekurencyjnych w sposób iteracyjny
26 gru 21:19
Jack: zazdroszcze, ja juz po tablicach,wskaznikach, kolejkach, stosach,drzewach itd. za duzo tego nie nadazam.
26 gru 21:22
bartek: Ja pierdziele... Ludzie, czy Wy naprawdę tacy tępi jesteście? Takie proste rzeczy robiliśmy na lekcjach w 2technikum na ocenę dopuszczającą... widać co ludzie po liceum potrafią − a właściwie czego nie potrafią , nie potraficie logicznie myśleć . nie wszystko można oprzeć na schematach tak jak chcielibyścieemotka Po drugie pchacie się na te studia a nie macie w ogóle o tym pojęcia... więc powodzenia życzę w przyszłości emotka
26 gru 21:33
Mariusz: No tutaj Dziadek próbował mu coś tam objaśnić ciekawe z jakim skutkiem Nawet łatwe rzeczy trzeba jakoś wyłożyć Może w liceum był Word Excell i ewentualnie Access a z programowania pętelki , warunki , tablice, procedury, funkcje, rekurencja, wskaźniki,moduły (silnia,zapisywanie liczb z jednego systemu pozycyjnego na drugi , sito Eratostenesa, trójkąt Pascala, NWD algorytm Euklidesa),Turbo Vision
26 gru 21:53
Macko z Bogdanca: @Metis: Na jakim Ty wydziale na tym Pwr jesteś? Jeśli można zapytać emotka.
27 gru 00:19
Metis: bartek jesteś śmieszny to, że o to pytam, nie oznacza, że stoję czy stoimy na tym poziomie dzieciaku Pytam, bo przy okazji gdy mam trochę wolnego czasu chcę wszystko dobrze rozumieć i wrócić do programu, który pisałem kilka miesiecy temu i nie miałem czasu na zajęcie się tym
27 gru 11:27
Metis: Dzięki Dziadku emotka
27 gru 11:27
bartek: Ty jesteś śmieszny skoro takich rzeczy nie rozumiesz i pytasz tutaj emotka
27 gru 12:07
Metis: Niech będzie emotka
27 gru 12:11
student: Z całym szacunkiem ale bartek ma trochę racji, mógłby oczywiście użyć innego języka. Rzeczy o które pyta Metis są absolutnymi podstawami, które powinno się umieć po 1 maksymalnie 2 dniach nauki korzystając z dowolnego kursu. Jeżeli przez tak długi czas praktycznie stoi się w miejscu może warto przemyśleć, czy programowanie jest faktycznie dla mnie.
27 gru 15:50
Metis: No proszę
27 gru 16:02
Metis: MackoElektroniki
27 gru 16:19
bartek: ohohohoh... elektronika mówisz emotka założę się że mam o tym − bez nauki w szkole − większe pojęcie niż Ty emotka
27 gru 17:16
Metis: Cieszę się emotka Szybciej znajdziesz posadę na rynku pracy, i w przyszłości będziesz lepszy ode mnie emotka Tak trzymać.
27 gru 17:18
bartek: To już sam powiedziałeś/napisałeś emotka
27 gru 17:19
Metis: Życzę powodzenia emotka
27 gru 17:20
bartek: Dziękuję i również tego samego życzę emotka
27 gru 17:21
Metis:
27 gru 17:22
5-latek: emotka Metis emotka
27 gru 17:22
bartek: Po świętach już wystarczy emotka
27 gru 17:22