• Nie Znaleziono Wyników

Pracownia programowania (C/C++). Zaoczne inżynierskie (INK). Ćwiczenie 3.

N/A
N/A
Protected

Academic year: 2021

Share "Pracownia programowania (C/C++). Zaoczne inżynierskie (INK). Ćwiczenie 3."

Copied!
1
0
0

Pełen tekst

(1)

Pracownia programowania (C/C++). Zaoczne inżynierskie (INK). Ćwiczenie 3.

Zagadnienia: Wskaźniki i tablice. Dostęp do tablic wielowymiarowych. Zmienne i tablice dynamiczne. Wskaźniki tablic.

1. Opracować funkcje, które inicjują losowymi liczbami całkowitymi należącymi do przedziału [-100, 100]:

a) tablicę jednowymiarową int tab1[N0], gdzie N0 – stała w programie; prototyp funkcji:

void init(int *tab, int w0);

b) tablicę dwuwymiarową int tab2[N0][N1], gdzie N0, N1 – stałe w programie; prototyp funkcji: void init(int *tab, int w0, int w1);

c) tablicę trzywymiarową int tab3[N0][N1][N2], gdzie N0, N1, N2 – stałe w programie;

prototyp funkcji: void init(int *tab, int w0, int w1, int w2).

2. Wykorzystując operator new 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 się zainicjować zmienne danymi wprowadzanymi z klawiatury (np. char *z1 = new char; if (z1!=NULL) scanf(”%c”, z1)). Wyprowadzić wartości zmiennych na ekran. Przed zakończeniem programu zwolnić przydzieloną pamięć.

3. Opracować funkcję, która wyznacza adres wskazywany przez wskaźnik void far *p (wykorzystać FP_OFF i FP_SEG). Adres fizyczny jest obliczany ze wzoru: adres = 16seg + off. Prototyp funkcji: unsigned long adres(void far *p);

4. Opracować funkcję zwracającą wskaźnik na ustalony adres (wykorzystać MK_FP).

Utworzyć wskaźnik na początek pamięci ekranu w trybie znakowym (adres 0xB8000 - wskaźnik 0xB800:0x0000). Wstawić daną do pamięci ekranu.

Prototyp funkcji: void far * wsk(unsigned segment, unsigned offset);

5. Opracować funkcje:

a) wstawiającą daną typu unsigned char do pamięci wskazywanej przez void far *p;

b) odczytującą daną typu unsigned char z pamięci wskazywanej przez void far *p.

6. Zdefiniować w programie tablicę double w[5] = {1.0, 2.0, 3.0, 4.0, 5.0} oraz wskaźnik cwsk na tablicę 5 elementów typu double (uwaga: operacja cwsk++ prowadzi do przesunięcia wskaźnika o 5 elementów typu double). Ustawić wskaźnik cwsk na adres pierwszego

elementu tablicy w[5]. Wykorzystując wskaźnik cwsk wyprowadzić zawartość tablicy na ekran.

(2)

7. Opracować program, który utworzy dynamicznie tablicę liczb całkowitych o rozmiarze n wczytywanym z klawiatury.

a) Utworzyć tablicę t1 za pomocą operatora new.

b) Utworzyć tablicę t2 za pomocą funkcji malloc.

Jeżeli operacja przydziału pamięci dla t1 i t2 zakończyła się pomyślnie (wskaźniki t1 i t2 są różne od NULL), to zainicjować tablicę t1 losowymi liczbami należącymi do przedziału [0, 100). Znaleźć minimalny i maksymalny element w tablicy. Wyprowadzić zawartość tablicy t1, a także znalezione minimum i maksimum, na ekran. Przekopiować tablicę t1 do t2 wykorzystując standardową funkcję memmove lub memcpy. Wyprowadzić zawartość

tablicy t2 na ekran. Przed zakończeniem programu zwolnić pamięć przydzieloną t1 i t2.

8. Opracować funkcje:

a) kopiującą n bajtów pamięci ekranu, zaczynając od adresu określonego przez wskaźnik 0xB800:ofs, do bufora o początku określonym przez wskaźnik void far *buf_dest i rozmiarze co najmniej równym n; prototyp funkcji:

void kopiuj_z_ekranu(unsigned n, unsigned ofs, void far *buf_dest);

b) wstawiającą n bajtów z bufora, o początku określonym przez wskaźnik void far *buf_src, do pamięci ekranu o początku określonym przez wskaźnik 0xB800:ofs; prototyp funkcji:

void wstaw_z_bufora(unsigned n, void far *buf_src, unsigned ofs).

Cytaty

Powiązane dokumenty

o na podstawie rankingu wynikowego sztafet w sezonie halowym 2020 (rezultaty uzyskane w Polsce w halach ze świadectwem PZLA lub na mityngach z kalendarzy EA lub/i WA), letnim 2019

ściu z muzeum ma się wrażenie, że miasto jest odbiciem przed chwilą widzianych. malowideł, jakby to ono z nich brało

[-10.2, 15.3). Wykorzystując standardową funkcję qsort opracować funkcję, która sortuje elementy tablicy rosnąco. Wyprowadzić zawartość tablicy na ekran. Zainicjować tablicę

Wyprowadzić współrzędne znalezionych punktów na ekran w trybie graficznym... Zdefiniować N - elementową tablicę wskaźników na struktury typu struct tosoba { char naz[20];

b) usunięcie elementu z początku kolejki (wierzchołka stosu); zwolnić pamięć, zmodyfikować wskaźnik początku kolejki (stosu); prototyp funkcji void Usun(pnode &pocz,

c) usunięcie elementu o podanej wartości klucza (zadanie dla chętnych); funkcja powinna odnaleźć element, zmodyfikować strukturę drzewa, a następnie zwolnić

e) wstawiającą, pomiędzy istniejące dane, nową daną na zadanej pozycji w pliku o podanej nazwie; prototyp: void Fwstaw (FILE *f, char *nazwa, long poz, const tosoba *r);. f)

W programie głównym umieścić plik nagłówkowy oraz wywołania trzech funkcji oblicza- jących sumę liczb. Utworzyć projekt umożliwiający kompilację programu wielomoduło- wego.