ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Моделирование высокоэффективной тасовки и раздачи карт#include<stdio.h> #include<stdlib.h> #include<time.h> struct card{ char *face; char *suit; }; Typedef struct card Card; void fillDeck(Card *,char *[],char *[]); void shuffle(Card *); void deal(Card *); Void main() { Card deck[52]; char *face[]={"Tuz", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Valet", "Dama","Korol"}; char *suit[]={"Chervi", "Bubni", "Trefi", "Piki"}; Srand(time(NULL)); FillDeck(deck,face,suit); Shuffle(deck); Deal(deck); } void fillDeck(Card *wDeck,char *wFace[],char *wSuit[]) { Int i; for(i=0;i<52;i++) { wDeck[i].face = wFace[i%13]; wDeck[i].suit = wSuit[i/13]; } } void shuffle(Card *wDeck) { Int i,j; Card temp; for(i=0;i<52;i++) { j=rand()%52; temp=wDeck[i]; wDeck[j]=temp; } } void deal(Card *wDeck) { Int i; for(i=0;i<52;i++) { printf("%5s of %-8s%c",wDeck[i].face,wDeck[i].suit, (i+1)%2? '\t': '\n'); } } Объединения Объединение – произвольный тип данных, подобный структуре, элементы которого разделяют одну и ту же область памяти. На различных этапах выполнение программы одни переменные могут оказаться невостребованными, в то время как другие, наоборот, используются только в этой части программы, поэтому объединения экономят пространство вместо того, чтобы впустую тратить память на не использующиеся в данный момент переменные. Элементы объединения могут принадлежать любому типу. Число байтов, используемая для хранения объединения, должно быть, по крайней мере, достаточным для хранения наибольшего из элементов. Ссылаться в данный момент времени можно только на один элемент и, соответственно, только один тип данных. Объединение объявляется с помощью ключевого слова union. Формат объединения тот же, что и в случае структуры. #include<stdio.h> union number{ int x; float y; };
void main() { union number value; value.x=100; printf("Put a value in the integer member\nand printf both members.\nint: %d\nfloat: %f",value.x,value.y); value.y=100.0; printf("\n\nPut a value in the floating member\nand printf both members.\nint: %d\nfloat: %f",value.x,value.y); } Допускается определение неименованного битого поля; такое поле используется как заполнитель структуры и служит для выравнивания следующего битого поля по границе новой ячейки памяти. Например: struct example { unsigned a: 13; unsigned: 0; unsigned b: 4; }; объявление битовое поле без имени длиной 0 бит для того, чтобы перескочить через оставшиеся биты (столько, сколько их будет) ячейки памяти, в которой хранится а, и выровнять b по границе следующей ячейки.
Пример моделирование высокоэффективной тасовки и раздачи карт с разъясняющий тип объединения: #include<stdio.h> struct bitCard{ unsigned face: 4; unsigned suit: 2; unsigned color: 1; }; Не нашли, что искали? Воспользуйтесь поиском:
|