helion kopia dla: Iwona Kruszynska

Podobne dokumenty
helion kopia dla: Iwona Kruszynska

z programowania z przykładowymi rozwiązaniami

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Podstawy Programowania Podstawowa składnia języka C++

1 Podstawy c++ w pigułce.

Podstawy Programowania C++

FUNKCJA KWADRATOWA. Poziom podstawowy

Turbo Pascal. Zadania z programowania z przykładowymi rozwiązaniami

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Konstrukcje warunkowe Pętle

1 Podstawy c++ w pigułce.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Programowanie w Turbo Pascal

Cw.12 JAVAScript w dokumentach HTML

lekcja 8a Gry komputerowe MasterMind

Proste programy w C++ zadania

Wstęp do Informatyki

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Pętle. Dodał Administrator niedziela, 14 marzec :27

do instrukcja while (wyrażenie);

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Laboratorium nr 1. i 2.

LXIV Olimpiada Matematyczna

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Odczyt danych z klawiatury Operatory w Javie

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Metody numeryczne Laboratorium 2

JAVAScript w dokumentach HTML (1)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

4. Funkcje. Przykłady

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

PROGRAMOWANIE W C++ ZADANIA

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie - wykład 4

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Pętla for. Wynik działania programu:

Struktura pliku projektu Console Application

Programowanie - instrukcje sterujące

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Liczby losowe i pętla while w języku Python

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi. nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

JAVAScript w dokumentach HTML - przypomnienie

Język ludzki kod maszynowy

Programowanie strukturalne i obiektowe

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Programowanie, algorytmy i struktury danych

KURS C/C++ WYKŁAD 1. Pierwszy program

Warsztaty dla nauczycieli

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Podstawy Programowania Algorytmy i programowanie

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

WHILE (wyrażenie) instrukcja;

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

3. Instrukcje warunkowe

Programowanie w języku Python. Grażyna Koba

PHP w-3. Sterowanie w PHP

WHILE (wyrażenie) instrukcja;

Podstawy programowania w języku C

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

2 Przygotował: mgr inż. Maciej Lasota

C++ wprowadzanie zmiennych

Program nauczania przeznaczony dla IV etapu edukacyjnego.

1 Wielokrotne powtarzanie tych samych operacji

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Programowanie 3 - Funkcje, pliki i klasy

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Programowanie komputerowe. Zajęcia 1

Wstęp do Programowania Lista 1

Instrukcje sterujące. Programowanie Proceduralne 1

JAVA?? to proste!! Autor: wojtekb111111

Część 4 życie programu

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

JAVAScript w dokumentach HTML (2)

Wprowadzenie komentarzy do programu

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

MATEMATYKA WYDZIAŁ MATEMATYKI - TEST 1

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Maxima i Visual Basic w Excelu

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Język C, instrukcje sterujące (laboratorium)

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Warunki logiczne instrukcja if

Transkrypt:

962a78eb15d2230b22be7b0aa45 Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszehnianie ałośi lub fragmentu niniejszej publikaji w jakiejkolwiek postai jest zabronione. Wykonywanie kopii metodą kserografizną, fotografizną, a także kopiowanie książki na nośniku filmowym, magnetyznym lub innym powoduje naruszenie praw autorskih niniejszej publikaji. Wszystkie znaki występująe w tekśie są zastrzeżonymi znakami firmowymi bądź towarowymi ih właśiieli. Autor oraz Wydawnitwo HELION dołożyli wszelkih starań, by zawarte w tej książe informaje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialnośi ani za ih wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowyh lub autorskih. Autor oraz Wydawnitwo HELION nie ponoszą również żadnej odpowiedzialnośi za ewentualne szkody wynikłe z wykorzystania informaji zawartyh w książe. Redaktor prowadząy: Ewelina Burska Projekt okładki: Radosław Zbytniewski Materiały grafizne na okłade zostały wykorzystane za zgodą istokphoto In. Wydawnitwo HELION ul. Kośiuszki 1, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli hesz oenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?ppzad_p Możesz tam wpisać swoje uwagi, spostrzeżenia, reenzję. Kody wykorzystane w książe można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/ppzad.zip ISBN: 978-83-246-3707-2 Numer katalogowy: 6900 Copyright Helion 2011 Printed in Poland. Poleć książkę na Faebook.om Kup w wersji papierowej Oeń książkę Księgarnia internetowa Lubię to!» Nasza społezność

962a78eb15d2230b22be7b0aa45 Spis treśi Od autora 5 Rozdział 1. Proste operaje wejśia-wyjśia 7 Rozdział 2. Podejmujemy deyzje w programie 17 Rozdział 3. Iteraje 29 Rozdział 4. Tablie 57 Tablie jednowymiarowe 57 Tablie dwuwymiarowe 61 Rozdział 5. Podprogramy 79 Rozdział 6. Programowanie obiektowe 97 Rozdział 7. Pliki tekstowe 111

962a78eb15d2230b22be7b0aa45 4 C++. Zadania z programowania z przykł adowymi rozwią zaniami

962a78eb15d2230b22be7b0aa45 Od autora Trójzbiór Zadania z programowania z rozwiązaniami to pierwszy w Polse zbiór zadań adresowany do wszystkih osób zainteresowanyh programowaniem, które w krótkim zasie, poprzez analizę zaproponowanyh rozwiązań, hiałyby nauzyć się solidnyh podstaw programowania w trzeh językah: Turbo Pasalu, C++ oraz Javie. Składa się on z trzeh zbiorów zadań: Turbo Pasal. Zadania z programowania z przykładowymi rozwiązaniami. C++. Zadania z programowania z przykładowymi rozwiązaniami. Java. Zadania z programowania z przykładowymi rozwiązaniami. Choiaż każdy z tyh zbiorów stanowi odrębną ałość, to zostały one napisane w taki sposób, aby ten sam lub bardzo podobny problem programistyzny (np. napisz program, który obliza pole prostokąta) został rozwiązany w trzeh językah programowania: Turbo Pasalu, C++ i Javie, strukturalnie i obiektowo. Tak skonstruowany trójzbiór Zadania z programowania zyskuje zupełnie nowy wymiar dydaktyzny w naue tyh trzeh języków. Zadania z programowania można również wykorzystać jako uzupełnienie wiedzy zazerpniętej z innyh książek do nauki programowania. Zakres i stopień trudnośi zadań pokrywa się z tradyyjnym proesem nauzania wymienionyh języków. Zbiór ten może też pełnić rolę podręznej pomoy dla pozątkująyh programistów, w której szybko znajdą oni potrzebne im rozwiązanie.

962a78eb15d2230b22be7b0aa45 6 C++. Zadania z programowania z przykł adowymi rozwiązaniami Trójzbiór adresowany jest również do maturzystów, studentów, nauzyieli informatyki oraz osób zainteresowanyh programowaniem lub rozpozynająyh naukę programowania w języku C++. Uzniowie tehników informatyznyh mogą zbiory zadań wykorzystać do szybkiej powtórki przed egzaminem zawodowym. W trakie pisania tej książki korzystałem z tzw. aplikaji konsolowyh (ang. onsole appliation) i kompilatora firmy Borland (C++). Mirosław J. Kubiak

962a78eb15d2230b22be7b0aa45 1 Proste operaje wejśia-wyjśia W tym rozdziale zamieszzono proste zadania z przykładowymi rozwiązaniami ilustrująe, w jaki sposób komputer komunikuje się z użytkownikiem w języku C++. Każda aplikaja powinna posiadać możliwość komunikowania się z użytkownikiem. Wykorzystują proste przykłady, pokażemy, w jaki sposób program napisany w języku C++ komunikuje się z nim poprzez standardowe operaje wejśia-wyjśia. Plik nagłówkowy z instrukji #inlude <iostream.h> zawiera definije klas 1 umożliwiająyh wykonywanie operaji wejśiawyjśia na strumieniah. Do wyprowadzania danyh na ekran służy standardowy strumień wyjśiowy out, który w języku C++ domyślnie przypisuje ekran do standardowego urządzenia wyjśiowego systemu operayjnego. Aby wyświetlić komunikat lub dane, trzeba do strumienia wyjśiowego out zastosować symbol podwójnego znaku mniejszośi << (operaja wstawiania). Dwa znaki mniejszośi należy wprowadzić z klawiatury. 1 Więej informaji na temat klas zytelnik znajdzie w rozdziale 6.

962a78eb15d2230b22be7b0aa45 8 C++. Zadania z programowania z przykł adowymi rozwiązaniami Do wprowadzania danyh do programu służy standardowy strumień wejśiowy in oraz operator >> (dwa znaki większośi, które również wprowadzamy z klawiatury), np. in >> a;. Do formatowania strumienia wyjśiowego będziemy używali flagi formatująej fixed i manipulatora setpreision(n). Flaga fixed używa do lizb zmiennoprzeinkowyh ustalonej kropki dziesiętnej, natomiast manipulator setpreision(n) ustala ih preyzję na n np. zapis out << setpreision(2); oznaza, że lizby zmiennoprzeinkowe będą wyświetlane z dokładnośią dwóh miejs po krope. Zastosowanie manipulatora setpreision(n) wymaga włązenia do programu pliku nagłówkowego: #inlude <iomanip.h> Opisane powyżej podejśie do operaji wejśia-wyjśia nazywa się obiektowym 2. Z A D A N I E 1.1 Napisz program, który obliza pole prostokąta. Wartośi boków a i b wprowadzamy z klawiatury. W programie należy przyjąć, że zmienne a i b oraz pole są typu float (rzezywistego). Przyjmujemy format wyświetlania ih na ekranie z dokładnośią dwóh miejs po krope. Przykładowe rozwiązanie listing 1.1 #inlude <iostream.h> // Zadanie 1.1 #inlude <iomanip.h> #inlude <onio.h> float a, b, pole; out << "Program obliza pole prostokata." << endl; out << "Podaj bok a." << endl; in >> a; out << "Podaj bok b." << endl; in >> b; pole = a*b; 2 Więej informaji na temat obiektowyh operaji wejśia-wyjśia, flag i manipulatorów znajdzie zytelnik na stronah WWW poświęonyh językowi programowania C++ pod adresem http://www.plusplus.om/.

962a78eb15d2230b22be7b0aa45 Rozdział 1. Proste operaje wejś ia-wyjś ia 9 out << fixed; // flaga out << setpreision(2); // ustalenie preyzji out << "Pole prostokata o boku a = " << a << " i boku b = " << b; out << " wynosi " << pole << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Linijka kodu float a, b, pole; umożliwia zadeklarowanie zmiennyh a, b i pole (wszystkie zmienne w programie są typu rzezywistego float). Instrukja out << "Program obliza pole prostokata." << endl; wyświetla na ekranie komputera komunikat Program obliza pole prostokata. Instrukja in >> a; zeka na wprowadzenie z klawiatury komputera lizby, która następnie zostanie przypisana zmiennej a. Pole prostokąta zostaje oblizone w wyrażeniu pole = a*b; Za wyświetlenie wartośi zmiennyh a i b oraz pole wraz z odpowiednim opisem są odpowiedzialne następująe linijki kodu: out << "Pole prostokata o boku a = " << a << " i boku b = " << b; out << " wynosi " << pole << "." << endl; Flaga fixed używa ustalonej kropki dziesiętnej dla lizb zmiennoprzeinkowyh. Zapis out << setpreision(2); oznaza, że lizby te będą wyświetlane na ekranie z dokładnośią dwóh miejs po krope. Natomiast funkja geth(); (ang. get harater wzytaj znak) zeka na wzytanie dowolnego znaku z klawiatury (naiśnięie dowolnego klawisza). Prototyp tej funkji znajduje się w pliku nagłówkowym onio.h. Instrukja endl; (ang. end of line konie linii) przenosi kursor na pozątek następnej linii. Komentarze w programie oznazamy dwoma ukośnikami // to jest komentarz do programu

962a78eb15d2230b22be7b0aa45 10 C++. Zadania z programowania z przykł adowymi rozwiązaniami Są one ignorowane w proesie kompilaji. Rezultat działania programu można zobazyć na rysunku 1.1. Program obliza pole prostokata. Podaj bok a. 1 Podaj bok b. 2 Pole prostokata o boku a = 1.00 i boku b = 2.00 wynosi 2.00. Rysunek 1.1. Efekt działania programu Zadanie 1.1 Z A D A N I E 1.2 Napisz program, który wyświetla na ekranie komputera wartość predefiniowanej stałej π = 3,14 Należy przyjąć format prezentowania tej stałej, oznazanej w języku C++ jako M_PI, z dokładnośią pięiu miejs po krope. Wskazówka Stała M_PI znajduje się w pliku nagłówkowym math.h, który poleeniem #inlude <math.h> należy dołązyć do programu. Przykładowe rozwiązanie listing 1.2 #inlude <iostream.h> // Zadanie 1.2 #inlude <iomanip.h> #inlude <math.h> #inlude <onio.h> out << "Program wyswietla wartos predefiniowanej stalej pi" << endl; out << "z dokladnosia pieiu miejs po krope." << endl; out << "pi = " << fixed << setpreision(5) << M_PI << endl; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 1.2.

962a78eb15d2230b22be7b0aa45 Rozdział 1. Proste operaje wejś ia-wyjś ia 11 Program wyswietla wartos predefiniowanej stalej pi z dokladnosia pieiu miejs po krope. pi = 3.14159 Rysunek 1.2. Efekt działania programu Zadanie 1.2 Z A D A N I E 1.3 Napisz program, który wyświetla na ekranie komputera pierwiastek kwadratowy z wartośi predefiniowanej stałej π = 3,14... Należy przyjąć format wyświetlania tego pierwiastka z dokładnośią dwóh miejs po krope. Wskazówka Pierwiastek kwadratowy ze stałej π oblizamy, korzystają z funkji sqrt(). Funkja ta znajduje się w pliku nagłówkowym math.h. Przykładowe rozwiązanie listing 1.3 #inlude <iostream.h> // Zadanie 1.3 #inlude <iomanip.h> #inlude <math.h> #inlude <onio.h> out << "Program wyswietla pierwiastek kwadratowy z pi"; out << " z dokladnosia dwoh miejs po krope." << endl; out << "Sqrt(pi) = " << fixed << setpreision(2) << sqrt(m_pi) << endl; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 1.3. Program wyswietla pierwiastek kwadratowy z pi z dokladnosia dwoh miejs po krope. Sqrt(pi) = 1.77 Rysunek 1.3. Efekt działania programu Zadanie 1.3

962a78eb15d2230b22be7b0aa45 12 C++. Zadania z programowania z przykł adowymi rozwiązaniami Z A D A N I E 1.4 Napisz program, który obliza objętość kuli o promieniu r. Wartość promienia wprowadzamy z klawiatury. W programie należy przyjąć, że r jest typu float (rzezywistego). Dla zmiennyh r oraz objetos należy przyjąć format wyświetlania ih na ekranie z dokładnośią dwóh miejs po krope. Przykładowe rozwiązanie listing 1.4 #inlude <iostream.h> // Zadanie 1.4 #inlude <iomanip.h> #inlude <math.h> #inlude <onio.h> float r, objetos; out << "Program obliza objetos kuli o promieniu r." << endl; out << "Podaj promien r." << endl; in >> r; objetos = 4*M_PI*r*r*r/3; out << fixed; out << setpreision(2); out << "Objetos kuli o promieniu r = " << r << " wynosi "; out << objetos << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Objętość kuli o promieniu r obliza linijka kodu objetos = 4*M_PI*r*r*r/3; gdzie potęgowanie zamieniono na mnożenie. Rezultat działania programu można zobazyć na rysunku 1.4. Program obliza objetos kuli o promieniu r. Podaj promien r. 1 Objetos kuli o promieniu r = 1.00 wynosi 4.19. Rysunek 1.4. Efekt działania programu Zadanie 1.4

