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
Week 13 (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
Week 13 (Full) I_icon_minitime03/05/13, 09:47 pm by ictk56

» Đề nghị sát nhập 2 diễn đàn
Week 13 (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
Week 13 (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!!!
Week 13 (Full) I_icon_minitime16/11/11, 06:17 pm by asakurayo

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

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

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

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


Week 13 (Full)

2 posters

Go down

Week 13 (Full) Empty Week 13 (Full)

Bài gửi by haidang001 12/05/11, 10:53 pm

(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)
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 So good.
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 So good

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! 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

Week 13 (Full) Empty Re: Week 13 (Full)

Bài gửi by asakurayo 13/05/11, 12:13 am

sáng chăm thế,thầy mới cho bài lúc sáng mà!
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

Week 13 (Full) Empty Re: Week 13 (Full)

Bài gửi by asakurayo 13/05/11, 12:15 am

trâu です hihi:)
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

Week 13 (Full) Empty Re: Week 13 (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