PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

Podobne dokumenty
1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Program 14. #include <iostream> #include <ctime> using namespace std;

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Wstęp do programowania

Wstęp do programowania

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

tablica: dane_liczbowe

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

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

Inicjacja tablicy jednowymiarowej

Programowanie - wykład 4

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Programowanie i struktury danych

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Część 4 życie programu

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Techniki Programowania wskaźniki

Wstęp do programowania

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Algorytmy sortujące i wyszukujące

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Część 5 tablice, sortowanie, ciąg Fibonacciego

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi.

Przekazywanie argumentów wskaźniki

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

Wstęp do programowania

Techniki Programowania wskaźniki 2

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Programowanie Proceduralne

Język C, tablice i funkcje (laboratorium)

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Strategia "dziel i zwyciężaj"

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Zajęcia 6 wskaźniki i tablice dynamiczne

Wstęp do programowania

7. Pętle for. Przykłady

Lab 9 Podstawy Programowania

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

STL: Lekcja 1&2. Filozofia STL

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Anna Sobocińska Sylwia Piwońska

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Programowanie obiektowe W3

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

1 Podstawy c++ w pigułce.

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Tablice, funkcje - wprowadzenie

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wstęp do programowania

Programowanie komputerowe. Zajęcia 3

Wybrane algorytmy tablicowe

Programowanie komputerowe. Zajęcia 1

Liczby całkowite i rzeczywiste

5. Rekurencja. Przykłady

Język C, tablice i funkcje (laboratorium, EE1-DI)

Metody Metody, parametry, zwracanie wartości

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Metodyki i Techniki Programowania 2

Jak napisać listę jednokierunkową?

Argumenty wywołania programu, operacje na plikach

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Transkrypt:

Program 15 Program zawierający następujące funkcje: funkcję wczytującą elementy do tablicy liczb całkowitych podanej jako parametr (długość tablicy również ma być podana jako parametr); funkcję wypisującą zawartość tablicy podanej jako parametr, o długości podanej jako parametr; funkcję wyszukującą największy element we fragmencie tablicy. Parametrami funkcji mają być: tablica liczb całkowitych oraz początek i koniec obszaru wyszukiwania; funkcja ma zwracać numer miejsca na którym stoi największy element; funkcję zamieniającą miejscami dwa elementy tablicy. Parametrami funkcji ma być tablica oraz dwie liczby będące numerami miejsc przestawianych elementów; funkcja niczego nie zwraca. Wykorzystać powyższe funkcje do pobrania i posortowania tablicy liczb całkowitych o długości podanej przez użytkownika. Jedna z metod sortowania tablic działa w następujący sposób: znajdujemy największy element tablicy i przestawiamy go na koniec, a na jego miejsce wstawiamy element, który dotychczas stał na końcu; powtarzamy powyższą czynność, ale działając tym razem na fragmencie tablicy obejmującym elementy od pierwszego do przedostatniego; czynność powtarzamy, za każdym razem działając na fragmencie tablicy o jeden krótszym od poprzedniego. Ostatnim krokiem algorytmu jest krok rozpatrujący fragment złożony z dwóch elementów. #include <iostream> using namespace std; void Pobierz(int tab[], int n); void Wypisz(int tab[], int n); int Maksymalny(int tab[], int a, int b); void Zamien(int tab[],int c, int d); int main() int n,k; cout<<"podaj dlugosc tablicy: "; cin>>n; int liczby[n]; Pobierz(liczby,n); Wypisz(liczby,n); for(int i=0; i<n-1; i++)

k=maksymalny(liczby,1,n-i); Zamien(liczby,k,n-i); cout<<"tablica posortowana: "<<endl; Wypisz(liczby,n); system("pause"); return 0; void Pobierz(int tab[],int n) cout<<"wprowadz elementy tablicy:"<<endl; for(int i=0;i<n;i++) cout<<"element "<<i+1<<": "; cin>>tab[i]; void Wypisz(int tab[],int n) cout<<"elementy tablicy:"<<endl; for(int i=0;i<n;i++) cout<<"element "<<i+1<<": "<<tab[i]<<endl; int Maksymalny(int tab[], int a, int b) int max=tab[a-1]; int k=a-1; for(int i=a-1; i<=(b-1); i++) if(tab[i]>max) max=tab[i]; k=i; return k+1;