962a78eb15d2230b22be7b0aa45 Rozdział 1. Proste operaje wejś ia-wyjś ia 13 Z A D A N I E 1.5 Napisz program, który obliza wynik dzielenia ałkowitego bez reszty dla dwóh lizb ałkowityh a = 37 i b = 11. Wskazówka W języku C++ w przypadku zastosowania operatora dzielenia / dla lizb ałkowityh reszta wyniku jest pomijana 3. Przykładowe rozwiązanie listing 1.5 #inlude <iostream.h> // Zadanie 1.5 #inlude <onio.h> int a = 37; int b = 11; out << "Program obliza wynik dzielenia alkowitego" << endl; out << "dla dwoh lizb alkowityh." << endl; out << "Dla lizb a = " << a << " i b = " << b << endl; out << a << "/" << b << " = " << a/b << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 1.5. Program obliza wynik dzielenia alkowitego dla dwoh lizb alkowityh. Dla lizb a = 37 i b = 11 37/11 = 3. Rysunek 1.5. Efekt działania programu Zadanie 1.5 3 W języku Turbo Pasal należy zastosować operator dzielenia ałkowitego bez reszty div.

962a78eb15d2230b22be7b0aa45 14 C++. Zadania z programowania z przykł adowymi rozwiązaniami Z A D A N I E 1.6 Napisz program, który obliza resztę z dzielenia ałkowitego dla dwóh lizb ałkowityh a = 37 i b = 11. Wskazówka Należy zastosować operator reszty z dzielenia ałkowitego modulo, który oznazamy w języku C++ symbolem %. Operator ten umożliwia uzyskanie tylko reszty z dzielenia, natomiast ałkowita wartość lizbowa jest odrzuana. Przykładowe rozwiązanie listing 1.6 #inlude <iostream.h> // Zadanie 1.6 #inlude <onio.h> int a = 37; int b = 11; out << "Program obliza reszte z dzielenia alkowitego"; out << " dwoh lizb alkowityh." << endl; out << "Dla lizb a = " << a << " i b = " << b << endl; out << a << "%" << b << " = " << a%b << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 1.6. Program obliza reszte z dzielenia alkowitego dwoh lizb alkowityh. Dla lizb a = 37 i b = 11 37%11 = 4. Rysunek 1.6. Efekt działania programu Zadanie 1.6

962a78eb15d2230b22be7b0aa45 Rozdział 1. Proste operaje wejś ia-wyjś ia 15 Z A D A N I E 1.7 Napisz program, który obliza sumę, różnię, ilozyn i iloraz dla dwóh lizb x i y wprowadzanyh z klawiatury. W programie przyjmujemy, że lizby x i y są typu float (rzezywistego). Dla zmiennyh x, y, suma, roznia, ilozyn i iloraz należy przyjąć format wyświetlania ih na ekranie z dokładnośią dwóh miejs po krope. Przykładowe rozwiązanie listing 1.7 #inlude <iostream.h> // Zadanie 1.7 #inlude <iomanip.h> #inlude <onio.h> float x, y, suma, roznia, ilozyn, iloraz; out << "Program obliza sume, roznie, ilozyn i iloraz" << endl; out << "dla dwoh lizb x i y wprowadzanyh z klawiatury." << endl; out << endl; out << "Podaj x." << endl; in >> x; out << "Podaj y." << endl; in >> y; suma = x+y; roznia = x-y; ilozyn = x*y; iloraz = x/y; out << fixed; out << setpreision (2); out << "Dla x = " << x << " i y = " << y << endl; out << endl; // wydruk pustej linii out << "suma = " << suma << "," << endl; out << "roznia = " << roznia << "," << endl; out << "ilozyn = " << ilozyn << "," << endl; out << "iloraz = " << iloraz << "."; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 1.7.

962a78eb15d2230b22be7b0aa45 16 C++. Zadania z programowania z przykł adowymi rozwiązaniami Program obliza sume, roznie, ilozyn i iloraz dla dwoh lizb x i y wprowadzanyh z klawiatury. Podaj x. 1 Podaj y. 2 Dla x = 1.00 i y = 2.00 suma = 3.00, roznia = -1.00, ilozyn = 2.00, iloraz = 0.50. Rysunek 1.7. Efekt działania programu Zadanie 1.7

962a78eb15d2230b22be7b0aa45 2 Podejmujemy deyzje w programie W tym rozdziale przedstawimy typowe zadania wraz z przykładowymi rozwiązaniami z wykorzystaniem instrukji warunkowyh. W języku C++ istnieją dwie instrukje warunkowe: instrukja warunkowa if... else, instrukja wyboru swith... ase. Instrukja warunkowa if... else służy do sprawdzania poprawnośi wyrażenia warunkowego i w zależnośi od tego, zy dany warunek jest prawdziwy, zy nie, pozwala na wykonanie różnyh bloków programu. Jej ogólna postać jest następująa: if (warunek) // instrukje do wykonania, kiedy warunek jest prawdziwy else // instrukje do wykonania, kiedy warunek jest fałszywy

962a78eb15d2230b22be7b0aa45 18 C++. Zadania z programowania z przykł adowymi rozwiązaniami Blok else jest opjonalny i instrukja warunkowa w wersji skróonej ma postać if (warunek) // instrukje do wykonania, kiedy warunek jest prawdziwy Jeżeli warunek nie jest prawdziwy, to instrukja warunkowa if nie zostanie wykonana. Instrukja wyboru swith... ase pozwala w wygodny i przejrzysty sposób sprawdzić iąg warunków i wykonywać kod w zależnośi od tego, zy są one prawdziwe, zy fałszywe. Jej ogólna postać jest następująa: swith (wyrażenie) ase wartość_1 : instrukje_1; break; ase wartość_2 : instrukje_2; break;... ase wartość_n : instrukje_n; break; default : instrukje; Instrukja break przerywa wykonywanie ałego bloku ase. UWAGA: jej brak może doprowadzić do nieozekiwanyh wyników i błędów w programie. Z A D A N I E 2.1 Napisz program, który dla trzeh boków trójkąta a, b i wprowadzonyh z klawiatury sprawdza, zy tworzą one trójkąt prostokątny (zakładamy, że a > 0, b > 0, > 0). Przykładowe rozwiązanie listing 2.1 #inlude <iostream.h> // Zadanie 2.1 #inlude <onio.h> int a, b, ; out << "Program sprawdza, zy boki a, b oraz tworza trojkat prostokatny." << endl;

