Argumenty domniemane
Wiadomości ogólne
ZAGADNIENIA
Budowa funkcji
Deklarując funkcję, możemy przypisać argumentom na końcu listy ich wartości domyślne.
void wypisz(int t[], int dlugosc, char separator=','); void wypisz(int t[], int dlugosc, char separator) { .... // ciało funkcji } |
Jeśli definicja i deklaracja są rozdzielone, to wartości argumentów domniemanych mogą się pojawić tylko w deklaracji. W przeciwnym razie zostanie zgłoszony błąd kompilacji.
Jeśli deklaracja jest połączona z definicją, to argumenty domniemane mogą się pojawić również w definicji funkcji.
Efekt użycia argumentów domniemanych jest taki, jak zdefiniowanie przeładowanych funkcji z różną ilością argumentów. W przykładzie powyżej będą to
void wypisz(int t[], int dlugosc, char separator); void wypisz(int t[], int dlugosc); |
Definicje dla tych wersji kompilator uzupełni sam, na podstawie jednej podanej definicji i wartości domyślnych argumentów
Uwaga: Jeśli w deklaracji funkcji podaliśmy wartość domyślną dla jakiegoś argumentu, to trzeba ją podać dla wszystkich kolejnych argumentów na liście Jeśli przy wywołaniu funkcji zdecydujemy się pominąć jakiś argument aktualny, który ma podaną wartość domyślną, to musimy pominąć wszystkie kolejne argumenty aktualne i zdać się na ich wartości domyślne |
Przydatne narzędzia/oprogramowanie
ideone.com
CodeBlocks, ewentualnie ine środowisko programistyczne z kompilatorem c++
Funkcja nie zwracająca wartości
Napisz funkcję, która po wywołaniu wyświeti komunikat "JESTEM FUNKCJA"
Funkcje z argumentami
Napisz funkcję:
Prototyp funkcji
1. Jakie będzie efekt uruchomienia poniższego programu?
#include <iostream> using namespace std; void showDouble(int); // Prototyp funkcji int main() { int num; for (num = 0; num < 10; num++) showDouble(num); return 0; } // Definicja funkcji showDouble() void showDouble(int value) { cout << value << "\t" << (value * 2) << endl; } |
2. Jakie będzie efekt uruchomienia poniższego programu?
#include <iostream> using namespace std; void func1(double, int); // Prototyp funkcji int main() { int x = 0; double y = 1.5; cout << x << " " << y << endl; func1(y, x); cout << x << " " << y << endl; return 0; } void func1(double a, int b) { cout << a << " " << b << endl; a = 0.0; b = 10; cout << a << " " << b << endl; } |
Karta pracy
Test wiedzy
Prawda czy fałsz?
- Funkcje powinny otrzymywać nazwy pokazujące ich cel.
- Nagłówki funkcji są zakończone średnikiem.
- Prototypy funkcji są zakończone średnikiem.
- Jeśli inne funkcje są zdefiniowane przed main(), program wciąż rozpoczyna wykonywanie od funkcji main().
- Kiedy funkcja kończy się, wraca do funkcji main() bez względu na to, skąd została wywołana.
- Argumenty są przekazywane do parametrów funkcji w kolejności, w jakiej zostały zapisane w wywołaniu funkcji.
- Zasięg parametru jest ograniczony do funkcji, której ten parametr używa.
- Zmiany parametru funkcji zawsze oddziałują także na oryginalny argument.
- W prototypie funkcji nazwy zmiennej parametru mogą być pominięte.
- Wiele funkcji może mieć zmienne lokalne o tej samej nazwie.
- Nadużywanie zmiennych globalnych może powodować problemy.
- Statyczne zmienne lokalne nie są niszczone, kiedy funkcja jest zwracana.
- Wszystkie statyczne zmienne lokalne są inicjowane domyślnie do -1.
- Inicjowanie statycznych zmiennych lokalnych ma miejsce tylko raz, bez względu na to, ile razy funkcja, w której są definiowane, jest wywoływana.
- Kiedy wywoływana jest funkcja z domyślnym argumentem, a argument został pominięty, wszystkie kolejne argumenty również muszą zostać pominięte.
- Nie ma możliwości, aby funkcja posiadała niektóre parametry z domyślnymi argumentami, a niektóre bez.
- Funkcja exit() może być wywołana tylko z main().
- Funkcja wirtualna jest imitacją funkcji wywoływanej zamiast właściwej funkcji, którą reprezentuje.
Podsumowanie
Przykładowe rozwiązania oraz komentarze do wybranych ćwiczeń i zadań
Rozwiązania do ćwiczeń z tej strony
Ćwiczenie 4 - pytaniaĆwiczenie 5 - Prawda/Fałsz
- Prawda.
- Fałsz.
- Prawda.
- Prawda.
- Fałsz.
- Prawda.
- Prawda.
- Fałsz.
- Prawda.
- Prawda.
- Prawda.
- Prawda.
- Fałsz.
- Prawda.
- Prawda.
- Fałsz.
- Fałsz.
- Prawda.
Zadania
- Napisz program zawierający funkcję sprawdzającą, czy z trzech liczb podanych przez użytkownika można zbudować trójkąt prostokątny. Funkcja ma być typu void i posiadać trzy argumenty typu float
- Napisz program zawierający cztery funkcje wykonujące cztery podstawowe działania arytmetyczne. Każda z funkcji ma zwracać wartość typu rzeczywistego i pobierać dwa argumenty typu float
- Napisz program, który pobierze z klawiatury trzy wartości, przypisze je pewnym zmiennym które przekaże jako argumenty pewnej funkcji. Jeśli wartość pierwszej zmiennej pomnożonej przez wartość drugiej zmiennej jest większa od 1000-krotności trzeciej zmiennej, to wynikiem funkcji będzie podwojona wartość pierwszej zmiennej, w przeciwnym razie wynikiem będzie wartość która jest średnią arytmetyczną trzech zmiennych.
- Napisz program zawierający 3 funkcje:
numer_cwiartki – funkcja mająca 2 parametry typu całkowitego i zwracająca wartość typu całkowitego
parzyste – funkcja mająca dwa parametry typu całkowitego i nie zwracająca żadnej wartości;
wyrazenie – funkcja mająca dwa parametry typu całkowitego i zwracająca wartość typu rzeczywistego
Działanie programu
Program prosi użytkownika o podanie dwóch współrzędnych punktu, czyli x oraz y. Następnie ma zostać wywołana funkcja numercwiartki z argumentami x i y, która zwraca następujące wartości:
1 – gdy punkt należy do pierwszej ćwiartki układu współrzędnych punktu, czyli obie współrzędne są dodatnie;
2 – gdy punkt należy do drugiej ćwiartki układu współrzędnych czyli pierwsza współrzędna jest ujemna, a druga dodatnia;
3 – gdy punkt do trzeciej ćwiartki układu współrzędnych czyli obie współrzędne są ujemne;
4 – gdy punkt należy do czwartej ćwiartki układu współrzędnych czyli pierwsza współrzędna jest dodatnia a druga ujemna
0 – gdy punkt leży na jednej z osi układu czyli jedna ze współrzędnych jest równa 0.
Jeśli funkcja numer_cwiartki zwróci wartość 1, To ma zostać wywołana funkcja parzyste która wypisuje liczby parzyste z zakresu od x do y. Jeśli x mniejsze od y to wypisz liczby w postaci ciągu rosnącego, w przeciwnym razie – w postaci w ciągu malejącego. Jeśli funkcja numer_cwiartki wróci wartość 2 lub 4, To ma zostać wywołana funkcja wyrazenie, która oblicza wartość:
5 / (x+y+2)
Wyświetl wynik zwracany przez funkcję wyrazenie. jeśli funkcja numer_cwiartki zwróci wartość 0 lub 3, to wyświetl komunikat koniec programu. - Napisz program, który prosi użytkownika o wprowadzenie cen przedmiotów w sprzedaży hurtowej i ich procentowy narzut. Powinien on wyświetlać cenę detaliczną przedmiotu. Na przykład:
* Jeśli cena hurtowa przedmiotu wynosi 5,00, a narzut stanowi 100%, to cena detaliczna przedmiotu wynosi 10,00.
* Jeśli cena hurtowa przedmiotu wynosi 5,00, a narzut stanowi 50%, to cena detaliczna przedmiotu wynosi 7,50.
Program powinien posiadać funkcję o nazwie calculateRetail(), która przyjmuje cenę hurtową i narzut procentowy jako argumenty, a następnie zwraca cenę detaliczną przedmiotu.
Weryfikacja poprawności wprowadzanych danych: nie akceptuj wartości ujemnych ani dla ceny hurtowej, ani dla narzutu procentowego. - Pole prostokąta - Twoim zadaniem jest napisac program wyznaczający pole prostokąta. Powinien on poprosić o wprowadzenie szerokości i długości prostokąta, a następnie wyświetlić jego pole. Program powinien wywoływać następujące funkcje, które nie są zapisane:
getLength() — ta funkcja powinna prosić użytkownika o podanie długości prostokąta, a następnie zwracać wartość jako double;
getWidth() — ta funkcja powinna prosić użytkownika o podanie szerokości prostokąta, a następnie zwracać wartość jako double;
getArea() — ta funkcja powinna akceptować długość i szerokość prostokąta jako argumenty i zwracać pole prostokąta; pole powinno być obliczone przez pomnożenie długości przez szerokość;
displayData() — ta funkcja powinna akceptować długość, szerokość i pole prostokąta jako argumenty i wyświetlać je w odpowiednim komunikacie na ekranie. - Napisz program określający, który z czterech oddziałów firmy (północno--wschodni, południowo-wschodni, północno-zachodni i południowo-zachodni) miał największą sprzedaż na kwartał. Program powinien zawierać następujące dwie funkcje wywoływane przez main():
a/ Funkcję doubleGetSales(), do której przekazywana jest nazwa oddziału. Funkcja powinna pytać użytkownika o kwartalną wielkość sprzedaży oddziału, walidować wejście, następnie zwracać je. Funkcja powinna być wywołana raz dla każdego oddziału.
b/ Funkcję void FindHighest(), do której przekazywane są cztery sumy sprzedaży. Powinna określać, która z nich jest najwyższa, i wyświetlać nazwę oddziału z najwyższą sprzedażą brutto wraz z wynikami sprzedaży.
Weryfikacja poprawności wprowadzanych danych: nie akceptuj kwoty niższej niż 0 zł. - Napisz program określający, która z pięciu dzielnic miasta podzielonych według stron świata (północ, południe, wschód, zachód, centrum) miała najmniej zgłoszeń o wypadkach samochodowych w ubiegłym roku. Program powinien zawierać następujące dwie funkcje, które są wywoływane przez main():
a/ Funkcję int getNumAccidents(), do której przekazywana jest nazwa dzielnicy. Funkcja powinna pytać użytkownika o liczbę zgłoszeń wypadków samochodowych w ciągu ubiegłego roku w danej dzielnicy, walidować wejście, a następnie zwracać je. Funkcja powinna być wywołana raz dla każdej dzielnicy. b/ Funkcję void findLowest(), do której przekazywana jest suma wypadków z pięciu dzielnic. Funkcja ta powinna określać, która z liczb jest najniższa, i wyświetlać nazwę dzielnicy wraz z liczbą wypadków.
Weryfikacja poprawności wprowadzanych danych: nie akceptuj liczby wypadków mniejszej niż 0. - Droga upadku
Kiedy z powodu działania grawitacji przedmiot upada, do określenia drogi upadku w określonym czasie może zostać użyty poniższy wzór:
d = 0.5 * g* t2
Zmienne we wzorze to:
d - droga w metrach, g o wartości 9.8 i t, czyli czas spadania przedmiotu wyrażony w sekundach.
Napisz funkcję o nazwie fallingDistance(), która akceptuje czas spadania przedmiotu (w sekundach) jako argument. Funkcja ta powinna zwracać w metrach drogę, jaką pokonał upadający przedmiot w tym czasie.
Napisz program demonstrujący tę funkcję przez wywoływanie jej w pętli przekazującej wartości od 1 do 10 jako argumenty i wyświetlający zwróconą wartość. - Energia kinetyczna
W fizyce mówi się, że obiekt będący w ruchu ma energię kinetyczną. Do określenia energii kinetycznej poruszającego się obiektu można użyć następującego wzoru: Zmienne we wzorze: Ek oznacza energię kinetyczną, m to masa przedmiotu wyrażona w kilogramach, natomiast v to prędkość wyrażona w metrach na sekundę. Napisz funkcję o nazwie kineticEnergy(), która przyjmuje jako argumenty masę obiektu (w kilogramach) i prędkość (w metrach na sekundę). Funkcja powinna zwracać wielkość energii kinetycznej posiadanej przez przedmiot. Zademonstruj funkcję przez wywołanie jej w programie, który prosi użytkownika o podanie wartości masy i prędkości. - Tabela temperatur Celsjusza
Wzór na zamianę temperatury wyrażonej w stopniach Fahrenheita na temperaturę wyrażoną w stopniach Celsjusza: F to temperatura w stopniach Fahrenheita, a C w stopniach Celsjusza. Napisz funkcję o nazwie celsius(), która akceptuje temperaturę w stopniach Fahrenheita jako argument. Funkcja ta powinna zwracać temperaturę przekonwertowaną na stopnie Celsjusza. Zademonstruj działanie funkcji przez wywołanie jej w pętli, która wyświetla tabelę stopni Fahrenheita od 0 do 20 i ich ekwiwalent w stopniach Celsjusza. - Rzut monetą
Napisz funkcję o nazwie coinToss(), która będzie symulować rzut monetą. Kiedy wywołasz tę funkcję, powinna ona wygenerować liczbę losową w przedziale od 1 do 2. Jeśli liczba losowa to 1, funkcja powinna wyświetlić „reszka”. Jeśli liczba losowa to 2, funkcja powinna wyświetlić „orzeł”. Wykorzystaj funkcję w programie, który pyta użytkownika o to, jaka liczba rzutów monetą ma zostać wykonana, a następnie symuluje rzut monetą podaną liczbę razy. - Wartość bieżąca
Wyobraź sobie, że chcesz złożyć w depozycie pewną ilość pieniędzy na koncie oszczędnościowym, a następnie zostawić na 10 lat, aby narosły odsetki. Po 10 latach chciałbyś mieć na koncie 10 000 zł. Ile musisz złożyć dzisiaj w depozycie, aby to się stało? Możesz to obliczyć z następującego wzoru na wartość bieżącą: P=F / (1+r)n
gdzie:
P to wartość bieżąca lub wielkość depozytu, który powinieneś dzisiaj zdeponować;
F to przyszła wartość, którą chcesz mieć na koncie (w tym przypadku 10 000 zł);
r to odsetki roczne;
n to liczba lat, przez jaką planujesz trzymać pieniądze na koncie.
Napisz program z funkcją o nazwie presentValue(), która będzie wykonywała obliczenia. Funkcja ta powinna akceptować przyszłą wartość, odsetki roczne i liczbę lat jako argumenty. Zwrócona powinna zostać bieżąca wartość, czyli kwota pieniędzy, która powinna zostać dziś zdeponowana. Zademonstruj tę funkcję w programie, który pozwala użytkownikowi eksperymentować z różnymi wartościami dla danych ze wzoru. - Przyszła wartość
Załóż, że masz pewną ilość pieniędzy na koncie oszczędnościowym, powiększającą się o miesięczne odsetki, i chcesz obliczyć, ile pieniędzy będziesz miał po określonej liczbie miesięcy. Wzór, znany jako wzór przyszłej wartości, to: F = P * (1 + i)*t gdzie:
F to przyszła wartość konta po określonym czasie;
P to bieżąca wartość konta;
i to odsetki w skali jednego miesiąca;
t to liczba miesięcy.
Napisz program podpowiadający użytkownikowi, aby wprowadził bieżące saldo konta, odsetki w skali miesiąca oraz liczbę miesięcy, na jaką zdeponowane zostaną pieniądze. Program powinien przekazać te wartości do funkcji o nazwie futureValue(), która zwraca przyszłą wartość konta po określonej liczbie miesięcy. Program powinien wyświetlać przyszłą wartość konta. - Poszukiwanie gwiazdy
W pewnym konkursie talentów jest pięciu sędziów, z których każdy ocenia występującego, przyznając mu od 0 do 10 punktów. Nie dopuszcza się punktacji ułamkowej, takiej jak 8,3. Końcowy wynik uczestnika jest określany przez odrzucenie najwyższej i najniższej otrzymanej noty, a następnie uśrednienie pozostałych trzech ocen. Napisz program używający tej metody do obliczania wyniku uczestnika konkursu. Powinien on zawierać następujące funkcje:
void getJudgeData() — powinna pytać użytkownika o przyznaną notę, przechowywać ją w zmiennej referencyjnej parametru i walidować. Ta funkcja powinna być wywoływana tylko raz dla każdego z pięciu sędziów.
void calcScore() — powinna obliczać i wyświetlać średnią trzech ocen, które pozostaną po odrzuceniu najwyższej i najniższej. Ta funkcja powinna być wywoływana tylko raz dla każdej z pięciu ocen.
Dwie ostatnie funkcje, opisane poniżej, powinny zostać wywołane przez calcScore(), używającą zwróconych informacji do określenia, które oceny odrzucić.
int findLowest() — powinna odnajdować i zwracać najniższy z wyników.
int findHighest() — powinna odnajdować i zwracać najwyższy z wyników.
Weryfikacja poprawności wprowadzanych danych: nie akceptuj not sędziowskich niższych niż 0 i wyższych niż 10. - Dni wolne
Napisz program obliczający średnią liczbę dni, w których pracownicy firmy są nieobecni. Program powinien mieć następujące funkcje:
Wywołaną przez main() funkcję, która pyta użytkownika o liczbę pracowników w firmie. Ta wartość powinna być zwracana jako int (funkcja akceptuje brak argumentów).
Wywołaną przez main() funkcję akceptującą jeden argument: liczbę pracowników w firmie. Funkcja powinna prosić użytkownika o wprowadzenie liczby dni opuszczonych przez każdego pracownika w ciągu zeszłego roku. Suma tych dni powinna być zwrócona jako int.
Wywołaną przez main() funkcję, która przyjmuje dwa argumenty: liczbę pracowników w firmie i sumę dni nieobecności wszystkich pracowników w ciągu ubiegłego roku. Funkcja powinna zwracać średnią dni z nieobecnościami jako double (ta funkcja nie pokazuje wyniku na ekranie i nie pyta użytkownika o wejście).
Weryfikacja poprawności wprowadzanych danych: nie akceptuj liczby mniejszej niż 1 dla liczby pracowników. Nie akceptuj ujemnej liczby dni opuszczonych przez pracownika. - Status zamówienia
Firma „Miejska Fabryka Kabli” sprzedaje szpule miedzianych kabli w cenie 100 zł za szpulę. Napisz program wyświetlający status zamówienia. Program powinien mieć funkcję pytającą o następujące dane:
liczbę zamówionych szpul,
liczbę szpul w magazynie,
czy są specjalne metody dostawy i opłaty manipulacyjne. (Koszty dostawy i opłaty manipulacyjne wynoszą normalnie 10 zł za szpulę).
Program powinien pytać o specjalne opłaty za szpulę, jeśli takie są.
Zebrane dane powinny być przekazane jako argumenty do innej funkcji wyświetlającej:
liczbę szpul gotowych do wysyłki z magazynu,
liczbę szpul będących zaległymi zamówieniami (jeśli ich liczba jest większa niż liczba w magazynie),
sumę częściową partii gotowej do wysyłki (liczba szpul gotowych do wysyłki razy 100 zł),
sumę kosztów dostawy i opłat manipulacyjnych za partię gotową do wysyłki,
sumę zamówienia gotowego do wysyłki.
Dostawa i parametr opłaty manipulacyjnej w drugiej funkcji powinny mieć domyślny argument 10.00.
Weryfikacja poprawności wprowadzanych danych:
nie akceptuj liczby mniejszej niż 1 dla zamówionych szpul. Nie akceptuj liczby mniejszej niż 0 dla szpul w magazynie lub kosztów dostawy i opłat manipulacyjnych. - Obłożenie szpitala
Napisz program, który obliczy i wyświetli opłaty za pobyt pacjenta w szpitalu. Najpierw program powinien zapytać, czy pacjent został przyjęty do hospitalizacji, czy do leczenia ambulatoryjnego. W pierwszym przypadku powinny zostać wprowadzone następujące dane:
liczba dni pobytu w szpitalu,
stawka dzienna,
opłaty za leczenie szpitalne,
opłaty za usługi szpitalne (testy laboratoryjne itp.). W drugim przypadku program powinien poprosić o następujące dane:
opłaty za usługi szpitalne (testy laboratoryjne itp.),
opłaty za leczenie szpitalne.
Program powinien wykorzystywać dwie funkcje obłożenia w celu obliczenia sumy opłat. Jedna z funkcji powinna akceptować argumenty dla danych pacjenta hospitalizowanego, natomiast druga powinna akceptować argumenty dla danych pacjenta leczonego ambulatoryjnie. Obie funkcje powinny zwracać sumę opłat. Wyzwania programistyczne 25cf99c780a4a42042bf2a66d34da04b 404 Rozdział 6. Funkcje Weryfikacja poprawności wprowadzanych danych: nie akceptuj ujemnych liczb dla żadnych danych. - Populacja
Współczynnik urodzeń to procentowy wzrost populacji w wyniku narodzin, a wskaźnik śmiertelności to procentowe zmniejszenie się populacji dla dowolnej liczby lat. Program powinien pytać o następujące dane: początkowy rozmiar populacji, współczynnik urodzeń, wskaźnik śmiertelności, liczba lat do wyświetlenia. Napisz funkcję obliczającą rozmiar populacji w danym roku. Wzór to N = P + BP – DP gdzie N to nowy rozmiar populacji, P to poprzedni rozmiar populacji, B to współczynnik urodzeń, a D to wskaźnik śmiertelności. Weryfikacja poprawności wprowadzanych danych: nie akceptuj liczb mniejszych niż 2 dla początkowego rozmiaru populacji. Nie akceptuj ujemnych liczb dla współczynnika urodzeń lub wskaźnika śmiertelności. Nie akceptuj liczby mniejszej od 1 dla liczby lat. - Populacja sezonowa
Zmodyfikuj wyzwanie 16. tak, aby został uwzględniony efekt populacji wywoływany przez nowych mieszkańców na danym obszarze i osoby, które go opuściły. Dany wejściowe: początkowy rozmiar populacji, roczny współczynnik urodzeń, roczny wskaźnik śmiertelności, liczba nowych mieszkańców oraz liczba osób opuszczających dany obszar każdego roku. Program powinien wykonać projekcję populacji na liczbę lat wyrażoną w numYears od teraz. Wartość numYears możesz pobrać od użytkownika lub ustawić ją w programie. Weryfikacja poprawności wprowadzanych danych: nie akceptuj liczb mniejszych niż 2 dla początkowego rozmiaru. Nie akceptuj ujemnych liczb dla współczynnika urodzeń lub wskaźnika śmiertelności, nowych mieszkańców i osób, które opuściły obszar. - Estymator pracy malarskiej
Firma malarska określiła, że na każde 60 metrów kwadratowych ściany potrzeba 1 litra farby i 8 godzin pracy. Opłata za godzinę pracy firmy wynosi 25 zł. Napisz program modułowy, który pozwala użytkownikowi wprowadzić liczbę pokoi do pomalowania i cenę za litr farby. Powinien on zapytać także o metry kwadratowe ściany w każdym pokoju. Następnie powinien wyświetlić następujące dane: wymaganą liczbę litrów farby, wymaganą liczbę godzin pracy, koszt farby, opłatę za pracę, całkowity koszt pracy. Weryfikacja poprawności wprowadzanych danych: nie akceptuj liczby mniejszej niż 1 dla liczby pokoi. Nie akceptuj wartości mniejszej niż 10 zł za cenę farby. Nie akceptuj ujemnej liczby dla metrażu ściany. - Zysk giełdowy
Zysk ze sprzedaży akcji może być obliczony następująco: Zysk = (NS · SP – SC) – (NS · PP + PC) gdzie NS to liczba udziałów, SP to cena sprzedaży jednej akcji, SC to prowizja zapłacona za sprzedaż, PP to cena zakupu jednej akcji, a PC to prowizja zapłacona za zakup. Jeśli wyliczenie daje dodatnią wartość, oznacza to, że sprzedaż akcji przyniosła zysk. Jeśli wyliczenie daje ujemną wartość, sprzedaż akcji przyniosła stratę. Napisz funkcję akceptującą jako argumenty: liczbę akcji, cenę zakupu akcji, cenę prowizji za zakup, cenę sprzedaży akcji, cenę prowizji za sprzedaż. Funkcja powinna zwracać zysk (albo stratę) ze sprzedaży akcji. Pokaż działanie tej funkcji w programie, który prosi użytkownika o wprowadzenie koniecznych danych i wyświetla wielkość zysku albo straty. - Wielokrotna sprzedaż akcji
Użyj funkcji, którą napisałeś w wyzwaniu 20. („Zysk giełdowy”), w programie obliczającym sumę zysku albo straty ze sprzedaży wielu akcji. Program powinien pytać użytkownika o liczbę sprzedaży akcji i dane dotyczące każdej sprzedaży. Powinien sumować zysk albo stratę z każdej sprzedaży akcji, a następnie wyświetlać sumę. - Funkcja isPrime()
Liczba pierwsza to liczba, która ma dwa dzielniki naturalne: 1 i samą siebie. Przykładowo, liczba 5 jest liczbą pierwszą, ponieważ może być podzielona bez reszty tylko przez 1 i 5. Liczba 6 nie jest liczbą pierwszą, bo może być podzielona bez reszty przez 1, 2, 3 i 6.
Napisz funkcję o nazwie isPrime(), która przyjmuje liczbę całkowitą jako argument i zwraca true, jeśli argument jest liczbą pierwszą, a w innym przypadku — false.
Zademonstruj działanie tej funkcji w programie.
WSKAZÓWKA
Przypomnij sobie, że operator % dzieli jedną liczbę przez drugą i zwraca resztę z dzielenia.
W wyrażeniu takim jak num1 % num2 operator % zwróci 0, jeśli jest podzielny bez reszty przez num2. - Lista liczb pierwszych
Użyj funkcji isPrime(), którą napisałeś w programie powyżej - 22. („Funkcja isPrime()”), w programie, który wyświetli listę wszystkich liczb pierwszych większych od 1 i mniejszych od 100. - Kamień, papier, nożyce
Napisz program, który pozwala użytkownikowi zagrać z komputerem w grę kamień, papier, nożyce. Program powinien działać następująco:
1. Kiedy program zostaje uruchomiony, generowana jest liczba losowa od 1 do 3. Jeśli tą liczbą jest 1, to oznacza, że komputer wybrał kamień. Jeśli tą liczbą jest 2, to komputer wybrał papier. Jeśli tą liczbą jest 3, to komputer wybrał nożyce (nie wyświetlaj jeszcze wyboru komputera).
2. Użytkownik wprowadza swój wybór: „kamień”, „papier” albo „nożyce” na klawiaturze. (Możesz użyć menu, jeżeli wolisz).
3. Wyświetlany jest wybór komputera.
4. Zwycięzca jest wybierany na podstawie następujących zasad:
Jeśli jeden gracz wybierze kamień, a drugi nożyce, to wygrywa kamień (kamień tępi nożyce).
Jeśli jeden gracz wybierze nożyce, a drugi papier, to wygrywają nożyce (nożyce przecinają papier).
Jeśli jeden gracz wybierze papier, a drugi kamień, to wygrywa papier (papier owija kamień).
Jeśli obaj gracze wybiorą ten sam ruch, to rozgrywka musi zostać powtórzona, aby wyłonić zwycięzcę.
Upewnij się, że program jest podzielony na funkcje wykonujące każde główne zadanie.
rozwiązanie |