4. Gra w [Za dużo, za mało] (zobacz wykład)

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

Kilka prostych programów

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

do instrukcja while (wyrażenie);

Algorytmy sortujące i wyszukujące

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

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

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 )

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

I. Podstawy języka C powtórka

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

Laboratorium nr 1. i 2.

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

Programowanie 3 - Funkcje, pliki i klasy

lekcja 8a Gry komputerowe MasterMind

Proste programy w C++ zadania

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

Łańcuchy znaków. Agnieszka Nowak - Brzezińska

WHILE (wyrażenie) instrukcja;

Podstawy informatyki I r.

Sortowanie. LABORKA Piotr Ciskowski

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

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

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

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

Sortowanie. Bartman Jacek Algorytmy i struktury

Programowanie obiektowe - zadania

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

1 Podstawy c++ w pigułce.

Klasy: String, Random, Math. Korzystanie z dokumentacji.

Warszawa dnia 2 stycznia 2011 r. Zbiór zadań z programowania w języku C do samodzielnego wykonania

PROGRAMOWANIE W C++ ZADANIA

Wprowadzenie do programu Mathcad 15 cz. 1

C++ wprowadzanie zmiennych

1 Podstawy c++ w pigułce.

WHILE (wyrażenie) instrukcja;

MATLAB - laboratorium nr 1 wektory i macierze

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.


Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Konstrukcje warunkowe Pętle

Tablice jednowymiarowe

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

LISTA 5. C++ PETLE for, while, do while

Algorytm selekcji Hoare a. Łukasz Miemus

Pomorski Czarodziej 2016 Zadania. Kategoria C

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

Podstawy programowania II edycja 2016/17. Zadania laboratoryjne cz. I

Metody numeryczne Laboratorium 2

Obliczenia iteracyjne

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

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

1 Powtórzenie wiadomości

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

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

Algorytmy i struktury danych

3. Macierze i Układy Równań Liniowych

Ćwiczenia podstawowe, zestaw 5, część 1

Wstęp do Programowania, laboratorium 02

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

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

Programowanie w VB Proste algorytmy sortowania

Wymagania dla klasy szóstej Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: Mnożenie ułamków zwykłych

n, m : int; S, a, b : double. Gdy wartości sumy składowej nie można obliczyć, to przyjąć Sij = 1.03 Dla obliczenia Sij zdefiniować funkcję.

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie w języku Java

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:

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Temat (rozumiany jako lekcja) Propozycje środków dydaktycznych. Liczba godzin. Uwagi

*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)

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Rozdział 1 PROGRAMOWANIE LINIOWE

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

1 Przetwarzanie tablic znakowych

Programowanie - wykład 4

Złożoność obliczeniowa zadania, zestaw 2

( x) Równanie regresji liniowej ma postać. By obliczyć współczynniki a i b należy posłużyć się następującymi wzorami 1 : Gdzie:

Programowanie 2 - Tablice i łańcuchy

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Podstawy programowania

Lab 9 Podstawy Programowania

Struktury Danych i Złożoność Obliczeniowa

Wykład z Technologii Informacyjnych. Piotr Mika

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

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ

Katarzyna Bereźnicka Zastosowanie arkusza kalkulacyjnego w zadaniach matematycznych. Opiekun stypendystki: mgr Jerzy Mil

4. Funkcje. Przykłady

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Algorytm. a programowanie -

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.

Polcode Code Contest PHP-10.09

Transkrypt:

