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

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

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

- - Ocena wykonaniu zad3. Brak zad3

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

Wybrane algorytmy tablicowe

Programowanie - wykład 4

lekcja 8a Gry komputerowe MasterMind

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Lab 9 Podstawy Programowania

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

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Algorytmy sortujące i wyszukujące

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

if (wyrażenie ) instrukcja

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Podstawy Programowania C++

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

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

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

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

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

4. Funkcje. Przykłady

1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2.

1 Podstawy c++ w pigułce.

Zajęcia 4 procedury i funkcje

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

do instrukcja while (wyrażenie);

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie komputerowe. Zajęcia 4

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

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

Podstawy programowania. Wykład: 11. Trochę różnych przykładów. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Funkcje. Wprowadzenie. Mirosław Ochodek

Sortowanie przez wstawianie Insertion Sort

Instrukcje sterujące

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

tablica: dane_liczbowe

1 Podstawy c++ w pigułce.

Algorytm. a programowanie -

Sortowanie. LABORKA Piotr Ciskowski

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

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

INSTRUKCJE WARUNKOWE. Zadanie nr 1. Odpowiedź. schemat blokowy

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

Programowanie komputerowe. Zajęcia 1

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Zadanie 1. Suma silni (11 pkt)

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Programowanie komputerowe. Zajęcia 5

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

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

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

EGZAMIN MATURALNY Z INFORMATYKI

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

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

Proste programy w C++ zadania

Zasady programowania Dokumentacja

Programowanie w języku Python. Grażyna Koba

Podstawy Programowania

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

Programowanie - instrukcje sterujące

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2014 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

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

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

INSTRUKCJE ITERACYJNE

Zadanie 1. Potęgi (14 pkt)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Kompletna dokumentacja kontenera C++ vector w -

Pętla for. Wynik działania programu:

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

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Obliczenie pola wieloboku na podstawie współrzędnych wierzchołków

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.

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

Rekurencja (rekursja)

Konstrukcje warunkowe Pętle

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

Warsztaty dla nauczycieli

1. Abstrakcyjne typy danych

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytmy i struktury danych. Wykład 4

NAGŁÓWKI, STOPKI, PODZIAŁY WIERSZA I STRONY, WCIĘCIA

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

E S - uniwersum struktury stosu

Transkrypt:

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

Zakres Podstawowe algorytmy przetwarzania tablic (wypełnianie, porównywanie elementów, wyszukiwanie, przesuwanie, usuwanie, dodawanie elementów) Tablica pseudo-dynamiczna (statyczna tablica z licznikiem wykorzystywanych elementów) Parametryzacja algorytmów Dobór sposobu przekazywania parametrów do/z funkcji

Zad. 1 - Zasięg deklaracji i widoczność zmiennych (obowiązkowe) Napisz w komentarzach, jaką wartość mają poszczególne zmienne i gdzie znajdują się ich definicje. int a; void fun(); void main() { int a; a=8; fun(); } void fun() { a=6; int a; a=2; { int a, b; a=9; b=89; } a=20; //b=7; }

Zad2 (obowiązkowe) 1. Napisz program, który w opcjach wykonuje następujące czynności na tablicy zdefiniowanej jako int Uwagi: tab[n], gdzie na początku liczba elementów w tablicy jest równa ile=0: 1.1. wstawia elementy typu int do tablicy, wypełniając całą tablicę. Po wykonaniu tej opcji liczba elementów powinna być równa ile=n. 1.2. wyznacza wartość maksymalną i wyświetla ją oraz indeks tego elementu, jeśli tablica zawiera dane 1.3. wyznacza wartość minimalną i wyświetla ją oraz indeks tego elementu, jeśli tablica zawiera dane 1.4. wyznacza wartość średnią i wyświetla ją oraz indeks tego elementu, jeśli tablica zawiera dane 1.5. wyświetla zawartość tablicy, jeśli zawiera dane. Należy wprowadzić zmienną ile, która przechowuje liczbę elementów tablicy. Wartość ile równa zero świadczy o tym, ze tablica jest pusta. Wartość różna od zera oznacza, że w tablicy są dane. Nie może ona przekroczyć wartości N. Oznacza to, że jeżeli ile=n, wtedy tablica jest pełna. Wartość N musi być zadana programie, np. const int N=10; Należy dodać komentarze w kodzie programu wyjaśniające działanie danego fragmentu programu reprezentującego działanie danego algorytmu odpowiednio opisanego w p. 1.1-1.5.

Zad3 (obowiązkowe) 2. Napisz program, który w opcjach wykonuje następujące czynności na tablicy zdefiniowanej jako int tab[n], gdzie na początku liczba elementów w tablicy jest równa ile=0: Uwagi: 2.1. po każdym wywołaniu tej opcji wstawia po jednym elemencie typu int do tablicy, zawsze za ostatnio wstawionym elementem, czyli indeks tej pozycji jest równy ile. Należy zawsze sprawdzić przed wprowadzeniem, czy liczba elementów ile jest mniejsza od wartości N. Po każdym wprowadzeniu danej należy zwiększyć liczbę elementów ile o 1 2.2. wyszukuje w tablicy element o wartości równej wartości podanej z klawiatury. Jeśli znajdzie taki element wyświetla jego wartość oraz wartość jego indeks u. 2.3 usuwa element z tablicy, którego wartość jest równa wartości podanej z klawiatury, jeśli tablica zawiera dane. Usuwanie polega na zsuwaniu elementów tablicy tzn. jeśli znaleziono element w tablicy o indeksie równym j, wtedy należy wykonać w pętli kolejno: tab[j] = tab[j+1], gdzie wartość j+1 <ile i po zakończeniu pętli zmniejszyć wartość ile o 1. Jeżeli j = ile-1, wtedy wystarczy zmniejszyć liczbę elementów ile o 1 2.4. wyświetla zawartość tablicy, jeśli zawiera dane. 1. Należy wprowadzić zmienną ile, która przechowuje liczbę elementów tablicy. Wartość ile równa zero świadczy o tym, ze tablica jest pusta. Wartość różna od zera oznacza, że w tablicy są dane. Nie może ona przekroczyć wartości N. Wartość ile=n oznacza, ze tablica jest pełna. Wartość N musi być zadana programie, np. const int N=10; 2. Można wykonać funkcje realizujące czynności przedstawione w podpunktach 2.1-2.4. Należy zaproponować sposób przekazywania parametrów przez funkcje. 3. Należy dodać komentarze w kodzie programu wyjaśniające działanie danego fragmentu programu reprezentującego działanie danego algorytmu odpowiednio opisanego w p. 2.1-2.4.

Zad4 (dodatkowe) 1) Napisz program, który będzie wczytywał i analizował tekst (ciąg liter) wprowadzany z klawiatury aż do momentu naciśnięcia klawisza k. 2) Jeśli we wprowadzanym tekście wystąpią litery: a, c, e należy wyświetlić na ekranie histogram występowania tych liter alfabetu np. Litera a c e Liczba 5 0 1 3) Liczbę litery a należy przechowywać w pierwszym elemencie tablicy, c w drugim elemencie tablicy, a e w trzecim elemencie 4) Należy dodać komentarze w kodzie programu wyjaśniające działanie danego fragmentu programu reprezentującego działanie danego algorytmu odpowiednio opisanego w p. 1-3.

