Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Wstęp do programowania

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Wstęp do programowania

Wstęp do programowania

Wstęp do Informatyki

tablica: dane_liczbowe

Programowanie i struktury danych

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

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

Część 4 życie programu

Zmienne i struktury dynamiczne

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

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Liczby całkowite i rzeczywiste

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

Programowanie komputerowe. Zajęcia 1

Programowanie obiektowe W3

Wstęp do programowania

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Wstęp do programowania

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

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

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

I - Microsoft Visual Studio C++

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wstęp do programowania

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

Programowanie Procedurale

3. Instrukcje warunkowe

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

Podstawy Programowania C++

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

Programowanie - wykład 4

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:

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie w języku C++

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

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.

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

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

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

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

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

Język C++ zajęcia nr 2

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

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

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

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

C++ wprowadzanie zmiennych

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

Mechanizm dziedziczenia

r. Tablice podstawowe operacje na tablicach

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

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

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy programowania skrót z wykładów:

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

Podstawy Programowania

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Programowanie Proceduralne

Proste programy w C++ zadania

Kontrola przebiegu programu

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Tablice jednowymiarowe

Język C zajęcia nr 11. Funkcje

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

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

Instrukcje sterujące

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

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

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Języki programowania obiektowego Nieobiektowe elementy języka C++

Podstawy programowania. Podstawy C# Tablice

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie proceduralne w języku C++ Pętle, tablice

lekcja 8a Gry komputerowe MasterMind

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

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

C-struktury wykład. Dorota Pylak

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

1 Podstawy c++ w pigułce.

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Programowanie komputerowe. Zajęcia 4

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

Transkrypt:

wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017

Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji rand z biblioteki cstdlib (standardowej bilblioteki języka C) w C++ (od standardu C++11) dostępna jest biblioteka random umożliwiająca bardziej zaawansowane losowanie, np. z wyborem rozkładu prawdopodobieństwa (szczegółowy opis można znaleźć np. pod adresem http://www.open-std. org/jtc1/sc22/wg21/docs/papers/2013/n3551.pdf)

Losowanie za pomocą funkcji z biblioteki cstdlib należy dołączyć do programu bibliotekę cstdlib funkcja rand generuje (pseudo)losową liczbę całkowitą z przedziału [0, RAND MAX ] (gdzie RAND MAX jest stałą zależną od implementacji), Sposób użycia: int liczba = std::rand() aby zapewnić generowanie różnych liczb podczas kolejnych wykonań programu, należy przed pierwszym losowaniem zainicjalizować generator liczbą która przy każdym uruchomieniu programu będzie inna - np. bieżącą wartością zegara komputera w tym celu dołączmy do programu bibliotekę ctime a następnie inicjalizujemy generator bieżącym czasem, tj. wartością liczbową zwróconą przez funkcję time: srand (time (NULL))

Przykład (Program generujący 10 liczb całkowitych) # include < iostream > # include < ctime > # include < cstdlib > using namespace std ; int main () { srand ( time ( NULL )); // jednokrotnie przed rozpoczeciem losowania! } for ( int i =0; i <10; i ++) cout << rand () << " "; return 0;

Losowanie liczb całkowitych z określonego przedziału Chcąc uzyskać wartości losowe z określonego przedziału, używamy tej samej funkcji rand, ale każdą z uzyskanych wartości sprowadzamy do wartości z żądanego przedziału. sposób sprowadzenia: obliczamy resztę z dzielenia wylosowanej liczby przez długość żądanego przedziału (inaczej: ilość wartości w tym przedziale), a następnie do wyniku dodajemy liczbę stanowiącą początek przedziału: int liczba = (std::rand() % długość przedziału) + początek przedziału

Przykład (Losowanie 10 liczb całkowitych z przedziału [1,20] ) # include < iostream > # include < cstdlib > # include < ctime > using namespace std ; int main () { int DP = 20, PP = 1; // dlugosc przedzialu = 20, poczatek przedzialu = 1 int liczba ; srand ( time ( NULL ) ); // jednokrotnie!!! for ( int i =1; i <=10; i ++) { liczba = ( rand () % DP) + PP; cout << liczba << endl ; } } return 0;

Losowanie liczb rzeczywistych dostępne biblioteki nie oferują funkcji generującej losowe wartości rzeczywiste losowe liczby rzeczywiste można uzyskać np. dzieląc losową liczbę całkowitą przez RAND MAX, dzieląc przez siebie dwie losowe liczby całkowite itp

Przykład (Losowanie liczb rzeczywistych ) # include < iostream > # include < cstdlib > # include < ctime > using namespace std ; int main () { double liczba ; srand ( time ( NULL ) ); for ( int i =1; i <=10; i ++) { liczba = ( rand () %10) + rand ()/ double ( RAND_MAX ); cout << liczba << endl ; } } return 0;

Tablice jednowymiarowe - zadania Zadanie 1 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub generujący zawartość takiej tablicy), a następnie wypisujący informację czy tablica zawiera dwa sąsiadujące z sobą elementy dodatnie.

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie:

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd,

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie odpowiedzi w tablicy nie ma obok siebie dwóch liczb dodatnich możemy udzielić dopiero po sprawdzeniu całej tablicy, jeśli nie znaleźliśmy w niej odpowiedniej pary

algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie odpowiedzi w tablicy nie ma obok siebie dwóch liczb dodatnich możemy udzielić dopiero po sprawdzeniu całej tablicy, jeśli nie znaleźliśmy w niej odpowiedniej pary czyli jest to algorytm z poglądem. Pogląd na to czy były liczby na początku musi być nie było pary (false) [bo taki pogląd ma nam pozostać jeśli nic się nie wydarzy, tzn. przeglądając tablicę nie zobaczymy pary liczb dodatnich], znalezienie odpowiedniej pary zmienia go na była para (true).

Przykład (Rozwiązanie zad. 1) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int dlugosc ; cout << " podaj dlugosc tablicy "; cin >> dlugosc ; int A [ dlugosc ]; cout << " podaj zawartosc tablicy : " << endl ; for ( int i =0; i< dl; i ++) { cout << " element " << i << ": "; cin >> A[i]; } cout << " Twoja tablica : "<< endl ; for ( int i =0; i< dlugosc ; i ++) cout << A[i] << " "; cout << endl ; bool czybylapara = false ; for ( int i=0; i<=dl -2; i++) if (A[i]>0 && A[i +1] > 0) { czybylapara = true ; break ; } if ( czybylapara == false ) cout << "w tablicz nie ma liczb dodatnich na sasiednich miejscach \n"; else cout << " tablica zawiera dwie liczby dodatnie na sasiednich miejscach \n"; } return 0;

Zadanie 2 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub generujący zawartość takiej tablicy, a następnie wypisujący wszystkie pary uporządkowane jakie można utworzyć z elementów tej tablicy

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna)

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2)

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach)

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary:

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy

Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy... podobnie jak w zad.1 z wykładu 5 (pary szef - podwładny)

Przykład (Rozwiązanie zad.2) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; } srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; cout << " Pary uporzadkowane elementow tablicy : " << endl ; for ( int i = 0; i< length ; i ++) for ( int j = 0; j< length ; j ++) cout << A[i] << " " << A[j] << endl ; return 0;

Zadanie 3 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub losujący zawartość takiej tablicy), a następnie wypisujący wszystkie dwójki (pary nieuporządkowane) elementów tablicy przechowujących różne wartości

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna)

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone)

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary:

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary... podobnie jak w zad.1 z wykładu 5 (pary równorzędne )

Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary... podobnie jak w zad.1 z wykładu 5 (pary równorzędne ) z powyższych par wypisujemy tylko te, które są złożone z różnych liczb.

Przykład (Rozwiązanie zad.3) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; } srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; cout << " Roznowartosciowe pary nieuporzadkowane elementow tablicy : "<< endl ; for ( int i = 0; i< length ; i ++) for ( int j = i; j< length ; j ++) if (A[i]!= A[j]) cout << A[i] << " " << A[j] << endl ; return 0;

Zadanie 4 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub losujący zawartość takiej tablicy), a następnie wypisujący wszystkie wartości występujące w tablicy

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana)

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją i tak po kolei dla wszystkich elementów tablicy

mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją i tak po kolei dla wszystkich elementów tablicy... przy czym sprawdzanie czy liczba była we wcześniejszej części tablicy to kolejny przykład algorytmu z poglądem