1 Wprowadzenie 1. Ćwiczenie 1 łagodny start. Obejmuje praktyczną realizację programów omówionych na pierwszym wykładzie. Należy zastosować wersje wykorzystujące elementy języka C++. Ćwiczenia do wykonania: Przeliczanie odległości z kilometrów na mile (zobacz wykład): http://uranos.cto.us.edu.pl/~siminski/jpo/jpo_w_01.pdf. Wyznaczanie średniego spalania (zobacz wykład): http://uranos.cto.us.edu.pl/~siminski/jpo/jpo_w_01.pdf. 2. Przelicznik miar: Napisać program przeliczający odległość podaną w metrach na następujące miary: cal, stopę, jard, milę lądową, sążnie, mile morskie, angstremy, kable, łokcie, wiorsty, itp. 3. Ćwiczenie 2 instrukcje. Wyznaczanie średniego spalania z kontrolą poprawności danych dystansu i ilości (zobacz wykład) http://uranos.cto.us.edu.pl/~siminski/jpo/jpo_w_02.pdf. 4. Gra w [Za dużo, za mało] (zobacz wykład) http://uranos.cto.us.edu.pl/~siminski/jpo/jpo_w_02.pdf. 5. Kalkulator pozwalający na wykonywanie operacji dodawania, odejmowania, mnożenia i dzielenia na dwóch liczbach rzeczywistych. Program ma identyfikować sytuację wprowadzenia błędnego symbolu działania oraz próbę dzielenia przez zero. Podobnie jak w poprzednich przykładach zakładamy, że użytkownik wprowadzi prawidłowe liczby. Scenariusz działania programu: Program wyświetla informację o swoim przeznaczeniu. Wczytuje pierwszą liczbę. Wczytuje symbol operacji arytmetycznej: +, -, *, /. Wczytuje drugą liczbę. Wyświetla wynik lub w razie konieczności informację o niemożności wykonania działania. Program kończy swoje działanie po naciśnięciu przez użytkownika klawisza Enter. 6. Równanie kwadratowe. Program wczytuje współczynniki A, B i C równania kwadratowego w postaci Ax2+Bx+C=0, wyznacza jego rozwiązania w zakresie liczb rzeczywistych. Program powinien wyznaczyć tzw. deltę, i w zależności od jej wartości poinformować użytkownika o braku pierwiastków rzeczywistych, wartości jednego pierwiastka podwójnego lub wartości dwóch pierwiastków. 7. Układ równań liniowych. Dany jest układ równań liniowych: A1x + B1y = C1 A2x + B2y = C2 Program wczytuje współczynniki obu równań: A1, B1, C1, A2, B2, C2. Rozwiązanie układu równań może polegać na 1

wyliczeniu odpowiednich wyznaczników W, Wx, Wy a następnie ich ilorazów zgodnie z informacjami poznanym na zajęciach z matematyki. Należy identyfikować i prawidłowo zareagować na sytuację, gdy układ jest nieokreślony. 8. Prawa wyborcze.napisać program wczytujący liczbę całkowitą należącą do przedziału (1..15] (lewostronnie otwarty, prawostronnie domknięty). Liczba ta określa wiek pewnej osoby. Zadaniem programu jest stwierdzenie czy ta osoba: posiada bierne prawo wyborcze (ukończone 18 lat), posiada czynne prawo wyborcze (ukończone 21 lat), może kandydować do senatu (ukończone 30 lat), może kandydować na prezydenta (ukończone 35 lat). Dodatkowo, dla osób niepełnoletnich należy wyznaczyć i wyprowadzić informację ile lat pozostało do osiągnięcia pełnoletności, a dla osób pełnoletnich, od ilu lat są pełnoletnie. Program powinien umożliwiać wielokrotne wykonywanie opisanych czynności. 9. Wypłata. Napisać program wczytujący liczbę całkowitą należącą do przedziału [1..31] oraz liczbę rzeczywistą z przedziału [50..20] (oba przedziały obustronnie domknięte). Liczba całkowita określa liczbę dniówek przepracowanych przez pewnego pracownika, liczba rzeczywista stawkę za dniówką. Kwota wypłaty jest iloczynem liczby przepracowanych dniówek i stawki za dniówkę. Dla pracowników, którzy przepracowali od 20 do 15 dniówek dolicza się premię wysokości 100zł, dla tych, którzy przepracowali więcej niż 25 dniówek, dolicza się premię w wysokości 200zł. Zadaniem programu jest wyliczenie kwoty wypłaty, uwzględniającej dodatek zależny od liczby przepracowanych godzin. Program powinien umożliwiać wielokrotne wykonywanie opisanych czynności. 10. Napisz program obliczający i drukujący na ekranie objętości i pola powierzchni następujących brył: kuli prostopadłoscianu stożka (Pamiętaj, ze niezbedne wymiary program uzyskuje od uzytkownika...) 11. Napisz program, który pyta o oceny z min. 5 róznych przedmiotów danego ucznia / studenta, a nastepnie liczy srednia tych ocen. Sprawdz ponadto, czy studentowi o takiej sredniej przysługuje stypendium naukowe (jesli srednia > 4.1) 12. Napisz program, który drukuj piramidke postaci: * * * 2

