Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




05_opakovani_iteratory_ADT

PDF
Stáhnout kompletní materiál zdarma (473.49 kB)

Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.

Abstraktní datové typy

Přednáška 5

Karty

• Úloha:

• Programujeme karetní hru (Prší, Solitaire, Poker…)
• Jako první krok potřebujeme kód pro „obsluhu karet“

1.

Připravit si strukturu pro karty

2.

Karty do struktury uložit

3.

Připravit si funkce pro:
a) vybrání následující karty
b) přidání karty (např. z jiného balíčku)
c) zamíchání 

Karty – Pole

1. Připravit si strukturu pro karty

struct TPackArray {

size_t iCount;
short iValues[CARD_MAX_COUNT];

}

2. Karty do struktury uložit
3. Připravit si funkce pro:

a) vybrání následující karty
b) zamíchání
c) přidání karty (např. z jiného balíčku)

Karty – Pole

struct TPackArray {

size_t iCount;
short iValues[CARD_MAX_COUNT];

}

a) vybrání následující karty

returnVal = struktura->iValues[0];
for (int i=0; i< struktura->iCount-1; i++)

struktura->iValues[i] = struktura->iValues[i+1];

b) přidání karty (např. z jiného balíčku):

a) na konec

struktura->iValues[struktura->iCount] = aVal;
struktura->iCount++;

b) na začátek

for (int i=struktura->iCount; i>0; i--)

struktura->iValues[i]= struktura->iValues[i-1];

struktura->iValues[0] = aVal;
struktura->iCount++;

c) zamíchání

Karty – Pole

struct TPackArray {

size_t iCount;
short iValues[CARD_MAX_COUNT];

}

c) Zamíchání

1.

Vytvořit si pomocné pole

2.

Překopírovat část karet z prostředku

3.

Na uvolněné místo nakopírovat karty z konce balíčku

4.

Za tyto karty nakopírovat karty z  pomocného pole

5.

Opakujeme N-krát

Karty - Lineární seznam

struct TPackList {

struct TPackListNode *iTop;
struct TPackListNode *iLast;

}

struct TPackListNode {

struct TPackListNode *iNext;
short

iValue;

}

a) vybrání následující karty

returnCard = struktura->iTop;
returnVal

= struktura->iTop->iValue;

struktura->iTop = returnCard->iNext;

Karty - Lineární seznam

struct TPackList {

struct TPackListNode *iTop;

struct TPackListNode *iLast;

}
struct TPackListNode {

struct TPackListNode *iNext;

short

iValue;

}

b) přidání karty (např. z jiného balíčku):

a) na konec

novaKarta = (struct

TPackListNode*)malloc( … 

);

novaKarta->iValue = aVal;

novaKarta->iNext = NULL;

struktura->iLast->iNext = novaKarta;

struktura->iLast = novaKarta;

Témata, do kterých materiál patří