Zad5 (dodatkowe) Algorytm wyszukania liczb pierwszych metodą sita Eratostenesa. Należy wyznaczyć wszystkie liczby pierwsze w podzbiorze liczb naturalnych {1..N} za pomocą algorytmu sita Eratostenesa wg podanego algorytmu. Należy wykonać schemat blokowy i program z użyciem tablicy int tab[n]. 1) Utworzyć tablicę zawierającą N elementów i wstawić do każdego elementu wartość 0 1.1) Podaj N z klawiatury 1.2) Jeśli N<2, powtórz krok 1.1 1.3) Ustaw i:=2 1.4) Dopóki i<=n wykonuj kolejne kroki, w przeciwnym wypadku przejdź do kroku 2 1.4.1) wstaw 0 do elementu tablicy o indeksie i 1.4.2) zwiększ i:=i+1 i przejdź do kroku 1.4. 2) Zakłada sie, że pewne indeksy elementów są szukanymi liczbami pierwszymi i po zakończeniu algorytmu elementy tablicy o tych indeksach będą zawierać wartość 0, natomiast pozostałe elementy mają wartość 1, ponieważ nie są liczbami pierwszymi. Stąd należy wstawić na początku wartość 1 do elementu o indeksie równym 1, ponieważ 1 nie jest liczba pierwszą. 3) Ustawić ost_liczp:=1;

4) Na podstawie faktu, że każda liczba złożona nie większa niż N ma dzielnik nie większy niż sqrt(n), wykonuj kolejne kroki, gdy ost_liczp*ost_liczp <=N, w przeciwnym wypadku przejdź do kroku 5: 4.1) Należy zwiększyć ost_liczp o 1: ost_liczp:=ost_liczp+1 4.2) Wykonuj kolejne kroki, jeśli jest prawdziwy warunek ost_liczp<=n) and (tab[ost_liczp]=1, w przeciwnym wypadku przejdź do kroku 4.3. 4.2.1) zwiększaj ost_liczp o 1: ost_liczp:=ost_liczp+1 (poszukiwanie kolejnej liczby pierwszej, czyli elementu tablicy o indeksie ost_liczp nie zawierającej wartości 1) 4.4.2) przejdź do kroku 4.2 4.3) Należy wyznaczyć podwojoną wartość ost_liczp ost i wyznaczyć numer i kolejnej liczby, która nie jest liczbą pierwszą : i:= ost_liczp*2 (rozpoczęcie kolejnego etapu wykreślania liczb, które nie są liczbami pierwszymi) 4.4) Dopóki i<=n, wykonaj w kolejnych krokach eliminacje liczb, które nie są liczbami pierwszymi, ponieważ są ich wielokrotnościami, w przeciwnym wypadku przejdź do kroku 4. 4.4.1) wstaw wartość 1 to elementu tablicy o wierszu równym i : tab[i]:=1 4.4.2) dodaj wartość ost_liczp do i: i:=i+ost_liczp, następnie przejdź do kroku 4.4 5) Wyświetl zawartość tablicy na ekranie: 5.1) wstaw i:=1 5.2) dopóki i<=n wykonuj kolejne kroki, w przeciwnym wypadku zakończ algorytm Wyjaśnienie: 5.2.1) jeśli tab[i]=0, wyświetl indeks elementu jako wartość kolejnej liczby pierwszej 5.2.2) wyznacz kolejny indeks i:=i+1 i przejdź do kroku 5.2. Wyrażenie : ost_liczp:=ost_liczp+1 oznacza, że zmiennej ost_liczp została przypisana wartośc o 1 większa od poprzedniej