c++
Metis: C++
Funkcje / return
Cześć

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

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

Wesołych Świąt Krzyśku!
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
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ście

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
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ć

.
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
27 gru 11:27
bartek: Ty jesteś śmieszny skoro takich rzeczy nie rozumiesz i pytasz tutaj
27 gru 12:07
Metis: Niech będzie
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: Macko− Elektroniki
27 gru 16:19
bartek: ohohohoh... elektronika mówisz

założę się że mam o tym − bez nauki w szkole − większe
pojęcie niż Ty
27 gru 17:16
Metis: Cieszę się

Szybciej znajdziesz posadę na rynku pracy, i w przyszłości będziesz lepszy ode
mnie

Tak trzymać.
27 gru 17:18
bartek: To już sam powiedziałeś/napisałeś
27 gru 17:19
Metis: Życzę powodzenia
27 gru 17:20
bartek: Dziękuję i również tego samego życzę
27 gru 17:21
Metis:
27 gru 17:22
5-latek:
Metis
27 gru 17:22
bartek: Po świętach już wystarczy
27 gru 17:22