Việt - Nhật 's class
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Latest topics
» Oblivion - Phim Club
Week7(Full) I_icon_minitime06/02/14, 11:10 am by sshin_conan

» các bạn/anh/chị cho hỏi đề thi giải tích 1
Week7(Full) I_icon_minitime03/05/13, 09:47 pm by ictk56

» Đề nghị sát nhập 2 diễn đàn
Week7(Full) I_icon_minitime18/02/12, 11:01 am by ngoanhtuan_hn

» Hội nghị sinh viên Việt Nam Nhật Bản tuyển thành viên
Week7(Full) I_icon_minitime17/02/12, 11:43 pm by michiosatoo

» mình có câu này, mong các bạn dịch giúp!!!
Week7(Full) I_icon_minitime16/11/11, 06:17 pm by asakurayo

» nho forum chut
Week7(Full) I_icon_minitime15/11/11, 11:29 am by asakurayo

» CS 1.6 MAP MAKER
Week7(Full) I_icon_minitime15/11/11, 07:55 am by asakurayo

» ubuntu-win
Week7(Full) I_icon_minitime12/10/11, 05:46 pm by darklord226

» diễn đàn hedspi k56
Week7(Full) I_icon_minitime11/10/11, 09:41 pm by lakazai

Similar topics

Week7(Full)

+3
Tung_tobe
myname2
haidang001
7 posters

Go down

Week7(Full) Empty Week7(Full)

Bài gửi by haidang001 02/04/11, 02:31 am

Đã được nửa học kì vật lộn với cái môn này. Bài tập thầy giáo về nhà cũng ngày càng thêm sôi động.
Với bài tập về nhà lần này, Koltec comment mỗi một từ "chuối" (khá chuối, debug cả tối Sad).

Không trém gió nữa, quất cái đã:

Tổng cổng có 5 bài, 1 bài của tuần 6, 2 bài tuần 7 và 2 bài mở rộng.

Đề bài:
Bài 1: triangle.
Code:

Viet chuong trinh yeu cau nguoi dung nhap vao 3 canh cua mot tam giac va cho biet:
    - Do la 3 canh hop le cua 1 tam giac?
    - Dien tich tam giac.
    - Kieu tam giac:
      + Thuong
      + Can
      + Vuong
      + Vuong can
      + Deu

Bài 2: bank
Code:

Ngan hang ACB ra chuong trinh khuyen mai gui tien co ky han mot nam, moi thang lai suat 1.2%. Tien lai hang thang duoc cong don vao tien gui.
5
Hay viet chuong trinh yeu cau nguoi dung nhap ten va so tien gui sau do in ra bang tien lai va tien trong so sau tung thang:

VD:
    Tai khoan khach hang: Nguyen Thi Tam.
    Thang      Tien dau ky        Tien lai    So du
    1      1000000            12000    1012000
    2      1012000        . . .    . . .
    . .
    12

    Tong lai:

    Sau do thay doi chuong trinh cho phep nhap vao ty suat lai va so thang lam bao cao.

Bài 3: là phần mở rộng của bài 2

Bài 4: hospital
Code:

Chi phi benh vien cua benh nhan gom cac khoan sau:
    - Phi noi tru (150 000 VND/ngay)
    - Tien thuoc.
    - Tien phau thuat (neu co).
Benh nhan co 3 loai the bao hiem y te sau:
    - Gold(G): chi can thanh toan 30% chi phi.
    - Silver(S): chi can thanh toan 50% chi phi.
    - Citizen(C): phai thanh toan 70% chi phi.
Viet chuong trinh hoi thong tin ve benh nhan, so ngay nam vien, tien thuoc, co phai phau thuat, .. va loai the bao hiem va in ra Hoa don thanh toan tien vien phi co day du cac hang muc.

Bài 5:(khó + dài) hospitalhard
Code:

Redo the Hospital Fee problem using for loop. The program provides a menu.
    1. Input data/Bill for new patient.
    2. Print the total report.
    3. Quit.

    In the total report you should display:
        - The number of patients and the average fee that they have to pay.
    - The number of each type of Medicine Assurance Card (For exp: 3 G, 2S, . . .)
    - The most profit from assurance a patient can get.

Solution:
Bài 1: triangle
Có 2 thứ:
1) 3 cạnh là a, b, c chẳng hạn. Check nó là 1 tam giác cần:
Code:

  if ((x + y <= z) || (x - y >= z) || (y - x >= z))
    printf("You must be wrong!\n");
  else
    {
      Xử lý
      };

