• Nie Znaleziono Wyników

Struktury danych

N/A
N/A
Protected

Academic year: 2021

Share "Struktury danych"

Copied!
4
0
0

Pełen tekst

(1)

Opracowanie: mgr inż. Piotr Szmidt

Programowanie w C++

Lab 8 Struktury danych

1. Struktury danych

Dotychczas używaliśmy wbudowanych typów danych, takich jak np. int czy float, które mogły tworzyć zmienne przechowującą odpowiednio jedną wartość całkowitoliczbową (int) lub

zmiennoprzecinkową (dla float). Tablice z kolei pozwalają na przechowywanie wielu zmiennych, ale tego samego typu. Niekiedy jest to niewystarczające, gdy zachodzi potrzeba np. opisu wielu obiektów o różnych cechach. Struktury w języku C/C++ pozwalają na łatwiejsze tworzenie i zarządzanie

powiązanymi ze sobą danymi. Składnia deklaracji struktury jest następująca:

struct nazwa_struktury {

typ element1;

typ element2;

typ elementN;

};

Przykład 1. Stwórzmy za pomocą struktury nowy typ samochod (rys 1.), który może przechowywać takie dane jak: marka (typu string), model (typu string), kolor (typu string), rok_produkcji (typu int).

Cały program:

#include <iostream>

using namespace std;

//deklaracja struktury struct samochod

{ // elementy struktury wraz z typami string marka;

string model;

string kolor;

int rok_produkcji;

};

int main() {

// utworzenie trzech obiektów typu samochod i definicja ich elementów samochod auto1 = {"VW", "Passat", "Granatowy", 2006};

samochod auto2 = {"BMW", "M550d", "Czarny", 2013};

Struktura samochod string marka;

string model;

string kolor;

int rok_produkcji; Rys. 1. Schemat blokowy struktury samochod

(2)

Opracowanie: mgr inż. Piotr Szmidt

samochod auto3 = {"Ferrari", "F50", "Czerwony", 1996};

// wyswietlenie tabelki

cout << "Marka \tModel \tRok \tKolor" << endl;

cout << "---" << endl;

cout << auto1.marka << "\t" << auto1.model << "\t" << auto1.rok_produkcji << "\t" << auto1.kolor << endl;

cout << auto2.marka << "\t" << auto2.model << "\t" << auto2.rok_produkcji << "\t" << auto2.kolor << endl;

cout << auto3.marka << "\t" << auto3.model << "\t" << auto3.rok_produkcji << "\t" << auto3.kolor << endl;

return 0;

}

1.1. Zapis do elementów struktury

Przypisanie wartości elementów danej struktury można zrealizować podczas tworzenia nowego obiektu tej struktury, tak jak w powyższym przykładzie, czyli np.:

samochod auto2 = {"BMW", "M550d", "Czarny", 2013};

Można też odwoływać się pojedynczo do kolejnych elementów obiektu.

samochod auto2;

auto2.marka = "BMW";

auto2.model = "M550d";

auto2.kolor = "Czarny";

auto2.rok_produkcji = 2013;

Nic nie też stoi na przeszkodzie, żeby dane do wczytywać z klawiatury, np.

cout << "Podaj marke auta: ";

cin >> auto2.marka;

1.2. Odczyt elementów struktury

Podobnie jak przy zapisie, odczyt konkretnego elementu struktury można uzyskać za pomocą operatora kropki.

cout << "Marka samochodu" << auto2.marka;

2. Tablice struktur

Używanie struktur do organizacji danych jest znacznie wygodniejsze niż tworzenie pojedynczych zmiennych. Ale jeszcze bardziej wygodne, zwłaszcza przy rozbudowanych programach, jest wykorzystywanie tablic struktur, jak przedstawia przykład 2. Zamiast tworzyć trzy osobne obiekty typu samochód, tworzymy tablicę obiektów typu samochód. Dzięki temu w łatwy sposób wyświetlać poszczególne elementy tablicy (samochody) czy je dodawać lub usuwać.

Przykład 2. Przykład wykorzystania tablicy obiektów typu samochod.

Cały program:

#include <iostream>

using namespace std;

// delkraracja struktury samochód struct samochod

(3)

Opracowanie: mgr inż. Piotr Szmidt

{ // składowe struktury string marka;

string model;

string kolor;

int rok_produkcji;

};

int main() { int liczba_aut = 3;

samochod auta[] = {{"VW", "Passat", "Granatowy", 2006}, {"BMW", "M550d", "Czarny", 2013}, {"Ferrari", "F50", "Czerwony", 1996}};

cout << "Marka \tModel \tRok \tKolor" << endl;

cout << "---" << endl;

for (int i = 0; i < liczba_aut; i++) {

cout << auta[i].marka << "\t" << auta[i].model << "\t" << auta[i].rok_produkcji << "\t" << auta[i].kolor << endl;

} return 0;

}

Zad 1.

Należy dodać do programu z przykładu 1 po jednym samochodzie marki Fiat i Peugeot oraz wyświetlić tabelę.

Zad 2.

Przerobić program z przykładu 2 (tablica struktur) aby również wyświetlał dodane samochody.

Zmodyfikować strukturę samochód, aby mogła ona przechowywać także informację o pojemności silnika. Po uruchomieniu programu powinna się pokazać następująca tabelka.

Zad 3.

Zmodyfikuj poprzedni program:

a) W tabelce wyświetlaj dodatkowo numer samochodu.

b) Dopisz kod umożliwiający zmianę koloru wybranego samochodu.

c) Wyświetlanie nagłówka i zawartości tabeli przenieś do funkcji o nagłówku:

void wyswietl(samochod sam[], int n). Funkcję wywołaj dwa razy – przed i po zmianie koloru.

(4)

Opracowanie: mgr inż. Piotr Szmidt

Zad 4.

Napisz program, który pozwala na dodawanie lub usuwanie wybranego samochodu (przygotuj miejsce na maksymalnie 15 samochodów). Przykład z działania programu przedstawia poniższy rysunek:

Zad 5.

Zmodyfikuj program z zadania 4 aby odczytywał i zapisywał bazę samochodów z pliku.

Cytaty

Powiązane dokumenty

Wiązanie typu pi powstaje w wyniku nakładania się bocznego orbitali typu p, które leży poza płaszczyzną. Występuje ono wtedy, gdy cząsteczka zawiera wiązanie wielokrotne,

 wykonanie optymalizacji struktury hybrydowego układu zasilania typu słoneczno- wiatrowego pod kątem: maksymalizacji wydajności energetycznej, minimalizacji

• Funkcja operatora, której pierwszym argumentem jest typ podstawowy lub obiekt innej klasy nie może być metodą, musi być zdefiniowana jako funkcja zewnętrzna. • Przykład:

Moż- na przypuszczać, że jeżeli frekwencja wy- stępowania neuropatogennych szczepów wirusa oraz ich reaktywacja ze stanu la- tencji będą w dalszym ciągu wzrastać, to

Należy zdefiniować typ Max definiując typ struktury zawierającej wszystkie dane niezbędne do realizacji definiowanego ATD za pomocą listy wiązanej

static void sort(Object[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of objects into ascending order, according to the natural ordering

Należy uzupełnić program o sortowanie uruchamiane za pomocą dodanego przycisku „Sortuj” (typu JButton) i wyszukiwanie połówkowe uruchamiane za pomocą dodanego

[r]