Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define BUDGET 3
- #define MONTH 12
- #define UNIT 1000000
- int PrintSatistic (float spend[], int n) {
- int i = 0;
- printf("> Thong ke chi tieu ca nam: \n");
- for (i = 0; i < n; ++i) {
- printf("\t+ Thang %d: %d dong\n", i+1, (int) spend[i] * UNIT);
- }
- return 0;
- }
- int PrintMaxMin (float spend[], int n) {
- int i, u = 0, v = 0;
- float max = spend[0], min = spend[0];
- int i_max[MONTH] = {0}, i_min[MONTH] = {0};
- i_max[u] = i_min[v] = 0;
- for (i = 1; i < n; ++i) {
- if (max < spend[i]) {
- max = spend[i];
- u = 0;
- i_max[u] = i;
- } else if (max == spend[i]) {
- ++u;
- i_max[u] = i;
- }
- if (min > spend[i]) {
- min = spend[i];
- v = 0;
- i_min[v] = i;
- } else if (min == spend[i]) {
- ++v;
- i_min[v] = i;
- }
- }
- printf("> Cac thang chi tieu nhieu nhat (%d dong):\n", (int) max * UNIT);
- for (i = 0; i < u; ++i)
- printf("%d, ", i_max[i]+1);
- printf("%d\n", i_max[i]+1);
- printf("> Cac thang chi tieu tiet kiem nhat (%d dong):\n",(int) min * UNIT);
- for (i = 0; i < v; ++i)
- printf("%d, ", i_min[i]+1);
- printf("%d\n", i_min[i]+1);
- return 0;
- }
- int PrintMonthRemain (float spend[], int n) {
- int i = 0;
- printf("> So tien con du sau moi thang: \n");
- for (i = 0; i < n; ++i) {
- printf("\t+ Thang %d: %d dong\n", i+1, (int) (BUDGET - spend[i]) * UNIT);
- }
- return 0;
- }
- int YearRemain (float spend[], int n) {
- int i = 0;
- float remain = BUDGET * MONTH;
- for (i = 0; i < n; ++i) {
- remain -= spend[i];
- }
- return remain;
- }
- int fInput(float min, float max) {
- int tmp, isInvalid;
- float inp;
- do {
- tmp = scanf("%f", &inp);
- while (getchar() != '\n');
- if (tmp != 1 || (inp < min || inp > max)) {
- printf("!!! Vui long nhap dung so tu %f den %f !!!\n", min, max);
- isInvalid = 1;
- } else isInvalid = 0;
- } while (isInvalid);
- return inp;
- }
- int Input(int min, int max) {
- int tmp, isInvalid, inp;
- do {
- tmp = scanf("%d", &inp);
- while (getchar() != '\n');
- if (tmp != 1 || (inp < min || inp > max)) {
- printf("!!! Vui long nhap dung so tu %d den %d !!!\n", min, max);
- isInvalid = 1;
- } else isInvalid = 0;
- } while (isInvalid);
- return inp;
- }
- int main () {
- int isOut = 0, choice, isInvalid;
- int i;
- float spend[MONTH], tmp;
- int mode = -1; // 0 = AN TOAN, 1 = LINH HOAT
- do {
- if (mode == -1) {
- printf("\n------------------------------------------------------\n");
- printf("> Nhap che do chi tieu (0 = AN TOAN, 1 = LINH HOAT): ");
- mode = Input(0, 1);
- printf("> Nhap chi tieu cho tung thang (don vi: trieu dong):\n");
- for (i = 0; i < MONTH; ++i) {
- do {
- isInvalid = 0;
- printf("\t+ Thang %d: ", i+1);
- tmp = fInput(0.0, (float) 1e6);
- switch (mode) {
- case 0:
- if (tmp < 0.0 || tmp > (float) BUDGET) {
- isInvalid = 1;
- printf("!!! Chi tieu can nho hon %d dong !!!\n", (int) BUDGET * UNIT);
- }
- break;
- case 1:
- if (tmp < 0.0 || tmp > YearRemain(spend, i)) {
- isInvalid = 1;
- printf("!!! Chi tieu can nho hon %d dong !!!\n", (int) YearRemain(spend, i) * UNIT);
- }
- break;
- }
- } while (isInvalid);
- spend[i] = tmp;
- }
- printf(">>> Hoan tat nhap du lieu chi tieu !\n");
- printf("------------------------------------------------------\n");
- }
- printf("\n------------------------------------------------------\n");
- printf("1. Thong ke chi tieu ca nam\n");
- printf("2. Thang chi tieu nhieu nhat/tiet kiem nhat\n");
- printf("3. So tien con du moi thang\n");
- printf("4. So tien con du sau 1 nam\n");
- printf("0. Thoat\n");
- printf("------------------------------------------------------\n");
- printf("> Nhap lua chon: ");
- choice = Input(0, 4);
- switch (choice) {
- case 1:
- printf("\n------------------------------------------------------\n");
- PrintSatistic(spend, MONTH);
- printf("------------------------------------------------------\n");
- break;
- case 2:
- printf("\n------------------------------------------------------\n");
- PrintMaxMin(spend, MONTH);
- printf("------------------------------------------------------\n");
- break;
- case 3:
- printf("\n------------------------------------------------------\n");
- PrintMonthRemain(spend, MONTH);
- printf("------------------------------------------------------\n");
- break;
- case 4:
- printf("\n------------------------------------------------------\n");
- printf("> So tien con du sau mot nam: %d\n", (int) YearRemain(spend, MONTH) * UNIT);
- printf("------------------------------------------------------\n");
- break;
- case 0:
- isOut = 1;
- default:
- printf("!!! Vui long nhap lua chon tu 0 den 4 !!!\n");
- }
- } while (!isOut);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement