Wstęp do programowania wykład 3 Typy wyliczeniowe, tablice.

Slides:



Advertisements
Podobne prezentacje
Funkcje tworzące są wygodnym narzędziem przy badaniu zmiennych losowych o wartościach całkowitych nieujemnych. Funkcje tworzące pierwszy raz badał de.
Advertisements

Typy strukturalne Typ tablicowy.
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Język ANSI C Funkcje Wykład: Programowanie komputerów
Programowanie I Rekurencja.
Filip Andrzejewski Remigiusz Chiluta
Sprawdzian Zadanie 1: Napisz program obliczający pole i obwód prostokąta. Wymiary pobierz z klawiatury od użytkownika. Zadanie 2: Napisz program sprawdzający,
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Programowanie imperatywne i język C
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Tablice.
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
#include #include main () { cout
Programowanie obiektowe W2
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Podstawy programowania
Metody Programowania Wykład
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Podstawy informatyki (4)
Podstawy informatyki 2013/2014
Podstawy programowania
Wczytywanie danych z klawiatury, komentarze, zmienne.
Pierwsze programy.
TABLICE C++.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Algorytmy i struktury danych
Zadanie Dev C++.
Przekazywanie argumentów
Podstawy programowania w języku C i C++
Programowanie strukturalne i obiektowe
Algorytmy rekurencyjne - przykład
Programowanie strukturalne i obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Tablice w Turbo Pascalu.
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Ogólna struktura programu w TP
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
Algorytmy – wprowadzenie
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wykład 8 Polimorfizm 1.Funkcje polimorficzne 2.Czyste funkcje wirtualne i klasy abstrakcyjne PO8-1 / 38.
Wstęp do programowania Wykład 4
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Mapa STL – C++. Problem polega na tym, że najczęściej chcielibyśmy przechowywać w zbiorze elementy jakiegoś bardziej złożonego typu, których on nie będzie.
Wstęp do programowania Wykład 8 Łańcuchy, struktury i pliki Metoda dziel i zwyciężaj Metoda zachłanna.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Programowanie I Rekurencja.
ALGORYTMY I STRUKTURY DANYCH
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Patryk Jasik pok. 415 GB Języki programowania Patryk Jasik pok. 415 GB
Sposoby zapisu algorytmu
Programowanie I Rekurencja.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
ALGORYTMY I STRUKTURY DANYCH
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Wstęp do programowania wykład 3 Typy wyliczeniowe, tablice

Potęgowanie x n (n≥0, całkowite) Program1: int x,n,wynik; main() { cin >> x >> n; wynik=1; while (n>0) { wynik= wynik*x; n--; }; cout << wynik; }

Potęgowanie x n (n≥0, całkowite) Program2: int x,n,wynik, kopia_n; main() { cin >>x>>n ; kopia_n=n; wynik=1; while ( kopia_n>0 ) { wynik= wynik*x; kopia_n= kopia_n-1 ; } cout << wynik; }

Potęgowanie x n (n≥0, całkowite) Program 3: int x,n, wynik, x1, n1 ; main() { cin>>x>>n ; wynik=1; x1=x; n1=n; while ( n1>0 ) { while (n1%2==0) { n1=n1 / 2; x1= x1*x1;} n1=n1-1; wynik=x1*wynik ; } cout <<wynik; }

Szereg 1 + x +x 2 /2! + … + x i /i! + …… Obliczyć sumę szeregu: 1 + x +x 2 /2! + … + x i /i! + …… Kiedy skończyć sumowanie? 1. Kiedy ostatnio obliczony składnik szeregu jest mniejszy od eps. 2. Kiedy ostatnio obliczony składnik szeregu podzielony przez dotychczasowo obliczoną sumę jest mniejszy od eps.

Szereg 1 + x +x 2 /2! + … + x i /i! + …… cons t double = ; double suma, elem, x; int k; main() { cin>> x ; suma=1; elem=1; k=0; while ( elem>eps ) { k ++ ; elem= elem*x/k; suma=suma+ elem ; } cout << suma; }

Typy wyliczeniowe enum dni_tygodnia= { pon,wt,śr,cz,piąt, sob,niedz } ; dni_tygodnia dzień; pon ma wartość 0, wt wartość 1, itd.

