lab11 2 id 259088 Nieznany

background image

Programowanie obiektowe 2010/2011

1

Laboratorium 11 STL

Zad. 1.
Napisz program, który spyta użytkownika o rozmiar tablicy, utworzy ją i wypełni kolejnymi liczbami
naturalnymi. Uwzględnij sytuację, gdy tabliac nie może być utworzona za pomocą wyjątku.
Wykorzystaj klasę vector (

http://www.cplusplus.com/reference/stl/vector/

).

Zad. 2.
Usuń z tablicy utworzonej w poprzednim zadaniu liczby podzielne przez 3. Zmodyfikuj odpowiednio rozmiar
tablicy.

Zad. 3.
Utwórz tablicę 20 elementową. Wypełnij tablicę liczbami losowymi. Wyprowadź te, które są podzielne przez 3.
Wykorzystaj kontener vector. Do wskazania elementu tablicy wykorzystaj iterator.

Zad. 4.
Utwórz tablicę 20 elementową. Wypełnij tablicę liczbami losowymi, tak aby były poukładane rosnąco.
Wykorzystaj kontener vector, iterator oraz funkcję insert(iterator, element), która wstawia
element na pozycji wyznaczonej iteratorem. Wyświetl wartości w tablicy.

Zad. 5.
Utwórz tablicę wyrazów. Posortuj je alfabetycznie i wyświetl na ekranie.

Zad. 6.

Utwórz tablicę wyrazów. Posortuj je według rozmiaru i wyświetl na ekranie.

Zad. 7.
Napisz program, który wczytuje tekst z pliku i zapamiętuje wyrazy w tablicy. Następnie prosi użytkownika o
podanie wyrazu i sprawdza, czy wyraz znajduje się w tekście.

Zad. 8.

Klasa queue (kolejka) (

http://www.cplusplus.com/reference/stl/queue/

) zawiera następujące funkcje:

bool empty() const - zwraca true, jeśli kolejka jest pusta
size_type size() – zwraca ilość elementów w kolejce
typ& front() - zwraca referencję do elementu znajdującego się na początku kolejki
typ& back() - zwraca referencję do elementu znajdującego się na końcu kolejki
void push(const typ& element) - wstawia element na koniec kolejki
void pop() - usuwa element z początku kolejki

Opracować funkcję LiczUjemne, której zadaniem jest zliczenie liczb ujemnych w kolejce. Sama kolejka ma
pozostać niezmieniona:

Zad. 9.
Opracuj klasę zbior_znakow, która pozwala wykonywać podstawowe operacje na znakach: dodawanie
nowego elementu do zbioru, wypisywanie liczby elementów w zbiorze, sprawdzanie, czy dany znak należy do
zbioru.
Wykorzystaj kontener STL set.

Opracuj klasę vect, która pozwala manipulować tablicami dynamicznymi liczb całkowitych. – rozmiar tablicy
jest definiowany w momencie tworzenia tablicy. Klasa powinna zawierać operatory:

[ ] – indeksowanie elementów

== - porównywanie elementów

<< - wyprowadzania, zapis cout << v wyświetla wektor v w postaci:

<liczba1, liczba2, …, liczban>

Klas vect jest klasą pochodna klasy vector.

class vect : public vector<int> {

vect(int);
friend ostream & operator << (ostream &, vect &);

};

background image

Programowanie obiektowe 2010/2011

2

Zad. 10.
Opracuj klasę bit_array, która pozwala wykonywać działania na tablicach bitów. Rozmiar tablicy bitów jest
podawany w momencie tworzenia tablicy. Uwzględnić następujące operatory:

+=, zapis t += n oznacza ustawienie bitu n na wartość 1

-=, zapis t -= n oznacza ustawienie bitu n na wartośc 0

[], operator indeksowania, wykorzystywany tylko do pobierania wartości określonego bitu

++, zapis t++ oznacza przypisanie wartości 1 wszystkim bitom

--, zapis t-- oznacza przypisanie wartości 0 wszystkim bitom

<<, zapis cout << v wyświetla zawartość v w postaci:

<* bit1, bit2, …, bitn *>

Klasa bit_array jest klasą pochodną klasy vector<bool> :

class bit_arrray : public vector<bool> {

public:
bit_array(int=16);
int operator[] (int) const;
void operator += (int);
void operator -+ (int);
void operator ++ ();
void operator – ();
void operator ++ ();
friend ostream & operator << (ostream &, bit_array &);
};


Zadania domowe

Zad. 11.
Napisz funkcję lotto(), która pobiera liczbę pól na kuponie i liczbę wybieranych numerów. Zwraca wektor
losowo wybieranych numerów. Do potasowania liczb użyj funkcji random_shuffle() z grupy algorytmów
STL ( #include <algoritm> )

Zad. 12.
Sprawdź, że warunkiem wykorzystania algorytmu find jest istnienie w klasie, której obiekty porównujemy
operatora porównania ==.

Zad. 13.
Sprawdź, że warunkiem wykorzystania algorytmu sort jest istnienie w klasie, której obiekty porównujemy
operatora porównania <.

Zad. 14
Dany jest plik z ocenami studentów. Każdy student opisany jest za pomocą nazwiska i ocen z 5 przedmiotów.
Napisz program, który obliczy dla każdego studenta średnią ocenę i wyświetli wykaz tych ocen posortowanych
według nazwisk studetów. Do sortowania wykorzystaj funkcję sort z algorytmów STL.
Wczytywanie z pliku:

program < plik.dat


Przykład pliku:
nowak 3 3 4.5 3.5 4 4 5
kowalski 4 4
adamski 5 4.5 5 5 5 4.5 0

Funkcja główna programu:

#include <algorithm>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

background image

Programowanie obiektowe 2010/2011

3

struct Student_info {
string nazwisko;
vector<double> oceny;
};

istream& czytaj(istream&, Student_info&);
double ocena(const Student_info& s);
bool porownaj(const Student_info&, const Student_info&);
int dodaj (const vector<double> &a);

int main() {
vector<Student_info> studenci;
Student_info daneStd;
string::size_type maxdl = 0; // dlugosc najdluzszego nazwiska
while (czytaj(cin, daneStd)) {
maxdl = max(maxdl, daneStd.nazwisko.size());
studenci.push_back(daneStd); // wstaw do wektora
}
sort(studenci.begin(), studenci.end(), porownaj);
for (vector<Student_info>::size_type i = 0; i != studenci.size(); ++i) {
cout << studenci[i].nazwisko
<< string(maxdl + 1 - studenci[i].nazwisko.size(), ' ');
double ocena_srednia = ocena(studenci[i]);
int prec = cout.precision();
cout << setprecision(3) << ocena_srednia << setprecision(prec);
cout << endl;
}
return 0;
}



Wyszukiwarka

Podobne podstrony:
lab11 4 id 259093 Nieznany
lab11(1) 2 id 259112 Nieznany
Lab11 RapidPrototyping id 25910 Nieznany
lab11 RapidPrototyping EN id 25 Nieznany
Lab11 Sprawozdanie id 259109 Nieznany
Lab11 RapidPrototyping id 25910 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany

więcej podobnych podstron