May 2, 2020

Динамикалық жиымдар

Биттік өрістерді карта элементтерін сақтау үшін қолдану мысалы.

#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>
#include <math.h>
struct BitCard {
  unsigned face: 4;
  /* ағылш. face – карта;0 – туз,..., 
12 – король  */
  unsigned suit: 2;
  /* ағылш. suit – карта түрі;0 – қиық,
1 – табан,2 – шыбын,3 – қарға */
  unsigned color: 1; 
  /* color–түсі;0–қызыл,1–қара */
};
void fillDeck(BitCard * ); 
/* deck жиымын 52 картамен толтыру */
void deal(BitCard * );
/* deal – карта тарату; 
экран 52 карта шығару */
void main() {
  BitCard deck[52]; 
  /* 52 картадан тұратын жиым */
  fillDeck(deck);
  deal(deck);
}
void fillDeck(BitCard * temp_deck) {
  for (int i = 0; i < 52; i++) {
    temp_deck[i].face = i % 13;
    temp_deck[i].suit = i / 13;
    temp_deck[i].color = i / 26;
  }
}
void deal(BitCard * temp_deck) {
  int l = 0; /* бөліп шығару үшін */
  /* ықшамды болуы үшін 
  карталарды екі
  бағанға бөлеміз: 
  0-25 карталар – бірінші 
  баған, 26-51 карталар –
  екінші баған */
  for(int k1=0,k2=k1+26;k1<=25;k1++,k2++) {
    cout << "Card: "<<setw(3)
    <<temp_deck[k1].face << "Suit: "<<
      setw(2) << temp_deck[k1].suit 
      << " Color: " << setw(2) <<
      temp_deck[k1].color;
    cout << " Card: " << setw(3) 
    << temp_deck[k2].face << " Suit: " <<
      setw(2) << temp_deck[k2].suit 
      << " Color: " << setw(2) <<
      temp_deck[k2].color << endl;
    l++;
    if (l > 12) {
      /* жалғастыру үшін 
      Enter басу керек */
      printf("Press Enter");
      getchar();
      l = 0;
    }
  }
}

ТАПСЫРМАЛАР

Келесі мәліметтерден құралған төрт студент туралы ақпаратты енгізіңіз:

- тегі және инициалы;

- туған жылы;

- оқуға түскен жылы;

- бірінші семестрдің бағасы:

- физика;

- жоғарғы математика;

- информатика;

 

1. Әліпби бойынша реттелген студенттердің тізімін шығару керек.

2. Туған жылы бойынша реттелген студенттердің тізімін көрсету қажет.

3. Оқуға түскен жылы бойынша реттелген озат студенттердің тізімін шығару керек.

4. Сессияны 4 және 5-ке тапсырған студенттердің анкеталық мәліметтері шығарылуға тиіс.

5. Тегі (фамилиясы) Б әрпінен басталатын студенттердің тізімін және олардың барлық пәндер бойынша бағаларын көрсету керек.

6. Оқу озаттарының анкеталық мәліметтерін шығару қажет.

7. Тегі А әріпінен басталатын студенттердің тізімін және олардың туған жылдарыкөрсетілуі тиіс.

8. Сессияда «3» деген бағалары бар студенттердің анкеталық мәліметтерін шығару керек.

9. Тегі В және Г әрпінен басталатын студенттердің тізімін және олардың бағаларын шығаратын программа құру керек.

10. Сессияны «үштік» баға алмай, емтихан тапсырған студенттердің тізімін және олардың туған жылдарын шығару керек.