void Zamien(int tab[],int c, int d) int temp; temp=tab[c-1]; tab[c-1]=tab[d-1]; tab[d-1]=temp; Omówienie programu W programie są wykorzystane następujące funkcje: Funkcja Pobierz Funkcja Pobierz była omówiona w Programie 11. Funkcja Wypisz Funkcja Wypisz omówioną w Programie 11. Funkcja Maksymalny int Maksymalny(int tab[], int a, int b) int max=tab[a-1]; int k=a-1; for(int i=a-1; i<=(b-1); i++) if(tab[i]>max) max=tab[i]; k=i; return k+1; Działanie tej funkcji polega na znalezieniu numeru miejsca na którym stoi element największy we fragmencie tablicy tab będącej argumentem/parametrem funkcji. Argument a to początek obszaru wyszukiwania, argument b koniec obszaru wyszukiwania. Parametrami funkcji mają być: tablica liczb całkowitych oraz początek i koniec obszaru wyszukiwania; funkcja ma zwracać numer miejsca na którym stoi największy element. Przykład Przyjmijmy, że tablica tab zawiera liczby:

1, -21, -8, 7, -5, 5, 4, 3, 11, -2 Jeżeli jako początek obszaru wyszukiwania (czyli wartość zmiennej a) podamy 3, a jako koniec (czyli wartość zmiennej b) 7 oznacza to, że interesuje nas największy element tablicy we fragmencie tablicy począwszy od elementu trzeciego (czyli -8), a skończywszy na elemencie siódmym (czyli 4). A zatem interesuje nas element największy spośród liczb oznaczonych na czerwono: 1, -21, -8, 7, -5, 5, 4, 3, 11, -2 Funkcja Maksymalny ma zwracać numer miejsca na którym stoi największy element. A zatem w przypadku powyższej tablicy powinna zwrócić: 4 ponieważ na pozycji czwartej w tablicy stoi liczba 7, która jest największa spośród liczb w zaznaczonym fragmencie tablicy. Algorytm znalezienia elementu maksymalnego we fragmencie tablicy jest modyfikacją algorytmy omówionego w Programie 13. W programie 14 zdefiniowana jest funkcja Minimalny zwracająca element minimalny tablicy. Omawiana funkcja Maksymalny jest zdefiniowana podobnie. Różnice są następujące: Funkcja wyszukuje element maksymalny, ale tylko we wskazanym fragmencie tablicy, a nie w całej tablicy. Początek interesującego nas fragmentu określony jest przez wartość zmiennej a, koniec przez wartość zmiennej b. A zatem pętla pozwalająca nam wyszukać element maksymalny jest określona tak aby rozpocząć od elementu tab[a-1] i skończyć na elemencie tab[b-1]: for(int i=a-1; i<=(b-1); i++) if(tab[i]>max) max=tab[i]; k=i; UWAGA: Przypominam, że do i-tego elementu tablicy tab odwołujemy się, przez tab[i-1]. A zatem pierwszy element tablicy tab to tab[0]. Jeżeli interesują nas elementy tablicy między trzecim i siódmym oznacza to, że interesują nas elementy: tab[2], tab[3], tab[4], tab[5], tab[6] Wewnątrz pętli znajdują się następujące instrukcje: if(tab[i]>max)

max=tab[i]; k=i; W zmiennej max zapisujemy wartość elementu maksymalnego, w zmiennej k jego pozycję w tablicy tab. Funkcja Maksymalny zwraca (stąd return) położenie elementu maksymalnego, a nie jego wartość. Zatem w przypadku tablicy omówionej powyżej funkcja zwróci pozycję elementu maksymalnego we wskazanym fragmencie tablicy (czyli 4 bo element jest na czwartej pozycji w tablicy), a nie wartość tego elementu (czyli 7). W związku z tym na końcu funkcji mamy instrukcję: return k+1; Dzięki niej funkcja Maksymalny zwraca położenie elementu maksymalnego w tablicy tab (czyli, który to jest element w tablicy). Funkcja Zamien Funkcja nie zwraca żadnej wartości zatem przed nazwą mamy słówko void (i dlatego wewnątrz funkcji nie ma instrukcji return). Funkcja posiada 3 argumenty/parametry: int tab[],int a,int b Pierwszy argument to tablica typu int: int tab[] Drugi argument to zmienna typu int: int a. Argument ten określa położenie w tablicy tab elementu, którego położenie będziemy zmieniać. Trzeci argument to zmienna typu int: int b. Argument ten określa położenie w tablicy tab elementu, którego położenie będziemy zmieniać. Funkcja Zamien zamienia miejscami a-ty element tablicy z elementem b-tym. Przykład Załóżmy, że tablica liczby jest następująca: 1, -21, -8, 7, -5, 5, 4, 3, 11, -2 Jeżeli wywołamy funkcję Zamien w następujący sposób: tablica liczby będzie wyglądała następująco: Zamien(liczby,3,5)

1, -21, -5, 7, -8, 5, 4, 3, 11, -2 czyli trzeci element tablicy został zamieniony z elementem piątym. Wewnątrz funkcji Zamien mamy: int temp; temp=tab[c-1]; tab[c-1]=tab[d-1]; tab[d-1]=temp; Zmienna temp jest zmienną w której chwilowo zachowujemy wartość jednego z przenoszonych elementów. Postępujemy następująco: UWAGA: Przypominam, że element 4 (czwarty) tablicy tab to element tab[3]. 1. Wartość elementu c (czyli element tab[c-1]) tablicy zapisujemy w zmiennej temp. 2. Wartość elementu d (czyli element tab[d-1]) tablicy zapisujemy w elemencie c tablicy (czyli elemencie tab[c-1]). 3. Wartość zmiennej temp zapisujemy w elemencie d tablicy (czyli w elemencie tab[d-1]). Wewnątrz funkcji main mamy: int n,k; cout<<"podaj dlugosc tablicy: "; cin>>n; int liczby[n]; Pobierz(liczby,n); for(int i=0; i<n-1; i++) k=maksymalny(liczby,1,n-i); Zamien(liczby,k,n-i); cout<<"tablica posortowana: "<<endl; Wypisz(liczby,n); Po wprowadzeniu długości tablicy (zmienna n), wpisaniu liczb do tablicy (funkcja Pobierz) sortujemy tablice według algorytmu:

znajdujemy największy element tablicy i przestawiamy go na koniec, a na jego miejsce wstawiamy element, który dotychczas stał na końcu; powtarzamy powyższą czynność, ale działając tym razem na fragmencie tablicy obejmującym elementy od pierwszego do przedostatniego; czynność powtarzamy, za każdym razem działając na fragmencie tablicy o jeden krótszym od poprzedniego. Kolejno w pętli for wykonywane są następujące operacje (załóżmy, że tablica liczby ma 10 elementów czyli n=10): Dla i=0: Dla i=1: Położenie elementu maksymalnego w tablicy liczby zwracane jest przez funkcję Maksymalny. Położenie to zapisujemy w zmiennej k: k=maksymalny(liczby,1,10); Następnie zamieniamy miejscami element ostatni tablicy liczby (czyli 10-ty bo tablica jest 10-elementowa) i znaleziony element maksymalny, który jest elementem k-tym: Zamien(liczby,k,10); Dla i=8: Położenie elementu maksymalnego we fragmencie tablicy liczby począwszy od elementu pierwszego (stąd 1), a skończywszy na elemencie przedostatnim (stąd 9) zwracane jest przez funkcję Maksymalny. Położenie to zapisujemy w zmiennej k: k=maksymalny(liczby,1,9); Następnie zamieniamy miejscami przedostatni element tablicy liczby (czyli 9-ty bo tablica jest 10 elementowa) i znaleziony element maksymalny, który jest elementem k-tym: Zamien(liczby,k,9);

Położenie elementu maksymalnego we fragmencie tablicy liczby począwszy od elementu pierwszego (stąd 1), a skończywszy na drugim (stąd 2) zwracane jest przez funkcję Maksymalny. Położenie to zapisujemy w zmiennej k: k=maksymalny(liczby,1,2); Następnie zamieniamy miejscami drugi element tablicy liczby i znaleziony element maksymalny, który jest elementem k-tym: Zamien(liczby,k,2); Po posortowaniu wypisujemy zawartość tablicy liczby korzystając z funkcji Wypisz: cout<<"tablica posortowana: "<<endl; Wypisz(liczby,n);