962a78eb15d2230b22be7b0aa45 Rozdział 2. Podejmujemy deyzje w programie 19 out << "Podaj bok a." << endl; in >> a; out << "Podaj bok b." << endl; in >> b; out << "Podaj bok." << endl; in >> ; if ((a*a+b*b) == (*)) out << "Boki a = " << a << ", b = " << b << " i = " << ; out << " tworza trojkat prostokatny." << endl; else out << "Boki a = " << a << ", b = " << b << " i = " << ; out << " nie tworza trojkata prostokatnego." << endl; geth(); // zeka na naisnieie dowolnego klawisza Sprawdzenie twierdzenia Pitagorasa dla wzytanyh boków a, b i zostało zawarte w następująyh linijkah kodu: if ((a*a+b*b) == (*)) out << "Boki a = " << a << ", b = " << b << " i = " << ; out << " tworza trojkat prostokatny." << endl; else out << "Boki a = " << a << ", b = " << b << " i = " << ; out << " nie tworza trojkata prostokatnego." << endl; Łatwo sprawdzić, że boki a = 3, b = 4, = 5 tworzą trójkąt prostokątny (lizby te spełniają twierdzenie Pitagorasa), i na ekranie pojawi się komunikat Boki tworza trojkat prostokatny, natomiast boki a = 1, b = 2, = 3 nie tworzą trójkąta prostokątnego (lizby te nie spełniają twierdzenia Pitagorasa), wię na ekranie zostanie wyświetlony komunikat Boki nie tworza trojkata prostokatnego. Rezultat działania programu dla a = 1, b = 2, = 3 można zobazyć na rysunku 2.1.

962a78eb15d2230b22be7b0aa45 20 C++. Zadania z programowania z przykł adowymi rozwiązaniami Program sprawdza, zy boki a, b oraz tworza trojkat prostokatny. Podaj bok a. 1 Podaj bok b. 2 Podaj bok. 3 Boki a = 1, b = 2 i = 3 nie tworza trojkata prostokatnego. Rysunek 2.1. Efekt działania programu Zadanie 2.1 Z A D A N I E 2.2 Napisz program, który z wykorzystaniem instrukji warunkowej if obliza pierwiastki równania kwadratowego ax 2 +bx+ = 0, gdzie zmienne a, b, to lizby rzezywiste wprowadzane z klawiatury. Dla zmiennyh a, b,, x1 oraz x2 należy przyjąć format wyświetlania ih z dokładnośią dwóh miejs po krope. Przykładowe rozwiązanie listing 2.2 #inlude <iostream.h> // Zadanie 2.2 #inlude <iomanip.h> #inlude <math.h> #inlude <onio.h> float a, b,, delta, x1, x2; out << "Program obliza pierwiastki rownania kwadratowego"; out << " dla dowolnyh wspolzynnikow a, b,." << endl; out << "Podaj a." << endl; in >> a; if (a == 0) out << "Niedozwolona wartos wspolzynnika a. Naisnij dowolny klawisz."; else out << "Podaj b." << endl; in >> b; out << "Podaj." << endl; in >> ; out << fixed; out << setpreision(2);

962a78eb15d2230b22be7b0aa45 Rozdział 2. Podejmujemy deyzje w programie 21 out << "Dla wprowadzonyh lizb:" << endl; out << "a = " << a << "," << endl; out << "b = " << b << "," << endl; out << " = " << << "," << endl; delta = b*b-4*a*; if (delta < 0) out << "brak pierwiastkow rzezywistyh." << endl; else if (delta == 0) x1 = -b/(2*a); out << "trojmian ma jeden pierwiastek podwojny x1 = " << x1 << "." << endl; else x1 = (-b-sqrt(delta))/(2*a); x2 = (-b+sqrt(delta))/(2*a); out << "trojmian ma dwa pierwiastki:" << endl; out << "x1 = " << x1 << "," << endl; out << "x2 = " << x2 << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza W pierwszej zęśi programu sprawdzamy, zy wartość współzynnika a jest równa zero. Ilustrują to następująe linijki kodu: if (a == 0) out << "Niedozwolona wartos wspolzynnika a. Naisnij dowolny klawisz."; else Jeśli a = 0, to zostanie wyświetlony komunikat Niedozwolona wartos wspolzynnika a i program zostanie zakońzony. Dla a różnego od zera program będzie ozekiwał na wprowadzenie wartośi b i. Po ih wpisaniu zostanie oblizona delta według wzoru

962a78eb15d2230b22be7b0aa45 22 C++. Zadania z programowania z przykł adowymi rozwiązaniami delta = b*b-4*a*; Jeśli delta < 0, to zostanie wyświetlony komunikat brak pierwiastkow rzezywistyh. W przypadku gdy delta = 0, równanie kwadratowe ma jeden pierwiastek podwójny, który oblizymy ze wzoru x1 = -b/(2*a); Jeśli delta > 0 równanie ma dwa pierwiastki, które zostaną oblizone przy użyiu wzorów x1 = (-b-sqrt(delta))/(2*a); x2 = (-b+sqrt(delta))/(2*a); Przykładowo dla a = 1, b = 5 i = 4 wartośi pierwiastków równania wynoszą odpowiednio x1 = -4 i x2 = -1. Dla a = 1, b = 4 i = 4 trójmian ma z kolei jeden pierwiastek podwójny x1 = -2. Dla a = 1, b = 2 oraz = 3 trójmian nie ma pierwiastków rzezywistyh. Rezultat działania programu dla a = 1, b = 5, = 4 można zobazyć na rysunku 2.2. Program obliza pierwiastki rownania kwadratowego dla dowolnyh wspolzynnikow a, b,. Podaj a. 1 Podaj b. 5 Podaj. 4 Dla wprowadzonyh lizb: a = 1.00, b = 5.00, = 4.00, trojmian ma dwa pierwiastki: x1 = -4.00, x2 = -1.00. Rysunek 2.2. Efekt działania programu Zadanie 2.2

962a78eb15d2230b22be7b0aa45 Rozdział 2. Podejmujemy deyzje w programie 23 Z A D A N I E 2.3 Napisz program, który z wykorzystaniem instrukji wyboru swith obliza pierwiastki równania kwadratowego ax 2 +bx+ = 0, gdzie zmienne a, b, to lizby rzezywiste wprowadzane z klawiatury. Dla zmiennyh a, b,, x1 oraz x2 należy przyjąć format wyświetlania ih na ekranie z dokładnośią dwóh miejs po krope. Wskazówka Należy wprowadzić do programu zmienną pomonizą lizba_pierwiastkow. Przykładowe rozwiązanie listing 2.3 #inlude <iostream.h> // Zadanie 2.3 #inlude <iomanip.h> #inlude <math.h> #inlude <onio.h> float a, b,, delta, x1, x2; har lizba_pierwiastkow; out << "Program obliza pierwiastki rownania kwadratowego"; out << " dla dowolnyh wspolzynnikow a, b,." << endl; out << "Podaj a." << endl; in >> a; if (a == 0) out << "Niedozwolona wartos wspolzynnika a. Naisnij dowolny klawisz."; else out << "Podaj b." << endl; in >> b; out << "Podaj." << endl; in >> ; out << fixed; out << setpreision(2); out << "Dla wprowadzonyh lizb:" << endl; out << "a = " << a << "," << endl; out << "b = " << b << "," << endl; out << " = " << << "," << endl; delta = b*b-4*a*;

962a78eb15d2230b22be7b0aa45 24 C++. Zadania z programowania z przykł adowymi rozwiązaniami if (delta < 0) lizba_pierwiastkow = 0; if (delta == 0) lizba_pierwiastkow = 1; if (delta > 0) lizba_pierwiastkow = 2; swith (lizba_pierwiastkow) ase 0 : out << "brak pierwiastkow rzezywistyh." << endl; break; ase 1 : x1 = -b/(2*a); out << "trojmian ma jeden pierwiastek podwojny"; out << " x1 = " << x1 << "." << endl; break; ase 2 : x1 = (-b-sqrt(delta))/(2*a); x2 = (-b+sqrt(delta))/(2*a); out << "trojmian ma dwa pierwiastki:" << endl; out << "x1 = " << x1 << "," << endl; out << "x2 = " << x2 << "." << endl; break; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu dla a = 1, b = 4, = 4 można zobazyć na rysunku 2.3. Program obliza pierwiastki rownania kwadratowego dla dowolnyh wspolzynnikow a, b,. Podaj a. 1 Podaj b. 4 Podaj. 4 Dla wprowadzonyh lizb: a = 1.00, b = 4.00, = 4.00, trojmian ma jeden pierwiastek podwojny x1 = -2.00. Rysunek 2.3. Efekt działania programu Zadanie 2.3