* * * Piramidka moze byc tworzona z dowolnych znaków. Glebokosc piramidki podaje uzytkownik 13. Napisz program, który drukuje na ekranie po wpisaniu przez użytkownika wyrazu: hello piramidke postaci: h ee lll llll ooooo 14. Używając dowolnie wybranej pętli napisz program, który oblicza wysokość odsetek na rachunku bankowym w ciągu roku, przy założeniu, że zarówno wysokość kwoty początkowej jak i oprocentowanie w skali roku, a także długość okresu kapitalizacji (w dniach) podawane są przez użytkownika. 15. Napisz program, który odczytuje dane wejściowe aż do napotkania znaku #, a następnie wyświetla każdy wpisany znak wraz z jego dziesiętnym kodel ASCII. W jednym wierszu powinno znajdować się osiem par znak - kod. Propozycja: użyj licznika znaków i operatora modulo (%) do wyświetlania znaku nowej linii w co ósmym cyklu pętli. 16. Napisz program, który pobiera liczby całkowite do momentu wpisania przez użytkownika cyfry 0.Po zakończeniu wczytywania danych wejściowych program powinien wyświetlić ilość wpisanych liczb parzystych (z wyłączeniem zera) i ich średnią wartość oraz ilość wpisanych liczb nieparzystych i ich średnią wartość. 17. Korzystając z instrukcji if..else, napisz program, który odczytuje dane wejściowe do znaku #, zastępuje każdą kropkę wykrzyknikiem, a każdy wykrzyknik - dwoma wykorzyknikami, oraz wyświetla liczbę zmian, jaką wykonał. 18. Napisz program, który pobiera liczbę przepracowanych godzin w tygodniu, a następnie wyświetla wynagrodzenie brutto, podatek oraz wynagrodzenie netto. Przyjmij następujące wartości: podstawowe wynagrodzenie = 40 zł/godz. nadgodziny (powyżej 40 godzin w tygodniu) = 150 % podstawowego wynagrodzenia podatek 15 % dla pierwszych 1200 zł 20 % dla kolejnych 600 zł 25 % dla reszty wynagrodzenia. 3

użyj stałych # DEFINE. 19. Zmodyfikuj poprzednie zadanie tak, aby program wyświetlał menu pozwalające wybrać stawkę wynagrodzenia (zastosuj instrukcje switch). Po uruchomieniu program powinien wyświetlać coś w rodzaju: *********************************************************** Podaj liczbe odpowiadajaca zadanej stawce wynagrodzenia lub opcji: 1. 35 zł/godz. 2. 37 zł/godz. 3. 40 zł/godz. 4. 45 zł/godz. 5. wyjście *********************************************************** W przypadku wybrania opcji od 1 do 4, program powinien poprosić o podanie liczby przepracowanych godzin. Po wyświetleniu wyników, program powinien wrócić do menu. W przypadku wpisania wartości innej niż cyfry z przedziału od 1 do 5, program powinien przypomnieć użytkownikowi o dostępnych opcjach, a następnie wrócić do menu. Stawki wynagrodzenia i podatku przedstaw za pomocą stałych #define. 20. Amerykańska skala podatkowa z roku 1988 była jedną najprostszych w ostatnich czasach. Składała się ona z czterech kategorii, z których każda zawierała dwie stawki. Oto jej podsumowanie: Na przykład, osoba stanu kategoria stan wolny Głowa rodziny Małżeństwo, rozliczenie wspólne Małżeństwo, rozliczenie osobne podatek 15 % dochodu do 17850 $ + 28 % reszty 15 % dochodu do 23900 $ + 28 % reszty 15 % dochodu do 29750 $ + 28 % reszty 15 % dochodu do 14875 $ + 28 % reszty wolnego, która osiągnęła dochód w wysokości 20000 dolarów, jest winna państwu 0.15 17850 $ + 0.28 (20000 $ - 17850$). Napisz program, który pobiera kategorię i dochód podlegający opodoatkowaniu, a nastepnie oblicza wysokość kwoty podatku. Użyj pętli tak, aby użytkownik mógł obliczyć podatek dla kilku różnych przypadków w czasie jednej sesji z programem. 4

