Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Wstęp do programowania

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

Wstęp do Informatyki

Liczby całkowite i rzeczywiste

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

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

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

Programowanie i struktury danych

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

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

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

Wstęp do programowania

Programowanie komputerowe. Zajęcia 1

Wstęp do programowania

Część 4 życie programu

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.

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

Programowanie - wykład 4

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

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

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

I - Microsoft Visual Studio C++

Programowanie Procedurale

C++ wprowadzanie zmiennych

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Mechanizm dziedziczenia

Programowanie Proceduralne

Wstęp do programowania

lekcja 8a Gry komputerowe MasterMind

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.

tablica: dane_liczbowe

Kontrola przebiegu programu

3. Instrukcje warunkowe

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

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

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

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Laboratorium_1: Temat: Wprowadzenie do języka C++ 1. Operatory. Arytmetyczne

Modelowanie komputerowe

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

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

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

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

Klasyfikacja typów w C++

4. Napisz program wyznaczający wartość funkcji. f (x) = x cos x + e 4x 7. w zadanym punkcie.

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

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

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

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

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:

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

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

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

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Zmienne i struktury dynamiczne

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

Struktura pliku projektu Console Application

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

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

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

Wstęp do informatyki- wykład 7

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

Wstęp do informatyki- wykład 6

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

1. Wypisywanie danych

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Mechanizm dziedziczenia

r. Tablice podstawowe operacje na tablicach

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

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

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

Anna Sobocińska Sylwia Piwońska

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

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

Pliki wykład 2. Dorota Pylak

5. Rekurencja. Przykłady

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

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

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

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 informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

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

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

Wstęp do informatyki- wykład 7

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

Wstęp do Programowania, laboratorium 02

Instrukcje sterujące

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

Transkrypt:

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

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;

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; }