962a78eb15d2230b22be7b0aa45 Rozdział 2. Podejmujemy deyzje w programie 25 Z A D A N I E 2.4 Napisz program, który obliza wartość x z równania ax+b =. Wartośi a, b i należą do zbioru lizb rzezywistyh i są wprowadzane z klawiatury. Dodatkowo należy zabezpiezyć program na wypadek sytuaji, kiedy wprowadzona wartość a jest równa zero. Dla zmiennyh a, b, oraz x należy przyjąć format wyświetlania ih z dokładnośią dwóh miejs po krope. Przykładowe rozwiązanie listing 2.4 #inlude <iostream.h> // Zadanie 2.4 #inlude <iomanip.h> #inlude <onio.h> float a, b,, x; out << "Program obliza wartos x z rownania liniowego ax+b =." << endl; out << "Podaj a." << endl; in >> a; if (a == 0) out << "Niedozwolona wartos wspolzynnika. Naisnij dowolny klawisz."; else out << "Podaj b." << endl; in >> b; out << "Podaj." << endl; in >> ; x = (-b)/a; out << fixed; out << setpreision(2); out << "Dla a = " << a << ", b = " << b << ", = " << ; out << " wartos x = " << x << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza

962a78eb15d2230b22be7b0aa45 26 C++. Zadania z programowania z przykł adowymi rozwiązaniami Rezultat działania programu można zobazyć na rysunku 2.4. Program obliza wartos x z rownania liniowego ax+b =. Podaj a. 1 Podaj b. 2 Podaj. 3 Dla a = 1.00, b = 2.00, = 3.00 wartos x = 1.00. Rysunek 2.4. Efekt działania programu Zadanie 2.4 Z A D A N I E 2.5 Napisz program, w którym użytkownik zgaduje lizbę losową z przedziału od 0 do 9 generowaną przez komputer. Wskazówka W programie należy zastosować instrukję (makro) random(). Przykładowe rozwiązanie listing 2.5 #inlude <iostream.h> // Zadanie 2.5 #inlude <math.h> #inlude <onio.h> int losuj_lizbe, zgadnij_lizbe; out << "Program losuje lizbe od 0 do 9. Zgadnij ja." << endl; randomize(); losuj_lizbe = random(10); in >> zgadnij_lizbe; if (zgadnij_lizbe == losuj_lizbe) out << "Gratulaje! Zgadles lizbe!" << endl; else

962a78eb15d2230b22be7b0aa45 Rozdział 2. Podejmujemy deyzje w programie 27 out << "Bardzo mi przykro, ale wylosowana lizba to: " << losuj_lizbe << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Za losowanie lizby przez komputer odpowiadają w programie następująe linijki kodu: randomize(); losuj_lizbe = random(10); Instrukja (makro) random(10) zwraa lizbę pseudolosową z zakresu od 0 do 9 (tj. 10 1). Instrukja (makro) randomize() inijalizuje generator lizb pseudolosowyh (tzn. ustala jego wartość pozątkową). Rezultat działania programu można zobazyć na rysunku 2.5. Program losuje lizbe od 0 do 9. Zgadnij ja. 1 Bardzo mi przykro, ale wylosowana lizba to: 4. Rysunek 2.5. Efekt działania programu Zadanie 2.5

962a78eb15d2230b22be7b0aa45 28 C++. Zadania z programowania z przykł adowymi rozwiązaniami

962a78eb15d2230b22be7b0aa45 3 Iteraje W tym rozdziale przedstawimy typowe zadania wraz z przykładowymi rozwiązaniami z wykorzystaniem iteraji, zyli popularnyh pętli. O ile młodzi programiśi nie mają problemu z programami, w któryh wykorzystano instrukję for, to zamiana jej na do... while oraz while powoduje pewne trudnośi. Proste przykłady z użyiem instrukji for zostały wię rozwiązane zarówno z instrukją do... while, jak i while. Iteraja (ła. iteratio powtarzanie) to zynność powtarzania (najzęśiej wielokrotnego) tej samej albo wielu różnyh instrukji w pętli. W języku C++ istnieją trzy instrukje iterayjne: for (dla), do... while (powtarzaj), while (dopóki). Pętlę for stosujemy w sytuaji, kiedy dokładnie wiemy, ile razy ma ona zostać wykonana. Istnieje wiele wariantów tej pętli, ale zawsze możemy wyróżnić trzy główne zęśi. 1. Inijalizaja to zwykle instrukja przypisania stosowana do ustawienia pozątkowej wartośi zmiennej sterująej pętlą. 2. Warunek jest wyrażeniem relayjnym określająym moment zakońzenia wykonywania pętli. 3. Inkrementaja (zwiększanie) lub dekrementaja (zmniejszanie) definiuje sposób modyfikaji zmiennej sterująej pętlą po zakońzeniu każdego przebiegu (powtórzenia).

962a78eb15d2230b22be7b0aa45 30 C++. Zadania z programowania z przykł adowymi rozwiązaniami Te trzy główne składowe oddzielone są od siebie średnikami. Pętla for wykonywana jest tak długo, dopóki wartość warunku wynosi true. Gdy warunek osiągnie wartość false, działanie programu jest kontynuowane od pierwszej instrukji znajdująej się za pętlą. W przeiwieństwie do Turbo Pasala w języku C++ zmienna sterująa pętlą for nie musi być typu ałkowitego, znakowego lub logiznego. Może być ona np. typu float. Pętla ta może być wykonywana tyle razy, ile wartośi znajduje się w przedziale lub inijalizaja; warunek; zwiększanie inijalizaja; warunek; zmniejszanie Ogólna postać tej instrukji jest następująa: lub for (inijalizaja; warunek; zwiększanie) // instrukje for (inijalizaja; warunek; zmniejszanie) // instrukje W języku C++ jest możliwa zmiana przyrostu zmiennej sterująej pętlą. Kolejną instrukją iterayjną jest do... while. Jej ogólna postać jest następująa: do // instrukje while (warunek); Cehą harakterystyzną instrukji iterayjnej do... while jest to, że bez względu na wartość zmiennej warunek pętla musi zostać wykonana o najmniej jeden raz. Program po napotkaniu instrukji do... while whodzi do pętli i wykonuje instrukje znajdująe się w nawiasah klamrowyh, a następnie sprawdza, zy warunek jest spełniony.

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 31 Jeśli tak, wraa na pozątek pętli, natomiast jeśli warunek osiągnie wartość false (nieprawda), pętla się zakońzy. Ostatnią instrukją iterayjną jest while. Jej ogólna postać jest następująa: while (warunek) // instrukje Cehą harakterystyzną tej instrukji jest sprawdzenie warunku jeszze przed jej wykonaniem. W szzególnym przypadku pętla może nie zostać wale wykonana. Instrukja while powoduje wykonywanie instrukji tak długo, dopóki warunek jest prawdziwy. Z A D A N I E 3.1 Napisz program, który za pomoą instrukji for dla danyh wartośi x zmieniająyh się od 0 do 10 obliza wartość funkji y = 3x. Przykładowe rozwiązanie listing 3.1 #inlude <iostream.h> // Zadanie 3.1 #inlude <onio.h> int x, y; out << "Program obliza wartos funkji y = 3x dla x zmieniajaego sie od 0 do 10." << endl; for (x = 0; x <= 10; x++) y = 3*x; out << "x = " << x << '\t' << "y = " << y << endl; geth(); // zeka na naisnieie dowolnego klawisza W pętli for (x = 0; x <= 10; x++)

