Jakub Piskorowski on 24/01/2022 wersja: 1.0
Przedstawienie czym są struktury danych oraz jak ich używać.
Kod źródłowy:
struktury.cpp
tablice-struktur.cpp
📕 Poziom 3
Lista zadań: 136-zadania
Zagadnienia:
1. Organizacja danych
2. Wykorzystanie strukktury w praktyce
3. Analizia kodu
4. Tablice struktur
Powrót do Struktury danych
Jeśli próbowałeś już pisać jakąś bazę danych, np. przechowującą kontakty telefoniczne do różnych osób to zauważyłeś pewnie, że szukanie nazw tablic i posługiwanie się wieloma tablicami dla jednej osoby nie jest wygodne. Z pomocą przychodzą tu struktury, które pozwalają na zorganizowanie danych w wygodniejszy sposób. Struktury potrafią przechowywać różne typy danych. Deklaracja struktury wygląda następująco:
//struktura dla użytkowników forum
struct Uzytkownicy_DDT //deklaracja struktury
{ //opis struktury
string nick;
string haslo;
short data_zalozenia_konta;
string status;
};
Elementy charakteryzujące ten typ danych to:
- słowo kluczowe
struct
, które informuje kompilator, że będzie definiowana struktura, - opis struktury opisujący zawartość struktury,
- jest to najprostsza postać klasy.
//struktura dla uzytkownikow forum
#include <iostream>
using namespace std;
//struktura dla uzytkownikow forum
struct Uzytkownicy_DDT //deklaracja struktury
{
//opis struktur
string nick;
string haslo;
short lp;
string status;
string rodzaj_konta;
};
int main()
{
//Tworzenie obiektu struktury i wypelnianie
Uzytkownicy_DDT PiotrSzawdynski =
{
"PiotrSzawdynski",
"!@#$%%^",
1,
"Aktywny",
"Admin"
};
/*WAZNE dla niektórych kompilatorów należy
użyć zapisu static Uzytkownicy_DDT PiotrSzawdynski =*/
Uzytkownicy_DDT Pietrzuch =
{
"Pietrzuch",
"@m@m$@#@",
24,
"Aktywny",
"Moderator"
};
/*inny sposób wprowadzania danych do
obiektu*/
//tworzenie obiektu
Uzytkownicy_DDT Piotrus_Pan;
/*wypełnianie obiektu wartościami dla
poszczególnych typów danych*/
Piotrus_Pan.haslo = "PanPiotr";
Piotrus_Pan.lp = 927;
Piotrus_Pan.nick = "Piotrus_Pan";
Piotrus_Pan.rodzaj_konta = "Uzytkownik";
Piotrus_Pan.status = "zablokowany";
//wyświetlenie obiektów
cout << "Oto lista uzytkownikow forum DDT"
<< endl << "Nick " << PiotrSzawdynski.nick
<< endl << "Haslo " << PiotrSzawdynski.haslo
<< endl << "Nr usera " << PiotrSzawdynski.lp
<< endl << "Status " << PiotrSzawdynski.status
<< endl << "Rodzaj Konta "
<< PiotrSzawdynski.rodzaj_konta
<< endl
<< endl << "Nick " << Pietrzuch.nick
<< endl << "Haslo " << Pietrzuch.haslo
<< endl << "Nr usera " << Pietrzuch.lp
<< endl << "Status " << Pietrzuch.status
<< endl << "Rodzaj Konta "
<< Pietrzuch.rodzaj_konta
<< endl
<< endl << "Nick " << Piotrus_Pan.nick
<< endl << "Haslo " << Piotrus_Pan.haslo
<< endl << "Nr usera " << Piotrus_Pan.lp
<< endl << "Status " << Piotrus_Pan.status
<< endl << "Rodzaj Konta "
<< Piotrus_Pan.rodzaj_konta;
cin.get();
return( 0 );
}
Kod źródłowy: struktury.cpp
Wynik działania programu:
Oto lista uzytkownikow forum DDT
Nick PiotrSzawdynski
Haslo !@#$%%^
Nr usera 1
Status Aktywny
Rodzaj Konta Admin
Nick Pietrzuch
Haslo @m@m$@#@
Nr usera 24
Status Aktywny
Rodzaj Konta Moderator
Nick Piotrus_Pan
Haslo PanPiotr
Nr usera 927
Status zablokowany
Rodzaj Konta Uzytkownik
Jak pewnie się zorientowałeś strukturę można wypełnić podobnie jak tablicę, gdy oczywiście przed uruchomieniem programu znamy wartości jakie ma zawierać. Co warte podkreślenia struktura Uzytkownicy_DDT posiada trzy obiekty PiotrSzawdynski
, Pietrzuch
, Piotrus_Pan
. By wprowadzić bądź wyświetlić wartości danego obiektu, musimy użyć kropki( . )!!! nazwa_obiektu.nazwa_zmiennej = wartosc_wprowadzana
Większość kompilatorów po wprowadzeniu kropki z klawiatury wyświetla podpowiedz dla danego obiektu (typy danych dla tego obiektu(struktury)).
WAŻNE !!! dla niektórych kompilatorów należy użyć słowa kluczowego static Uzytkownicy_DDT PiotrSzawdynski
.
static Uzytkownicy_DDT PiotrSzawdynski =
{
"PiotrSzawdynski",
"!@#$%%^",
1,
"Aktywny",
"Admin"
};
#include <iostream>
using namespace std;
//struktura dla użytkowników forum
struct DDT //deklaracja struktury
{
//opis struktury
string nick;
string haslo;
string status;
string rodzaj_konta;
};
int main()
{
//Tworzenie obiektu struktury
DDT Uzytkownicy[ 3 ];
cout << "Wprowadz dane.\n";
//wprowadzenie 3 uzytkowników
for( short licz = 0; licz < 3; licz++ ) {
cout << "Podaj nick: ";
cin >> Uzytkownicy[ licz ].nick;
cout << "Podaj haslo: ";
cin >> Uzytkownicy[ licz ].haslo;
}
//wyswietlanie wprowadzonych danych
cout << endl
<< "Oto rezultat wprowadzonych danych:"
<< endl;
for( short licz = 0; licz < 3; licz++ ) {
cout << "Uzytkownik " << licz + 1
<< "\tNick: " << Uzytkownicy[ licz ].nick
<< "\tHaslo: " << Uzytkownicy[ licz ].haslo
<< endl;
}
cin.get();
return(0);
}
Kod źródłowy: tablice-struktur.cpp
Wynik działania programu:
Wprowadz dane.
Podaj nick: Nick1
Podaj haslo: Haslo1
Podaj nick: Nick2
Podaj haslo: Haslo2
Podaj nick: Nick3
Podaj haslo: Haslo3
Oto rezultat wprowadzonych danych:
Uzytkownik 1 Nick: Nick1 Haslo: Haslo1
Uzytkownik 2 Nick: Nick2 Haslo: Haslo2
Uzytkownik 3 Nick: Nick3 Haslo: Haslo3
Właściwie nie ma różnić między użyciem tablicy zmiennych a tablicy struktur. Oczywiście możemy też wypełnić tablice w ten sposób:
DDT Uzytkownicy[ 3 ] =
{
//Użytkownik[0]
{ "PiotrSzawdynski", "!@#$%%^" },
//Użytkownik[1]
{ "Pietrzuch", "@m@m$@#@" },
//Użytkownik[2]
{ "Piotrus_Pan", "PanPiotr" }
};
Źródło: cpp0x.pl