Przykład (Rozwiązanie zad.4) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; int wart_spr ; bool czybyla ; for ( int i = 0; i< length ; i ++) { wart_spr = A[i]; // spr czy wart_spr byla we wczesniejszej czesci tablicy czybyla = false ; // konieczny reset dla kazdej wartosci sprawdzanej!! for ( int j =0; j <=i -1; j ++) // przeszukiwanie wczesniejszej czesci if (A[j] == wart_spr ) { czybyla = true ; break ; } if ( czybyla == false ) cout << wart_spr << " "; } return 0; }

Tablice wielowymiarowe Tablice wielowymiarowe, podobnie jak jednowymiarowe, przechowują wartości tego samego typu. Przykłady: tabela temperatur w stolicach europejskich w kolejnych dniach tygodnia szachownica plansza do gry w okręty sudoku...

Tablice wielowymiarowe w C++ Tablice wielowymiarowe można uważać za tablice tablic. Przykładowe definicje: int szachownica [8][8]; zwyczajowo przyjmuje się że pierwszy (lewy) indeks oznacza wiersz, a drugi (prawy) - kolumnę, ale taka interpretacja nie jest obowiązkowe liczba wymiarów może być dowolna int przykladtablicy [2][4][2][100][5];

Tablice wielowymiarowe w C++ - cd do elementu tablicy wielowymiarowej odwołujemy się poprzez podanie nazwy zmiennej tablocowej i wartości indeksow dla wszystikich wymiarów (indeksowanie zaczyna się od zera, tak jak w tablicach jednowymiarowych): szachownica [1][0] = 1; ustawiamy pionej w kwadracie drugim poziomo i pierwszym pionowo elementy tablicy wielowymiarowej możemy przeglądać używając zagnieżdżonych pętli, po jednej dla każdego wymiaru: for (int i=0; i<8; i++) { for (int j=0; j<8; j++) cout << szachownica[i][j] << " "; cout << endl; }

Inicjalizacja tablic wielowymiarowych tablice dwuwymiarowe: w celu inicjalizacji tablicy dwuwymiarowej najprościej jest użyć zagnieżdżonych nawiasów klamrowych. Wewnętrzne nawiasy zawierają liczby reprezentujące zawartość wierszy: int tab[2][3] = { {1,2,3}, {4,5,6}}; (przy czym wewnętrzne nawiasy klamrowe można pominąć) dozwolone jest pominięcie wartości pierwszego indeksu inicjalizowanej tablicy: int tab[ ][3] = { {1,2,3}, {4,5,6}}; (pominięcie obu specyfikacji rozmiaru jest niedozwolone)

Inicjalizacja tablic wielowymiarowych - cd inicjalizacja tablic o większej liczbie wymiarów przebiega podobnie: int aa[2][3][4] = {{{1,1,1,1}, {2,2,2,2}, {3,3,3,3}}, {{4,4,4,4}, {5,5,5,5}, {6,6,6,6}} }; podobnie jak w tablicach dwuwymiarowych specyfikację pierwszego rozmiaru można pominąć

Tablice wielowymiarowe o rozmiarze określanym w czasie wykonania programu Tworzenie statycznych tablic wielowymiarowych o rozmiarze określanym w czasie wykonania progamu, tj. użycie konstrukcji postaci int N,M; cout << " podaj liczbe wierszy i kolumn tablicy : " ; cin >> N >> M; int tab [N] [M]; jest niezgodne ze standardem (podobnie jak w przypadku tablic jednowymiarowych), ale akceptowane przez część kompilatorów konstrukcja zgodna ze standardem to tworzenie tablic dynamicznych (z alokacją pamięci za pomocą operatora new i zwalnianiem pamięci za pomocą delete)

Przykład (Dwuwymiarowa tablica o rozmiarze podanym przez uzytkownika - wersja.1) # include <iostream > using namespace std ; int main () { int N, M; cout << " ile wierszy ma miec tablica? " ; cin >> N; cout << " ile kolumn ma miec tablica? "; cin >> M; int tab [N][M]; // niezgodne ze standardem for ( int i =0; i<n; i ++) for ( int j =0; j<m; j ++) tab [i][j] = i*j; } for ( int i =0; i<n; i ++) { for ( int j = 0; j<m; j ++) cout << tab [i][j] << " "; cout << endl ; } return 0;

Przykład (Dwuwymiarowa tablica o rozmiarze podanym przez uzytkownika - wersja.1) # include <iostream > using namespace std ; int main (){ int N, M; cout << " ile wierszy ma miec tablica? " ; cin >> N; cout << " ile kolumn ma miec tablica? "; cin >> M; int (** tab ); // zgodne ze standardem // alokacja pamieci tab = new int *[N]; for ( int i =0;i<N; i ++) tab [i] = new int [M]; // uzycie tablicy for ( int i =0; i<n; i ++) for ( int j =0; j<m; j ++) tab [i][j] = i*j; for ( int i =0; i<n; i ++) { for ( int j = 0; j<m; j ++) cout << tab [i][j] << " "; cout << endl ; } // zwolnienie pamieci for ( int i =0;i<N; i ++) delete [] tab [i]; delete [] * tab ; return 0; }