Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_16_Перерахування.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
122.88 Кб
Скачать

Int main()

{

card temp, chosen, prize; // определение карт

int position;

card card1 = { 7, clubs }; // инициализация card1

cout << "Карта 1: 7 треф\n";

card card2 = { jack, hearts }; // инициализация card2

cout << "Карта 2: валет червей\n";

card card3 = { ace, spades }; // инициализация card3

cout << "Карта 3: туз пик\n";

prize = card3; // запоминаем карту 3

cout << "Меняем местами карту 1 и карту 3\n";

temp = card3; card3 = card1; card1 = temp;

cout << "Меняем местами карту 2 и карту 3\n";

temp = card3; card3 = card2; card2 = temp;

cout << "Меняем местами карту 1 и карту 2\n";

temp = card2; card2 = card1; card1 = temp;

cout << "На какой позиции (1,2 или 3) теперь туз пик?";

cin >> position;

switch (position)

{

case 1: chosen = card1; break;

case 2: chosen = card2; break;

case 3: chosen = card3; break;

}

if( chosen.number == prize.number && // сравнение карт

chosen.suit == prize.suit)

cout << "Правильно! Вы выиграли!\n";

else

cout << "Неверно. Вы проиграли.\n ";

return 0;

}

Стандартные средства ввода/вывода C++ вместо значений перечисляемых типов данных выводят их внутреннее представление в виде целых чисел. Для того чтобы преодолеть это ограничение, вы можете использовать конструкцию switch, с помощью которой устанавливается соответствие между значением переменной перечисляемого типа и ее внутренним представлением.

Приклад.

Нехай визначено перераховуваний тип даних etype, що відображає посаду співробітника:

enum etype{laborer, secretary, manager, accountant,executive, researcher};

Напишіть npoipaммy, яка спочатку по першій букві посади, введеної користувачем, визначає відповідне значення змінної, поміщає це значення в змінну типу etype, а потім виводить повністю назву посади, першу букву якої ввів користувач.

Взаємодія програми з користувачем може виглядати таким чином:

Введіть першу букву посади (laborer, secretary, manager, accountant, executive, researcher): а

Повна назва посади: accountant

#include <iostream.h>

enum etype { laborer, secretary, manager, accountant, executive, researcher };

Int main()

{

etype e;

char ch;

cout << "Vvedite 1 bukvu:" ;

cin >> ch;

switch (ch)

{

case 'l': e=laborer; break;

case 's': e=secretary; break;

case 'm': e=manager; break;

case 'a': e=accountant; break;

case 'e': e=executive; break;

case 'r': e=researcher; break;

//default: cout << "Takoy bukvu net!"<< endl;

}

switch (e)

{

case laborer: cout << "laborer!"<< endl; break;

case secretary: cout << "secretary!"<< endl; break;

case manager: cout << "manager!"<< endl; break;

case accountant: cout << "accountant!"<< endl; break;

case executive: cout << "executive!"<< endl; break;

case researcher: cout << "researcher!"<< endl; break;

default: cout << "Takoy bukvu net!"<< endl;

}

return 0;

}

Бітові поля.

У структурі можна визначити розміри поля з точністю до біта. Традиційно структури використовуються в системному програмуванні для опису регістрів апаратури. У них кожен біт має своє значення. Не менш важливою є можливість економії пам'яті – адже мінімальний тип поля структури це байт (char), який займає 8 бітів. До цих пір, не дивлячись на мегабайти і навіть гігабайти оперативної пам'яті, використовувані в сучасних комп'ютерах, існує немало завдань, де кожен біт на рахунку.

Якщо після опису поля структури поставити двокрапку і потім ціле число, то це число задає кількість бітів, виділених під дане поле структури. Такі поля називають бітовими полями. Наступна структура зберігає в компактній формі дату і час дня з точністю до секунди.

struct TimeAndDate

{

unsigned hours :5; // години від 0 до 24

unsigned mins :6; // хвилини

unsigned secs :6; // секунди від 0 до 60

unsigned weekDay :3; // день тижня

unsigned monthDay :5; // день місяця від 1 до 31

unsigned month :4; // місяць від 1 до 12

unsigned year :7; // рік від 0 до 100

};

Одна структура   TimeAndDate вимагає всього 36 бітів, тобто 5 байтів (один байт — 8 бітів). Якби ми використовували для кожного поля цієї структури тип char, нам би було потрібно 7 байтів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]