962a78eb15d2230b22be7b0aa45 32 C++. Zadania z programowania z przykł adowymi rozwiązaniami kolejne wartośi x, zmieniająe się automatyznie od 0 (inijalizaja) do 10 (warunek) z krokiem 1 (zwiększanie), będą podstawiane do wzoru y = 3*x; a następnie zostaną wyświetlone na ekranie. Znak '\t' oznaza przejśie do następnej pozyji w tabulaji linii. Rezultat działania programu można zobazyć na rysunku 3.1. Program obliza wartos funkji y = 3x dla x zmieniajaego sie od 0 do 10. x = 0 y = 0 x = 1 y = 3 x = 2 y = 6 x = 3 y = 9 x = 4 y = 12 x = 5 y = 15 x = 6 y = 18 x = 7 y = 21 x = 8 y = 24 x = 9 y = 27 x = 10 y = 30 Rysunek 3.1. Efekt działania programu Zadanie 3.1 Z A D A N I E 3.2 Napisz program, który za pomoą instrukji do... while dla danyh wartośi x zmieniająyh się od 0 do 10 obliza wartość funkji y = 3x. Przykładowe rozwiązanie listing 3.2 #inlude <iostream.h> // Zadanie 3.2 #inlude <onio.h> int x = 0, y = 0; out << "Program obliza wartos funkji y = 3x dla x zmieniajaego sie od 0 do 10." << endl;

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 33 do y = 3*x; out << "x = " << x << '\t' << "y = " << y << endl; x++; while (x <= 10); geth(); // zeka na naisnieie dowolnego klawisza Pętla do... while do y = 3*x; out << "x = " << x << '\t' << "y = " << y << endl; x++; while (x <= 10); nie posiada wbudowanego mehanizmu zmiany sterująej nią zmiennej, dlatego musimy do niej ten mehanizm dobudować. Rolę zmiennej sterująej pełni tutaj x. Zmienną tą powinniśmy przed pętlą wyzerować, stąd zapis x = 0; Następnie x należy zwiększać o krok, który w naszym przypadku wynosi 1. Ilustruje to następująa linijka kodu: x++; Pętla będzie powtarzana tak długo, aż zostanie spełniona zależność x <= 10. Zwróćmy uwagę, że warunek sprawdzająy zakońzenie działania pętli, tzn. while (x <= 10), znajduje się na jej końu. Z A D A N I E 3.3 Napisz program, który za pomoą instrukji while dla danyh wartośi x zmieniająyh się od 0 do 10 obliza wartość funkji y = 3x. Przykładowe rozwiązanie listing 3.3 #inlude <iostream.h> // Zadanie 3.3 #inlude <onio.h>

962a78eb15d2230b22be7b0aa45 34 C++. Zadania z programowania z przykł adowymi rozwiązaniami int x = 0, y = 0; out << "Program obliza wartos funkji y = 3x dla x zmieniajaego sie od 0 do 10." << endl; while (x <= 10) y = 3*x; out << "x = " << x << '\t' << "y = " << y << endl; x++; geth(); // zeka na naisnieie dowolnego klawisza Pętla while, podobnie jak do... while, nie posiada wbudowanego mehanizmu zmiany sterująej nią zmiennej, musimy wię do niej ten mehanizm dobudować. Rolę zmiennej sterująej pełni tutaj zmienna x. while (x <= 10) y = 3*x; out << "x = " << x << '\t' << "y = " << y << endl; x++; Zmienną x powinniśmy przed pętlą wyzerować, zatem x = 0; Następnie należy ją zwiększać o krok, który w naszym przypadku wynosi 1. Ilustruje to następująa linijka kodu: x++; Pętla będzie powtarzana tak długo, aż stanie się prawdziwa zależność x <= 10. Zwróćmy uwagę, że warunek sprawdzająy zakońzenie działania pętli, tzn. while (x <= 10), znajduje się na jej pozątku. Z A D A N I E 3.4 Napisz program, który za pomoą instrukji for wyświetla lizby ałkowite od 1 do 20. Przykładowe rozwiązanie listing 3.4 #inlude <iostream.h> // Zadanie 3.4 #inlude <onio.h>

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 35 int i; out << "Program wyswietla lizby alkowite od 1 do 20." << endl; for (i = 1; i <= 20; i++) if (i < 20) out << i << ", "; else out << i << "."; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 3.2. Program wyswietla lizby alkowite od 1 do 20. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20. Rysunek 3.2. Efekt działania programu Zadanie 3.4 Z A D A N I E 3.5 Napisz program, który za pomoą instrukji do... while wyświetla lizby ałkowite od 1 do 20. Przykładowe rozwiązanie listing 3.5 #inlude <iostream.h> // Zadanie 3.5 #inlude <onio.h> int i = 1; // ustalenie wartosi pozatkowej out << "Program wyswietla lizby alkowite od 1 do 20." << endl; do if (i < 20)

962a78eb15d2230b22be7b0aa45 36 C++. Zadania z programowania z przykł adowymi rozwiązaniami out << i << ", "; else out << i << "."; i++; while (i <= 20); geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.6 Napisz program, który za pomoą instrukji while wyświetla lizby ałkowite od 1 do 20. Przykładowe rozwiązanie listing 3.6 #inlude <iostream.h> // Zadanie 3.6 #inlude <onio.h> int i = 1; // ustalenie wartosi pozatkowej out << "Program wyswietla lizby alkowite od 1 do 20." << endl; while (i <= 20) if (i < 20) out << i << ", "; else out << i << "."; i++; geth(); // zeka na naisnieie dowolnego klawisza

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 37 Z A D A N I E 3.7 Napisz program, który za pomoą instrukji for sumuje lizby ałkowite od 1 do 100. Przykładowe rozwiązanie listing 3.7 #inlude <iostream.h> // Zadanie 3.7 #inlude <onio.h> int i, suma = 0; out << "Program sumuje lizby alkowite od 1 do 100." << endl; for (i = 1; i <= 100; i++) suma = suma+i; out << "Suma lizb alkowityh od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Za sumowanie lizb ałkowityh od 1 do 100 odpowiedzialne są następująe linijki kodu: for (i = 1; i <= 100; i++) suma = suma+i; Ozywiśie przed pętlą zmienna suma musi zostać wyzerowana, stąd zapis suma = 0; Rezultat działania programu można zobazyć na rysunku 3.3. Program sumuje lizby alkowite od 1 do 100. Suma lizb alkowityh od 1 do 100 wynosi 5050. Rysunek 3.3. Efekt działania programu Zadanie 3.7

