navka 27 Napisano 1 Kwietnia 2015 Udostępnij Napisano 1 Kwietnia 2015 Witam Mam taki kod def hotel_cost(nights): return 140*nights def plane_ride_cost(city): if city == 'Charlotte': return 183 elif city == 'Tampa': return 220 elif city=='Pittsburgh': return 222 elif city=='Los Angeles': return 475 return city def rental_car_cost(days): cost = days * 40 if days >= 7: cost = cost - 50 elif days >= 3: cost = cost - 20 return cost def trip_cost(city, days, spending_money): return (hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days) + spending_money) Pytanie: funkcja trip_cost zwraca argument "days" funkcji "hotel_nights" podcas gdy ta, na samym początku programu ma tylko argument "nights". Wiadomo, że ilość dni dni w hotelu = ilość dni z wypożyczonym samochodem ale przecież program tego nie wie Jak to jest że fukncja pobiera zupełnie obcy argument z innej funkcji? Cytuj Link to post Share on other sites
Luki91 157 Napisano 2 Kwietnia 2015 Udostępnij Napisano 2 Kwietnia 2015 Jak to jest że fukncja pobiera zupełnie obcy argument z innej funkcji? Że co? Gdzie? Kompletnie nie rozumiem twojego pytania Funkcja hotel_cost ma parametr nights i zwraca tą wartość pomnożoną przez 140 Funkcja plane_ride_cost ma parametr city i zwraca stałą wartość, w zależności od tego co zawiera ten parametr. Funkcja rental_car_cost ma parametr days i zwraca tą wartość pomnożoną przez 40 (minus ewentualna zniżka). Funkcja trip_cost ma parametry city, days oraz spending_money. W niej wywołujesz powyższe funkcje przekazując do nich odpowiedni argument. Cytuj Link to post Share on other sites
navka 27 Napisano 2 Kwietnia 2015 Autor Udostępnij Napisano 2 Kwietnia 2015 eturn (hotel_cost(days) dokladnie tu zwraca wartosc 'days' a wyżej ma parametr 'nights' o to mi właśnie chodzi Cytuj Link to post Share on other sites
Luki91 157 Napisano 2 Kwietnia 2015 Udostępnij Napisano 2 Kwietnia 2015 Rozumiem już, o co pytasz. Poczytaj o parametrach i argumentach funkcji (albo o argumentach aktualnych i formalnych - nazewnictwo jest różne). Generalnie chodzi o to, że funkcja hotel_cost(nights) przyjmuje jakąś wartość za pomocą argumentu formalnego "nights". Wewnątrz tej funkcji, do wartości tej odwołujesz się za pomocą właśnie nazwy "nights". Wywołując tą funkcję, musisz przekazać jakąś wartość - może to być hotel_cost(3), hotel_cost(10), hotel_cost(alamakota). To co przekazujesz, to jest twój argument aktualny. Ty chcesz przekazać wartość zmiennej "days", więc wywołując tą funkcję piszesz hotel_cost(days). Zmienne "days" i "nights" tak naprawdę nic nie wiedzą o sobie. W drugim przypadku masz funkcję rental_car_cost(days). To "days" to jest wartość przekazana do tej funkcji (argument formalny). W linijce return (hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days) + spending_money), wywołując tą funkcję, też masz zmienną "days", ale to days jest twoim argumentem aktualnym - całkiem osobną zmienną. Kilka linków: http://polska.superhost.pl/funkcje2.htm http://www.ithelpdesk.pl/kurs-c++/poziom-4/funkcje-c++-argumenty-formalne-argumenty-aktualne-porownanie-metod-przekazywania-argumentow-do-funkcji.html 1 Cytuj Link to post Share on other sites
navka 27 Napisano 2 Kwietnia 2015 Autor Udostępnij Napisano 2 Kwietnia 2015 O widzisz, muszę usiąść i przeczytać to jeszcze kilka razy bo po pierwszym razie zrozumiałem połowę ale dzięki bardzo Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.