Tablice jednowymiarowe

Podobne dokumenty
INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

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

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Zmienne i struktury dynamiczne

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

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Pole wielokąta. Wejście. Wyjście. Przykład

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

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

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

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

Podstawowe typy zmiennych

Część 4 życie programu

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

Inicjacja tablicy jednowymiarowej

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Programowanie strukturalne i obiektowe. Funkcje

Wstęp do programowania

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

Napisz program, który dla podanej na standardowym wejściu temperatury w stopniach Fahrenheita wypisze temperaturę w stopniach Celsjusza.

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

6. Pętle while. Przykłady

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

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

Podstawy Programowania C++

tablica: dane_liczbowe

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

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

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Praca domowa nr 1. a a b a b ; b c. c a bc d ef gh. 2) Napisz kod sprawdzający poniższe warunki sformułowane w języku naturalnym:

Zestaw C-11: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp i.h)!!! Zad. 1: Zad. 2:

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Język C, tablice i funkcje (laboratorium)

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

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

do instrukcja while (wyrażenie);


Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

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

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

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

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 )

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

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

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

lekcja 8a Gry komputerowe MasterMind

Warsztaty dla nauczycieli

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

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

Wstęp do programowania

Sortowanie zewnętrzne

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Zadanie 1. Algorytmika ćwiczenia

7. Pętle for. Przykłady

Zestaw 1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: Zad. 2: 2,2,2 5,5,5,5,5,5 Zad.

Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Podstawy i języki programowania

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

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

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Programowanie Proceduralne

Wstęp do Programowania, laboratorium 02

I. Podstawy języka C powtórka

Programowanie 3 - Funkcje, pliki i klasy

IX. Wskaźniki.(3 godz.)

Język C++ zajęcia nr 2

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

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

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Proste programy w C++ zadania

Akademia ETI Marcin Jurkiewicz

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

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

Strategia "dziel i zwyciężaj"

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

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

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

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Laboratorium nr 1. i 2.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

1 Powtórzenie wiadomości

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

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

Programowanie - wykład 4

Jarosław Wróblewski Matematyka Elementarna, zima 2014/15

Język C zajęcia nr 11. Funkcje

Podstawy informatyki I r.

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Transkrypt:

Tablice jednowymiarowe Gdy mamy do czynienia z zestawem zmiennych, to można z nich zrobić tablicę. Tablica jest ciągiem elementów tego samego typu, który zajmuje ciągły obszar pamięci. Korzyść z zastosowania tablicy jest taka, że zamiast nazywania każdej zmiennej osobno, wystarczy odnieść się do k tego elementu danej tablicy. Deklaracja tablicy typ_elementów nazwa tablicy[liczba_elementów]; 1 Jeśli chcemy mieć elementy typu całkowitego (int), to definicja tablicy o nazwie tablica wygląda następująco: int tablica[]; Elementami tej tablicy są tablica[0] tablica[1] tablica[2] tablica[3] Uwaga: Numeracja elementów tablicy w języku C++ zaczyna się od zera Inicjalizacja tablic Tablicę można zadeklarować i od razu nadać wartości jej elementom np. za pomocą instrukcji: float tab[]=0.5,, 2.17, 100.0101 przy czym nie trzeba określać rozmiaru tablicy, gdyż kompilator rozpozna go po liczbie elementów. Innym sposobem inicjacji tablic jest przypisanie każdemu jej elementowi wartości, np.: float tab[]; tab[0]=0.5; tab[1]=; tab[2]=2.17; tab[3]=100.0101; Przekazywanie tablic do funkcji Funkcja po otrzymaniu tablicy jako argumentu, ma pełen dostęp do zawartości komórek, w których przechowywane są elementy tablicy działa bezpośrednio na tablicy. 2 void wypelnij (int tab[10]) for (int i=0;i<8;i++) cout << Podaj wartość elementu ; cin >>tab[i]; Jeśli chcemy operować na tablicach o różnych rozmiarach, to musimy oprócz tablicy przekazać jeszcze liczbę jej elementów, np.: 3 void wypelnij2 (int tab[], int rozmiar) for (int i=0;i<rozmiar;i++) cout << Podaj wartość elementu ; cin >>tab[i]; -1-