962a78eb15d2230b22be7b0aa45 38 C++. Zadania z programowania z przykł adowymi rozwiązaniami Z A D A N I E 3.8 Napisz program, który za pomoą instrukji do... while sumuje lizby ałkowite od 1 do 100. Przykładowe rozwiązanie listing 3.8 #inlude <iostream.h> // Zadanie 3.8 #inlude <onio.h> int i = 1, suma = 0; // ustalenie wartosi pozatkowyh out << "Program sumuje lizby alkowite od 1 do 100." << endl; do suma = suma+i; i++; while (i <= 100); out << "Suma lizb alkowityh od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.9 Napisz program, który za pomoą instrukji while sumuje lizby ałkowite od 1 do 100. Przykładowe rozwiązanie listing 3.9 #inlude <iostream.h> // Zadanie 3.9 #inlude <onio.h> int i = 1, suma = 0; // ustalenie wartosi pozatkowyh out << "Program sumuje lizby alkowite od 1 do 100." << endl; while (i <= 100) suma = suma+i;

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 39 i++; out << "Suma lizb alkowityh od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.10 Napisz program, który za pomoą instrukji for sumuje lizby parzyste w przedziale od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo %. Przykładowe rozwiązanie listing 3.10 #inlude <iostream.h> // Zadanie 3.10 #inlude <onio.h> int i, suma = 0; out << "Program sumuje lizby parzyste w przedziale od 1 do 100." << endl; for (i = 1; i <= 100; i++) if (i%2 == 0) suma = suma+i; out << "Suma lizb parzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Za sumowanie lizb parzystyh z przedziału od 1 do 100 odpowiedzialne są następująe linijki kodu: for (i = 1; i <= 100; i++) if (i%2 == 0) suma = suma+i;

962a78eb15d2230b22be7b0aa45 40 C++. Zadania z programowania z przykł adowymi rozwiązaniami Do wyodrębnienia lizb parzystyh wykorzystaliśmy właśiwośi operatora modulo oznazonego symbolem %. Użyliśmy w tym elu zapisu i%2 == 0 jeśli reszta z dzielenia ałkowitego zmiennej i%2 wynosi zero, to mamy do zynienia z lizbą parzystą, którą dodajemy do zmiennej suma. Rezultat działania programu można zobazyć na rysunku 3.4. Program sumuje lizby parzyste w przedziale od 1 do 100. Suma lizb parzystyh z przedzialu od 1 do 100 wynosi 2550. Rysunek 3.4. Efekt działania programu Zadanie 3.10 Z A D A N I E 3.11 Napisz program, który za pomoą instrukji do... while sumuje lizby parzyste w przedziale od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo %. Przykładowe rozwiązanie listing 3.11 #inlude <iostream.h> // Zadanie 3.11 #inlude <onio.h> int i, suma = 0; out << "Program sumuje lizby parzyste w przedziale od 1 do 100." << endl; do if (i%2 == 0) suma = suma+i; i++; while (i <= 100); out << "Suma lizb parzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 41 Z A D A N I E 3.12 Napisz program, który za pomoą instrukji while sumuje lizby parzyste w przedziale od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo %. Przykładowe rozwiązanie listing 3.12 #inlude <iostream.h> // Zadanie 3.12 #inlude <onio.h> int i, suma = 0; out << "Program sumuje lizby parzyste w przedziale od 1 do 100." << endl; while (i <= 100) if (i%2 == 0) suma = suma+i; i++; out << "Suma lizb parzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.13 Napisz program, który za pomoą instrukji for sumuje lizby nieparzyste z przedzialu od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo % i oznazonego symbolem! operatora negaji. Przykładowe rozwiązanie listing 3.13 #inlude <iostream.h> // Zadanie 3.13 #inlude <onio.h>

962a78eb15d2230b22be7b0aa45 42 C++. Zadania z programowania z przykł adowymi rozwiązaniami int i, suma = 0; out << "Program sumuje lizby nieparzyste w przedziale od 1 do 100." << endl; for (i = 1; i <= 100; i++) if (!(i%2 == 0)) suma = suma+i; out << "Suma lizb nieparzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Za sumowanie lizb nieparzystyh od 1 do 100 odpowiedzialne są następująe linijki kodu: for (i = 1; i <= 100; i++) if (!(i%2 == 0)) suma = suma+i; Do wyodrębnienia lizb nieparzystyh wykorzystaliśmy właśiwośi operatora modulo oznazonego symbolem % oraz właśiwośi oznazonego znakiem! operatora negaji. Drugi z nih przekształa warunek prawdziwy w fałszywy, a fałszywy w prawdziwy. Zapis (!(i%2 == 0)) oznaza, że reszta z dzielenia ałkowitego zmiennej i%2 jest różna od zera, a wię mamy do zynienia z lizbą nieparzystą, którą dodajemy do zmiennej suma. Rezultat działania programu można zobazyć na rysunku 3.5. Program sumuje lizby nieparzyste w przedziale od 1 do 100. Suma lizb nieparzystyh z przedzialu od 1 do 100 wynosi 2500. Rysunek 3.5. Efekt działania programu Zadanie 3.13

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 43 Z A D A N I E 3.14 Napisz program, który za pomoą instrukji do... while sumuje lizby nieparzyste w przedziale od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo % i operatora negaji!. Przykładowe rozwiązanie listing 3.14 #inlude <iostream.h> // Zadanie 3.14 #inlude <onio.h> int i, suma = 0; out << "Program sumuje lizby nieparzyste w przedziale od 1 do 100." << endl; do if (!(i%2 == 0)) suma = suma+i; i++; while (i <= 100); out << "Suma lizb nieparzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.15 Napisz program, który za pomoą instrukji while sumuje lizby nieparzyste w przedziale od 1 do 100. Wskazówka Należy skorzystać z właśiwośi operatora modulo % i operatora negaji!. Przykładowe rozwiązanie listing 3.15 #inlude <iostream.h> // Zadanie 3.15 #inlude <onio.h>

962a78eb15d2230b22be7b0aa45 44 C++. Zadania z programowania z przykł adowymi rozwiązaniami int i, suma = 0; out << "Program sumuje lizby nieparzyste w przedziale od 1 do 100." << endl; while (i <= 100) if (!(i%2 == 0)) suma = suma+i; i++; out << "Suma lizb nieparzystyh z przedzialu od 1 do 100 wynosi " << suma << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.16 Napisz program, który za pomoą instrukji for znajduje największą i najmniejszą lizbę ze zbioru n lizb losowyh z przedziału od 0 do 99 oraz obliza ih średnią (w zadaniu n = 5). Przykładowe rozwiązanie listing 3.16 #inlude <iostream.h> // Zadanie 3.16 #inlude <math.h> #inlude <iomanip.h> #inlude <onio.h> onst ilos_lizb = 5; int i; float lizba, suma, min, max; out << "Program losuje " << ilos_lizb << " lizb z przedzialu od 0 do 99," << endl; out << "a nastepnie znajduje najmniejsza i najwieksza oraz" << endl; out << "obliza srednia ze wszystkih wylosowanyh lizb." << endl; suma = 0; randomize();

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 45 min = random(100); out << endl; out << "Wylosowano lizby: " << min << ", "; max = min; suma = suma+max; for (i = 1; i <= ilos_lizb-1; i++) lizba = random(100); if (i <= ilos_lizb-2) out << lizba << ", "; else out << lizba << "."; if (max < lizba) max = lizba; if (lizba < min) min = lizba; suma = suma+lizba; out << endl; out << "Najwieksza lizba to " << max << "." << endl; out << "Najmniejsza lizba to " << min << "." << endl; out << "Srednia wynosi " << fixed << setpreision(2) << suma/ilos_lizb << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza W pierwszej kolejnośi w programie losujemy lizbę i przypisujemy jej wartość min. min = random(100); W kolejnym kroku wartośi max nadajemy wartość min. max = min; Następnie w pętli pomniejszonej o 1 (for (i = 1; i <= ilos_lizb-1; i++)) sprawdzamy, zy następna wylosowana lizba jest większa od poprzedniej. Jeśli tak, to staje się ona największą lizbą (max); w przeiwnym wypadku przypisujemy jest wartość min. Ilustrują to poniższe linijki:

962a78eb15d2230b22be7b0aa45 46 C++. Zadania z programowania z przykł adowymi rozwiązaniami if (max < lizba) max = lizba; if (lizba < min) min = lizba; Sumę wszystkih wylosowanyh lizb wylizają następująe linijki kodu: suma = suma+max (przed pętlą) i suma = suma+lizba (w pętli). Średnia ze wszystkih lizb jest natomiast oblizana i wyświetlana na ekranie przez taki fragment kodu: out << "Srednia wynosi " << fixed << setpreision(2) << suma/ilos_lizb << "." << endl; Rezultat działania programu dla pięiu wylosowanyh lizb można zobazyć na rysunku 3.6. Program losuje 5 lizb z przedzialu od 0 do 99, a nastepnie znajduje najmniejsza i najwieksza oraz obliza srednia ze wszystkih wylosowanyh lizb. Wylosowano lizby: 93, 76, 61, 12, 23. Najwieksza lizba to 93. Najmniejsza lizba to 12. Srednia wynosi 53.00. Rysunek 3.6. Efekt działania programu Zadanie 3.16 Z A D A N I E 3.17 Napisz program, który za pomoą instrukji do... while znajduje największą i najmniejszą lizbę ze zbioru n lizb losowyh z przedziału od 0 do 99 oraz obliza ih średnią (w zadaniu n = 5). Przykładowe rozwiązanie listing 3.17 #inlude <iostream.h> // Zadanie 3.17 #inlude <math.h> #inlude <iomanip.h> #inlude <onio.h> onst ilos_lizb = 5; int i = 1; float lizba, suma, min, max;

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 47 out << "Program losuje " << ilos_lizb << " lizb z przedzialu od 0 do 99," << endl; out << "a nastepnie znajduje najmniejsza i najwieksza oraz" << endl; out << "obliza srednia ze wszystkih wylosowanyh lizb." << endl; suma = 0; randomize(); min = random(100); out << endl; out << "Wylosowano lizby: " << min << ", "; max = min; suma = suma+max; do lizba = random(100); if (i <= ilos_lizb-2) out << lizba << ", "; else out << lizba << "."; if (max < lizba) max = lizba; if (lizba < min) min = lizba; suma = suma+lizba; i++; while (i <= ilos_lizb-1); out << endl; out << "Najwieksza lizba to " << max << "." << endl; out << "Najmniejsza lizba to " << min << "." << endl; out << "Srednia wynosi " << fixed << setpreision(2) << suma/ilos_lizb << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.18 Napisz program, który za pomoą instrukji while znajduje największą i najmniejszą lizbę ze zbioru n lizb losowyh z przedziału od 0 do 99 oraz obliza ih średnią (w zadaniu n = 5).

962a78eb15d2230b22be7b0aa45 48 C++. Zadania z programowania z przykł adowymi rozwiązaniami Przykładowe rozwiązanie listing 3.18 #inlude <iostream.h> // Zadanie 3.18 #inlude <math.h> #inlude <iomanip.h> #inlude <onio.h> onst ilos_lizb = 5; int i = 1; float lizba, suma, min, max; out << "Program losuje " << ilos_lizb << " lizb z przedzialu od 0 do 99," << endl; out << "a nastepnie znajduje najmniejsza i najwieksza oraz" << endl; out << "obliza srednia ze wszystkih wylosowanyh lizb." << endl; suma = 0; randomize(); min = random(100); out << endl; out << "Wylosowano lizby: " << min << ", "; max = min; suma = suma+max; while (i <= ilos_lizb-1) lizba = random(100); if (i <= ilos_lizb-2) out << lizba << ", "; else out << lizba << "."; if (max < lizba) max = lizba; if (lizba < min) min = lizba; suma = suma+lizba; i++;

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 49 out << endl; out << "Maksymalna lizba to " << max << "." << endl; out << "Minimalna lizba to " << min << "." << endl; out << "Srednia wynosi " << fixed << setpreision(2) << suma/ ilos_lizb << "." << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.19 Napisz program wyświetlająy tablizkę mnożenia dla lizb od 1 do 100 z wykorzystaniem podwójnej pętli for. Przykładowe rozwiązanie listing 3.19 #inlude <iostream.h> // Zadanie 3.19 #inlude <iomanip.h> #inlude <onio.h> onst n = 10; int wiersze, kolumny; out << "Program wyswietla tablizke mnozenia dla lizb od 1 do 100." << endl; out << endl; for (wiersze = 1; wiersze <= n; wiersze++) for (kolumny = 1; kolumny <= n; kolumny++) out << wiersze*kolumny << '\t'; out << endl; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 3.7.

962a78eb15d2230b22be7b0aa45 50 C++. Zadania z programowania z przykł adowymi rozwiązaniami Program wyswietla tablizke mnozenia dla lizb od 1 do 100. 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Rysunek 3.7. Efekt działania programu Zadanie 3.19 Z A D A N I E 3.20 Napisz program wyświetlająy tablizkę mnożenia dla lizb od 1 do 100 z wykorzystaniem podwójnej pętli do... while. Przykładowe rozwiązanie listing 3.20 #inlude <iostream.h> // Zadanie 3.20 #inlude <iomanip.h> #inlude <onio.h> onst n = 10; int wiersze, kolumny;

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 51 out << "Program wyswietla tablizke mnozenia dla lizb od 1 do 100." << endl; out << endl; wiersze = 1; do kolumny = 1; do out << wiersze*kolumny << '\t'; kolumny++; while (kolumny <= n); wiersze++; out << endl; while (wiersze <= n); geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.21 Napisz program wyświetlająy tablizkę mnożenia dla lizb od 1 do 100 z wykorzystaniem podwójnej pętli while. Przykładowe rozwiązanie listing 3.21 #inlude <iostream.h> // Zadanie 3.21 #inlude <iomanip.h> #inlude <onio.h> onst n = 10; int wiersze, kolumny; out << "Program wyswietla tablizke mnozenia dla lizb od 1 do 100." << endl; out << endl; wiersze = 1; while (wiersze <= n) kolumny = 1; while (kolumny <= n)

962a78eb15d2230b22be7b0aa45 52 C++. Zadania z programowania z przykł adowymi rozwiązaniami out << wiersze*kolumny << '\t'; kolumny++; wiersze++; out << endl; geth(); // zeka na naisnieie dowolnego klawisza Z A D A N I E 3.22 Napisz program, który wyświetla duże litery alfabetu od A do Z i od Z do A, z wykorzystaniem pętli for. Przykładowe rozwiązanie listing 3.22 #inlude <iostream.h> // Zadanie 3.22 #inlude <iomanip.h> #inlude <onio.h> har znak; out << "Program wyswietla duze litery alfabetu od A do Z i od Z do A." << endl; out << endl; for (znak = 'A'; znak <= 'Z'; znak++) if (znak < 'Z') out << znak << ", "; else out << znak << "."; out << endl; for (znak = 'Z'; znak >= 'A'; znak--) if (znak > 'A') out << znak << ", ";

962a78eb15d2230b22be7b0aa45 Rozdział 3. Iteraje 53 else out << znak << "."; geth(); // zeka na naisnieie dowolnego klawisza Rezultat działania programu można zobazyć na rysunku 3.8. Program wyswietla duze litery alfabetu od A do Z i od Z do A. A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z. Z, Y, X, W, V, U, T, S, R, Q, P, O, N, M, L, K, J, I, H, G, F, E, D, C, B, A. Rysunek 3.8. Efekt działania programu Zadanie 3.22 Z A D A N I E 3.23 Napisz program, który wyświetla duże litery alfabetu od A do Z i od Z do A, z wykorzystaniem pętli do... while. Przykładowe rozwiązanie listing 3.23 #inlude <iostream.h> // Zadanie 3.23 #inlude <iomanip.h> #inlude <onio.h> har znak; out << "Program wyswietla duze litery alfabetu od A do Z i od Z do A." << endl; out << endl; znak = 'A'; do if (znak < 'Z')