Politechnika
Wrocławska, Studium Kształcenia Podstawowego, sem. zimowy 2010/2011
INE
0051 L - Laboratorium
przedmiotu "PODSTAWY PROGRAMOWANIA - Język C++"
(
prow. dr Marek Piasecki
)
|
Lab 1 , Lab
2 , Lab 3 , Lab 4
, Lab 5 , Lab 6 , Lab
7 , Lab 8 , Lab 9
, Lab 10 , Lab 11 ,
Lab
12 , Lab 13
Podstawowe informacje:
-
Środowisko programistyczne wykorzystywane podczas laboratorium:
- Microsoft
Visual Studio (Wikipedia)
Dla studentów niektórych wydziałów
(np. Elektroniki, PPT,
Informatyki)
VisualStudio
2008 Professional jest dostępne nieodpłatnie w ramach programu MSDN
AA.
Niestety, program ten nie
obejmuje wydziału SKP.
-
Studenci SKP mogą skorzystać z nieodpłatnej "uproszczonej"
wersji Visual Studio
Visual Studio 2008
Express Edition
lub z alternatywnych darmowych środowisk programistycznych:
- Bloodshed Dev C++
- Borland C++ Builder
6.0 Personal
-
Warunkiem otrzymania zaliczenia
jest:
- obecność na zajęciach (15 ±2)
- wykonanie przynajmniej po 2 zadania do każdego laboratorium
(jedno wybrane samodzielnie z listy, drugie zadane
przez prowadzącego),
- zaliczenie kartkówki (w połowie semestru - 14-18
listopada 2011)
- zaliczenie sprawdzianu końcowego (około 9-13 stycznia
2012)
-
Jako uzupełnienie laboratoriów
proponujemy 1 tom książki "Symfonia
C++" Jerzego Grębosza.
Przykładowe zadania |
Opis poznawanych zagadnień |
Laboratorium 1 |
Środowisko programowania C++ Builder,
(edycja,
kompilacja, uruchomienie programu)
Pierwsze programy z
użyciem zmiennych prostych.
Komunikacja z użytkownikiem - konsolowe operacje wejścia/wyjścia
wykorzystujące biblioteki <stdio.h> lub <iostream> |
Laboratorium 2 |
Instrukcje warunkowe if, if else, zagnieżdżanie warunków,
instrukcja wyboru switch.
Funkcje
bezparametrowe, zmienne lokalne,
przekazywanie
parametrów przez zmienne globalne |
Laboratorium 3 |
Instrukcje pętlowe
while, do while, for
Proste algorytmy
iteracyjne: zliczanie, sumowanie, wybieranie. |
Laboratorium 4 |
Tablice - dostęp do elementów za pomocą indeksu,
standardowe algorytmy przetwarzania tablic za pomocą pętli |
Laboratorium 5 |
Wskaźniki, arytmetyka wskaźników,
Dostęp do elementów tablicy za
pomocą wskaźników |
Laboratorium 6 |
Definiowanie własnych funkcji z parametrami,
Przekazywanie parametrów
przez wartość, referencję i adres
Budowa złożonych
programów składających się z wielu funkcji.
Menu sterujące przebiegiem programu. |
Laboratorium 7 |
Reprezentacja łańcuchów znaków,
Metody przetwarzania tekstów.
Standardowe funkcje z biblioteki string.h |
Laboratorium 8 |
Dynamiczna alokacja pamięci na tablice jednowymiarowe i łańcuchy |
Laboratorium 9 |
Typ strukturalny - "Baza danych" zaimplementowana
jako tablica struktur |
Laboratorium 10 |
cd. "Bazy danych" oraz zaawansowane funkcje
komunikacji z użytkownikiem:
funkcja edit / menu podświetlane / przeglądanie pełnoekranowe |
Laboratorium 11 |
Plikowe operacje wejścia/
wyjścia
z wykorzystaniem standardowej biblioteki <stdio.h>.
Przetwarzanie ciągu elementów zapisywanych w pliku.
Archiwizacja stanu "Bazy danych" na dysku |
Laboratorium 12 |
Dynamiczne struktury danych - dynamiczna tablica dwuwymiarowa |
Laboratorium 13 |
Dynamiczne-rekurencyjne struktury danych: stos / kolejka |
Laboratorium 14 |
SPRAWDZIAN ZALICZENIOWY |
Laboratorium 15 |
Zaliczenia i poprawki |
PRZYKŁADOWE
ZADANIA DO REALIZACJI
LABORATORIUM NR 1. |
- Napisz program wyświetlający na
ekranie swoją "Wizytówkę"
tzn. nazwisko, imię, adres, telefon, e-mail, itp.
- Napisz program
wczytujący kilka liczb z klawiatury a następnie obliczający
i wyświetlający na ekranie ich sumę, iloczyn, itp.
(np. potęgę, pierwiastek, eksponentę)
-
Napisz program dialogowy
wczytujący z klawiatury podstawowe dane dwóch
pracowników
a następnie
wyświetlający je "kolumnami" w ten sposób
aby zawartość
wytłuszczonych pól "nazwisko", "imię", "data"
zajmowała zawsze tyle
samo miejsca niezależnie od wartości czy ilości liter:
np.
Nazwisko:
Kowalski Imię:
Jan Urodzony:
21. 3.1980 Staż: 3 lata Stawka: 15.50 zł/godz
Nazwisko:
Sienkiewicz Imię: Tomasz Urodzony: 8.11.1985
Staż: 15
lat Stawka: 123.00 zł/godz
Dobierz odpowiednie typy
zmiennych do reprezentowania w/w danych.
-
Napisz wyrażenia
matematyczne wyznaczające:
- pole okręgu i promien
okręgu o promieniu r,
- kartezjańską odległość
pomiędzy dwoma punktami o współrzędnych (x1,y1 ) oraz
(x2,y2)
|
LABORATORIUM NR 2. |
- Napisz program
klasyfikujący wzrost osób tzn. pytający się o wzrost w cm
a następnie
wyświetlający jeden z podanych tekstów
w zależności od przynależności do przedziału wartości: niski < 150cm <
średni < 180cm < wysoki
- Napisz program wprowadzający trzy
liczby z klawiatury a następnie wyświetlający na ekranie:
- największą z tych
liczb
- medianę
- sekwencję
tych trzech liczb uporządkowaną rosnąco lub malejąco
- informację
czy przynajmniej dwie z tych liczb mają identyczną wartość.
Uwzględnij
przypadki gdy wszystkie liczby są różne oraz że mogą wystąpić
powtórzenia.
-
Program wczytujący z klawiatury długości trzech odcinków
i sprawdzający czy da się z nich zbudować
trójkąt.
-
Napisz program wczytujący z klawiatury dwie daty kalendarzowe
(zapisywane za pomocą trzech liczb całkowitych: dzień, miesiąc,
rok)
i sprawdzający czy pierwsza data jest wcześniejsza od drugiej
- Napisz program
klasyfikujący klawisze naciskane na klawiaturze
i wyświetlający jeden
z napisów:
- mała
litera
- duża
litera
- cyfra
- klawisz
ENTER
- klawisz
ESC
- strzałka w
lewo
- strzałka w
prawo
- klawisz funkcyjny
F1
- inny
klawisz
do pobierania kodu
klawisza wykorzystaj funkcję getch() z biblioteki <conio.h>
|
LABORATORIUM NR 3. |
- Napisz program rysujący
na ekranie poziomą kreskę (ze znaków minus)
o długości zadawanej z
klawiatury.
-
Napisz program wczytujący znaki z klawiatury aż do momentu naciśnięcia klawisza
'k'.
W
trakcie wczytywania należy zliczać ilość podanych znaków.
Na zakończenie
należy wyświetlić informacje:
- ile było podanych
znaków (przed nacisnięciem 'k')
- ile z tych znaków było
dużymi literami.
-
Napisz program wczytujący liczby z klawiatury,
z jednoczesnym
zadawaniem pytania "Czy koniec wprowadzania T/N ?"
Na zakończenie program
powinien wyświetlić wartość:
średnią, maksymalną,
minimalną z podanych liczb.
-
Napisz program wyświetlający na ekranie kolejne 100 liczb
parzystych
-
Napisz program wyświetlający na ekranie kolejne liczby całkowite typu
int,
które są podzielne bez
reszty przez n (gdzie n jest zadawane z klawiatury)
-
Napisz program wyświetlający na ekranie sekwencje kolejnych liczb
całkowitych
najpierw od 1 do 10, a
następnie od 10 do 1. Do spowolnienia operacji
wydruku
wykorzystaj dodatkową pętlę od 1 do 10000. Na zakończenie dodaj
jeszcze jedną pętlę,
która spowoduje, że cały proces odliczania powtórzy się
trzy razy.
Zaznacz na listingu,
które pętlę tworzą połączenie sekwencyjne (szeregowe)
a które z nich są
zagnieżdżone (wykonują się równolegle).
-
Napisz program wyznaczający iteracyjnie (numerycznie) sumę szeregu:
1/x + 1/x 2 +
1/x3 + 1/x4 + . . . + 1/xn
-
Napisz pętlę wczytującą kolejne liczby z klawiatury i kończącą się gdy:
- suma tych liczb
przekroczy 100,
- ilość podanych liczb
ujemnych przekroczy 10,
- dwie kolejne podane
liczby będą miały identyczną wartość,
-
Napisz program wyświetlający na ekranie "choinkę" o wysokości zadawanej z
klawiatury
*
***
*****
*******
#
|
LABORATORIUM NR 4. |
-
Napisz program umozliwiający wczytanie a następnie wyświetlenie kilku (np. 10)
liczb rzeczywistych przechowywanych w tablicy.
Podczas wczytywania i
przeglądania proszę wyświetlać teksty pomocnicze
informujące o numerze
wprowadzanego/wyświetlanego elementu.
np. Tab[1] = 12.0
Tab[2] = -1.0
Tab[3] = .......
- Rozbuduj program z zadania (a) o zestaw operacji realizujących
proste obliczenia
statystyczne dla danych zapisanych w tablicy:
- suma
elementów
- wartość średnia, błąd
średniokwadratowy
- wartości ekstremalne
(minimum, maksimum)
- zliczanie elementów
(np. ujemnych, zerowych i dodatnich)
- Napisz program definiujący N-elementową tablicę liczb całkowitych
a następnie
inicjujący jej zawartość losowymi liczbami z przedziału od –30 do
50.
Odpowiedz: czy rozmiar tablicy N może być wczytywany z
klawiatury ?
-
Napisz program, który wczyta dane z klawiatury do 10-cio elementowej
tablicy liczb
double, a następnie sprawdzi:
- czy te liczby są uporządkowane
rosnąco lub malejąco,
- czy elementy tablicy mają symetryczną
zawartość
(tzn.
pierwszy element równy ostatniemu, drugi równy przedostatniemu, itd.
)
- czy w tablicy występuje chociaż jedno powtórzenie
wartości,
- Zaproponuj i oprogramuj algorytm, który przesunie zawartość N-elementowej
tablicy
cyklicznie o jedną pozycję „w górę”.
(tzn. pierwszy
element na miejsce drugiego, drugi na trzeci, ..., ostatni na
pierwszy)
-
Napisz program, który będzie wczytywał i analizował tekst (ciąg liter)
wprowadzany z
klawiatury aż do momentu naciśnięcia klawisza ESC,
Po zakończeniu
wczytywania program powinien wyświetlić na ekranie
histogram
występowania poszczególnych liter alfabetu np.
A 17
#################
B 2
##
C 1 #
D 0
E 5 #####
. . .
Z 3
###
|
Do
gromadzenia informacji o ilości podanych liter wykorzystaj tablicę 26
„liczników”
-
Napisz program
zawierający funkcje: WCZYTAJ_TAB(x),
SUMA_TAB(x,y,z), WYPISZ_TAB(z) umozliwiający:
- wczytanie dwóch tablic
N-elementowych A i B
- wyznaczenie zawartości
trzeciej tablicy C jako sumę lub róznicę
wczytanych tablic A i B
- wydrukowanie wyniku
końcowego: tablic A, B i C
|
LABORATORIUM NR 5. |
- Ćwiczenie wykorzystania wskaźników jako alternatywnej metody dostępu
do zmiennych tworzonych przez kompilator tzn. zmiennych globalnych i
lokalnych.
( Patrz przykład z wykładu nr 5 strona nr 3 )
- Utwórz zmienne różnych typu: char, int, long, ...
- Napisz instrukcje wyświetlające zawartości i adresy w/w zmiennych
(porównaj czym różnią się adresy zmiennych:
globalnych, lokalnych, inicjowanych)
- Napisz instrukcje zapisu wartości do jednej zmiennej (np. typu long)
za pomocą adresu innej zmiennej (tego samego typu lub innego)
- Kontrolnie wyświetlaj zawartości zmiennych po dokonaniu tych
zapisów
- Napisz program, który wyświetli w kodzie szesnastkowym
(heksadecymalnie)
zawartości poszczególnych bajtów kodujących zmienne z zadania (a)
- Ćwiczenie w wykorzystaniu zapisu wskaźnikowego (z operatorem *)
jako metody dostępu do kolejnych elementów tablicy/pamięci.
Popraw wybrane zadania z laboratorium nr 4 w ten sposób,
aby we wszystkich pętlach przetwarzających tablice,
zamiast zapisu indeksowego (wykorzystującego operator indeksu [ ] )
używać zapisu wskaźnikowego (wykorzystującego operator wyłuskania
* )
np.zamiast
float tab[10];
for( int i=0; i<10; i++)
tab[ i ] = tab[ i ] + 1;
napisz
for( float* w=tab; w<tab+10; w++)
*w = *w + 1;
|
LABORATORIUM NR 6. |
- Przebuduj wybrane programy zrealizowane na pierwszych laboratoriach
1-3 na funkcje.
Jeżeli uznasz to za sensowne, to dodatkowo rozdziel w postaci
osobnych funkcji
operacje komunikacji z użytkownikiem (np. wczytywanie danych / wyświetlanie
wyników)
oraz operacje wykonywania obliczeń (np. szukanie największej z
trzech liczb A,B,C;
policzenie średniej z trzech liczb A,B,C; rozwiązanie trójmnianu o
współczynnikach A,B,C)
- Napisz program łączący w jedną całość wszystkie napisane
dotychczas programy.
W najprostszej wersji, ten nadrzędny program, wywoływał by
sekwencyjnie funkcje
napisane w zadaniu (a)
(Uwaga: do połączenia kodu dotychczasowych programów możesz
wykorzystać
polecenia operujące na schowku edytora: Cut / Copy / Paste ).
- Rozbuduj program (b) o „Menu” umożliwiające sterowanie
przebiegiem wywoływania
funkcji składowych i zakończeniem programu. Przykładowe menu może
mieć postać:
1. Suma liczb
2. Iloczyn liczb
3. Klasyfikacja wzrostu
4. Koniec programu
Twoj wybór : ... ?
Studenci bardziej zaawansowani mogą napisać trudniejszą wersję
MENU
w której wybór opcji będzie dokonywany poprzez przesuwanie podświetlenia
za pomocą strzałek i wybór poprzez naciśniecie klawisza ENTER
(tak jak opcje w menu środowiska C++ Builder).
|
LABORATORIUM NR 7. |
- Operacje na łańcuchach znaków.
Napisz własne wersje funkcji:
int moje_strlen( char* );
char* moje_strupr(char* );
char* moje_strcpy( char*, char* )
realizujące te same operacje co standardowe funkcje strlen, strupr,
strcpy
z biblioteki <string.h>.
- Napisz funkcję:
void str_zamien( char* tekst, char* stary_wzorzec, char*
nowy_wzorzec);
realizującą operację zamiany w podanym tekście starego wzorca
na nowy np.
<tekst> == "ala ma kota a ola ma asa"
<stary_wzorzec> == "ma"
<nowy_wzorzec> == "miala"
rezultat zamiany: "ala miala kota a ola miala asa"
(Osoby mniej wprawne w programowaniu mogą napisać uproszczoną
wersję tej funkcji, zamieniającą tylko wzorce o tej samej długości.
Wówczas nie ma potrzeby "rozsuwania" lub
"zsuwania" starego tekstu)
|
LABORATORIUM NR 8. |
- Napisz program umożliwiający wczytanie do pamięci komputera
jednowymiarowej tablicy liczb o rozmiarze zadawanym przez użytkownika.
Obszar tablicy powinien być dynamicznie przydzielany za pomocą
funkcji
calloc( ), malloc( ), free() lub operatorów
new , delete.
- Napisz program wykonujący proste obliczenia na dynamicznej tablicy
liczb
o rozmiarze zmienianym przez użytkownika w czasie działania
programu.
Program powinien posiadać MENU umożliwiające:
- zadawanie (lub zmianę) rozmiaru tablicy przez użytkownika
- wypełnienie tablicy liczbami losowanymi lub wczytywanymi z
klawiatury,
- dopisywanie nowych liczb na końcu tablicy (z rezerwacją
nowego miejsca)
- usunięcie dowolnego elementu z tablicy (ze zwolnieniem
niewykorzystywanej pamięci)
- wyznaczenie wartości średniej ze wszystkich elementów
tablicy
- wyznaczenie wartości maksymalnej
- Napisz funkcję, która odfiltrowuje (usuwa) z zadanej dynamicznej
tablicy liczb rzeczywistych
wszystkie elementy o wartości ujemnej.
Parametrem wejściowym tej funkcji powinien być początkowy adres
tablicy oraz jej rozmiar.
Efektem końcowym powinien być adres tablicy wynikowej (zawierającej
tylko liczby nieujemne)
oraz jej rozmiar (najczęściej różny od rozmiaru tablicy wejściowej).
Uwzględnij przypadek, gdy tablica wejściowa zawiera tylko liczby
ujemne!
- Napisz program pozwalający przechowywać w pamięci komputera dowolnej
wielkości tablicę tekstów.
Oprogramuj operacje: wczytywania, wyświetlania, wyszukiwania i
sortowania
tekstów przechowywanych w tej tablicy.
|
LABORATORIUM NR 9. |
- Zdefiniuj strukturę pozwalającą przechowywać dane pojedynczego
elementu
wybranej bazy danych np. katalogu książek w bibliotece, spisu
samochodów w auto-komisie, itp.
Zdefiniuj tablice w/w struktur pozwalającą przechowywać dane N
elementów
oraz licznik przechowujący ilość wpisanych danych.
- Napisz funkcje pozwalające wczytywać i wyświetlać zawartość
w/w bazy.
Uwaga: tablice / struktury / liczniki elementów - powinny być
przekazywane jako parametry !!!
- Napisz funkcję pozwalającą wyszukać w bazie element o zadanych
parametrach np.
- samochód wybranej marki np. FIAT,
- rocznik nie starszy niż zadany rok np. 1990,
- o
cenie z zadanego przedziału np. 5000< <10000.
|
LABORATORIUM NR 10. |
- Rozbuduj program bazy danych z laboratorium nr.9 o sterowanie
programem
za pomocą podświetlanego MENU. W tym celu napisz
funkcję:
int Menu(int x, int y, char*opcje[], int
liczba_opcji, int podswietlona)
której parametry umożliwiają:
- zadawanie położenia MENU na ekranie, za pomocą współrzędnych
(x,y)
lewego górnego narożnika menu,
- tekstów wyświetlanych opcji, jako tablicy łańcuchów,
- ilości wyświetlanych opcji,
- numeru opcji, która ma być podświetlona na początku
zaraz po wywołaniu MENU.
W/w funkcja powinna kończyć działanie po naciśnięciu jednego z
klawiszy:
- ENTER - oznacza wybór podświetlonej opcji i zwrócenie jego
numeru porządkowego,
- ESC - oznacza rezygnację z wyboru - zwrócenie wartości 0 lub
(-1)
a w rezultacie powrót do menu wyższego poziomu lub zakończenie
programu.
Przesuwanie zaznaczenia wyboru - podświetlenia - powinno być
realizowane
za pomocą klawiszy strzałek w górę i w dół.
Po naciśnięciu klawisza innego niż w/w powinno być generowane
ostrzeżenie
za pomocą sygnału dźwiękowego.
- Rozbuduj program bazy danych z laboratorium nr.9 o własną funkcję
EDIT
umożliwiającą wprowadzanie i edycję danych w bardziej kontrolowany
sposób
niż to robią standardowe funkcje z bibliotek <stdio.h> lub
<iostream.h> np.
bool EditTekst( int x, int y, int dlugosc,
char edytowanay_tekst[ ], char dopuszczalne_znaki[ ])
o parametrach sterujących:
- położeniem na ekranie (x,y),
- maksymalną długością wprowadzanego tekstu,
- początkową zawartością pola edycyjnego
- ograniczeniem rodzaju wprowadzanych znaków.
W/w funkcja powinna obsługiwać klawisze funkcyjne zadające zmianę
pozycji
mrugającego kursora: BackSpace, LeftArrow, RightArrow, Home, End,
Delete
oraz kończyć działanie po naciśnięciu jednego z klawiszy:
- ENTER - zatwierdzenie danych
- ESC - anulowanie zmian - zwrócenie tekstu początkowego
|
LABORATORIUM NR 11. |
Archiwizacja stanu bazy na dysku (odczyt i zapis do pliku tekstowego lub binarnego pliku struktur)
- Napisz dwie funkcje:
bool ZapamietajBaze( struct TDane baza[], int il_elem, char* nazwa_pliku)
bool OdczytajBaze( struct TDane baza[], int& il_elem, char*
nazwa_pliku)
realizujące operacje zapisania stanu bazy w pliku dyskowym
(np. przed zakończeniem programu)
oraz wczytanie stanu bazy z pliku (np. podczas inicjalizacji bazy przy starcie programu).
Uniwersalnym rozwiązaniem byłoby umożliwienie wyboru nazwy
odczytywanego/zapisywanego pliku. W tym celu można wykorzystać
napisaną wcześniej funkcję edycyjna z tekstem początkowym
zawierającym "domyślną" nazwę pliku danych.
- Zmodyfikuj program bazy danych tak aby wszystkie operacje były
wykonywane bezpośrednio na binarnym pliku struktur
(bez wykorzystywania bardzo dużej tablicy struktur w pamięci
operacyjnej)
|
LABORATORIUM NR 12. |
- Napisz program wczytujący z klawiatury teksty o różnej długości
i przechowujący je w pamięci komputera w postaci tablicy tekstów.
W jednej wersji programu wykorzystaj reprezentacje w postaci
statycznej tablicy
30-sto elementowych tablic znaków: char [10][30].
W drugiej wersji wykorzystaj reprezentację w postaci tablicy wskaźników
na dynamicznie tworzone tablice znaków: char* [10]
- Napisz program realizujący podstawowe obliczenia macierzowe
(np. Wczytywanie, Wyświetlanie, Dodawanie, Mnożenie)
na macierzach o zmiennej ilości wierszy i kolumn
zadawanych w trakcie działania programu
( reprezentowanych wskaźnikiem float** )
|
LABORATORIUM NR 13. |
- Napisz funkcje: NA_STOS(wsk_stosu,dane), ZE_STOSU(wsk_stosu,dane)
umożliwiające dodawanie nowych i usuwanie starych elementów (np. liczb)
z własnego "stosu" w pamieciu ( utworzonego poprzez dynamiczna alokacje zmiennych
na stercie i połączenie ich w łańcuch za pomocą wskaźników na następny
element).
- Napisz program umożliwiający zapamiętywanie w postaci "stosu
elementów"
dowolną ilość linii tekstu wpisywanych z klawiatury przez użytkownika
programu.
Poszczególne linie należy zapamiętywać w strukturach przydzielanych dynamicznie
w trakcie działania programu.
Uwaga: należy uwzględnić obsługę sytuacji szczególnych np gdy nie
można przydzielić
pamięci na kolejny element (z powodu braku wolnego miejsca na stercie)
Program powinien zawierać następujace opcje:
- dodanie nowego tekstu,
- usuniecie ostatnio wprowadzonego tekstu,
- wyświetlenie zawartości wszystkich pamiętanych linii,
- wyświetlenie zawartości i-tej linii (uwaga na sytuacje,
gdy podane "i" będzie większe niż rzeczywista liczba
elementów)
- Przygotuj program zapamiętujący dowolną ilość linii tekstu
w postaci listy dwukierunkowej.
W poprzednim ćwiczeniu nowa linia (element listy) była zawsze dodawana na
początek listy. Podobnie usuwany był zawsze pierwszy element listy.
W tym ćwiczeniu należy przygotować bardziej złożone wersje funkcji
umożliwiające dodawanie i usuwanie dowolnych elementów listy:
- Wstawianie nowej linii na i-ta pozycje (po i-1 linii) tekstu.
- Usuniecie i-tej linii (pozycja "i" jest zadawana przez
użytkownika).
- Tworzenie listy uporządkowanej alfabetycznie - nowa linia wstawiana
jest po ostatniej linii, której tekst jest alfabetycznie wcześniejszy.
- Usuwanie linii spełniającej zadany warunek.
Np. linii zawierających zadany fragment tekstu.
Można również przygotować funkcję umożliwiającą przeglądanie
zawartości listy po jednej linii tekstu.
Klawisze strzałek w górę i w dół powinny umozliwiać przechodzenie do
poprzednich lub następnych linii tekstu.
Zakończenie przeglądania powinno nastąpić po naciśnięciu klawisza
ESC.
UWAGA !!!
Jednym z najczęstszych błędów jest niewłaściwe inicjowanie wskaźników
łączących kolejne elementy. W ogólnym przypadku, wstawiając nowy element
do listy dwustronnej trzeba zmienić wartość czterech wskaźników.
Zazwyczaj studenci zapominają o zmianie któregoś ze wskaźników,
a czasem modyfikują je w niewłaściwej kolejności lub nie uwzględniają
przypadków szczególnych, gdy nowy element będzie pierwszym lub ostatnim.
|
Literatura:
-
Jerzy Grębosz "Symfonia C++"
-
Kent Reisdorph "C++ Builder 6 - dla każdego"
-
Robert Lafore "Programowanie w języku C przy użyciu Turbo C++
"
-
Bjarne Stroustrup "Język C++ "
-
Robert Sedgewick "Algorytmy w C ++ "
Szczegółowy program
wykładu 2011/2012
|