Tablice przesyła się podając tylko jej nazwę, która jest zarazem adresem początku tej tablicy. Dla przykładu 2 wywołanie funkcji będzie wyglądało następująco: wypełnij(tablica); UWAGA: Skoro nazwa tablicy jest równocześnie ADRESEM ZEROWEGO elementu, więc poniższe odwołania są sobie równoważne: Tab + 3 Tab[3] &Tab[3] Tablice dwuwymiarowe Elementami tablicy dwuwymiarowej są jednowymiarowe tablice, z których każda ma tą samą liczbę elementów tego samego typu. Deklaracja tablicy dwuwymiarowej typ_elementów nazwa tablicy[liczba_wierszy][liczba_kolumn]; 3 int liczby[2][3] //deklaracja tablicy o 2 wierszach i 3 kolumnach Zadania Zadanie 1 Odwrotnie Napisz program, który wczytuje n liczb naturalnych większych od zera i mniejszych od 1000 i wypisze je w kolejności odwrotnej. Pierwszy wiersz zawiera liczbę n ilość elementów do wczytania. W drugim wierszu podano po spacji n liczb. Ciąg liczb podanych na wyjściu w odwrotnej kolejności. Dla danych: 2 1 7 11 poprawną odpowiedzią jest: 11 7 1 2 Zadanie 2 Liczba Dany jest ciąg n (n>1 i n<6500) liczb naturalnych nie większych od 1000. Napisz program, który wyznaczy (o ile istnieje) najmniejszą liczbę naturalną, która w nim nie występuje). Jeśli każda z liczb od 1 do 1000 występuje w podanym ciągu program powinien wypisać wówczas liczbę zero. Dla danych: 5 2 1 3 7 poprawną odpowiedzią jest liczba: 5 Zadanie 3 Moda (wartość występująca najczęściej) Danych jest n liczb naturalnych nie większych od 100. Napisz program, który wyznaczy liczbę, która pojawiła się najczęściej. Jeśli istnieje kilka liczb występujących najczęściej wypisz najmniejszą z nich. Dla danych: 7 1 7 1-2-

poprawną odpowiedzią jest wynik: 1 Język C++ Zadanie Zamiana Napisz program, który wczytuje ciąg liczb do 20 elementowej tablicy jednowymiarowej zamienia miejscami element pierwszy z ostatnim, drugi z przedostatnim, itd: Pierwszy wiersz wejścia zawiera liczbę całkowitą n z przedziału 2 20, będąca ilością elementów tablicy. Następny wiersz zawiera oddzielone pojedynczą spacją n liczb z zakresu: -32768 32767 W kolejnych wierszach wyjścia należy zapisać elementy pozamieniane miejscami. Dla pliku wejściowego: 2 3 1 poprawną odpowiedzią jest wynik: 1 3 2 Zadanie 5 Losowe Utwórz program, który do tablicy o nazwie A 100 elementowej zapisze liczby losowe z przedziału 0 100 i wypisze je na ekranie monitora. Wskazówka: Do generowania liczb losowych służy funkcja rand(). Generuje ona liczbę całkowitą od 0 do RAND_MAX. Aby wygenerować liczbę z przedziału <0,a>, napiszemy: d= rand() % (a+1), czyli użyjemy reszty z dzielenia wygenerowanej liczby przez a+1. Aby za każdym razem po uruchomieniu programu otrzymać inną sekwencję liczb losowych należy zainicjować rand() funkcją srand(time(null)). Argument w funkcji srand w postaci time(null) oznacza, że wartość bazową w procesie generowania liczby przyjmowany jest odczytany z zegara czas, jaki upłynął w sekundach od roku 1970. Funkcja rand znajduje się w bibliotece cstdlib. Pierwszy i jedyny wiersz wejścia zawiera liczbę całkowitą k z zakresu 2..100. W k wierszu wyjścia ma pojawić się k ty element tablicy. Dla danej wejściowej: 3 Jedną z możliwych odpowiedzi jest:: A[0]= A[1]= A[2]= Zadanie 6 Helikopter Między miastem A a miastem B odległość wynosi S kilometrów. W tym samym dniu, w tym samym czasie wyjeżdżają z obu miast ku sobie na spotkanie dwaj rowerzyści bez zatrzymywania się z prędkością Vr kilometrów na godzinę, a równocześnie z nimi wylatuje z miejscowości A helikopter lecący z prędkością Vh kilometrów na godzinę. Helikopter, wyprzedziwszy rowerzystę jadącego z miejscowości A, leci na spotkanie drugiego, który wyjechał z miejscowości B. W momencie spotkania go zawraca natychmiast i leci ku pierwszemu, doleciawszy doń znów zawraca i zmierza ku drugiemu i tak powtarza swój lot naprzód i wstecz tak długo, aż się rowerzyści spotkają. Ile kilometrów przeleci helikopter? W pierwszym wierszu standardowego wejścia zapisano trzy wartości Vr(5<=Vr<=100), S(100<=S<=500000) i Vh (100<=Vh<=5000) oddzielone spacją. -3-

W jedynym wierszu standardowego wyjścia zapisz ile kilometrów przeleciał helikopter z dokładnością do dwóch miejsc po kropce. Dla danych 50 300 100 poprawna odpowiedź 300.00 Zadanie 7 Wypełnij Utwórz program z użyciem funkcji, który znajduje średnią ocen zapisanych w jednowymiarowej dwunastoelementowej. Wykorzystaj 3 funkcje: 1. void wypelnij(float tab[], int ilosc) 2. float sumuj (float tab[], int ilosc) 3. void wypisz(float tab[], int ilosc) Pierwszy wiersz wejścia zawiera liczbę całkowitą n ilość ocen. Następne wiersz zawiera n liczb rzeczywistych przedzielonych spacją ocen z poszczególnych przedmiotów W pierwszym wierszu wyjścia ma pojawić się liczba rzeczywista będąca średnią ocen, w następnych wierszach mają być wypisane wszystkie oceny, których wyliczona została średnia.. 3 5 2 poprawną odpowiedzią jest: 3.5 3 5 2 Zadanie 8 Największy Napisz program, który w tablicy o nazwie TAB 100 elementowej zawierającej liczby losowe z przedziału - 100 100 znajdzie element największy. Pierwszy wiersz wejścia zawiera liczbę całkowitą n z zakresu 2..100 ilość elementów tablicy. W pierwszym wierszu wyjścia należy wypisać: Numer komórki tabeli, w której znajduje się element największy Dla n=, p=10 i liczb losowych TAB[0]=23; TAB[1]=10;TAB[2]= -87; TAB[3]=56 poprawną odpowiedzią jest odpowiedź: 3 Zadanie 9 Wyróżniony Napisz program, który w tablicy o nazwie TAB 100 elementowej zawierającej liczby losowe z przedziału - 100 100 znajdzie element wyróżniony (szukany). Pierwszy wiersz wejścia zawiera liczbę całkowitą n z zakresu 2..100 ilość elementów tablicy. Drugi wiersz zawiera szukany element - p W pierwszym wierszu wyjścia należy wypisać: Numer komórki tabeli, w której znajduje się podany element lub słowo NIE, jeśli element nie występuje --

Dla n=3, p=10 i liczb losowych TAB[0]=23; TAB[1]=10;TAB[2]=-87;: poprawną odpowiedzią jest odpowiedź: 1 Zadanie 10 Stok Stokiem rosnącym w tablicy A nazywamy ciąg kolejnych elementów, takich że A[i]<A[i+1] (czyli, każdy kolejny element musi być większy od poprzedniego). Długość stoku rosnącego jest to liczba jego elementów. Dla podanego ciągu liczb wyznacz maksymalną długość stoku rosnącego. Pierwszy wiersz wejścia zawiera liczbę naturalną n z przedziału 3 100 oznaczającą ilość danych. W kolejnym wierszu zapisano n liczb całkowitych z przedziału -2 15 2 15-1 Długość największego stoku rosnącego. 8 1 2 5 3 5 9 8 Poprawną odpowiedzią jest liczba: Zadanie 11 Maksymalna suma Dany jest ciąg liczb całkowitych X 1, X 2,..., X N. Opracuj program znajdujący w tym ciągu spójnego fragmentu tzn. podciągu złożonego z pewnej ilości kolejnych elementów X K, X K+1,..., X J (gdzie 1 <= k <= j <= n) o największej możliwej sumie. W wierszu wejścia zapisane są wartości ciągu z przedziału od -30000 do 30000 oddzielone pojedynczą spacją. Liczba elementów ciągu nie przekracza 60000. Ostatnim znakiem zbioru jest znak końca zbioru EOF. W standardowym wyjściu w jedynym wierszu zapisana jest maksymalna suma fragmentu. Dla danych 2 5-9 3 9-1 2 10 poprawna odpowiedź to 23 Zadanie 12 Zamiana cyfr Jaka największa liczba może być uzyskana z podanej liczby naturalnej, jeżeli dopuszczamy co najwyżej jedną operację zamiany miejscami dwóch cyfr? Napisz algorytm, który rozwiąże to zadanie. W pierwszym wierszu standardowego wejścia zapisano jedną liczbę naturalną mieszczącą się w typie int. W jedynym wierszu standardowego wyjścia powinna znaleźć się odpowiedź Dla danej 255 poprawnym wynikiem jest 552-5-

Zadanie 13 divide and conquer Napisz program, który w tablicy o nazwie TAB 100 elementowej zawierającej liczby losowe z przedziału - 100 100 znajdzie element największy i najmniejszy. Pierwszy wiersz wejścia zawiera liczbę całkowitą n z zakresu 2..100 ilość elementów tablicy. W pierwszym wierszu wyjścia należy wypisać dwie liczby oddzielone spacją: Element największy i najmniejszy Dla n=, p=10 i liczb losowych TAB[0]=23; TAB[1]=10;TAB[2]= -87; TAB[3]=56 poprawną odpowiedzią jest odpowiedź: 56-87 Wskazówka Wykorzystaj tutaj poniższy algorytm: Krok1: Podział zbioru na dzw podzbiory: M zbiór kandydatów na minimum i N zbiór kandydatów na maksimum. Na początku zbiory te są puste. Jeśli n jest liczbą nieparzystą to za a n+1 =a n. Dla i=1, 3, 5,, n-1 wykonaj: Jeśli x i <=x i+1, to dołącz x i do M, a x i+1 do N, A w przeciwnym razie dołącz x i do N, a x i+1 do M Krok 2: Znajdź w zbiorze M element najmniejszy Krok 3: Znajdź w zbiorze N element największy. Oblicz ile porównań wykonuje powyższy algorytm. Zadanie 1 Sito Eratostenesa Napisz program, który wypisze kolejne liczby pierwsze. Skorzystaj z poniższego algorytmu, zwanego sitem Eratostenesa: Dla danego ciągu kolejnych liczb naturalnych począwszy od 2 do n Przyjmujemy, że liczba 2 jest pierwsza, następnie wykreślamy wszystkie wielokrotności liczby 2. Następna nie wykreślona liczba, czyli 3 jest pierwsza. Wykreślamy teraz wszystkie wielokrotności liczby 3. Następna niewykreślona liczba, czyli 5 jest pierwsza, itd. Wykorzystaj tablicę liczb całkowitych o 1000 elementach W pierwszym wierszu wejścia zapisano jedną liczbe n z przedziału 2 1000 ilość liczb w tablicy Na standardowym wyjściowym należy zapisać kolejne liczby pierwsze rozdzielone pojedynczą spacją. Dla danej wejściowej: 20 poprawną odpowiedzią jest ciąg liczb: 2 3 5 7 11 13 17 Zadanie 15 Podział Napisz program, który dla danej tablicy 100 elementowej podzieli ją według elementu wybranego na dwie części: lewą gdzie znajdują się elementy nie większe od wskazanego i prawą gdzie są elementy mniejsze. W pierwszym wierszu wejścia zapisano dwie liczby: liczbę n z przedziału 2 100 ilość liczb w tablicy oraz liczbę k indeks elementu wskazanego Drugi wiersz zawiera n liczb całkowitych elementów tablicy Zgodne z przykładem 6 2-6-

2 3 8 1 5 Poprawna odpowiedzią jest ciąg: 2 3 1 8 5 Język C++ Zadanie 16 Scalanie posortowanych tablic Napisz program, który scali dwie posortowane rosnąco tablice o w jedną uporządkowaną niemalejąco. W pierwszym wierszu wejścia zapisane są dwie liczby naturalne z przedziału od 5 do 100 ilość elementów każdej z posortowanych tablic. Kolejne dwa wiersze zawierają elementy poszczególnych tablic w kolejności rosnącej. Elementy tablicy są niewielkimi liczbami całkowitymi. Ciąg liczb posortowanych niemalejąco 5 1 2 5 9 1 3 7 9 Poprawną odpowiedzią jest ciąg: 1 1 2 3 5 7 9 9-7-