Latest topics
Similar topics
Week 13 (Full)
2 posters
Trang 1 trong tổng số 1 trang
Week 13 (Full)
(NHắn hỏi: ae đi sinh hoạt công dân vui vẻ không?;)) )
Final struggle.
Bài cuối cùng, tạm thời chia tay với series Cintro.
Nhằm tạo hình ảnh tốt với sinh viên, thầy chia tay ae với số lượng bài bất ngờ.
Số lượng: 2 bài(s).
Phần 1: Đề bài.
Bài 1: student(Quản lý sinh viên)
Bài 2: exam (giả lập thi trắc nghiệm)
Phần 2: Hint (gợi ý)
Do đã học khá đầy đủ cấu trúc dữ liệu cũng như cú pháp C. Thế nên bài lần này yêu cầu khá khắt khe về việc trình bày cũng như chắc năng chương trình.
Bài 1: student (quản lý sv)
1. Bài làm cần đủ ít nhất 4 thao tác: thêm, xóa, sửa, và . . .thoát .
2. Phần xóa + sửa, chú ý khi số lượng sv == 0.
3. Thống nhất về cấu trúc bài làm, nếu không sẽ gặp trục trặc khi hỏi người dùng sv cần được xóa hay sửa.
Bài 2: exam(thi trắc nghiệm)
Hình thức: Bài làm để dạng menu, viết cho đẹp để cuối kì kiếm điểm cao cao.
Nội dung: No tip
Phần 3: code
Những bài đề ngắn, tip ngắn, thì code lại trâu. Do là final struggle, Koltec code khá cẩn thận (bài student).
vẫn lại lưu ý cũ: Koltec の code hoàn toàn mang tính chất tham khảo, chưa dám chắc đúng hết. Có gì ae góp ý hộ.
Trên trang web http://www.haidang001.tk, có đầy đủ code từ week1. Ae lên tham khảo.
Bài 1: student (quản lý sv)
Bài 2: exam (thi trắc nghiệm)
Thắc mắc nhiệt tình. S_have fun!
Final struggle.
Bài cuối cùng, tạm thời chia tay với series Cintro.
Nhằm tạo hình ảnh tốt với sinh viên, thầy chia tay ae với số lượng bài bất ngờ.
Số lượng: 2 bài(s).
Phần 1: Đề bài.
Bài 1: student(Quản lý sinh viên)
- Code:
Write a student management program using this structure:
typedef struct
{
char id[6];
char name[31];
float grade;
char classment;
}
student;
Students are classified according to their grade in respect to this criteria:
- from 9 to 10: A (Excellent)
- from 8 to 9: B (Good)
- from 6.5 to 8: C (Medium)
- < 6.5: D (Bad)
Bài 2: exam (giả lập thi trắc nghiệm)
- Code:
Multi choice Exam program
Your mission is to develop a multiple choice exam program. The design of a question is as follow:
- Question: text data contain question.
- Ans1: First answer.
- Ans2: Second answer.
- Ans3: Third answer.
- Corr: int - correct ans.
You create an exam of 5 questions and take 5 candidates to do the exam.
Print out the result of each person in increasing order. Number of correct answer each person has made.
Phần 2: Hint (gợi ý)
Do đã học khá đầy đủ cấu trúc dữ liệu cũng như cú pháp C. Thế nên bài lần này yêu cầu khá khắt khe về việc trình bày cũng như chắc năng chương trình.
Bài 1: student (quản lý sv)
1. Bài làm cần đủ ít nhất 4 thao tác: thêm, xóa, sửa, và . . .thoát .
2. Phần xóa + sửa, chú ý khi số lượng sv == 0.
3. Thống nhất về cấu trúc bài làm, nếu không sẽ gặp trục trặc khi hỏi người dùng sv cần được xóa hay sửa.
Bài 2: exam(thi trắc nghiệm)
Hình thức: Bài làm để dạng menu, viết cho đẹp để cuối kì kiếm điểm cao cao.
Nội dung: No tip
Phần 3: code
Những bài đề ngắn, tip ngắn, thì code lại trâu. Do là final struggle, Koltec code khá cẩn thận (bài student).
vẫn lại lưu ý cũ: Koltec の code hoàn toàn mang tính chất tham khảo, chưa dám chắc đúng hết. Có gì ae góp ý hộ.
Trên trang web http://www.haidang001.tk, có đầy đủ code từ week1. Ae lên tham khảo.
Bài 1: student (quản lý sv)
- Code:
/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/
/* Write a student management program using this structure:
typedef struct
{
char id[6];
char name[31];
float grade;
char classment;
}
student;
Students are classified according to their grade in respect to this criteria:
- from 9 to 10: A (Excellent)
- from 8 to 9: B (Good)
- from 6.5 to 8: C (Medium)
- < 6.5: D (Bad)*/
#include <stdio.h>
#define nselect 9
#define nmax 1000
const char pname[100] = "Student manager v1.0";
typedef struct
{
char id[100], name[50], class; //note: maxsize of id is 7
int nid;
double grade;
} student_t;
void menu(), rmenu(), add(student_t[], int*), cp(char[], char[], int, int), show(student_t[], int), delete(student_t[], int*), reset(int*), edit(student_t[], int), query(student_t[], int), about(), clquery(student_t[], int);
char select(), vquit();
int check(char[]), classcount(student_t[], int, char);
main()
{
char quit = 'N', s;
student_t a[nmax + 1];
int n = 0;
do
{
menu();
s = select();
switch (s)
{
case '1':
add(a, &n);
rmenu();
break;
case '2':
delete(a, &n);
rmenu();
break;
case '3':
edit(a, n);
rmenu();
break;
case '4':
show(a, n);
rmenu();
break;
case '5':
query(a, n);
rmenu();
break;
case '6':
clquery(a, n);
rmenu();
break;
case '7':
reset(&n);
rmenu();
break;
case '8':
about();
rmenu();
break;
case '9':
quit = vquit();
break;
};
}
while (quit != 'Y');
printf("\nS_have fun! :)\n");
return 0;
}
void clquery(student_t a[], int n)
{
int i, nfound = 0;
char ans[100], t;
printf("Enter classment to query: ");
gets(ans);
t = toupper(ans[0]);
printf("------------------------------------------------------------------\n");
printf("|%-4s|%-4s|%-30s|%-8s|%-5s|%-9s|\n", "ORD", "ORD*", "Name", "ID", "Grade", "Classment");
printf("------------------------------------------------------------------\n");
for(i = 1; i <= n; i++)
if (a[i].class == t)
printf("|%-4d|%-4d|%-30s|%-8s|%-5.2lf|%-9c|\n", ++nfound, i, a[i].name, a[i].id, a[i].grade, a[i].class);
printf("------------------------------------------------------------------\n");
printf("Note: ORD*- order in main list\n\n");
return;
}
void about()
{
printf("\t%s\n", pname);
printf("Was created by haidang001 (tm) (@yahoo.com)\n");
printf("\nAuthor 's information:\n");
printf("\t%-10s: %s\n", "Name", "koltec (koltec haidang)");
printf("\t%-10s: %s\n", "Email", "tranvansangk41@gmail.com");
printf("\t%-10s: %s\n", "Yahoo", "haidang001");
printf("\t%-10s: %s\n", "Skype", "haidang001");
printf("\t%-10s: %s\n ", "Phone", "(+84) 982 802 454");
printf("\t%-10s: %s\n", "Facebook", "http://www.facebook.com/haidang001");
printf("\t%-10s: %s\n", "Website", "http://www.haidang001.tk");
printf("\t\nS_have fun! :)\n");
return;
}
void query(student_t a[], int n)
{
int t, i, nfound = 0;
printf("Enter student 's ID to query: ");
scanf("%d", &t);
getchar();
printf("------------------------------------------------------------------\n");
printf("|%-4s|%-4s|%-30s|%-8s|%-5s|%-9s|\n", "ORD", "ORD*", "Name", "ID", "Grade", "Classment");
printf("------------------------------------------------------------------\n");
for(i = 1; i <= n; i++)
if (a[i].nid == t)
printf("|%-4d|%-4d|%-30s|%-8s|%-5.2lf|%-9c|\n", ++nfound, i, a[i].name, a[i].id, a[i].grade, a[i].class);
printf("------------------------------------------------------------------\n");
printf("Note: ORD*- order in main list\n\n");
return;
}
void edit(student_t a[], int n)
{
if (n == 0)
{
printf("Database is empty!\n");
return;
};
int t;
char ans[100];
double temp;
do
{
printf("Enter student number to edit: ");
scanf("%d", &t);
getchar();
} while ((t < 1) || (t > n));
printf("\nEnter new details:\n");
printf("\tName (%s): ", a[t].name);
gets(a[t].name);
do
{
printf("\tID (%s): ", a[t].id);
gets(ans);
} while (check(ans) != 1);
cp(a[t].id, ans, 1, 8);
a[t].nid = atoi(a[t].id);
do
{
printf("\tGrade (%-.2lf): ", a[t].grade);
scanf("%lf", &temp);
getchar();
} while ((temp < 0) || (temp > 10));
a[t].grade = temp;
if (temp >= 9)
a[t].class = 'A';
else
if (temp >= 8)
a[t].class = 'B';
else
if (temp >= 6.5)
a[t].class = 'C';
else
a[t].class = 'D';
}
void reset(int *n)
{
char ans[100];
do
{
printf("Are you realy want to delete all records?(Y/N)");
gets(ans);
ans[0] = toupper(ans[0]);
} while ((ans[0] != 'Y') && (ans[0] != 'N'));
if (ans[0] == 'Y')
*n = 0;
return;
}
void delete(student_t a[], int *n)
{
if (*n == 0)
{
printf("Database is empty!\n");
return;
};
int i, t;
char ans[100];
do
{
printf("Enter student number to delete: ");
scanf("%d", &t);
getchar();
} while ((t < 1) || (t > *n));
printf("\nStudent 's information:\n");
printf("\t%-20s: %d\n", "Order in main list", t);
printf("\t%-20s: %s\n", "Name", a[t].name);
printf("\t%-20s: %s\n", "ID", a[t].id);
printf("\t%-20s: %-5.2lf\n", "Grade", a[t].grade);
printf("\t%-20s: %c\n\n", "Classment", a[t].class);
do
{
printf("Are you sure to delete this student from database? (Y/N)");
gets(ans);
ans[0] = toupper(ans[0]);
} while ((ans[0] != 'Y') && (ans[0] != 'N'));
if (ans[0] == 'Y')
{
for(i = t; i < *n; i++)
a[i] = a[i + 1];
(*n) --;
};
return;
}
void show(student_t a[], int n)
{
int i;
char c;
printf("--------------------------------------------------------------\n");
printf("|%-4s|%-30s|%-8s|%-5s|%-9s|\n", "ORD", "Name", "ID", "Grade", "Classment");
printf("--------------------------------------------------------------\n");
for(i = 1; i <= n; i++)
printf("|%-4d|%-30s|%-8s|%-5.2lf|%-9c|\n", i, a[i].name, a[i].id, a[i].grade, a[i].class);
printf("--------------------------------------------------------------\n\n");
printf("--------------------\n");
printf("|%-10s|%-7s|\n", "Classment", "Number");
printf("--------------------\n");
for(c = 'A'; c <= 'D'; c++)
printf("|%-10c|%-7d|\n", c, classcount(a, n, c));
printf("--------------------\n\n");
return;
}
int classcount(student_t a[], int n, char c)
{
int res = 0, i;
for(i = 1; i <= n; i++)
if (a[i].class == c)
res++;
return res;
}
void add(student_t a[], int *n)
{
char ans[1000];
double temp;
(*n)++;
printf("Enter new student 's name: ");
gets(a[*n].name);
do
{
printf("Enter student 's id 's number (8 digits): ");
gets(ans);
} while (check(ans) != 1);
cp(a[*n].id, ans, 1, 8);
a[*n].nid = atoi(a[*n].id);
do
{
printf("Enter new student 's grade (0 -> 10): ");
scanf("%lf", &temp);
getchar();
} while ((temp < 0) || (temp > 10));
a[*n].grade = temp;
if (temp >= 9)
a[*n].class = 'A';
else
if (temp >= 8)
a[*n].class = 'B';
else
if (temp >= 6.5)
a[*n].class = 'C';
else
a[*n].class = 'D';
return;
}
int check(char a[])
{
char *x = a;
int i;
for(i = 1; i <= 8; i++)
{
if ((*x < '0') || (*x > '9'))
return 0;
x++;
};
if (*x != '\0')
return 0;
else
return 1;
}
void cp(char a[], char b[], int st, int n)
{
char *i = a, *j = b;
int t;
for(t = 1; t < st; t++)
j++;
for(t = 1; t <= n; t++)
*i++ = *j++;
*i = '\0';
return;
}
void menu()
{
printf("\t\t %s\n", pname);
printf("\tCopyrigt (c) haidang001 (tm) (@yahoo.com)\n");
printf("\t\t S_have fun! :)\n\n");
printf("\t1. Add new student\n");
printf("\t2. Delete a student record\n");
printf("\t3. Edit student information\n");
printf("\t4. Show details\n");
printf("\t5. Query by student 's id\n");
printf("\t6. Query by classment\n");
printf("\t7. Reset list\n");
printf("\t8. About\n");
printf("\t9. Quit\n\n");
return;
}
char select()
{
char ans[100];
do
{
printf("Enter your selection: ");
gets(ans);
}
while ((ans[0] < '1') || (ans[0] - '0' > nselect));
printf("\n");
return ans[0];
}
char vquit()
{
char ans[100];
do
{
printf("Do you really want to exit? (Y/N)");
gets(ans);
ans[0] = toupper(ans[0]);
}
while ((ans[0] != 'Y') && (ans[0] != 'N'));
return ans[0];
}
void rmenu()
{
char ans[100];
printf("\nPress Enter to return to main menu . . .");
gets(ans);
return;
}
//S_have fun! :)
Bài 2: exam (thi trắc nghiệm)
- Code:
/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*S_have fun! :)*/
/* Multi choice Exam program
Your mission is to develop a multiple choice exam program. The design of a question is as follow:
- Question: text data contain question.
- Ans1: First answer.
- Ans2: Second answer.
- Ans3: Third answer.
- Corr: int - correct ans.
You create an exam of 5 questions and take 5 candidates to do the exam.
Print out the result of each person in increasing order. Number of correct answer each person has made.*/
#include <stdio.h>
#define nselect 4
#define nques 5
#define nchoice 3
#define ncandidate 5
typedef struct
{
char question[1000], ans[nchoice + 1][1000];
int correct;
} ques_t;
typedef struct
{
int id, res;
} cand_t;
void menu(), rmenu(), init(ques_t[], cand_t[]), take(ques_t[], cand_t[]), view(cand_t[]);
char select(), vquit();
main()
{
char quit = 'N', s;
cand_t a[ncandidate + 1];
ques_t ques[nques + 1];
init(ques, a);
do
{
menu();
s = select();
switch (s)
{
case '1':
take(ques, a);
rmenu();
break;
case '2':
view(a);
rmenu();
break;
case '3':
init(ques, a);
rmenu();
break;
case '4':
quit = vquit();
break;
};
}
while (quit != 'Y');
printf("\nS_have fun! :)\n");
return 0;
}
void view(cand_t a[])
{
int i, j;
cand_t temp;
for(i = 1; i <= ncandidate; i++)
for(j = i + 1; j <= ncandidate; j++)
if (a[i].res > a[j].res)
{
temp = a[i]; a[i] = a[j]; a[j] = temp;
};
printf("Number each candidate in incresing order:\n");
for(i = 1; i <= ncandidate; i++)
printf("\t%d: Candidate number %2d with %d point(s)\n", i, a[i].id, a[i].res);
return;
}
void take(ques_t ques[], cand_t a[])
{
int i, j, t, k;
for(i = 1; i <= ncandidate; i++)
{
printf("Candidate number %d 's phase:\n", i);
for(j = 1; j <= nques; j++)
{
printf("\tQuestion number %d:\n", j);
for(k = 1; k <= nchoice; k++)
printf("\t\tAnswer %d: %s\n", k, ques[j].ans[k]);
do
{
printf("\tEnter your answer: ");
scanf("%d", &k);
getchar();
} while ((k <= 0) || (k > nchoice));
if (k == ques[j].correct)
a[i].res++;
printf("\n");
};
printf("\n");
};
return;
}
void init(ques_t ques[], cand_t a[])
{
int i, j;
for(i = 1; i <= ncandidate; i++)
{
a[i].res = 0;
a[i].id = i;
};
for(i = 1; i <= nques; i ++)
{
printf("Enter question number %2d: ", i);
gets(ques[i].question);
for(j = 1; j <= nchoice; j++)
{
printf("\tAnswer number %2d: ", j);
gets(ques[i].ans[j]);
};
do
{
printf("Enter correct answer number: ");
scanf("%d", &ques[i].correct);
getchar();
}
while ((ques[i].correct <= 0) || (ques[i].correct > nchoice));
printf("\n");
};
return;
}
void menu()
{
printf("\t Multi choice Exam stimulator v1.0\n");
printf("\tCopyrigt (c) haidang001 (tm) (@yahoo.com)\n");
printf("\t\t S_have fun! :)\n\n");
printf("\t1. Take exam\n");
printf("\t2. View statistic\n");
printf("\t3. Reenter question\n");
printf("\t4. Quit\n\n");
return;
}
char select()
{
char ans[100];
do
{
printf("Enter your selection: ");
gets(ans);
}
while ((ans[0] < '1') || (ans[0] - '0' > nselect));
printf("\n");
return ans[0];
}
char vquit()
{
char ans[100];
do
{
printf("Do you really want to exit? (Y/N)");
gets(ans);
ans[0] = toupper(ans[0]);
}
while ((ans[0] != 'Y') && (ans[0] != 'N'));
return ans[0];
}
void rmenu()
{
char ans[100];
printf("\nPress Enter to return to main menu . . .");
gets(ans);
return;
}
//S_have fun! :)
Thắc mắc nhiệt tình. S_have fun!
Re: Week 13 (Full)
sáng chăm thế,thầy mới cho bài lúc sáng mà!
asakurayo- Tổng số bài gửi : 38
Points : 62
Join date : 27/12/2010
Age : 32
Đến từ : hai duong
Re: Week 13 (Full)
trâu です hihi:)
asakurayo- Tổng số bài gửi : 38
Points : 62
Join date : 27/12/2010
Age : 32
Đến từ : hai duong
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