2) Còn chỗ kiểm tra tam giác đặc biết, phải tuân theo thứ tự ưu tiên. VD: tam giác vuông cân thì không được cho đáp án là tam giác cân.
Mọi người có thể "if" theo thứ tứ này:
Code:

đều > vuông cân > vuông > cân > thường

Bài 2: bank
Không có gì ngoài việc nên khai báo biến lãi suất (0.15%) và số tháng (12) là một hằng (để tiện cho làm câu 3).
Code:

#define rate 0.012
#define nmonth 12

Bài 3: bank2
Nếu bài 2 mà làm kiểu khai báo hằng rồi thì bài này xin phép thầy không cần kiểm tra nữa.

Bài 4: hospital
Để ý chỗ nhập họ tên, trường hợp họ tên có dấu cách, dùng hàm "gets()". Hàm này sẽ xóa sạch vùng đềm (buffer) sau khi nhập.
Code:

  gets(name);

Bài 5: (khó + dài) hospitalhard
Ngẹn ngào không cất lên tiếng nổi vì quá nhiều thứ cần lưu ý Sad. Thôi cứ trém bừa 1 vài chỗ vậy.
1. Phần tính tiền trung bình (report), đề phòng số người = 0 --> chia cho 0 --> lỗi.
2. Để ý các kí còn đọng lại trong buffer trước và sau khi nhập liệu <== đây là cái chuối nhất trong bài Sad.
3. Cách trình bày cũng như cấu trúc bài làm, mọi người tham khảo phần sau vậy So good.

Code: Koltec thêm phần này vào cho mọi người tham khảo.
Lưu ý trước: trong bài làm Koltec đã để rất nhiều "Copyright haidang001 (tm) (@yahoo.com)" hoặc nhiều chữ kí khác. Đừng dại mà copy =)).

Bài 1: triangle
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/

/*Viet chuong trinh yeu cau nguoi dung nhap vao 3 canh cua mot tam giac va cho biet:
    - Do la 3 canh hop le cua 1 tam giac?
    - Dien tich tam giac.
    - Kieu tam giac:
      + Thuong
      + Can
      + Vuong
      + Vuong can
      + Deu*/

#include <stdio.h>
#include <math.h>

main()
{
  float x, y, z, area, p, temp;
 
  printf("\n\t\t\tTriangle Doctor v1.10\n");
  printf("\t\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t\t  S_have fun! :)\n\n");

  printf("Enter 3 thrree numbers correlative with length of 3 edge of 1 triangle (serepate with least 1 space): ");
  scanf("%f %f %f", &x, &y, &z);

  if ((x + y <= z) || (x - y >= z) || (y - x >= z))
    printf("You must be wrong!\n");
  else
    {
      p = (x + y + z) / 2;
      area = sqrt(p * (p - x) * (p - y) * (p - z));
      printf("Triangle 's area is: %5.2f\n", area);

      if (x < y)
    {
      temp = x; x = y; y = temp;
    };
      if (x < z)
    {
      temp = x; x = z; z = temp;
    };
     
      printf("This is ");
      if ((x == y) && (y == z))
    printf("equilateral"); //deu
      else
    if (y == z)
      if (x * x == y * y + z * z)
        printf("right-angled isosceles"); //vuong can
      else
        printf("isosceles");  //can
    else
      if (x * x == y * y + z * z)
        printf("right-angled");  //vuong
      else
        printf("regular"); //thuong
      printf(" triangle.\n");
    };
 
  printf("\nS_have fun! :)\n");
  return 0;
}

Bài 2: bank
Code:

/*Copyrigh (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/

/*Ngan hang ACB ra chuong trinh khuyen mai gui tien co ky han mot nam, moi thang lai suat 1.2%. Tien lai hang thang duoc cong don vao tien gui.

Hay viet chuong trinh yeu cau nguoi dung nhap ten va so tien gui sau do in ra bang tien lai va tien trong so sau tung thang:

VD:
    Tai khoan khach hang: Nguyen Thi Tam.
    Thang      Tien dau ky        Tien lai    So du
    1      1000000            12000    1012000
    2      1012000        . . .    . . .
    . .
    12

    Tong lai:

    Sau do thay doi chuong trinh cho phep nhap vao ty suat lai va so thang lam bao cao.*/

#include <stdio.h>
#define rate 0.012
#define nmonth 12

