Latest topics
Similar topics
Week7(Full)
+3
Tung_tobe
myname2
haidang001
7 posters
Trang 1 trong tổng số 1 trang
Week7(Full)
Đã đượ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 ).
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.
Bài 2: bank
Bài 3: là phần mở rộng của bài 2
Bài 4: hospital
Bài 5:(khó + dài) hospitalhard
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:
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:
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).
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.
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 ý . 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 .
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 .
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
Bài 2: bank
Bài 3: bank2
Bài 4: hospital
Bài 5: hospitalhard
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!
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 ).
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 ý . 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 .
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 .
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!
Re: Week7(Full)
Đã 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
=======================
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!
=======================
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!
Re: Week7(Full)
đế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 (
Tung_tobe- Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010
Re: Week7(Full)
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
Re: Week7(Full)
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....
/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- Tổng số bài gửi : 38
Points : 62
Join date : 27/12/2010
Age : 32
Đến từ : hai duong
Re: Week7(Full)
cai warning ay ko sao dau, ay cu' chay nhu bt di
xlKD- Tổng số bài gửi : 53
Points : 62
Join date : 27/09/2010
Age : 32
Re: Week7(Full)
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 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- Tổng số bài gửi : 31
Points : 37
Join date : 04/10/2010
Age : 32
Re: Week7(Full)
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
=======================
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!
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!
Re: Week7(Full)
ở 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
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!!!
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
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!!!
- 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- Tổng số bài gửi : 26
Points : 35
Join date : 27/09/2010
Age : 32
Đến từ : Hà nội pro
Re: Week7(Full)
@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ứ :-?
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
06/02/14, 11:10 am by sshin_conan
» các bạn/anh/chị cho hỏi đề thi giải tích 1
03/05/13, 09:47 pm by ictk56
» Đề nghị sát nhập 2 diễn đàn
18/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
17/02/12, 11:43 pm by michiosatoo
» mình có câu này, mong các bạn dịch giúp!!!
16/11/11, 06:17 pm by asakurayo
» nho forum chut
15/11/11, 11:29 am by asakurayo
» CS 1.6 MAP MAKER
15/11/11, 07:55 am by asakurayo
» ubuntu-win
12/10/11, 05:46 pm by darklord226
» diễn đàn hedspi k56
11/10/11, 09:41 pm by lakazai