• Nie Znaleziono Wyników

Informatyka II. INF & EIT.

N/A
N/A
Protected

Academic year: 2021

Share "Informatyka II. INF & EIT."

Copied!
1
0
0

Pełen tekst

(1)

Informatyka II. INF & EIT. Ćwiczenie 7.

Struktury

Zagadnienia: Deklarowanie i definiowanie struktur. Inicjowanie struktur wartościami początko- wymi. Tablice struktur. Wykonywanie operacji z wykorzystaniem struktur i tablic struktur.

1. Zadeklarować strukturę typedef struct tosoba { char naz[20]; unsigned rok, mies, dzien;

long id; }. Zdefiniować zmienną s typu tosoba, zainicjowaną w programie wartościami początkowymi, oraz wskaźnik x na strukturę typu tosoba. W programie głównym utworzyć dynamicznie zmienną typu tosoba i zapamiętać jej adres w zmiennej x. Zainicjować zmienną wskazywaną przez x zawartością zmiennej s. Opracować funkcje wyprowadzające na ekran zawartość zmiennej strukturalnej typu tosoba. Dane są następujące prototypy:

a) void pisz1(tosoba s); b) void pisz2(tosoba *x).

Wyprowadzić na ekran zawartość zmiennej statycznej s za pomocą funkcji pisz1 i pisz2 oraz zawartość zmiennej dynamicznej wskazywanej przez x również za pomocą każdej z opraco- wanych funkcji. Przed zakończeniem programu zwolnić blok pamięci wskazywany przez x.

2. Opracować funkcje umożliwiające wczytanie danych z klawiatury lub wstawienie wartości losowych do zmiennej strukturalnej typu tosoba (deklaracja typu tosoba zobacz zadanie 1).

Dane są następujące prototypy:

a) tosoba w1(void) – wczytywanie z klawiatury, struktura zwracana przez nazwę;

b) void w2(tosoba *s) – wczytywanie z klawiatury, struktura zwracana przez wskaźnik;

c) void w3(tosoba& s) – wczytywanie z klawiatury, struktura zwracana przez referencję;

d) void losuj(tosoba *s) – wstawianie losowych danych do struktury wskazywanej przez s;

do pola naz[20] wstawiany jest łańcuch ’naz’ zakończony losową liczbą należącą do przedziału [1, 100), np. ’naz21’, ’naz3’, itd.; do pozostałych pól wstawiane są losowe liczby należące, odpowiednio, do przedziałów [1900, 1981), [1, 13), [1, 32), [1, 100).

W programie głównym zainicjować zmienną typu tosoba za pomocą każdej z funkcji.

3. Zdefiniować zainicjowaną wartościami początkowymi (na stałe w programie) tablicę struktur typu tosoba o rozmiarze N, gdzie N – stała. Opracować funkcje:

a) wyprowadzającą zawartość tablicy na ekran począwszy od pozycji k, gdzie 0 <= k < N;

b) wyprowadzającą na ekran wszystkie elementy tablicy o podanej wartości pola naz;

c) wyprowadzającą na ekran wszystkie elementy tablicy, dla których data (rok, mies, dzien) jest w przedziale [a, b], gdzie a jest datą początkową, natomiast b – datą końcową;

d) opracować funkcję, która sortuje elementy tablicy uwzględniając kolejno nazwiska, następnie daty (jeżeli nazwiska są identyczne), a na końcu identyfikatory (jeżeli poprzed- nie pola były identyczne).

4. Zdefiniować tablicę struktur typu tosoba, o rozmiarze N, oraz tablicę indeksów unsigned ind[N], gdzie N – stała. W programie głównym:

a) zainicjować tablicę struktur losowymi danymi wykorzystując funkcję losuj przedstawio- ną w zadaniu 2;

b) zainicjować tablicę indeksów kolejnymi liczbami od 0 do N-1, zgodnie z regułą ind[i] = i, dla i=0, ... , N-1.

Nie zmieniając zawartości tablicy struktur i nie kopiując jej do innej tablicy zmodyfikować tablicę indeksów w taki sposób, aby kolejne pozycje w tablicy ind określały położenie struk- tur posortowanych według nazwisk (np. wykorzystać funkcję qsort).

Cytaty

Powiązane dokumenty

Zdefiniować wskaźnik funkcji double f(double). Zainicjować wskaźnik adresem standar- dowej funkcji sin. Za pomocą wskaźnika wyznaczyć wartości funkcji sin w N losowych punktach

Opracować program umożliwiający przekazanie do programu trzech liczb typu int za pomocą argumentów funkcji main(int argc, char *argv[]), gdzie argc – liczba

Nie zmieniając zawartości tablicy struktur i nie kopiując jej do innej tablicy zmodyfi- kować tablicę indeksów w taki sposób, aby kolejne pozycje w tablicy ind określały

Opracować program, który zapisze do pliku binarnego dane w formacie: rozmiar danej typu tdana (zmienna typu unsigned), liczba danych w pliku (zmienna typu long), ciąg danych

Opracować funkcję, która wyznacza wszystkie liczby pierwsze z przedziału [2,N] w oparciu o metodę „sita” (opis: wpisać wszystkie liczby z przedziału [2,N] do tablicy t[N+1],

Napisać program, który losuje k cyfr liczby binarnej do tablicy unsigned char dane[N], gdzie 1&lt;= k &lt;= N, a następnie oblicza wartość dziesiętną liczby.. Zadanie zrealizować z

przydzielić dynamicznie pamięć zmiennym typu char, int, long, float, double oraz zapamię- tać ich adresy w odpowiednich wskaźnikach. W przypadku, gdy alokacja pamięci powiedzie

a) tworzącą dynamiczną tablicę 2-wymiarową typu int A[nw][nk] o liczbie wierszy i liczbie kolumn wczytywanych do zmiennych int nw, nk; funkcja typu int** zwraca adres po-