Programowanie C++ Zadanie 1 • Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu iloczynu, ponieważ dla pustego ciągu program wyprowadzał by wartośd 1 jako wyznaczony iloczyn) Rozwiązanie • • #include <cstdlib> #include <iostream> • using namespace std; • • • • • • • • • • • • • • • • • • • • int main(int argc, char *argv[]) { int suma, iloczyn, liczba; // suma - suma ciągu liczbowego // iloczyn - iloczyn ciagu liczbowego // liczba - liczba w ciągu suma=0; iloczyn=1; cout<<"Podaj liczby: "; cin >> liczba; while (liczba !=0){ suma+=liczba; iloczyn*=liczba; cin>>liczba; } cout <<"Suma liczb wynosi: "<<suma<<endl; cout<<"Iloczyn liczb wynosi: "<<iloczyn; system("PAUSE"); return EXIT_SUCCESS; Zadanie 2 • Należy wyznaczyd max i minimum w niepustym ciągu licz różnych od zera, zakooczonego zerem Algorytm zadania 2 • • • • Czytaj liczbę Zapamiętaj ją jako dotychczasowe maksimum w zmiennej max Zapmiętaj ją jakod dotychczasowe minimum w zeminnej min While (liczba jest różna od zera){ If (liczba > dotychczasowe maksimum) Zapamiętaj liczbe jako dotychczasowe maksimum If (liczba < dotychczacowe minimum) Zapamiętaj liczbę jako dotychczasowe minimum Czytaj liczbę } Drukuj max Drukuj min Program zadanie 2 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • #include <cstdlib> #include <iostream> // program do wyznaczania max i min using namespace std; int main(int argc, char *argv[]) { int max, min , liczba; //max - liczba maksymalna ciągu; // min - liczba minimaolna ciągu; //liczba - liczba w ciagu cout << "Podaj liczby"<< endl; cin>> liczba; // przyjecie za maksimum i minium pierwszej liczby ciągu max=liczba; min=liczba; while (liczba!=0){ if (liczba>max) max=liczba; else if (liczba<min) min = liczba; cin>>liczba; } cout<<"Maksimum wynosi: " <<max<<endl; cout<< "minimum wynosi: "<<min; system("PAUSE"); return EXIT_SUCCESS; } Zadanie 3 • Program poświęcony jest wygenerowaniu ciągu tak zwanych liczb Fibonacciego. Liczby te są generowane w następujący sposób. Pierwsze dwie liczby sa równe 0 i 1, natomiast następne powstają poprzez obliczenia sumy dwóch poprzednich. Matematycznie liczby te przedstawiają się rekurencyjnym wzorem a1=0, a2=1,an+2=an+an+1. • Poniżej przedstawiam klika liczb Fibonacciego : 0 1 1 2 3 5 8 13 21 34 55 Wyznacza n liczb Fibonacciego dla wczytanej wartości n. Pomoc Pomoc=poprzednia+biezaca; Poprzednia = biezaca; Biezaca=pomoc; If (licznik % LINIA==0) Cout<< endl; Umożliwia wydruk w jednej linii tylu wygenerowanych liczb, ile wynosi wartośd stałej o nazwie LINIA. Przejście do następne linii następuje, gdy licznik jest wielokrotnością stałej LINIA, co oznacza , że doszliśmy do kooca linii Rozwiązanie • • #include <fstream.h> #include <iomanip.h> • • #define LINIA 8 #define POLE 7 • • • • • void main(void) { int poprzednia, biezaca, pomoc, licznik, n; cout << "Podaj ile chcesz wygenerowac liczb" << endl; cin >> n; • • poprzednia = 0; biezaca = 1; • cout << setw(POLE)<< poprzednia << setw(POLE) << biezaca; • • • • • • • • • • • • • • for(licznik = 3; licznik <= n; licznik++) { pomoc = poprzednia + biezaca; poprzednia = biezaca; biezaca = pomoc; cout << setw(POLE) << biezaca; if (licznik % LINIA == 0 ) cout << endl; } char x; cin >> x; } Tablice • Int t[10] Const NMAX=10; deklaracja tablicy o wymiarze 10. deklaracja tablicy jako zmienna , lecz przed zadeklarowaniem tablicy zmienna musi mied znaną wartośd Int a[NMAX] Int tab [ ]={11,12,13,14,15} Int t [2][4] ={ {11,12,13,14} {21,22,23,24} } Int Tab[10] For (int i=0;i<=1-;i++){ Tab[i]=i; } - uzupełnienie każdego elementu w tablicy cyfrą Zadanie 4 • Należy wprowadzid do tablicy 10 liczb a następnie wydrukowad je ponownie w odwrotnej kolejności. (użytkownik z poziomu konsoli wprowadza dane do tablicy) Zadanie 5 • Wprowadzamy do tablicy n liczb a następnie program musi sprawdzid czy wśród wprowadzonych licz istnieje para liczb jednakowych. (użytkownik z poziomu konsoli wprowadza liczby do tabeli) Zadanie 6 • Zbuduj tablicę dwuwymiarową a następnie znajdź element minimalny w tablicy. (Wskazówka – należy użyd dwie pętle for – zagnieżdżone) Zadanie 7 – sortowanie bąbelkowe • Należy posortowad tablicę tak aby najmniejszy element tablicy był na początku a największy na koocu tablicy. Sortowania należy dokonad metodą bąbelkową. Polega to na wielokrotnym przeglądaniu sąsiadujących ze sobą elementów tablicy od lewej strony do prawej. Po napotkaniu pary, dla której żądana kolejnośd nie jest spełniona , elementy tej tablicy są przestawione. Algorytm nazywa się bąbelkowy ponieważ większe liczby są unoszone do góry jak bąbelki na wodzie. Przykład sortowania bąbelkowego • • • • • • • 9 2 7 10 8 4 2 9 7 10 8 4 2 7 9 10 8 4 2 7 9 8 10 4 2 7 9 8 4 10 2 7 8 9 4 10 …. • Pierwotny stan tablicy • Krok 1 zamiana 92 • Krok 2 zamiana 97 • Krok 3 zamiana 108 Funkcje • Korzyści wynikające z zastosowania funkcji : – Program napisany z wykorzystaniem funkcji jest bardziej czytelny i zrozumiały – Pewne powtarzające się fragmenty lub realizujące ściśle określone operacje mogą byd wyodrębnione i zapisane w postaci jednej funkcji – Podczas uruchamiania i testowania programu można oddzielnie testowad poszczególne funkcje a następnie sprawdzid cały program. Funkcja przykłady • Deklaracje funkcji : typ nazwa (specyfikacja parametrów) { instrukcje Nazwa funkcji to SumaKwadratów. Jest ona } Typu int tzn. podaje wartośd typu int oraz ma Jeden parametr tego samego typu o nazwie n. Przykład : Każda funkcja przed jej wykonaniem powinna Int SumaKwadratow (int n){ byd najpierw zadeklarowana poprzez podanie Int i, suma=0; Tzw prototypu funkcji (patrz przykład poniżej) Oraz w nawiasach powinna mied For(i=1;i<=n;i++) zadeklarowane parametry formalne . Suma +=i*i; Return suma; Return – powoduje zakooczenie wykonania Funkcji i powrót do miejsca jej wywołania. } Funkcje przykład Program powinien wyliczyd sumę kwadratów liczba : 1^2+2^2+….n^2= Użytkownik powinien podad liczbę n. • • #include <cstdlib> #include <iostream> • int SumaKwadratow(int n); • using namespace std; • • • • • • • • int main(int argc, char *argv[]) { int n, k, wynik; cout << "Podaj wartosc zmiennej n" << endl; cin >> n; wynik = SumaKwadratow(n); cout << "Suma kwadratow dla n = " << n << " wynosi " << wynik << endl; cin >> k; • • • • • • • • • • system("PAUSE"); return EXIT_SUCCESS; } int SumaKwadratow(int n) { int i, suma = 0; for (i=1; i<=n; i++) suma += i*i; return (suma); } Zadanie8 • Należy napisad program który liczy sumę potęg. • 1^k+2^k+…n^k Należy do nagłówka programu dodad: # include <math.h> I wykorzystad polecenie pow(i,k)