2 TABLICE 2.1 Proste programy na tablicach 1. Napisz program, który wczyta 15 liczb róznych liczb całkowitych do jednowymiarowej tablicy, a nastepnie znajduje najwieksza i najmniejsza z nich, a takze ich pozycje w zbiorze. 2. Napisz program, w którym zadeklarujesz i zainicjujesz dowolnymi wartosciami (inicjacja w momencie deklaracji), dwie tablice liczb (10-15 pozycji), a nastepnie do trzeciej tablicy wpisz odpowiednio: element pierwszy w tablicy 3 sume pierwszego elementu z tablicy 1 i ostatniego z tablicy 2 element drugi w tablicy 3 sume drugiego elementu z tablicy 1 i przedostatniego z tablicy 2, itd. 3. Napisz program obliczajacy sumy kolumn, sumy wierszy i sumy obu przekatnych macierzy prostokatnej o ustalonym dowolnym wymiarze (np. 20 x 20). Zawartosc i analizowany zakres macierzy wczytywana ma byc od uzytkownika. Poza wyliczonymi sumami wyswietl równiez sama macierz. 4. Roczne przychody. Program ten będzie wczytywał przychody osiągnięte przez podatnika w kolejnych miesiącach roku podatkowego. Scenariusz działania programu: Program wyświetla informację o jego przeznaczeniu. Program wyświetla menu główne (zobacz str. 22 wykładu o instrukcjach), pozwalające na wybór następujących opcji: Wczytaj wczytanie dochodów, Wyświetl wyświetlenie wczytanych dochodów, Średnia i suma wyznaczenie dochodu średniego i sumarycznego, Minimalny i maksymalny wyznaczenie dochodu minimalnego i maksymalnego, Od najmniejszego wyświetlenie dochodów uporządkowanych rosnąco od najmniejszego do największego, Nad i pod średnią wyświetlenie informacji ile dochodów jest większych od średniego i jaka jest ich suma, oraz ile dochodów jest mniejszych od średniego i jaka jest ich suma. Koniec powoduje zakończenie programu. Po wybraniu odpowiedniej opcji następuje wyznaczenie odpowiednich wielkości, zgodnie z powyższym opisem. 5. Notowania. Makler nadzoruje dzienne notowania pewnej spółki giełdowej. W ciągu dnia pracy, trwającego 8 godzin, makler spisuje kurs spółki dwukrotnie w ciągu godziny. Należy napisać program, który pozwoli maklerowi? na podstawie zanotowanych wartości? na wyznaczenie średniego, minimalnego i maksymalnego kursu obserwowanej spółki. Program 5

powinien posiadać trzy niezależne opcje: wczytywanie wartości akcji, przeglądanie wprowadzonych wartości akcji, wyznaczanie wartości średniej, minimalnej i maksymalnej, oraz opcje pozwalającą na zakończenie jego działania. 2.2 Doskonalenie umiejętności pracy z tablicami liczb Ćwiczenie ma na celu zapoznanie studentów z wybranymi metodami sortowania wewnętrznego. Badane w ćwiczeniu metody sortowania to: sortowanie przez proste wstawianie, sortowanie przez proste wybieranie, sortowanie bąbelkowe, sortowanie szybkie (quick sort). Zakładamy, że długość tablicy podlegającej sortowaniu jest znana i wynosi n. Metody sortowania: 2.2.1 Sortowanie przez proste wstawianie Sortowanie przez proste wstawianie odbywa się w następujący sposób: dla każdego i = 2, 3,..., n trzeba powtarzać wstawianie a[i] w już uporządkowaną część tablicy a[1]... a[i 1]. W metodzie tej obiekty podzielone są umownie na dwa ciągi: ciąg wynikowy a 1... a i 1 oraz ciąg źródłowy a i... a n. W każdym kroku począwszy od i = 2 i zwiększając i o jeden, i-ty element ciągu źródłowego przenosi się do ciągu wynikowego, wstawiając go w odpowiednim miejscu. Algorytm: 1. Wykonaj co następuje począwszy od indeksu i = 2 do i = n Wskaż na i-ty element Wstaw i-ty element w odpowiednim miejscy w a 1...a i 2.2.2 Sortowanie przez proste wybieranie Sortowanie przez proste wybieranie polega na wyznaczeniu najmniejszego elementu w ciągu; zamianie go z pierwszym elementem w ciągu, wyznaczeniu najmniejszego elementu w a[2, n] i zamianie go z drugim elementem: wyznaczeniu najmniejszego elementu w a[3, n] i zamianie go z trzecim elementem itd. aż do posortowania całkowitego ciągu. Algorytm: 1. Wykonaj co następuje n 1 razy (i = 1 do i = n 1) Wskaż na najmniejszy element spośród a[i]...a[n]; Wymień go z a i 2.2.3 Sortowanie bąbelkowe Sortowanie bąbelkowe polega na przeglądaniu od końca sortowanej tablicy i zamianie miejscami elementów jeśli są one w kolejności odwrotnej tj. pierwszy jest mniejszy od drugiego. Po zakończeniu pierwszego przejścia element najmniejszy powinien się znajdować na odpowiednim dla niego miejscu czyli na początku 6

tablicy. Algorytm: 1. Wykonaj co następuje n 1 razy (i = n 1,..., 1) Wskaż na ostatni element; Wykonaj co następuje i razy (a) Porównaj wskazany element z elementem poprzednim (b) Jeśli porównane elementy są w nie właściwej kolejności, zamień je miejscami (c) Wskaż na następny element 2.2.4 Sortowanie szybkie (Quick Sort) Jest to metoda, w której stosuje się zasadę zamiany. W metodzie sortowania szybkiego korzysta się z faktu, że w celu zapewnienia efektywności powinno się wymieniać obiekty położone daleko od siebie. Załóżmy że dane jest n obiektów ustawionych w odwrotnym porządku kluczy. Można posortować je wykonując tylko n/2 wymian, biorąc najpierw obiekty - skrajny z lewej strony i skrajny z prawej strony, a następnie posuwać się stopniowo do środka z obu stron. Oczywiście takie postępowanie możliwe jest tylko dlatego, że uporządkowanie było dokładnie odwrotne. Wybierzmy losowo jakiś obiekt i nazwijmy go x; przeglądajmy tablicę od lewej strony aż znajdziemy obiekt a i > x, a następnie przeglądajmy tablicę od prawej strony aż znajdziemy a j < x. Wymieńmy teraz te dwa obiekty i kontynuujmy proces przeglądania i zamiany, aż nastąpi spotkanie gdzieś w środku tablicy. W rezultacie otrzymamy tablicę podzieloną na lewą część z kluczami mniejszymi od x oraz prawą część z kluczami większymi od x. Jeżeli na przykład za x wybierzemy środkowy klucz 42, to w tablicy kluczy 44 55 12 42 94 6 18 67 trzeba dokonać dwóch wymian aby otrzymać tablicę podzieloną 18 6 12 42 94 55 44 67 Ostatnie wartości indeksów są i = 5 oraz j = 3. Klucze a 1...a i 1 są mniejsze bądź równe kluczowi x = 42, klucze a j+1...a n są większe bądź równe temu kluczowi. Wynika stąd, że otrzymaliśmy podział na dwie części, a mianowicie ak.klucz x.klucz dla k = 1...i 1 ak.klucz x.klucz dla k = j + 1...n oraz ak.klucz = x.klucz dla k = j + 1...i 1 Następnie powtarzamy tę operacje dla obu wcześniej utworzonych podciągów. Algorytm założenie: Istnieje ciąg liczb x l, x l+1, x p, 1. Przyjmij za element podziału element v znajdujący się w pobliżu środka ciągu, i podziel tym elementem dany ciąg. Oznacza to, że v znajdzie się na 7

pozycji elementu x k, dla pewnego k spełniającego l k p, i elementy na lewo będą od niego nie większe a elementy na prawo od niego będą nie mniejsze. 2. Zastosuj ten sam algorytm do (l, k 1, x) 3. Zastosuj ten sam algorytm do (k + 1, p, x) Algorytm ten jest bardzo prosty i efektywny, ponieważ zmienne i, j oraz x mogą być w czasie przeglądania tablicy trzymane w szybkich rejestrach maszyny cyfrowej. 2.3 Przetwarzanie tablic znakowych Program studenta ma realizować przetwarzanie tablic znakowych. Należy wykonać ćwiczenie bez użycia funkcji bibliotecznych (string.h, ctype.h) operacje przetwarzania napisów i identyfikowania znaków wykonać na piechotę. Po implementacji tego programu warto przejrzeć informacje dotyczące funkcji i makr zawartych w bibliotekach identyfikowanych przez nagłówki sting.h i ctype.h. 1. int strlen( char s[] ) Wlasna implementacja funkcji wyznaczajacej dlugosc napisu liczona w znakach ktorego dlugosc jest wyznaczana dlugosc napisu liczona w znakach 2. int lwrstrcnt( char s[] ) Wyznacza liczbe malych liter w napisie s Liczba malych liter w napisie s 3. int uprstrcnt( char s[] ) Wyznacza liczbe duzych liter w napisie s 8

Liczba duzych liter w napisie s 4. int dgtstrcnt( char s[] ) Wyznacza liczbe cyfr w napisie s Liczba cyfr w napisie s 5. int nalphastrcnt( char s[] ) Wyznacza liczbe liter i cyfr w napisie s Liczba liter i cyfr w napisie s 6. int chrstrcnt( char c, char s[] ) Wyznacza liczbe wystapien znaku c w s char c znak poszukiwany w napisie Liczba wystapien znaku c w napisie s 7. int chrstrpos( char c, char s[] ) Wyznacza indeks (pozycje w napisie) pierwszego wystapienia znaku c w s char c znak poszukiwany w napisie Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony 8. int chrstrcnt( char c, char s[] ) Wyznacza indeks (pozycje w napisie) ostatniego wystapienia znaku c w s char c znak poszukiwany w napisie 9

Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony 9. void strrev( char s[] ) Odwraca kolejnosc znakow w tablicy s Brak 10

3 Pliki Ćwiczenia mają na celu zapoznanie studenta z obsługą plików (tekstowych). Zakłada się, że studenci będą korzystać z materiałów wykładowych dr Simińskiego dotyczących przetwarzania plików z danymi. Poszczególne zadania powinny być realizowane w formie osobnych funkcji, a program główny powinien być wyposażony w menu pozwalające wykonać każdą z tych funkcji. Poszczególne zadania do wykonania są następujące : 1. Napisać funkcję umożliwiającą odczyt pliku tekstowego i wyświetlenie jego zawartości na ekranie. 2. Napisać funkcję umożliwiającą odczyt informacji dotyczących pliku tekstowego: liczby linii, liczby znaków oraz liczby słów (wyrazów). 3. Napisać funkcję umożliwiającą odczyt pliku tekstowego i skopiowanie jego zawartość do innego pliku. W pierwszej wersji można nazwy plików zaszyć w kodzie programu, jednak ostatecznie obydwie nazwy powinny zostać podawane jako parametry wywołania programu, które jak wiadomo odczytujemy z argumentów funkcji main(int argc, char * argv[]). 4. Napisać funkcję umożliwiającą zliczenie wystąpień podanej frazy w pliku o podanej nazwie. Obydwa parametry: szukana fraza oraz nazwa pliku powinny zostać podane jako argumenty wywołania programu. (j.w.) 5. Napisać funkcję umożliwiającą zamianę dowolnego znaku w pliku na inny podany znak. (Coś na zasadzie szyfrowania :)). 11