Zajęcia nr

advertisement
Zajęcia nr.2
Instrukcje iteracyjne (pętle)
Przykładowe programy
Program 1:
Napisać program który ma zsumować wszystkie liczby całkowite znajdujące się w przedziale [a,b] , a i
b są liczbami całkowitymi podanymi przez użytkownika.
#include<iostream.h>
void main()
{
int a,b,i,suma;
cout << "Podaj dolna granice przedzialu: ";
cin >> a;
cout << "Podaj gorna granice przedzialu: ";
cin >> b;
suma = 0;
// dajemy sumie wartość poczatkowa
for( i=a ; i<=b ; i++ )
suma = suma + i;
cout << "Suma wszystkich całkowitych liczb wynosi: " << suma << endl;
system("pause");
}
Symulacja działania poprzedniego programu:
// np. jeżeli użytkownik poda a=1 b=3
// suma = 0
// program dotarł do pętli i daje wartość początkową i=a czyli i=1
// sprawdzamy warunek: czy i <= b czyli czy 1 <= 3 warunek spełniony zatem pętla się wykonuje
// pierwsze wykonanie pętli: suma = suma + i  suma = 0+1  suma = 1
// drugie wykonanie pętli:
// trzecie wykonanie pętli:
i++  i = i+1  i = 1 + 1  i = 2
Sprawdzamy: czy i <=b , czyli czy 2 <=3 warunek nadal spełniony
suma = suma + i  suma = 1+2  suma = 3
i++  i = i+1  i = 2 + 1  i = 3
Sprawdzamy: czy i <=b , czyli czy 3 <=3 warunek nadal spełniony
suma = suma + i  suma = 3+3  suma = 6
i++  i = i+1  i = 3 + 1  i = 4
Sprawdzamy: czy i <=b , czyli czy 4 <=3 warunek NIE spełniony
Program wychodzi z pętli
Program 2:
Napisać program który ma zsumować wszystkie parzyste liczby znajdujące się w przedziale [a,b] ,
gdzie a i b są liczbami całkowitymi podanymi przez użytkownika.
#include<iostream>
using namespace std;
void main()
{
int a,b,i,suma;
cout << "Podaj dolna granice przedzialu: ";
cin >> a;
cout << "Podaj gorna granice przedzialu: ";
cin >> b;
suma = 0;
for( i=a ; i<=b ; i++ )
if( i%2 == 0)
//jeżeli reszta dzielenia i przed 2 jest rowna zero
suma = suma + i;
cout << "Suma wszystkich parzystych liczb wynosi: " << suma << endl;
system("pause");
}
Program 3:
Napisać program który obliczy średnią arytmetyczną parzystych liczb znajdujących się w przedziale
[a,b] , gdzie a i b są liczbami całkowitymi podanymi przez użytkownika.
#include<iostream>
using namespace std;
void main()
{
int a,b,i,licznik;
int suma,srednia;
cout << "Podaj dolna granice przedzialu: ";
cin >> a;
cout << "Podaj gorna granice przedzialu: ";
cin >> b;
suma = 0;
licznik = 0;
for( i=a ; i<=b ; i++ )
if(i%2 == 0)
{
suma = suma + i;
licznik = licznik + 1;
}
srednia = suma / licznik;
cout << "Srednia liczb = " << srednia << endl;
system("pause");
}
Uwagi:







Jeszcze raz, aby liczba była nieparzysta to reszta jej dzielenia przez 2 musi być różna od
zera: ( liczba%2 != 0 ), można to też tak zrobić że aby liczba była nieparzysta to reszta jej
dzielenia przez 2 jest równa 1: (liczba%2 == 1).
Aby liczba była parzysta to reszta jej dzielenia przez 2 musi być równa do zera:
( liczba%2 == 0 ), można to też tak zrobić że aby liczba była parzysta to reszta jej dzielenia
przez 2 jest różna od 1: (liczba%2 != 1).
Tylko liczba całkowita może być parzysta albo nie parzysta.
Jeżeli dana zmienna się zmienia (zmienia swoją wartość) w pętli np. (suma, licznik) w
poprzednich programach to należy dać wartość początkową tej zmiennej przez tą pętla w
której ta zmienna się zmienia. // BARDZO WAŻNE!!
zmienna = zmienna + x : to znaczy że nowa wartość zmiennej będzie równe starej wartości
zmiennej +x, ( czyli za każdym razem powtarzania się pętli zmienna będzie się zwiększała o
wartość x ).
zmienna = zmienna + x można również napisać w inny sposób: zmienna += costam.
i = i+1 , to znaczy ze za każdym razem i będzie się zwiększało o jeden. Można tez to napisać
w podobni sposób jak poprzednio: i += 1. Kiedy nasza zmienna się zmienia o 1 to możemy
również to napisać w jeszcze inny sposób: i++ (kiedy i się zwiększa o 1) , i-- (kiedy i się
zmniejsza o 1).
Programy które zrealizowaliście samodzielnie na zajęciach!!
Osoby które nie dokończyły wszystkich zadań proszone są o ich dokończenie, w razie problemów
zapraszam na konsultacje.
Zadanie 1:
Napisać program „Budzik”. Napisać go w taki sposób że po uruchomieniu programu włączy się budzik.
Budzik ma się sam wyłączyć po 5 sygnałach.
Zadanie 2:
Użytkownik ma jakąś kwotę i chce ja włożyć do banku który daje pewne oprocentowanie roczne na
określoną liczbę lat. Należy napisać program który obliczy ile będzie ta kwota wynosiła po tych latach
z tym oprocentowaniem, (kwotę, oprocentowanie, liczbę lat podaje użytkownik).
Zadanie 3:
Napisać program który znajdzie największy wspólny dzielnik dwóch liczb całkowitych n i m, za pomocą
metody Euklidesa. Metoda Euklidesa:
NWD (n,n) = n
NWD (n,m) = NWD (n-m,m)
NWD (n,m) = NWD (n,m-n)
dla n>m
dla m>n
Download