main()
{
  char name[20];
  float money, profit;
 
  printf("\n\t    Ngan hang HDBank xin chao quy khach\n");
  printf("\tPhan mem tinh toan lai suat tung thang v1.0\n");
  printf("\t Copyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t    S_have fun! :)\n\n");

  printf("Xin nhap vao ho va ten khach hang: ");
  gets(name);
  printf("Nhap vao so tien gui: ");
  scanf("%f", &money);

  printf("\nTai khoan khach hang: %s.\n\n", name);
  printf("----------------------------------------------------------\n");
  printf("|%-8s|%-15s|%-15s|%-15s|\n", "Thang", "Tien dau thang", "Tien lai", "So du");
  printf("----------------------------------------------------------\n");

  int i;
  for (i = 1; i <= nmonth; i++)
    {
      profit = money * rate;
      printf("|%-8d|%-15.2f|%-15.2f|%-15.2f|\n", i, money, profit, money + profit);
      money += profit;
    };

  printf("----------------------------------------------------------\n");
  printf("Tong so tien: %-15.2f\n", money);
   
  printf("\nS_have fun! :)\n");
  return 0;
}

Bài 3: bank2
Code:

/*Copyrigh (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/

/*Ngan hang ACB ra chuong trinh khuyen mai gui tien co ky han mot nam, moi thang lai suat 1.2%. Tien lai hang thang duoc cong don vao tien gui.

Hay viet chuong trinh yeu cau nguoi dung nhap ten va so tien gui sau do in ra bang tien lai va tien trong so sau tung thang:

VD:
    Tai khoan khach hang: Nguyen Thi Tam.
    Thang      Tien dau ky        Tien lai    So du
    1      1000000            12000    1012000
    2      1012000        . . .    . . .
    . .
    12

    Tong lai:

    Sau do thay doi chuong trinh cho phep nhap vao ty suat lai va so thang lam bao cao.*/

#include <stdio.h>
//#define rate 0.012
//#define nmonth 12

main()
{
  char name[20];
  float money, profit, rate;
  int nmonth;
 
  printf("\n\t    Ngan hang HDBank xin chao quy khach\n");
  printf("\tPhan mem tinh toan lai suat tung thang v2.0\n");
  printf("\t Copyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t    S_have fun! :)\n\n");

  printf("Xin nhap vao ho va ten khach hang: ");
  gets(name);
  printf("Nhap vao so tien gui (VND): ");
  scanf("%f", &money);
  printf("Nhap vao lai suat theo thang (don vi %%): ");
  scanf("%f", &rate);
  rate = rate / 100;
  printf("Nhap vao so thang can tinh: ");
  scanf("%d", &nmonth);

  printf("\nTai khoan khach hang: %s.\n\n", name);
  printf("----------------------------------------------------------\n");
  printf("|%-8s|%-15s|%-15s|%-15s|\n", "Thang", "Tien dau thang", "Tien lai", "So du");
  printf("----------------------------------------------------------\n");

  int i;
  for (i = 1; i <= nmonth; i++)
    {
      profit = money * rate;
      printf("|%-8d|%-15.2f|%-15.2f|%-15.2f|\n", i, money, profit, money + profit);
      money += profit;
    };

  printf("----------------------------------------------------------\n");
  printf("Tong so tien: %-15.2f\n", money);
   
  printf("\nS_have fun! :)\n");
  return 0;
}

Bài 4: hospital
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/

/*Chi phi benh vien cua benh nhan gom cac khoan sau:
    - Phi noi tru (150 000 VND/ngay)
    - Tien thuoc.
    - Tien phau thuat (neu co).
Benh nhan co 3 loai the bao hiem y te sau:
    - Gold(G): chi can thanh toan 30% chi phi.
    - Silver(S): chi can thanh toan 50% chi phi.
    - Citizen(C): phai thanh toan 70% chi phi.
    Viet chuong trinh hoi thong tin ve benh nhan, so ngay nam vien, tien thuoc, co phai phau thuat, .. va loai the bao hiem va in ra Hoa don thanh toan tien vien phi co day du cac hang muc.*/

#include <stdio.h>

