Plik do pobrania
Transkrypt
Plik do pobrania
Instrukcje wyboru switch Podczas tworzenia programu może zdarzyć się, że należy wybrać jeden z wielu sposobów postępowania w zależności od wartości zmiennej. Zawiłą konstrukcję warunków zagnieżdżonych if …else można zastąpić instrukcją switch. Składnia instrukcji wyboru switch: switch (wyrażenie) { case wartosc1: instrukcja1; break; case wartosc2: instrukcja2; break; ... default: inna_instrukcjad } Jeśli wartość wyrażenia odpowiada którejś z wartości podanej przy jednej z etykiet case , wówczas wykonana zostanie instrukcja przy tej właśnie etykiecie. Po napotkaniu instrukcji break następuje przekazanie sterowania do pierwszej instrukcji po switch, czyli nie są sprawdzane kolejne przypadki. Jeśli wyrażenie nie przyjmuje żadnej z wartości określonych w etykietach case wówczas zostaje wykonana instrukcja oznaczona etykietą default. Etykieta default nie musi występować w instrukcji wyboru switch i gdy żadna z etykiet case nie ma wartości równej warunkowi nie wykona się żadna instrukcja: Przykład #include <iostream > #include <conio.h> int numer_dnia; using namespace std; int main() { cout <<"Podaj numer dnia tygodnia \n"; cin >>numer_dnia; switch(numer_dnia) { case 1: cout <<"Poniedziałek";break; case 2: cout <<"Wtorek";break; case 3: cout <<"Środa";break; case 4: cout <<"Czwartek";break; case 5: cout <<"Piatek";break; case 6: cout <<"Sobota";break; case 7: cout <<"Niedziela";break; default: cout <<"Błedna dana!"; } getch(); return 0; } -1Rafaello W przypadku, gdy daną czynność należy powtórzyć wiele razy stosujemy pętle. W języku C++ można wyróżnić trzy rodzaje pętli: • pętla for • pętla while • pętla do … while Instrukcja pętli for Pętlę tą stosujemy zwykle, gdy liczba powtórzeń jest z góry określona. Składnia pętli for: for(instrukcja_początkowa;warunek_sterujący;instrukcja_kroku) gdzie: instrukcja_początkowa – instrukcja wykonywana przed pierwszym obiegiem; warunek_sterujący – wyrażenie logiczne, które decyduje o zakończeniu działania pętli (jeśli jest fałszywe, wówczas następuje zakończenie wykonywania instrukcji w pętli instrukcja_kroku – instrukcja wykonywana po każdym przebiegu pętli, modyfikująca zazwyczaj tzw. licznik petli Przykład for (i=0;i<10;i=i+1) { cout <<”wypisuję ten napis 10 razy\n”; cout <<”wykonałem się <<i<<” raz!”; } Instrukcja pętli while Pętla while wykonuje się kolejny raz, gdy wyrażenie jest prawdziwe (czyli ma wartość niezerową) Składnia pętli while: while (wyrażenie) { instrukcje; } gdzie: wyrażenie – wyrażenie logiczne (przyjmując wartość „prawda” lub „fałsz” Przykład while (a>0) { cout <<”Podaj kolejną liczbę”; cin <<a; } cout <<”Podałeś liczbe nieujemną, kończę działanie!”; Instrukcja pętli do … while Pętla do …while wykonuje się kolejny raz, gdy wyrażenie jest prawdziwe (czyli ma wartość niezerową) Składnia pętli while: do { instrukcje; } while (wyrażenie) gdzie: wyrażenie – wyrażenie logiczne (przyjmując wartość „prawda” lub „fałsz” UWAGA: Różnica między ostatnimi dwoma pętlami, jest taka, że pętla do … while wykona się zawsze co najmniej raz, zaś pętla while może nie wykonać się wcale. -2Rafaello Zadania Zadanie 1 Dwucyfrowe Dana jest liczba dwucyfrowa k. Napisz program, który wypisze wszystkie liczby dwucyfrowe nie większe niż k w kolejności rosnącej. Wejście Pierwszy i jedyny wiersz wejścia zawiera liczbę całkowitą k z zakresu 10..99. Wyjście W kolejnych wierszach należy zapisać rosnący ciąg liczb całkowitych dwucyfrowych, nie większych niż k. Przykład Dla danych wejściowych: 13 poprawną odpowiedzią jest: 10 11 12 Zadanie 2 13 PaNie Dane są liczby całkowite a i b. Napisz program, który wypisze wszystkie liczby parzyste w kolejności rosnącej, a następnie wszystkie liczby nieparzyste w kolejności malejącej z przedziału <a; b>. Wejście Pierwszy i jedyny wiersz wejścia zawiera dwie liczby całkowite a i b (a<=b) oddzielone pojedynczą spacją z zakresu 0..255. Wyjście W kolejnych wierszach należy zapisać rosnący ciąg liczb parzystych z przedziału <a; b>, zaś po nim malejący ciąg liczb nieparzystych z tego przedziału. Przykład Dla danych wejściowych: 3 6 poprawną odpowiedzią jest: 4 6 5 3 Zadanie 3 SiŚ Dany jest ciąg liczb całkowitych zakończony liczbą zero, która nie należy do ciągu. Napisz program, który wyznaczy sumę wszystkich liczb ciągu oraz ich średnią arytmetyczną. Wejście W pierwszym wierszu wejścia zapisano ciąg liczb całkowitych z zakresu z zakresu 1..65535 zakończony liczbą zero. Wyjście Wyjście zgodne z przykładem. Przykład Dla danych wejściowych: 6 16 5 1 17 0 poprawną odpowiedzią jest: 45 9.00 Zadanie 4 Dana jest Suma liczba rzeczywista p. Oblicz ile początkowych składników nieskończonej sumy 1/1+1/2+1/3+1/4+1/5+... należy dodać do siebie, aby otrzymać liczbę nie mniejszą niż p. Wejście Pierwszy i jedyny wiersz wejścia zakończony znakiem nowej linii zawiera nieujemną liczbę rzeczywistą p. Wyjście W pierwszym w jedynym wierszu wyjścia zakończonym znakiem nowej linii należy zapisać dwie liczby oddzielone pojedynczą spacją: obliczoną ilość początkowych składników sumy oraz wartość tej sumy. Przykład Dla danej wejściowej: -3Rafaello 0.281 poprawną odpowiedzią jest: 1 1.000000 Zadanie 5 Największy podzielnik Dana jest liczba naturalna n nie większa od 2147483647. Napisz program, który wyznaczy największy dzielnik podanej liczby mniejszy od n. Wejście: Liczba naturalna n z zakresu 1… 2147483647 Wyjście Największy dzielnik podanej liczby mniejszy od niej samej Przykład Dla danej wejściowej: 36 poprawną odpowiedzią jest: 18 Zadanie 6 Niesforne Ogry Jak wiadomo Gumisie żyją na świecie. Ale teraz nie nimi się zajmiemy. Obok gumisiów żyje Książe Iktorn wraz ze swoją bandą złych i śmierdzących Ogrów. Stwory te mają bardzo ograniczoną inteligencję.. Książe Iktorn ma nie lada problem z zebraniem wszystkich stworów podczas porannej zbiórki, gdyż zawsze dokładnie jeden się gdzieś zapodzieje. Wierny podnóżek księcia Iktorna – inteligentny i sprytny (co wśród ogrów rzadko się zdarza) Tołdi wpadł na pomysł jak sprawdzić, którego ogra brakuje. Otóż każdy z paskudów będzie miał wytatuowany na ramieniu numer, który został zapisany w notesie Tołdiego. Ponieważ ogrów jest dużo a mały Tołdi nie zawsze sobie radzi ze sprawdzaniem obecności Książe poprosił Ciebie (w nadziej, że nie odmówisz – podobno obiecał sowitą zapłatę) o napisanie programu, który wczyta numery wszystkich ogrów z notesu Tołdiego, wczyta numery ogrów znajdujących się na apelu i wyznaczy numer tego obrzydliwca, który gdzieś się zapodział. Wejście: Ciąg różnych liczb z przedziału 2…1 000 000– numerów ogrów zakończony wartością zero (która nie oznacza ogra) zapisanych w notesie Tołdiego Ciąg liczb – numerów ogrów będących na porannym apelu również zakończonych liczbą 0 Wyjście: Numer ogra, którego brakuje na porannym apelu Przykład Dla danych: 1 5 10 3 4 2 0 2 1 5 10 3 0 poprawną odpowiedzią jest: 4 Zadanie 7 FIB Ciąg liczbowy 1 1 2 3 5 8 13 21 ... nazywamy ciągiem Fibonacciego, a jego wyrazy liczbami Fibonacciego. W ciągu tym pierwsze dwa wyrazy są równe 1, każdy następny jest sumą dwóch poprzednich. Napisz program, który dla danej liczby n wyznaczy ilość liczb Fibonacciego mniejszych od n oraz poda ich sumę. Wejście Pierwszy i jedyny wiersz wejścia zakończony znakiem nowej linii zawiera liczbę całkowitą n z zakresu 0..65535. Wyjście W pierwszym wierszu wyjścia należy zapisać ilość liczb Fibonacciego mniejszych od n, w wierszu drugim zakończonym znakiem nowej linii ich sumę. Przykład Dla danej wejściowej: 18 poprawną odpowiedzią jest: 7 33 -4Rafaello