Tablice Najczęściej używany typ złożony (strukturalny). Reprezentuje uporządkowany ciąg zmiennych tego samego typu. int a 0,a 1,a 2,a 3,a 4 ; A co jeśli potrzebujemy tysiąca zmiennych? int a[1000]; a[ 0 ], a[ 1 ],…a[ 999 ]

Inicjacja tablicy int tab[5] = {2,3,-20,5,7}; int tab[5]={2,9} równoważne jest int tab[5]={2,3,0,0,0} int tab[5]= {} oznacza, że wszystkie elementy są zerami.

Tablice dwuwymiarowe int a[3][2]; 3 wiersze i 2 kolumny int a[3][2]={{1,4}, {3,5},{0,-1}}; a[2][2] oznacza element z drugiego wiersza i drugiej kolumny.

Wczytywanie tablic I Jeśli tablica jest niewielka możemy użyć klawiatury: int A: array[10]; for (i=0; i > A[i];

Wczytywanie tablic II Przy dużych tablicach możemy je wypełniać liczbami losowymi. Jak wygenerować liczbę losową z przedziału i..j? #include srand( time( NULL ) ); raz na początku n=i+ (rand()%(j-i));

Zadanie 1. Dane są dwie uporządkowane niemalejąco tablice A[n] i B[m] liczb całkowitych. Zbudować tablicę C[m+n] uporządkowaną niemalejąco i zawierającą elementy tablic A i B. #include using namespace std; const int n=5, int m=7; int A[n]={1,4,6,8,120},B[m]={4,5,7,300,500,501,502}; int C[m+n];

Zadanie (cd.) main() { int i=0, j=0, k=0; while (i<n && j<m) if (A[i]<B[j]){C[k]=A[i]; i++;k++; } else {C[k]=B[j]; j++; k++;} while (i<n) {C[k]=A[i]; i++; k++;} while (j<m) {C[k]=B[j]; j++; k++;} for (i=0; i<n+m; i++) cout << C[i] << " "; }

Zadanie Dane są dwie posortowane rosnąco tablice A i B oraz liczba x. Sprawdzić, czy istnieją dwie liczby a i b takie że: 1. a jest elementem tablicy A 2. b jest elementem tablicy B 3. x=a+b

Program const int n=8; const int m=7; main() { int A[n]={1,2,3,4,5,6,7,8}; int B[m]={2,4,6,8,9,10, 12}; int i=0; int j=m-1; bool nie_ma=true; int x; cin >> x; while (i =0 && nie_ma) if (A[i]+ B[j] ==x) nie_ma=false; else if (A[i]+B[j] <x) i++; else j--; if (nie_ma) cout << "nie_ma"; else cout << "jest"; }

Problem znakomitości (celebrity problem) Na sali znajduje się n ponumerowanych osób. Zdefiniowano relację dwuargumentową Zna(x,y), która zachodzi jeśli osoba x zna osobę y, dla 1 ≤ x,y ≤ n. Relacja Zna nie musi być symetryczna. Znakomitością nazywamy osobę, kórą wszyscy znają i która nie zna nikogo. Znaleźć znakomitość, przy założeniu, że istnieje. Rozwiązanie naiwne: sprawdzać po kolei wszystkie osoby, aż znajdziemy.

Problem znakomitości Algorytm naiwny wymaga 27 sprawdzeń w tablicy

Problem znakomitości (rozwiązanie) #include using namespace std; const int n=6; int i=0, j=n-1; int zna[n][n] ={….}; main() { while (!(i==j)) if(zna[i][j] i++; else j--; cout<< i+1; }

Problem Flawiusza Dawno temu, podczas wojny rzymsko- żydowskiej Flawiusz wraz z grupą 41 żydowskich powstańców został otoczony przez Rzymian w jaskini. Woląc samobójstwo od poddania się, powstańcy postanowili utworzyć krąg i zabijać co drugą osobę, aż pozostanie jeden żołnierz, który popełni samobójstwo. Jednak Flawiusz nie zgadzał się na to i szybko wyliczył, gdzie powinien stanąć aby jako ostatni zostać żywym.

Problem Flawiusza (cd) const int n=41; int a[n][2]; int i, zabija, po_ofierze; for (i=0; i<n; i++) a[i][0]=i; for (i=0; i<n; i++) a[i][0]=i+1; a[n-1][i]=0;

Problem Flawiusza (cd) zabija=0; while (a[zabija][1] !=zabija { po_ofierze= a[a[zabija][1]][1]; zabija=po_ofierze;} cout << „Przeżył” << zabija;