main()
{
  char name[20], insurance;
  float medicine, surgery, sum, isum;
  int nday;

  printf("\n\t\tChuong trinh In hoa don benh vien HEDSPI55 v1.0\n");
  printf("\t\t  Copyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t\t\tS_have fun! :)\n\n");

  printf("Ho va ten benh nhan: ");
  gets(name);
  printf("So ngay nam vien: ");
  scanf("%d", &nday);
  printf("Tien thuoc: ");
  scanf("%f", &medicine);
  printf("Tien phau thuat (neu khong co, nhap 0): ");
  scanf("%f", &surgery);
  printf("Loai the bao hiem (G: gold, S: Silver, C: Citizen): ");
  getchar();
  scanf("%c", &insurance);
  insurance = toupper(insurance);

  sum = nday * 150000 + medicine + surgery;

  printf("\n\n\tHOA DON BENH VIEN HEDSPI55\n");
  printf("Ho va ten: %s\n", name);
  printf("So ngay noi tru: %d\n", nday);
  printf("Phi noi tru: %d\n", 150000 * nday);
  printf("Tien thuoc: %-5.2f\n", medicine);
  if (surgery > 0)
    printf("Chi phi phau thuat: %-5.2f\n", surgery);
 
  printf("Loai the bao hiem: ");
  switch (insurance)
    {
    case 'G':
      printf("Gold");
      isum = sum * 0.3;
      break;
    case 'S':
      printf("Silver");
      isum = sum / 2;
      break;
    default:
      isum = sum * 0.7;
      printf("Citizen");
    };
  printf("\n\nChi phi chua chua tinh Bao hiem: %-5.2f\n", sum);
  printf("Chi phi da tinh Bao hiem: %-5.2f\n", isum);
 
  printf("\nS_have fun! :)\n");
  return 0;
}

Bài 5: hospitalhard
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/

/*Redo the Hospital Fee problem using for loop. The program provides a menu.
  1. Input data/Bill for new patient.
  2. Print the total report.
  3. Quit.

  In the total report you should display:
  - The number of patients and the average fee that they have to pay.
  - The number of each type of Medicine Assurance Card (For exp: 3 G, 2S, . . .)
  - The most profit from assurance a patient can get.*/

#include <stdio.h>

main()
{
  int quit = 0, nday, npatient = 0, g = 0, s = 0, c = 0;
  char selection[100], name[50], answer, insurance, *itype;
  float sum, isum, medicine, surgery, sumsum = 0, highestprofit = 0, temp;

  while (quit == 0)
    {
      printf("\n\n\n\n\t\t\tHEDSPI55 's Hospital\n");
      printf("\t\t\t  Bill creater v1.0\n");
      printf("\t\t  Copyright (c) haidang001 (tm) (@yahoo.com)\n");
      printf("\t\t\t    S_have fun! :)\n\n");

      printf("1. Input data/Bill for new patient.\n");
      printf("2. Print the total report.\n");
      printf("3. Quit.\n");
      printf("Enter your selection (1, 2, 3): ");
 
      gets(selection);  //Vung dem truoc va sau trong
      printf("\n");
      switch (selection[0])
    {
    case '1': //Input
      //Input
      printf("Ho va ten benh nhan: ");
      gets(name);  //Enter phia truoc da co gets(selection) loai bo. Khong thua Enter.
      printf("So ngay nam vien: ");
      scanf("%d", &nday);
      printf("Tien thuoc: ");
      scanf("%f", &medicine);
      printf("Tien phau thuat (neu khong co, nhap 0): ");
      scanf("%f", &surgery);

      sum = nday * 150000 + medicine + surgery;               
      //Insurace
      printf("Loai the bao hiem (G: gold, S: Silver, C: Citizen): ");
      getchar();  //Loai Enter o scanf("%f", &surgery);
      gets(selection);
      insurance = selection[0]; //Khong con Enter phia sau.
      insurance = toupper(insurance);

      switch (insurance)
        {
        case 'G':
          itype = "Gold";
          isum = sum * 0.3;
          break;
        case 'S':
          itype = "Silver";
          isum = sum / 2;
          break;
        default:
          isum = sum * 0.7;
          itype = "Citizen";
        };

      printf("\nBan co muon in ra Hoa don khong ('y' or 'n')?"); //Print Bill
      gets(selection); //Khong con Enter truoc hoac sau
      answer = selection[0];
      answer = toupper(answer);
      if (answer == 'Y')
        {
          printf("\n\n\tHOA DON BENH VIEN HEDSPI55\n");
          printf("Ho va ten: %s\n", name);
          printf("So ngay noi tru: %d\n", nday);
          printf("Phi noi tru: %d\n", 150000 * nday);
          printf("Tien thuoc: %-5.2f\n", medicine);
          if (surgery > 0)
        printf("Chi phi phau thuat: %-5.2f\n", surgery);
          printf("Loai the bao hiem: %s\n", itype);
          printf("\nChi phi chua chua tinh Bao hiem: %-5.2f\n", sum);
          printf("Chi phi da tinh Bao hiem: %-5.2f\n", isum);
        };

      //Update
      npatient++;
      sumsum = sumsum + isum;
      if (insurance == 'G')
        g++;
      else
        if (insurance == 'S')
          s++;
        else
          c++;
      temp = sum - isum;
      if (temp > highestprofit)
        highestprofit = temp;
     
      printf("\nPress Enter to return to main menu . . .");
      gets(selection); //Vung dem trong
      break;

    case '2': //Print total report
      printf("Number of patient(s): %d.\n", npatient);
      printf("Average fee: %-5.2f.\n", (npatient == 0)?0:(sumsum / npatient));
      printf("Number of Medicine Assurance Card: %d.\n", npatient);
      printf("\tGold Card: %d.\n", g);
      printf("\tSilver Card: %d.\n", s);
      printf("\tCitizen Card: %d.\n", c);
      printf("The most profit from assurance a patient get: %-5.2f", highestprofit);
     
      printf("\n\nPress Enter to return to main menu . . .");
      gets(selection); //Vung dem trong
      break;

    default:
      printf("Do you really want to Quit program? (y or n)");
      gets(selection);//Vung dem trong
      answer = selection[0];
      answer = toupper(answer);
      if (answer == 'Y')
        quit++;
    };
    };

  printf("\nS_have fun! :)\n");
  return 0;
}


PS: tất nhiên bài koltec vẫn còn nhiều chỗ sai. Nếu ae phát hiện ra thì bảo Koltec phát. Arigatou.

S_have fun! So good
haidang001
haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 31

http://haidang001.tk

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by myname2 05/04/11, 06:42 pm

Đã thử đọc qua code của Sáng (và hơi lười test :">) Tớ thấy về cấu trúc cũng khá ổn. Có điều là đề bài hình như không yêu cầu có hóa đơn cụ thể của từng bệnh nhân, nếu đúng thế thì bỏ qua bước này sẽ đỡ rỗi hơn chăng Very Happy

=======================

Còn 1 điểm nữa là theo tớ nhớ trong đề bài yêu cầu hiện tên người được hưởng bảo hiểm nhiều nhất trong báo cáo total, trong bài của Sáng chưa có yêu cầu này ^^'

=======================

Có vài điều nữa tớ muốn hỏi trong code của Sáng là:
- Tại sao phải
khai báo biến selection là xâu 100 ký tự khi cả chương trình selection
chỉ đọc vào 1 ký tự như '1', '2' hay 'y', 'n',... Vì nếu dùng selection
là xâu thì khi dùng switch phải để là selection[0]
- Tại sao khi tớ
khai báo selection là kỹ tự, đổi gets thành getchar hoặc getch cũng như
là getche thì nó đều bị lỗi, getchar bị lỗi là quá nhiều argument để có
thể dùng getchar @_@ 2 cái kia cũng bị lỗi gỉ gì gì ý @_@

Posts have been mergered by Koltec. S_have fun! So good
myname2
myname2

Tổng số bài gửi : 66
Points : 90
Join date : 27/09/2010
Age : 31
Đến từ : Hà Nội

https://facebook.com/tuanhai

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by Tung_tobe 06/04/11, 12:28 am

đến nản lúc dịch cái bài hospital, tòan bị lỗi gán ký tự, bài này chuối vãi Sad(
Tung_tobe
Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by myname2 06/04/11, 08:10 am

Sau vài tiếng vật lộn, có vẻ như cách duy nhất để duy trì tên thằng đc nhiều tiền bảo hiểm nhất chính là dùng thư viện string.h :-S
myname2
myname2

Tổng số bài gửi : 66
Points : 90
Join date : 27/09/2010
Age : 31
Đến từ : Hà Nội

https://facebook.com/tuanhai

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by asakurayo 06/04/11, 08:29 pm

cai ham gets(name); cua sang hinh nhu lam sao y,to dich no ra the nay

/tmp/ccEQdHbn.o: In function `main':
tn2.c:(.text+0x5a): warning: the `gets' function is dangerous and should not be used.
tomu@tomu-PC:~$
cu tuong duoc chep het,do phai lam....
asakurayo
asakurayo

Tổng số bài gửi : 38
Points : 62
Join date : 27/12/2010
Age : 32
Đến từ : hai duong

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by xlKD 06/04/11, 08:37 pm

cai warning ay ko sao dau, ay cu' chay nhu bt di Very Happy
xlKD
xlKD

Tổng số bài gửi : 53
Points : 62
Join date : 27/09/2010
Age : 31

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by hieupro1269 06/04/11, 09:45 pm

Cái tiền bảo hiểm ấy đâu có yêu cầu hiện tên thằng nào nhiều nhất đâu.Chỉ yêu cầu hiện số tiền đc lợi nhiều nhất thôi.
Code của mình,các bạn xem và test thử.
Code:
/*Bui Trung Hieu - 20101503*/
/*  5C Viet Nhat K55      */
/*      Hospital Fee      */
#include <stdio.h>
#define phint 150000
#define g 30
#define s 50
#define c 70
void main()
{
  int sobenhnhan,tong=0,chiphi=0,thuoc,phauthuat,ngay,chon,tb=0,sog=0,sos=0,soc=0,max=0,the=0,baohiem=0;
  char ten[20],diachi[20];
  printf("Chuong trinh quan ly benh nhan benh vien HEDSPI\n");
  printf("===============================================\n");
  do
    {
      printf("Cac chuc nang:\n\n\n");
      printf("1.Nhap du lieu cho benh nhan moi.\n");
      printf("2.In bao cao.\n");
      printf("3.Thoat.\n\n\n");
      printf("Nhap so dung truoc moi chuc nang de chon chuc nang can su dung:");
      scanf("%d",&chon);
      printf("\n\n");
      switch (chon)
    {
    case 1:
      {
        printf("Nhap du lieu cho benh nhan moi:\n\n");getchar();
        printf("Ten:");gets(ten);
        printf("Dia chi:");gets(diachi);
        printf("So ngay nam vien:");scanf("%d",&ngay);
        printf("Tien thuoc:");scanf("%d",&thuoc);
        printf("Tien phau thuat(khong co ghi 0):");scanf("%d",&phauthuat);
        printf("Loai the bao hiem (Gold ghi 1,Sliver ghi 2,Citizen ghi 3,khong co ghi 0):");scanf("%d",&the);
        sobenhnhan++;
        chiphi=phint*ngay+thuoc+phauthuat;
        if (the==1)
          {
        sog++;
        baohiem=(int) ((chiphi*g)/100);
          }
        else if (the==2)
          {
        sos++;
        baohiem=(int) ((chiphi*s)/100);
          }
        else if (the==3)
          {
          soc++;
          baohiem=(int) ((chiphi*c)/100);
        }
        if (baohiem==1) baohiem-=1;
        max=(baohiem>max)?baohiem:max;
        chiphi-=baohiem;
        tong+=chiphi;
        /*In hoa don*/
        printf(" _________________________________\n");
        printf("|        Benh vien HEDSPI        |\n");
        printf("|                                |\n");
        printf("|        Hoa don vien phi        |\n");
        printf("|                                |\n");
        printf("|Ten benh nhan:%-19s|\n",ten);
        printf("|Dia chi:%-20s    |\n",diachi);
        printf("|                                |\n");
        printf("|Chi tiet hoa don                |\n");
        printf("|Tien noi tru  :%12d dong|\n",phint*ngay);
        printf("|Tien thuoc:    :%12d dong|\n",thuoc);
        printf("|Tien phau thuat:%12d dong|\n",phauthuat);
        printf("|Tong          :%12d dong|\n",chiphi+baohiem);
        printf("|                                |\n");
        printf("|Bao hiem y te  :%12d dong|\n",baohiem);
        printf("|              ==================|\n");
        printf("|Vien phi      :%12d dong|\n",chiphi);
        printf("|                                |\n");
        printf("|_________________________________|\n");
        break;
      }
    case 2:
      {
        if (sobenhnhan==0) tb=0;
        else tb=tong/sobenhnhan;
        printf(" _________________________________\n");
        printf("|        Benh vien HEDSPI        |\n");
        printf("|                                |\n");
        printf("|        Bao cao vien phi        |\n");
        printf("|                                |\n");
        printf("|So benh nhan        :%11d|\n",sobenhnhan);
        printf("|Tong vien phi        :%11d|\n",tong);
        printf("|Vien phi trung binh  :%11d|\n",tb);
        printf("|So the bao hiem      :%11d|\n",sog+sos+soc);
        printf("|  *Loai Gold        :%11d|\n",sog);
        printf("|  *Loai Sliver      :%11d|\n",sos);
        printf("|  *Loai Citizen      :%11d|\n",soc);
        printf("|Chi bao hiem cao nhat:%11d|\n",max);
        printf("|                                |\n");
        printf("|_________________________________|\n");
        break;       
      }
    default:continue;
    }


    }
  while (chon!=3);
}
hieupro1269
hieupro1269

Tổng số bài gửi : 31
Points : 37
Join date : 04/10/2010
Age : 32

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by haidang001 06/04/11, 10:55 pm

myname2 đã viết:Đã thử đọc qua code của Sáng (và hơi lười test :">) Tớ thấy về cấu trúc cũng khá ổn. Có điều là đề bài hình như không yêu cầu có hóa đơn cụ thể của từng bệnh nhân, nếu đúng thế thì bỏ qua bước này sẽ đỡ rỗi hơn chăng Very Happy

=======================

Còn 1 điểm nữa là theo tớ nhớ trong đề bài yêu cầu hiện tên người được hưởng bảo hiểm nhiều nhất trong báo cáo total, trong bài của Sáng chưa có yêu cầu này ^^'

=======================

Có vài điều nữa tớ muốn hỏi trong code của Sáng là:
- Tại sao phải
khai báo biến selection là xâu 100 ký tự khi cả chương trình selection
chỉ đọc vào 1 ký tự như '1', '2' hay 'y', 'n',... Vì nếu dùng selection
là xâu thì khi dùng switch phải để là selection[0]
- Tại sao khi tớ
khai báo selection là kỹ tự, đổi gets thành getchar hoặc getch cũng như
là getche thì nó đều bị lỗi, getchar bị lỗi là quá nhiều argument để có
thể dùng getchar @_@ 2 cái kia cũng bị lỗi gỉ gì gì ý @_@

Posts have been mergered by Koltec. S_have fun! So good

1. Phần hóa đơn cụ thể chẳng qua là "ảo hóa" tý thôi mà, đề bài ko yêu cầu, ko có cũng ko sao.
2. Đề bài chỉ yêu cầu số tiền nhiều nhất, không yêu cầu tên của người đó.
Nếu cần, cũng ko nhờ đến string.h, khai báo một xâu tên rồi mỗi lần cập nhật biến số tiền ta cập nhật luôn tên người đó.
3. Để selection là xâu đề phòng người dùng nhập vào nhiều hơn 1 kí tự ==> gây lỗi cho chương trình.
Khai báo kí tự cũng không sao, đây chỉ là "lót" sơ sơ cho chương trình thôi.
4. getchar() là một hàm, ko có tham số. Khác với gets(), myname2 đổi thế nên bị lỗi là phải. Cú pháp cụ thể như sau:
Code:

char ch, str[10];
ch = getchar();
gets(str);

Mọi người tiếp tục trao đổi nhé.
S_have fun! So good
haidang001
haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 31

http://haidang001.tk

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by Woodyx 08/04/11, 08:55 pm

ở bài menu tui làm thế này:
anh em xem thử. lỗi của nó là khi mình chọn 1 rùi thoát ra thì cho dù ấn 1, 2 hay 3 đi chawng nữa nó cũng nhảy tới 2. rùi khi ấn thoát ra thì có ấn 1,2,3 hay 3 nó cũng nhảy tới 3 và thoát Sad Sad
tui nghĩ là do ở cuối mỗi case ko có break. Nhưng nếu cho break vô thì chương trình sẽ dừng lại và thoát luôn!!! Sad
Code:

# include <stdio.h>

int main()

{
    char ten[30],the,choice1,e1,e;
    int i=0,g=0,s=0,c=0,tuoi, date, money, tien, d, m, y;
    float sum=0,T,TT,t,hix=0;
printf("\n\t\t\tQUAN LI BENH NHAN");
printf("\n\n\tMENU");
printf("\n\n1. Nhap thong tin benh nhan.");
printf("\n\n2. Bao cao thong ke.");
printf("\n\n3. Thoat chuong trinh.");
printf("\n\n\t* Nhap lua chon: ");
scanf("%c",&choice1);
switch (choice1)
{
case '1':
{
    while(1)
    {
  printf("\n\n\t\t\tTHONG TIN BENH NHAN");
  printf("\n\n+ Ngay thang: ");
  scanf("%d %d %d",&d,&m,&y);
  printf("\n\n+ Ho ten: ");
  getchar();
  scanf("%[^\n]",ten);
  printf("\n\n+ Tuoi: ");
  getchar();
  scanf("%d",&tuoi);
  printf("\n\n+ So ngay nam vien: ");
  scanf("%d",&date);
  printf("\n\n+ Tien thuoc: ");
  scanf("%d",&money);
  printf("\n\n+ Tien phau thuat(neu co): ");
  getchar();
  scanf("%d",&tien);
  T=tien+date*15000+money;
  printf("\n\n+ Loai the(G: Gold; S: Silver; C: Citizen): ");
  getchar();
  scanf("%c",&the);
printf("\n\n=======================================================");
printf("\n\n\n\t\t\tHOA DON VIEN PHI");
printf("\n\n\t\t\t\tNgay %d Thang %d Nam %d",d,m,y);
printf("\n\n+ Ho ten: %s",ten);
printf("\n\n+ Tuoi: %d",tuoi);
printf("\n\n+ So ngay nam vien: %d x 15000 = %d VND",date,date*15000);
printf("\n\n+ Tien thuoc: %d VND",money);
printf("\n\n+ Tien phau thuat(neu co): %d VND",tien);
printf("\n\n+ Tong so tien chua tinh the bao hiem: %.2f VND",T);
switch (the)
{
case 'G':
case 'g':
{
g++;
TT=T*0.3;
printf("\n\n+ Loai the: Gold");
printf("\n\n\tSo tien phai thanh toan la: %.2f x 30%% = %.2f VND",T,TT);
}
break;
case 'S':
case 's':
{
s++;
TT=T*0.5;
printf("\n\n+ Loai the: Silver");
printf("\n\n\tSo tien phai thanh toan la: %.2f x 50%% = %.2f VND",T,TT);
}
break;
case 'C':
case 'c':
{
c++;
TT=T*0.7;
printf("\n\n+ Loai the: Citizen");
printf("\n\n\tSo tien phai thanh toan la: %.2f x 70%% = %.2f VND",T,TT);
}
break;
}
t=T-TT;
if (t>hix)
hix=t;
i++;
sum=sum+TT;
    printf("\n\n\t*Thoat(Y/N)?: ");
    getchar();
    scanf("%c",&e1);
printf("\n\n=======================================================");
    if (e1=='y')
break;
    }
}

printf("\n\t\t\tQUAN LI BENH NHAN");
printf("\n\n\tMENU");
printf("\n\n1. Nhap thong tin benh nhan.");
printf("\n\n2. Bao cao thong ke.");
printf("\n\n3. Thoat chuong trinh.");
printf("\n\n\t* Nhap lua chon: ");
getchar();
scanf("%c",&choice1);

case '2':
{
printf("\n\n=======================================================");
printf("\n\n\t\t\t\tBAO CAO THONG KE");
printf("\n\n* Tong so benh nhan: %d",i);
printf("\n\n* Tong so tien thu duoc: %.2f VND",sum);
printf("\n\n* So the bao hiem duoc su dung: %d",g+s+c);
printf("\n\n+ Loai GOLD: %d",g);
printf("\n\n+ Loai SILVER: %d",s);
printf("\n\n+ Loai CITIZEN: %d",c);
printf("\n\n* So tien duoc huong loi nhieu nhat tu bao hiem: %f VND",hix);
}
printf("\n\n\t* Thoat(Y/N)?: ");
getchar();
scanf("%c",&e);
printf("\n\n=======================================================");
printf("\n\t\t\tQUAN LI BENH NHAN");
printf("\n\n\tMENU");
printf("\n\n1. Nhap thong tin benh nhan.");
printf("\n\n2. Bao cao thong ke.");
printf("\n\n3. Thoat chuong trinh.");
printf("\n\n\t* Nhap lua chon: ");
getchar();
scanf("%c",&choice1);

case '3':
{
printf("\n\n\n\t\t    Ban da thoat chuong trinh.");
printf("\n\n\n\t\t\tThank for your using!");printf("\n\n\n");
}
break;
}
return 0;
getch();
}
Woodyx
Woodyx

Tổng số bài gửi : 26
Points : 35
Join date : 27/09/2010
Age : 31
Đến từ : Hà nội pro

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by myname2 09/04/11, 11:38 am

@Sáng: Nhưng mà để cập nhật tên vào biến xâu thì phải dùng strcp cảu string.h chứ :-?
myname2
myname2

Tổng số bài gửi : 66
Points : 90
Join date : 27/09/2010
Age : 31
Đến từ : Hà Nội

https://facebook.com/tuanhai

Về Đầu Trang Go down

Week7(Full) Empty Re: Week7(Full)

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết