Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #define TIEU_THU 400
- #define TIEN_DIEN 750
- #define MAXSIZE 40
- typedef enum {OFF, ON} STATE;
- int GetState (STATE state) {
- switch (state) {
- case ON:
- return 1;
- case OFF:
- return 0;
- default:
- return -1;
- }
- }
- int SetState (STATE state[], int n, int i, STATE set) {
- if (i >= 1 && i <= n) {
- state[i-1] = set;
- return 0;
- }
- else return -1;
- }
- int Check (STATE state[], int n, int i) {
- if (i > 0 && i <= n) {
- return GetState(state[i-1]);
- }
- else return -1;
- }
- int PrintState (STATE state[], int n) {
- int i;
- putchar('\n');
- printf("> Trang thai cua cac may hien tai la:\n");
- for (i = 0; i < n; ++i) {
- printf("%d ", GetState(state[i]));
- if (i % 4 == 3)
- putchar('\n');
- }
- putchar('\n');
- return 0;
- }
- int TotalPower (int count[], int n) {
- int i, sum = 0;
- for (i = 0; i < n; ++i) {
- sum += count[i] * TIEU_THU;
- }
- return sum;
- }
- int PrintPower (int count[], int n) {
- int i;
- putchar('\n');
- printf("> Tong dien nang tieu thu cua tung may tinh den hien tai la:\n");
- for (i = 0; i < n; ++i) {
- printf("%d ", count[i] * TIEU_THU);
- if (i % 4 == 3)
- putchar('\n');
- }
- putchar('\n');
- return 0;
- }
- int PrintMaxMin (int count[], int n) {
- int i, u = 0, v = 0, max = count[0], min = count[0];
- int i_max[MAXSIZE] = {0}, i_min[MAXSIZE] = {0};
- i_max[u] = i_min[v] = 0;
- for (i = 1; i < n; ++i) {
- if (max < count[i]) {
- max = count[i];
- u = 0;
- i_max[u] = i;
- } else if (max == count[i]) {
- ++u;
- i_max[u] = i;
- }
- if (min > count[i]) {
- min = count[i];
- v = 0;
- i_min[v] = i;
- } else if (min == count[i]) {
- ++v;
- i_min[v] = i;
- }
- }
- putchar('\n');
- printf("> Cac may duoc su dung nhieu nhat (%d lan su dung):\n", max);
- for (i = 0; i < u; ++i)
- printf("%d, ", i_max[i]+1);
- printf("%d\n", i_max[i]+1);
- printf("> Cac may duoc su dung it nhat (%d lan su dung):\n", min);
- for (i = 0; i < v; ++i)
- printf("%d, ", i_min[i]+1);
- printf("%d\n", i_min[i]+1);
- return 0;
- }
- int Select () {
- int tmp, select, isInvalid;
- do {
- tmp = scanf("%d", &select);
- while (getchar() != '\n');
- if (tmp != 1 && (select > 40 || select < 1)) {
- printf("!!! Vui long nhap ma may tu 1 den 40 !!!\n");
- isInvalid = 1;
- } else isInvalid = 0;
- } while (isInvalid);
- return select;
- }
- int main () {
- int choice, i, isOut = 0, tmp, isInvalid, select;
- STATE state[MAXSIZE];
- int count[MAXSIZE] = {0};
- for (i = 0; i < MAXSIZE; ++i)
- state[i] = OFF;
- do {
- printf("\n--------------------------------------------\n");
- printf("1. Chon may\n");
- printf("2. Roi may\n");
- printf("3. In trang thai may\n");
- printf("4. In dien nang tieu thu cac may\n");
- printf("5. In tong dien nang tieu thu\n");
- printf("6. May duoc dung nhieu nhat va it nhat\n");
- printf("0. Thoat\n");
- printf("--------------------------------------------\n");
- printf("> Nhap lua chon: ");
- do {
- tmp = scanf("%d", &choice);
- while (getchar() != '\n');
- if (tmp != 1 || (choice > 6 || choice < 0)) {
- isInvalid = 1;
- printf("!!! Vui long nhap dung lua chon !!!\n");
- } else isInvalid = 0;
- } while (isInvalid);
- switch(choice) {
- case 1:
- do {
- printf("\n--------------------------------------------\n");
- printf("> Nhap may can dung: ");
- select = Select();
- if (Check(state, MAXSIZE, select)) {
- printf("!!! May dang duoc su dung. Vui long chon may khac !!!\n");
- } else {
- SetState(state, MAXSIZE, select, ON);
- ++count[select-1];
- printf(">>> Dang ky may thanh cong !\n");
- }
- printf("--------------------------------------------\n");
- } while (!Check(state, MAXSIZE, select));
- break;
- case 2:
- do {
- printf("\n--------------------------------------------\n");
- printf("> Nhap may muon roi: ");
- select = Select();
- if (!Check(state, MAXSIZE, select)) {
- printf("!!! May chua duoc su dung. Vui long chon dung may !!!\n");
- isInvalid = 0;
- } else {
- isInvalid = SetState(state, MAXSIZE, select, OFF);
- printf(">>> Roi may thanh cong !\n");
- }
- printf("--------------------------------------------\n");
- } while (isInvalid);
- break;
- case 3:
- PrintState(state, MAXSIZE);
- break;
- case 4:
- PrintPower(count, MAXSIZE);
- break;
- case 5:
- tmp = TotalPower(count, MAXSIZE);
- printf("\n> Tinh den thoi diem hien tai.\n\tTong dien nang tieu thu cua cac may la: %d\n\tTien dien thanh toan la: %d\n", tmp, tmp * TIEN_DIEN);
- break;
- case 6:
- PrintMaxMin(count, MAXSIZE);
- break;
- case 0:
- isOut = 1;
- default:
- printf("!!! Vui long nhap lua chon tu 0 den 6 !!!\n");
- }
- } while (!isOut);
- return 0;
- }
- // Dung may
- // Roi may
- // Trang thai may
- // Dien nang tieu thu
- // Tong dien nang tieu thu
- // May duoc dung nhieu nhat, it nhat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement