Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Chuẩn hóa việc nhập dữ liệu trên console.

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Chuẩn hóa việc nhập dữ liệu trên console.

    Đối với C stand thì việc nhập cũng tương đối khá vật vả các bạn nhỉ

    scanf thì nhập phải dùng đến chuỗi đặc tả nè, toán từ & nè, rồi lại có mấy cái đặc biệt như
    %s thì dùng cách phân định trường nên ko nhập được cách
    ai biết thì dùng "%^\n" để khắc phục.Ai ko biết thì phải phải dùng gets() để nhập.

    Dùng gets() thì ai cũng biết rồi. Cũng ổn, nhưng tìm hiểu thêm phát nữa thì nó lại trôi stdin. lại phải fflush. Rồi fflush biết rồi. ko lo nữa. thì lại lo với tràn dữ liệu
    C Code:
    1. char xau[5];
    2. gets(xau);
    lúc nhập mà lại nhập 29 30 kí tự thì lại tràn dữ liệu đi lung tung.
    thế là chạy sang fgets().................

    rồi đến scanf số nguyên, số thực. nếu scanf("%d") thì chẳn may nhập nhầm kí tự a vào thì trôi luôn. tèo mệt lắm. làm sao đây.

    Đến luc bài toán yêu cầu nhập sai thì nhập lại. mỗi lần nhập lại thì lại thêm 1 đống chữ trên màn hình, clrscr() thì lại xoá cả màn hình đi
    .......................................

    ôi trời ơi rất nhiều nhiều nhiều thứ đau đầu......

    Hôm nay langman giới thiệu 1 vài tư tưởng mod việc nhập để nó nhẹ nhàng hơn.


    Vâng thưa các bạn, đầu tiên chúng ta sẽ nên biết đôi chút về stdin và luồng dữ liệu.
    Các bạn thì nghe đến stdin nhiều rồi, stdin là 1 luồng dữ liệu vào, có kiểu dữ liệu là FILE, nên cũng được hiểu là FILE. bàn phím , máy in , màn hình theo công nghệ tung tin thì nó cũng là 1 FILE.........
    ở trong stdin thì toàn bộ dữ liệu là dạng text mà thôi, bạn gõ vào 1 số thì trong đó có 1 chuỗi số, đến lúc bạn lấy ra theo %s %d %c .... thì nó mới chuyển đổi lại và lưu vào trong biến của bạn
    nếu vậy thay vì để nó lấy và chuyển đổi, tôi sẽ tự lấy cho mình và chuyển đổi, ko cần đến nó nữa.
    ok ?



    tôi nói nhiều quá rồi, vào vấn đề nhé

    Chú ý: để tránh trung lặp, tôi post 1 số hàm giống nhau, ít liên quan lên đây trước, bạn nào thấy thiếu hàm nào đó thì copy ở trên này vô code dưới rồi chạy. Đối với Turbo C 3.0 hoặc Borland C 3.01 thì ko cần mấy hàm này mà chỉ cần include dos.h vào là được

    Visual C++ Code:
    1. //code for dev-c, visual c
    2. #include "windows.h"
    3. #define BLACK 0
    4. #define LIGHTGRAY 8
    5. #define BLUE 9
    6. #define GREEN 10
    7. #define RED 12
    8. #define YELLOW 14
    9. #define WHITE 15
    10. void textcolor(WORD color)
    11. {
    12.     HANDLE hConsoleOutput;
    13.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    14.  
    15.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    16.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    17.  
    18.     WORD wAttributes = screen_buffer_info.wAttributes;
    19.     color &= 0x000f;
    20.     wAttributes &= 0xfff0;
    21.     wAttributes |= color;
    22.  
    23.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    24. }
    25. void textbackground(WORD color)
    26. {
    27.     HANDLE hConsoleOutput;
    28.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    29.  
    30.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    31.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    32.  
    33.     WORD wAttributes = screen_buffer_info.wAttributes;
    34.     color &= 0x000f;
    35.     color <<= 4;
    36.     wAttributes &= 0xff0f;
    37.     wAttributes |= color;
    38.  
    39.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    40. }
    41. void gotoxy(short x,short y)
    42. {
    43.     HANDLE hConsoleOutput;
    44.     COORD Cursor_an_Pos = { x,y};
    45.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    46.     SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
    47. }
    48. void clrscr(int c=BLACK,int top=0,int down=24)
    49. {
    50.     textbackground(c);
    51.     gotoxy(0,top);
    52.     for(int i=top;i<down;i++)
    53.         printf("                                                                                 ");
    54.     gotoxy(0,top);
    55. }
    56. void ancontro()
    57. {
    58.     HANDLE hOut;
    59.     CONSOLE_CURSOR_INFO ConCurInf;
    60.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    61.     ConCurInf.dwSize = 10;
    62.     ConCurInf.bVisible = FALSE;
    63.     SetConsoleCursorInfo(hOut,&ConCurInf);
    64. }
    65. void hiencontro()
    66. {
    67.     HANDLE hOut;
    68.     CONSOLE_CURSOR_INFO ConCurInf;
    69.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    70.     ConCurInf.dwSize = 10;
    71.     ConCurInf.bVisible = TRUE;
    72.     SetConsoleCursorInfo(hOut,&ConCurInf);
    73. }


    Nhập vào điểm thi của 1 học sinh :
    mô tả theo thực tế: điểm thi của 1 học sinh thì chỉ có thể từ 1 đến 10 là tối đa rồi (theo biểu điểm 10). và là số thực
    nếu vậy mục đích , yêu cầu:
    + nếu nhập 2->9 thì sẽ auto-fill thêm dấu dot(.) vào
    + nếu nhập 1 thì sẽ đợi. sau khi nhập 1 mà nhập 0 thì ko cho nhập tiếp, chờ ấn enter hoặc chờ xoá. nếu nhập . thì như các th trên
    + ko bị trôi trong bất kì trường hợp nào, ko vượt quá khỏi khả năng lưu trữ của phần thập phân, ko bị trôi nhập....

    code demo
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. double nhap()
    5. {
    6.     char ch='a',xau[10],i=0,flag=1;
    7.     while(ch!=0xD||i==0)
    8.     {
    9.         ch=getch();
    10.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    11.         if (i>=7||(*xau=='1'&&(i==2&&xau[1]=='0')||(i==1&&ch!='.'&&ch!='0'))) continue;
    12.         if (ch=='.'&&flag) flag=0; else if (ch<'0'||ch>'9') continue;
    13.         if (i==0&&ch!='1') xau[i++]=ch,xau[i++]='.',printf("%c.",ch),flag=0; else xau[i++]=ch,printf("%c",ch);
    14.     }
    15.     xau[i]=0;printf("\n");
    16.     return atof(xau);
    17. }
    18. void main()
    19. {
    20.     double b=nhap();
    21.     getch();
    22. }

    ứng dụng
    đề bài :Xây dựng hàm dùng để tính điểm trung bình của một học sinh dựa vào điểm thi giữa kì và điểm thi cuối kì. Điểm trung bình được tính theo công thức Điểm trung bình = Điểm giữa kì * 0.3 + Điểm cuối kì * 0.7.
    Viết chương trình có sử dụng hàm vừa xây dựng. Chương trình sẽ yêu cầu người dùng nhập vào điểm thi giữa kì, điểm thi cuối kì, sau đó gọi hàm tính điểm trung bình ở trên để nhận về kết quả điểm trung bình. Cuối cùng chương trình sẽ in ra kết quả điểm trung bình.

    full code:
    Visual C++ Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "stdlib.h"
    4. #include "windows.h"
    5. //thêm code nhập, textcolor, ancontro ở bên trên
    6. double tinh(double m,double e)
    7. {
    8.     return m*.3+e*.7;
    9. }
    10. int main()
    11. {
    12.     SetConsoleTitle("Bui Tan Quang - C Programming Language - Assignment 2");
    13.     double m,n;
    14.     textcolor(10);printf("Nhap vao diem giua ki : ");
    15.     textcolor(14);m=nhap();
    16.     textcolor(10);printf("Nhap vao diem cuoi ki : ");
    17.     textcolor(14);n=nhap();
    18.     ancontro();
    19.     textcolor(12);printf("Diem thi cuoi ki la   : %.5lf",tinh(m,n));
    20.     getch();
    21.     return 0;
    22. }

    Nhập vào chuỗi kí tự
    C Code:
    1. //Nhap vao 1 xau co do dai toi da la max
    2. void nhapchuoi(char *xau,int max)
    3. {
    4.     char ch='a',i=0;
    5.     while(ch!=13||i==0)
    6.     {
    7.         ch=getch();
    8.         if (ch==8&&i) printf("\b \b"),i--;
    9.         if (!(isalnum(ch)||strchr(" ?.\":`~!@#$\%^&*()",ch))||i>=max-1) continue;
    10.         xau[i++]=ch;
    11.         printf("%c",ch);
    12.     }
    13.     xau[i]=NULL;
    14.     printf("\n");
    15. }

    Nhập vào họ tên
    C Code:
    1. //Nhap ho ten
    2. void nhapht(char *xau,int max)
    3. {
    4.     char ch='a',i=0;
    5.     while(ch!=13||i==0)
    6.     {
    7.         ch=getch();
    8.         if (ch==8&&i) printf("\b \b"),i--;
    9.         if ((!(isalpha(ch)||ch==' '))||i>=max-1||(i&&ch==' '&&xau[i-1]==' ')||(i==0&&ch==' ')) continue;
    10.         if (i==0||xau[i-1]==' ') ch=toupper(ch);
    11.         xau[i++]=ch;
    12.         printf("%c",ch);
    13.     }
    14.     if (xau[i-1]==' ') xau[i-1]=NULL;
    15.         else xau[i]=NULL;
    16.     printf("\n");
    17. }
    Nhập vào ngày tháng năm
    C Code:
    1. //nhap ngay
    2. int nhapngay()
    3. {
    4.     char ch='a',i=0,xau[3]="";
    5.     while(ch!=13||i==0)
    6.     {
    7.         ch=getch();
    8.         if (ch==8&&i) printf("\b \b"),i--;
    9.         if ((!isdigit(ch))||i>1||(i==1&&xau[0]>'3')||(xau[0]=='3'&&i==1&&ch>'1')) continue;
    10.         xau[i++]=ch;
    11.         printf("%c",ch);
    12.     }
    13.     xau[i]=NULL;
    14.     printf("\n");
    15.     return atoi(xau);
    16. }
    C Code:
    1. //nhap thang
    2. int nhapthang()
    3. {
    4.     char ch='a',i=0,xau[3]="";
    5.     while(ch!=13||i==0)
    6.     {
    7.         ch=getch();
    8.         if (ch==8&&i) printf("\b \b"),i--;
    9.         if ((!isdigit(ch))||i>1||(i==1&&(xau[0]>'1'||(xau[0]=='1'&&ch>'2')))||(i==0&&ch=='0')) continue;
    10.         xau[i++]=ch;
    11.         printf("%c",ch);
    12.     }
    13.     xau[i]=NULL;
    14.     printf("\n");
    15.     return atoi(xau);
    16. }

    C Code:
    1. //nhap nam
    2. int nhapnam()
    3. {
    4.     char ch='a',xau[5]="",i=0;
    5.     while(!(ch==13&&i==4))
    6.     {
    7.         ch=getch();
    8.         if (ch==8&&i)
    9.             switch(i)
    10.                 {
    11.                 case 2: printf("\b\b  \b\b");i-=2;break;
    12.                 case 3: if (xau[0]=='2')printf("\b\b\b   \b\b\b"),i-=3;
    13.                         else printf("\b \b"),i--;
    14.                             break;
    15.                 default:printf("\b \b");i--;
    16.                 }
    17.         if ((!isdigit(ch))||i>3) continue;
    18.         if (i==0) switch(ch)
    19.                 {
    20.                     case '1': xau[i++]='1';xau[i++]='9';printf("19");break;
    21.                     case '2': xau[i++]='2';xau[i++]='0';xau[i++]='0';printf("200");break;
    22.                     default:continue;
    23.                 }
    24.         else
    25.         {
    26.             xau[i++]=ch;
    27.             printf("%c",ch);
    28.         }
    29.     }
    30.     xau[i]=0;printf("\n");
    31.     return atoi(xau);
    32. }


    Nhập vào 1 số thực
    C Code:
    1. double nhapthuc()
    2. {
    3.     char ch='a',xau[10],i=0,flag=1;
    4.     while(ch!=0xD||i==0)
    5.     {
    6.         ch=getch();
    7.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    8.         if (ch=='.'&&flag) flag=0; else if ((!((i==0&&ch=='-')||(ch>='0'&&ch<='9')))||i>7) continue;
    9.         xau[i++]=ch,printf("%c",ch);
    10.     }
    11.     xau[i]=0;printf("\n");
    12.     return atof(xau);
    13. }



    Nhập vào 1 số nguyên có dấu + Nhập vào mảng 1 chiều
    cái này thì các bạn chạy thử code sẽ biết
    đề bài: Xây dựng chương trình nhập vào một dãy số thực gồm n phần tử, sau đó in ra số lượng phần tử dương của dãy.
    code:
    Visual C++ Code:
    1. //thêm textcolor, textbackground, gotoxy,ancontro vao nha
    2. #include "stdio.h"
    3. #include "conio.h"
    4. #include "windows.h"
    5. void vietpt(int *a,int i,int bg=8,int c=WHITE)
    6. {
    7.     textbackground(bg);
    8.     textcolor(c);
    9.     gotoxy(8*i,0);printf("%5d",a[i]);
    10. }
    11. void nhapn(int &n)
    12. {
    13.     char ch='a',i=0;
    14.     gotoxy(0,3);
    15.     textcolor(GREEN);
    16.     printf("Nhap vao n :  ");
    17.     textcolor(YELLOW);
    18.     while(ch<'0'||ch>'9') ch=getch();
    19.     if (ch<'3')ch='3';
    20.     printf("%c",ch);
    21.     n=ch-'0';  
    22. }
    23. int nhapso()
    24. {
    25.     char ch='a',xau[10],i=0;
    26.     while(ch!=0xD||i==0)
    27.     {
    28.         ch=getch();
    29.         if (ch==0x8&&i) --i,printf("\b \b");
    30.         if ((!((i==0&&ch=='-')||(ch>='0'&&ch<='9')))||i>5) continue;
    31.         xau[i++]=ch;
    32.         printf("%c",ch);
    33.     }
    34.     xau[i]=NULL;
    35.     return atoi(xau);
    36. }
    37. void nhap(int *&a,int &n)
    38. {
    39.     nhapn(n);
    40.     a=(int *)malloc(sizeof(int)*n);
    41.     gotoxy(0,0);
    42.     for(int i=0;i<n;i++)
    43.     {
    44.         textbackground(WHITE);
    45.         printf("     ");
    46.         textbackground(BLACK);
    47.         printf("   ");
    48.     }
    49.  
    50.     gotoxy(0,3);textbackground(BLACK);printf("                                                                    ");
    51.     for(int i=0;i<n;i++)
    52.     {
    53.         gotoxy(0,3);textcolor(GREEN);printf("Nhap vao phan tu thu %d cua mang :  ",i+1);
    54.         textcolor(YELLOW);
    55.         a[i]=nhapso();
    56.         vietpt(a,i,WHITE,BLACK);
    57.         textbackground(BLACK);
    58.         gotoxy(0,3);printf("                                                                    ");
    59.     }
    60. }
    61.  
    62. void dem(int *a,int n)
    63. {
    64.     ancontro();
    65.     int dem=0;
    66.     gotoxy(0,3);
    67.     textbackground(BLACK);
    68.     textcolor(GREEN);
    69.     printf("So phan tu nguyen duong trong mang la :  %d",dem);
    70.     for(int i=0;i<n;i++)
    71.     {
    72.         vietpt(a,i,10,13);
    73.         Sleep(500);
    74.         if (a[i]>0)
    75.         {
    76.             vietpt(a,i,10,RED);
    77.             gotoxy(41,3);
    78.             textcolor(RED);
    79.             textbackground(BLACK);
    80.             printf("%d",++dem);
    81.             Sleep(500);
    82.         }
    83.         else vietpt(a,i,WHITE,BLACK);
    84.     }
    85. }
    86. int main()
    87. {
    88.     SetConsoleTitle("Bui Tan Quang - C Programming Language - Assignment 2");
    89.     int *a,n,i;
    90.     nhap(a,n);
    91.     dem(a,n);
    92.     getch();
    93.     return 0;
    94. }

    Nhập vào mảng 2 chiều
    đề bài
    Viết chương trình thao tác với mảng hai chiều có kích thước n x n
    Yêu cầu:
    - Nhập vào kích thước của mảng, sau đó nhập vào từng phần tử của mảng hai chiều (2 đ)
    - In ra mảng hai chiều dưới dạng bảng (1đ)
    - Tìm và in ra giá trị lớn nhất trong mảng hai chiều (2đ)
    - Tính trung bình cộng các phần tử trong mảng (1đ)
    - In ra được thông tin về tính chất đối xứng của mảng hai chiều (2đ) (Tức a[i][j] = a[j][i] với mọi i,j hay không)
    Visual C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. #include <ctype.h>
    5. #include <windows.h>
    6. // thêm các hàm bên trên vào
    7. void viet(char *xau="Quang",int tre=15)
    8. {
    9.     for (int i=0;i<strlen(xau);i++)
    10.         printf("%c",xau[i]),Sleep(tre);
    11. }
    12.  
    13. int nhapnguyen(void)
    14. {
    15.     char xau[20],ch='a',i=0;
    16.     while(ch!=0xD||i==0)
    17.     {
    18.         ch=getch();
    19.         if (ch==0x8) printf("\b \b"),i?i--:0;
    20.         if (!(ch=='-'||(ch>='0'&&ch<='9'))) continue;
    21.         xau[i++]=ch;
    22.         printf("%c",ch);
    23.     }
    24.     xau[i]=0;
    25.     printf("\n");
    26.     return atoi(xau);
    27. }
    28. int nhapso()
    29. {
    30.     //nhap so max 99 min 0
    31.     char ch='a',xau[10],i=0;
    32.     while(ch!=0xD||i==0)
    33.     {
    34.         ch=getch();
    35.         if (ch==0x8&&i) --i,printf("\b \b");
    36.         if ((!(ch>='0'&&ch<='9'))||i>1) continue;
    37.         xau[i++]=ch;
    38.         printf("%c",ch);
    39.     }
    40.     xau[i]=0;
    41.     return atoi(xau);
    42. }  
    43. int nhapmatrix(int matrix[9][9])
    44. {
    45.     int i,j,n,x;
    46.     gotoxy(1,10);printf("Nhap vao so hang cua ma tran vuong : ");
    47.     n=nhapso();
    48.  
    49.     gotoxy(1,10);printf("                                        ");
    50.     if (n>5) n=5;else if (n<2) n=2;
    51.     gotoxy(0,3);
    52.     for (i=0;i<n;i++)
    53.     {
    54.         for (j=0;j<n;j++)
    55.             textbackground(WHITE),printf("     "),textbackground(BLACK),printf("    ");
    56.         printf("\n\n");
    57.     }
    58.     for (i=0;i<n;i++)
    59.         for (j=0;j<n;j++)
    60.         {
    61.             gotoxy(0,15);printf("                                                                       ");
    62.             gotoxy(0,15);printf("Nhap vao matrix[%d][%d] : ",i+1,j+1);
    63.             matrix[i][j]=nhapnguyen();
    64.             gotoxy(2+j*9,3+i*2);
    65.             textbackground(WHITE);textcolor(BLACK);
    66.             printf("%d",matrix[i][j]);
    67.             textbackground(BLACK);textcolor(GREEN);
    68.         }
    69.         gotoxy(0,15);printf("                                                                            ");
    70.         return n;
    71. }
    72. void boidenmatrix(int matrix[9][9],int i, int j,int bg=GREEN,int c=RED)
    73. {
    74.     textbackground(bg);
    75.     textcolor(c);
    76.     gotoxy(0+j*9,3+i*2);printf("     ");
    77.     gotoxy(2+j*9,3+i*2);
    78.     printf("%d",matrix[i][j]);
    79.     textbackground(BLACK);
    80.     textcolor(GREEN);
    81.     Sleep(200);
    82. }
    83. int doixung(int *mang,int n)
    84. {
    85.     for (int i=0;i<n/2;i++)
    86.         if (mang[i]!=mang[n-i-1]) return 0;
    87.     return 1;
    88. }
    89. void bai1()
    90. {
    91.     int a[9][9],i,j,n,max,sum,flag1=1,flag2=1,temp[9];
    92.     double s;
    93.     n=nhapmatrix(a);
    94.     ancontro();
    95.     max=a[0][0];
    96.     sum=0;
    97.     for(i=0;i<n;i++)
    98.         for(j=0;j<n;j++)
    99.         {
    100.             sum+=a[i][j];
    101.             if (max<a[i][j]) max=a[i][j];
    102.         }
    103.         textcolor(YELLOW);
    104.         gotoxy(0,15);viet("a. Gia tri lon nhat mang la : ");printf("%d",max);
    105.         for(i=0;i<n;i++)
    106.             for(j=0;j<n;j++)
    107.                 if (max==a[i][j]) boidenmatrix(a,i,j);
    108.         Sleep(500);textcolor(YELLOW);
    109.         s=double(sum)/n/n;
    110.         gotoxy(0,16);viet("b. Trung binh cong  mang la : ");s==int(s)?printf("%.0f",s):printf("%.3f",s);
    111.         Sleep(500);gotoxy(0,17);viet("c. ");
    112.         int x=4,y=17;
    113.         //kiem tra doi xung
    114.         for (j=0;j<n;j++)
    115.         {
    116.             for (i=0;i<n;i++)
    117.                 temp[i]=a[j][i];
    118.             if (!doixung(temp,n)) {flag1=0;break;}
    119.         }  
    120.         for (i=0;i<n;i++)
    121.         {
    122.             for (j=0;j<n;j++)
    123.                 temp[j]=a[j][i];
    124.             if (!doixung(temp,n)) {flag2=0;break;}
    125.         }
    126.         if (!(flag1||flag2)) viet("Ma tran khong doi xung");
    127.         textcolor(YELLOW);
    128.         if (flag1)
    129.         {
    130.             gotoxy(x,y++);
    131.             viet("Ma tran doi xung doc ");
    132.             if (n&1)
    133.                 for (j=0;j<n;j++)
    134.                     boidenmatrix(a,j,n/2,RED,GREEN);
    135.             else
    136.                 for (j=0;j<2*n-1;j++)
    137.                     gotoxy(9*n/2-2,3+j),printf("%c",179);
    138.         }
    139.         textcolor(YELLOW);
    140.         if (flag2)
    141.         {
    142.             gotoxy(x,y++);
    143.             printf("Ma tran doi xung ngang  ");
    144.             if (n&1)
    145.                 for (i=0;i<n;i++)
    146.                     boidenmatrix(a,n/2,i,RED,GREEN);
    147.             else
    148.                 for (i=0;i<9*n-4;i++)
    149.                     gotoxy(i,2+n),printf("-");
    150.         }
    151.         textcolor(YELLOW);
    152.         if (flag1&&flag2)
    153.         {
    154.             gotoxy(x,y);
    155.             printf("Ma tran co tam doi xung");
    156.             if (n%2==0)
    157.                 textcolor(RED),gotoxy(9*n/2-2,2+n),printf("*");
    158.         }
    159.         gotoxy(0,15);
    160. }
    161.  
    162. void main()
    163. {
    164.  
    165. }

    More : hôm làm cái đề là : trắc nghiệm các mốc thời gian trong lịch sử, thí sinh ghép các đáp an a,b,c,d thành đáp án, có làm cái nhập này nữa
    C Code:
    1. //nhap vao 1 chuoi dap an : chi co the nhap a,b,c,d va ko nhap trung
    2. void nhapdapan(char *xau)
    3. {  
    4.     char ch='a',i=0,temp[5]="abcd";
    5.     while(!(ch==13&&i==4))
    6.     {
    7.         ch=tolower(getch());
    8.         if (ch==8&&i)
    9.         {
    10.             printf("\b \b");
    11.             temp[xau[i-1]-'a']=xau[i-1];
    12.             i--;
    13.         }
    14.         if (ch==' '||!strchr(temp,ch)||i>=4) continue;
    15.         temp[ch-'a']=' ';
    16.         xau[i++]=ch;
    17.         printf("%c",ch);
    18.     }
    19.     xau[i]=NULL;
    20.     printf("\n");
    21. }
    Đã được chỉnh sửa lần cuối bởi langman : 18-07-2010 lúc 03:34 PM. Lý do: update
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Full code các bạn cứ copy về chạy thử cho nhanh:

    Đề bài Code:
    1.                 Assignment 5
    2. Bài 1:
    3. Viết chương trình thao tác với mảng hai chiều có kích thước n x n
    4. Yêu cầu:
    5. -   Nhập vào kích thước của mảng, sau đó nhập vào từng phần tử của mảng hai chiều (2 đ)
    6. -   In ra mảng hai chiều dưới dạng bảng (1đ)
    7. -   Tìm và in ra giá trị lớn nhất trong mảng hai chiều (2đ)
    8. -   Tính trung bình cộng các phần tử trong mảng (1đ)
    9. -   In ra được thông tin về tính chất đối xứng của mảng hai chiều (2đ) (Tức a[i][j] = a[j][i] với mọi i,j hay không)
    10. Bài 2:
    11. Viết một chương trình quản lý máy tính cho một công ty tin học. Thông tin về mỗi máy tính bao gồm:
    12. Mã máy tính: Chuỗi kí tự
    13. Hãng sản xuất: Chuỗi kí tự
    14. Giá bán: Số thực
    15. Tốc độ CPU: số thực   
    16. Viết chương trình thực hiện các nhiệm vụ sau:
    17. -   Nhập vào số lượng máy tính. Sau đó nhập dữ liệu cho từng máy
    18. -   In ra màn hình các máy tính có giá bán dưới 1000 USD
    19. -   Chương trình yêu cầu nhập vào hãng sản xuất, sau đó sẽ in ra các máy tính thuộc hãng sản xuất này.
    20. -   In ra thông tin của máy tính có tốc độ CPU cao nhất, máy tính có tốc độ CPU thấp nhất
    21. Yêu cầu:
    22. -   Xây dựng đúng cấu trúc biểu diễn máy tính (2 đ)
    23. -   Nhập được số lượng máy tính và sau đó là thông tin của từng máy (2đ)
    24. -   In ra được các máy tính có giá bán dưới 1000 USD (2đ).
    25. -   In ra các máy tính thuộc hãng sản xuất được yêu cầu (2 đ)
    26. -   In ra máy tính có tốc độ CPU cao nhất, máy tính có tốc độ CPU thấp nhất (2đ)
    27. -   Có sử dụng hàm để thực hiện chức năng nhập (1 đ)
    28. -   Có sử dụng hàm để thực hiện việc in thông tin của máy tính (1đ)
    code
    Visual C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. #include <ctype.h>
    5. #include <windows.h>
    6.  
    7.  
    8. #define BLACK 0
    9. #define BLUE 9
    10. #define GREEN 10
    11. #define RED 12
    12. #define YELLOW 14
    13. #define WHITE 15
    14. void textcolor(WORD color)
    15. {
    16.     HANDLE hConsoleOutput;
    17.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    18.  
    19.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    20.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    21.  
    22.     WORD wAttributes = screen_buffer_info.wAttributes;
    23.     color &= 0x000f;
    24.     wAttributes &= 0xfff0;
    25.     wAttributes |= color;
    26.  
    27.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    28. }
    29. void textbackground(WORD color)
    30. {
    31.     HANDLE hConsoleOutput;
    32.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    33.  
    34.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    35.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    36.  
    37.     WORD wAttributes = screen_buffer_info.wAttributes;
    38.     color &= 0x000f;
    39.     color <<= 4;
    40.     wAttributes &= 0xff0f;
    41.     wAttributes |= color;
    42.  
    43.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    44. }
    45. void gotoxy(short x,short y)
    46. {
    47.     HANDLE hConsoleOutput;
    48.     COORD Cursor_an_Pos = { x,y};
    49.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    50.     SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
    51. }
    52. void ancontro()
    53. {
    54.     HANDLE hOut;
    55.     CONSOLE_CURSOR_INFO ConCurInf;
    56.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    57.     ConCurInf.dwSize = 10;
    58.     ConCurInf.bVisible = FALSE;
    59.     SetConsoleCursorInfo(hOut,&ConCurInf);
    60. }
    61. void hiencontro()
    62. {
    63.     HANDLE hOut;
    64.     CONSOLE_CURSOR_INFO ConCurInf;
    65.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    66.     ConCurInf.dwSize = 10;
    67.     ConCurInf.bVisible = TRUE;
    68.     SetConsoleCursorInfo(hOut,&ConCurInf);
    69. }
    70. void viet(char *xau="Quang",int tre=15)
    71. {
    72.     for (int i=0;i<strlen(xau);i++)
    73.         printf("%c",xau[i]),Sleep(tre);
    74. }
    75.  
    76. int nhapnguyen(void)
    77. {
    78.     char xau[20],ch='a',i=0;
    79.     while(ch!=0xD||i==0)
    80.     {
    81.         ch=getch();
    82.         if (ch==0x8) printf("\b \b"),i?i--:0;
    83.         if (!(ch=='-'||(ch>='0'&&ch<='9'))) continue;
    84.         xau[i++]=ch;
    85.         printf("%c",ch);
    86.     }
    87.     xau[i]=0;
    88.     printf("\n");
    89.     return atoi(xau);
    90. }
    91. double nhapthuc()
    92. {
    93.     char ch='a',xau[10],i=0,flag=1;
    94.     while(ch!=0xD||i==0)
    95.     {
    96.         ch=getch();
    97.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    98.         if (ch=='.'&&flag) flag=0; else if (ch<'0'||ch>'9'||i>7) continue;
    99.         xau[i++]=ch,printf("%c",ch);
    100.     }
    101.     xau[i]=0;printf("\n");
    102.     return atof(xau);
    103. }
    104. int nhapso()
    105. {
    106.     //nhap so max 99 min 0
    107.     char ch='a',xau[10],i=0;
    108.     while(ch!=0xD||i==0)
    109.     {
    110.         ch=getch();
    111.         if (ch==0x8&&i) --i,printf("\b \b");
    112.         if ((!(ch>='0'&&ch<='9'))||i>1) continue;
    113.         xau[i++]=ch;
    114.         printf("%c",ch);
    115.     }
    116.     xau[i]=0;
    117.     return atoi(xau);
    118. }  
    119. double nhapdiem()
    120. {
    121.     char ch='a',xau[10],i=0,flag=1;
    122.     while(ch!=0xD||i==0)
    123.     {
    124.         ch=getch();
    125.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    126.         if (i>=7||(*xau=='1'&&(i==2&&xau[1]=='0')||(i==1&&ch!='.'&&ch!='0'))) continue;
    127.         if (ch=='.'&&flag) flag=0; else if (ch<'0'||ch>'9') continue;
    128.         if (i==0&&ch!='1') xau[i++]=ch,xau[i++]='.',printf("%c.",ch),flag=0; else xau[i++]=ch,printf("%c",ch);
    129.     }
    130.     xau[i]=0;printf("\n");
    131.     return atof(xau);
    132. }
    133. void nhapchuoi(char *xau,int max)
    134. {
    135.     char ch='a',i=0;
    136.     while(ch!=0xD||i==0)
    137.     {
    138.         ch=getch();
    139.         if (ch==0x8) printf("\b \b"),i?i--:0;
    140.         if (!(ch==' '||(ch>='0'&&ch<='9')||('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z'))||i>=max) continue;
    141.         xau[i++]=ch;
    142.         printf("%c",ch);
    143.     }
    144.     xau[i]=0;
    145.     printf("\n");
    146. }
    147.  
    148.  
    149.  
    150. int nhapmatrix(int matrix[9][9])
    151. {
    152.     int i,j,n,x;
    153.     gotoxy(1,10);printf("Nhap vao so hang cua ma tran vuong : ");
    154.     n=nhapso();
    155.  
    156.     gotoxy(1,10);printf("                                        ");
    157.     if (n>5) n=5;else if (n<2) n=2;
    158.     gotoxy(0,3);
    159.     for (i=0;i<n;i++)
    160.     {
    161.         for (j=0;j<n;j++)
    162.             textbackground(WHITE),printf("     "),textbackground(BLACK),printf("    ");
    163.         printf("\n\n");
    164.     }
    165.     for (i=0;i<n;i++)
    166.         for (j=0;j<n;j++)
    167.         {
    168.             gotoxy(0,15);printf("                                                                       ");
    169.             gotoxy(0,15);printf("Nhap vao matrix[%d][%d] : ",i+1,j+1);
    170.             matrix[i][j]=nhapnguyen();
    171.             gotoxy(2+j*9,3+i*2);
    172.             textbackground(WHITE);textcolor(BLACK);
    173.             printf("%d",matrix[i][j]);
    174.             textbackground(BLACK);textcolor(GREEN);
    175.         }
    176.         gotoxy(0,15);printf("                                                                            ");
    177.         return n;
    178. }
    179. void boidenmatrix(int matrix[9][9],int i, int j,int bg=GREEN,int c=RED)
    180. {
    181.     textbackground(bg);
    182.     textcolor(c);
    183.     gotoxy(0+j*9,3+i*2);printf("     ");
    184.     gotoxy(2+j*9,3+i*2);
    185.     printf("%d",matrix[i][j]);
    186.     textbackground(BLACK);
    187.     textcolor(GREEN);
    188.     Sleep(200);
    189. }
    190. int doixung(int *mang,int n)
    191. {
    192.     for (int i=0;i<n/2;i++)
    193.         if (mang[i]!=mang[n-i-1]) return 0;
    194.     return 1;
    195. }
    196. void bai1()
    197. {
    198.     int a[9][9],i,j,n,max,sum,flag1=1,flag2=1,temp[9];
    199.     double s;
    200.     n=nhapmatrix(a);
    201.     ancontro();
    202.     max=a[0][0];
    203.     sum=0;
    204.     for(i=0;i<n;i++)
    205.         for(j=0;j<n;j++)
    206.         {
    207.             sum+=a[i][j];
    208.             if (max<a[i][j]) max=a[i][j];
    209.         }
    210.         textcolor(YELLOW);
    211.         gotoxy(0,15);viet("a. Gia tri lon nhat mang la : ");printf("%d",max);
    212.         for(i=0;i<n;i++)
    213.             for(j=0;j<n;j++)
    214.                 if (max==a[i][j]) boidenmatrix(a,i,j);
    215.         Sleep(500);textcolor(YELLOW);
    216.         s=double(sum)/n/n;
    217.         gotoxy(0,16);viet("b. Trung binh cong  mang la : ");s==int(s)?printf("%.0f",s):printf("%.3f",s);
    218.         Sleep(500);gotoxy(0,17);viet("c. ");
    219.         int x=4,y=17;
    220.         //kiem tra doi xung
    221.         for (j=0;j<n;j++)
    222.         {
    223.             for (i=0;i<n;i++)
    224.                 temp[i]=a[j][i];
    225.             if (!doixung(temp,n)) {flag1=0;break;}
    226.         }  
    227.         for (i=0;i<n;i++)
    228.         {
    229.             for (j=0;j<n;j++)
    230.                 temp[j]=a[j][i];
    231.             if (!doixung(temp,n)) {flag2=0;break;}
    232.         }
    233.         if (!(flag1||flag2)) viet("Ma tran khong doi xung");
    234.         textcolor(YELLOW);
    235.         if (flag1)
    236.         {
    237.             gotoxy(x,y++);
    238.             viet("Ma tran doi xung doc ");
    239.             if (n&1)
    240.                 for (j=0;j<n;j++)
    241.                     boidenmatrix(a,j,n/2,RED,GREEN);
    242.             else
    243.                 for (j=0;j<2*n-1;j++)
    244.                     gotoxy(9*n/2-2,3+j),printf("%c",179);
    245.         }
    246.         textcolor(YELLOW);
    247.         if (flag2)
    248.         {
    249.             gotoxy(x,y++);
    250.             printf("Ma tran doi xung ngang  ");
    251.             if (n&1)
    252.                 for (i=0;i<n;i++)
    253.                     boidenmatrix(a,n/2,i,RED,GREEN);
    254.             else
    255.                 for (i=0;i<9*n-4;i++)
    256.                     gotoxy(i,2+n),printf("-");
    257.         }
    258.         textcolor(YELLOW);
    259.         if (flag1&&flag2)
    260.         {
    261.             gotoxy(x,y);
    262.             printf("Ma tran co tam doi xung");
    263.             if (n%2==0)
    264.                 textcolor(RED),gotoxy(9*n/2-2,2+n),printf("*");
    265.         }
    266.         gotoxy(0,15);
    267. }
    268.  
    269.  
    270.  
    271. struct maytinh
    272. {
    273.     char ma[15];
    274.     char hang[20];
    275.     double gia;
    276.     double tocdo;
    277. };
    278. void nhapnode(maytinh &a)
    279. {
    280.     printf("\nNhap vao ma may tinh       : ");
    281.     nhapchuoi(a.ma,14);
    282.     printf("Nhap vao hang sam xuat     : ");
    283.     nhapchuoi(a.hang,19);
    284.     printf("Nhap vao gia may tinh (USD): ");
    285.     a.gia=nhapthuc();
    286.     printf("Nhap vao toc do CPU   (Ghz): ");
    287.     a.tocdo=nhapdiem();
    288. }
    289. void hiennode(const maytinh &a)
    290. {
    291.     printf("\n%-20s %-25s %-15.3lf %10.3lf Ghz",a.ma,a.hang,a.gia,a.tocdo);
    292. }
    293. int nhap(maytinh *a,int n)
    294. {
    295.     int m;
    296.     printf("\nNhap vao thong tin bao nhieu sam pham : ");
    297.     m=nhapso();
    298.     for(int i=n;i<m+n;i++)
    299.         nhapnode(a[i]);
    300.     return n+m;
    301. }
    302. void hien(maytinh *a,int n)
    303. {
    304.     textcolor(YELLOW);
    305.     printf("\n%-20s %-25s %-15s %10s","Ma may tinh","Hang may tinh","Gia tien","Toc do");
    306.     for(int i=0;i<n;i++)
    307.         hiennode(a[i]);
    308.     getch();
    309.     textcolor(GREEN);
    310.     printf("\n\n\n\n\nPress any key to continue\n");
    311. }
    312. void hienlt1000(maytinh *a,int n)
    313. {
    314.     textcolor(YELLOW);
    315.     printf("\nCac may tinh co gia duoi 1000USD : ");
    316.     for(int i=0;i<n;i++)
    317.         if (a[i].gia<1000.) hiennode(a[i]);
    318.     getch();
    319.     textcolor(GREEN);
    320.     printf("\n\n\n\n\nPress any key to continue\n");
    321. }
    322. void hientheohang(maytinh *a,int n)
    323. {
    324.     char xau[20];
    325.     printf("\nNhap vao hang san xuat : ");
    326.     nhapchuoi(xau,19);
    327.     textcolor(YELLOW);
    328.     printf("Cac may tinh cua hang %s : ",xau);
    329.     for(int i=0;i<n;i++)
    330.         if (stricmp(a[i].hang,xau)==0) hiennode(a[i]);
    331.     getch();
    332.     textcolor(GREEN);
    333.     printf("\n\n\n\n\nPress any key to continue\n");
    334. }
    335. void hiendatre(maytinh *a,int n)
    336. {
    337.     int min=0,max=0;
    338.     for(int i=1;i<n;i++)
    339.     {
    340.         if (a[i].gia<a[min].gia) min=i;
    341.         if (a[i].gia>a[max].gia) max=i;
    342.     }
    343.     textcolor(YELLOW);
    344.     printf("\nMay tinh co gia cao nhat");
    345.     hiennode(a[max]);
    346.     printf("\n\nMay tinh co gia thap nhat");
    347.     hiennode(a[min]);
    348.     getch();
    349.     textcolor(GREEN);
    350.     printf("\n\n\n\n\nPress any key to continue\n");
    351. }
    352. void bai2()
    353. {
    354.     maytinh a[100];
    355.     int n=0;
    356.     char ch='a',flag=0;
    357.     do
    358.     {
    359.         system("cls");
    360.         textcolor(GREEN);
    361.         printf("*------------Menu------------*\n");
    362.         printf("1. Nhap du lieu \n");
    363.         if (flag==0) textcolor(8);
    364.         printf("2. Hien thi du lieu \n");
    365.         printf("3. In ra cac may tinh co gia ban duoi 1000USD \n");
    366.         printf("4. In ra cac may tinh co hang sam xuat theo yeu cau\n");
    367.         printf("5. In ra may tinh co toc do thap nhat, cao nhat \n");
    368.         textcolor(GREEN);
    369.         printf("6. Thoat");
    370.         printf("\n\nNhap vao lua chon cua ban : ");
    371.         ch=getch();
    372.         while(ch<'1'||ch>'6') ch=getch();
    373.         printf("%c",ch);
    374.         if (flag==0&&ch!='1'&&ch!='6') continue;
    375.         switch(ch)
    376.         {
    377.         case '1' : n=nhap(a,n);flag=1; break;
    378.         case '2' : hien(a,n);break;
    379.         case '3' : hienlt1000(a,n);break;
    380.         case '4' : hientheohang(a,n);break;
    381.         case '5' : hiendatre(a,n);break;
    382.         }
    383.     }
    384.     while(ch!='6');
    385. }
    386.  
    387. void mainmenu(void)
    388. {
    389.     char ch='a';
    390.     system("cls");
    391.     textcolor(RED);
    392.     printf("Nhap vao lua chon :\n1.Bai 1\n2.Bai 2\n3.Exit\nLua chon : ");
    393.     textcolor(GREEN);
    394.     while(ch<'1'||ch>'3') ch=getch();
    395.     printf("%c",ch);
    396.     system("cls");
    397.     if (ch<'3') printf("\nBai %c\n",ch);
    398.     switch(ch)
    399.     {
    400.     case '1':bai1();break;
    401.     case '2':bai2();break;
    402.     case '3':exit(0);
    403.     }
    404.     printf("\n\n\n\n\nPress any key to continue\n");
    405.     getch();
    406.     mainmenu();
    407.  
    408. }
    409. int main()
    410. {
    411.     mainmenu();
    412.     return 0;
    413. }

    tiếp
    Đề bài Code:
    1. Assignment 3
    2. Bài 1:
    3. Viết chương trình quản lý điểm của sinh viên một lớp. Chương trình cần thực hiện yêu cầu sau:
    4. -   Nhập vào từ bàn phím số lương sinh viên, tiếp đến là điểm của từng sinh viên (2đ)
    5. -   In ra số lượng sinh viên giỏi (Điểm lớn hơn 8), số lượng sinh viên khá (Điểm lớn hơn 6.5 và bé hơn 8), số lượng sinh viên trung bình (điểm từ 5 đến 6.5) và số lượng sinh viên kém (điểm bé hơn 5). (4đ)
    6. Bài 2:
    7. Xây dựng cấu trúc SoPhuc dùng để biểu diễn một số phức. Các thành phần dữ liệu như sau:
    8.     Phần thực: Kiểu float
    9.     Phần ảo: Kiểu float
    10. Viết chương trình có sử dụng cấu trúc SoPhuc nói trên. Trong hàm main ta sẽ nhập vào hai số phức rồi sau đó tính tổng, hiệu tích và thương của hai số phức này.
    11. Yêu cầu:
    12.     Xây dựng được cấu trúc SoPhuc (1 đ)
    13.     Thực hiện được đúng các yêu cầu đề ra (3đ)
    14.     Nếu các yêu cầu đều được thực hiện bằng cách xây dựng và sử dụng hàm (2đ)
    15. Bài 3:
    16. Viết chương trình quản lý công nhân trong một nhà máy. Thông tin về mỗi công nhân bao gồm
    17. Tên của công nhân: Một chuỗi kí tự
    18. Tuổi của công nhân: Một số nguyên
    19. Giới tính: Là một chữ cái (M là nam và F là nữ)
    20. Mã số: Một chuỗi kí tự
    21. Phòng ban: Một chuỗi kí tự
    22. Trong chương trình thực hiện các công việc sau:
    23. -   Nhập vào số lượng công nhân của công ty, sau đó nhập vào thông tin cho từng công nhân (2 đ)
    24. -   In ra thông tin của toàn bộ công nhân của công ty (2đ)
    25. -   Nhập vào tên phòng ban sau đó in ra tất cả các công nhân thuộc phòng ban đó (2đ)
    26. -   In ra số lượng công nhân nữ có tuổi lớn hơn 30 (2đ)


    Visual C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. #include <ctype.h>
    5. #include <windows.h>
    6.  
    7.  
    8. #define BLACK 0
    9. #define BLUE 9
    10. #define GREEN 10
    11. #define RED 12
    12. #define YELLOW 14
    13. #define WHITE 15
    14. void textcolor(WORD color)
    15. {
    16.     HANDLE hConsoleOutput;
    17.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    18.  
    19.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    20.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    21.  
    22.     WORD wAttributes = screen_buffer_info.wAttributes;
    23.     color &= 0x000f;
    24.     wAttributes &= 0xfff0;
    25.     wAttributes |= color;
    26.  
    27.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    28. }
    29. void textbackground(WORD color)
    30. {
    31.     HANDLE hConsoleOutput;
    32.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    33.  
    34.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    35.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    36.  
    37.     WORD wAttributes = screen_buffer_info.wAttributes;
    38.     color &= 0x000f;
    39.     color <<= 4;
    40.     wAttributes &= 0xff0f;
    41.     wAttributes |= color;
    42.  
    43.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    44. }
    45. void gotoxy(short x,short y)
    46. {
    47.     HANDLE hConsoleOutput;
    48.     COORD Cursor_an_Pos = { x,y};
    49.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    50.     SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
    51. }
    52. void ancontro()
    53. {
    54.     HANDLE hOut;
    55.     CONSOLE_CURSOR_INFO ConCurInf;
    56.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    57.     ConCurInf.dwSize = 10;
    58.     ConCurInf.bVisible = FALSE;
    59.     SetConsoleCursorInfo(hOut,&ConCurInf);
    60. }
    61.  
    62. int nhapnguyen(void)
    63. {
    64.     char xau[20],ch='a',i=0;
    65.     while(ch!=0xD||i==0)
    66.     {
    67.         ch=getch();
    68.         if (ch==0x8) printf("\b \b"),i?i--:0;
    69.         if (!(ch=='-'||(ch>='0'&&ch<='9'))) continue;
    70.         xau[i++]=ch;
    71.         printf("%c",ch);
    72.     }
    73.     xau[i]=0;
    74.     printf("\n");
    75.     return atoi(xau);
    76. }
    77. double nhapthuc()
    78. {
    79.     char ch='a',xau[10],i=0,flag=1;
    80.     while(ch!=0xD||i==0)
    81.     {
    82.         ch=getch();
    83.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    84.         if (ch=='.'&&flag) flag=0; else if (ch<'0'||ch>'9'||i>7) continue;
    85.         xau[i++]=ch,printf("%c",ch);
    86.     }
    87.     xau[i]=0;printf("\n");
    88.     return atof(xau);
    89. }
    90. int nhapso()
    91. {
    92.     char ch='a',xau[10],i=0;
    93.     while(ch!=0xD||i==0)
    94.     {
    95.         ch=getch();
    96.         if (ch==0x8&&i) --i,printf("\b \b");
    97.         if ((!((i==0&&ch=='-')||(ch>='0'&&ch<='9')))||i>1) continue;
    98.         xau[i++]=ch;
    99.         printf("%c",ch);
    100.     }
    101.     xau[i]=0;
    102.     return atoi(xau);
    103. }  
    104. double nhapdiem()
    105. {
    106.     char ch='a',xau[10],i=0,flag=1;
    107.     while(ch!=0xD||i==0)
    108.     {
    109.         ch=getch();
    110.         if (ch==0x8) xau[i-1]=='.'?printf("\b\b  \b\b"),i=0,flag=1:i?--i,printf("\b \b"):0;
    111.         if (i>=7||(*xau=='1'&&(i==2&&xau[1]=='0')||(i==1&&ch!='.'&&ch!='0'))) continue;
    112.         if (ch=='.'&&flag) flag=0; else if (ch<'0'||ch>'9') continue;
    113.         if (i==0&&ch!='1') xau[i++]=ch,xau[i++]='.',printf("%c.",ch),flag=0; else xau[i++]=ch,printf("%c",ch);
    114.     }
    115.     xau[i]=0;printf("\n");
    116.     return atof(xau);
    117. }
    118.  
    119.  
    120.  
    121. void bai1()
    122. {
    123.      int n,i,gioi=0,kha=0,tb=0,kem=0;
    124.      float a[100];
    125.      printf("Nhap vao bao nhieu sinh vien : " );
    126.      n=nhapso();
    127.      for(i=0;i<n;i++)
    128.      {
    129.            gotoxy(0,12);
    130.            printf("                                                                              ");
    131.            gotoxy(0,12);
    132.            printf("Nhap vao diem cua thi sinh thu %d : ",i+1);
    133.            a[i]=nhapdiem();
    134.            if (a[i]>=8.f) gioi++;
    135.            else if (a[i]>=6.5f) kha++;
    136.            else if (a[i]>=5.f) tb++;
    137.            else kem++;
    138.            
    139.            gotoxy(0+(7*i)%80,4+(7*i)/80);
    140.            a[i]==int(a[i])?printf("%-5.0f ",a[i]):printf("%-4.1f ",a[i]);
    141.      }
    142.      gotoxy(0,13);
    143.      textcolor(YELLOW);
    144.      printf("%3d gioi, %3d kha, %3d trung binh, %3d kem",gioi,kha,tb,kem);
    145. }
    146.  
    147. struct sophuc
    148. {
    149.     float thuc;
    150.     float ao;
    151. };
    152. void nhapsp(sophuc &a,char ch)
    153. {
    154.      printf("Nhap vao so phuc %c\nPhan thuc : ",ch);
    155.      a.thuc=nhapthuc();
    156.      printf("Phan ao   : ");
    157.      a.ao=nhapthuc();
    158. }
    159. sophuc tong(const sophuc &a,const sophuc &b)
    160. {
    161.        sophuc c;
    162.        c.thuc=a.thuc+b.thuc;
    163.        c.ao=a.ao+b.ao;
    164.        return c;
    165. }
    166. sophuc hieu(const sophuc &a,const sophuc &b)
    167. {
    168.        sophuc c;
    169.        c.thuc=a.thuc-b.thuc;
    170.        c.ao=a.ao-b.ao;
    171.        return c;
    172. }
    173. sophuc thuong(const sophuc &a,const sophuc &b)
    174. {
    175.        sophuc c;
    176.        c.thuc=(a.thuc*b.thuc-a.ao*b.ao)/(b.thuc*b.thuc+b.ao*b.ao);
    177.        c.ao=(a.ao*b.thuc-a.thuc*b.ao)/(b.thuc*b.thuc+b.ao*b.ao);
    178.        return c;
    179. }
    180. sophuc tich(const sophuc &a,const sophuc &b)
    181. {
    182.        sophuc c;
    183.        c.thuc=a.thuc*b.thuc-a.ao*b.ao;
    184.        c.ao=a.thuc*b.ao+a.ao*b.thuc;
    185.        return c;
    186. }
    187. void viet(const sophuc &a,char ch)
    188. {
    189.      printf("%c(",ch);
    190.      a.thuc==int(a.thuc)?printf("%.0f,",a.thuc):printf("%.3f,",a.thuc);
    191.      a.ao==int(a.ao)?printf("%.0f) ",a.ao):printf("%.3f) ",a.ao);
    192. }
    193. void bai2()
    194. {
    195.     sophuc a,b,c;
    196.     nhapsp(a,'A');
    197.     nhapsp(b,'B');
    198.     textcolor(YELLOW);
    199.     viet(a,'A');printf("+ ");viet(b,'B');printf("= ");viet(tong(a,b),'C');printf("\n");
    200.     viet(a,'A');printf("- ");viet(b,'B');printf("= ");viet(hieu(a,b),'D');printf("\n");
    201.     viet(a,'A');printf("* ");viet(b,'B');printf("= ");viet(tich(a,b),'E');printf("\n");
    202.     viet(a,'A');printf("/ ");viet(b,'B');printf("= ");viet(thuong(a,b),'F');printf("\n");
    203.     textcolor(GREEN);
    204. }
    205. void nhapchuoi(char *xau,int max)
    206. {
    207.     char ch='a',i=0;
    208.     while(ch!=0xD||i==0)
    209.     {
    210.         ch=getch();
    211.         if (ch==0x8) printf("\b \b"),i?i--:0;
    212.         if (!(ch==' '||(ch>='0'&&ch<='9')||('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z'))||i>=max) continue;
    213.         xau[i++]=ch;
    214.         printf("%c",ch);
    215.     }
    216.     xau[i]=0;
    217.     printf("\n");
    218. }
    219. void nhapgt(char &x)
    220. {
    221.     x='a';
    222.     while (x!='M'&&x!='F')
    223.         x=toupper(getch());
    224.     printf("%c\n",x);
    225. }
    226. struct node
    227. {
    228.        char hoten[30];
    229.        char mnv[10];
    230.        char phong[10];
    231.        char gioitinh;
    232.        int tuoi;
    233. };
    234. void nhapnode(node &p)
    235. {
    236.     printf("Nhap vao ho ten        : ");nhapchuoi(p.hoten,29);
    237.     printf("Nhap vao ma nhan vien  : ");nhapchuoi(p.mnv,9);
    238.     printf("Nhap vao phong ban     : ");nhapchuoi(p.phong,9);
    239.     printf("Nhap vao gioi tinh F/M : ");nhapgt(p.gioitinh);
    240.     printf("Nhap vao tuoi          : ");p.tuoi=nhapso();
    241. }
    242. void nhap(node *a,int n)
    243. {
    244.     int i;
    245.    
    246.     for(i=0;i<n;i++)
    247.     {
    248.         printf("\nNhap vao thong tin nhan vien thu %d\n",i+1);
    249.         nhapnode(a[i]);
    250.     }
    251.     printf("\n");
    252. }
    253. void innode(node p)
    254. {
    255.     printf("%-10s %-30s %-10s %c %20d\n",p.mnv,p.hoten,p.phong,p.gioitinh,p.tuoi);
    256. }
    257. void xuat(node *a,int n)
    258. {
    259.     textcolor(YELLOW);
    260.     printf("%-10s %-30s %-10s %-6s %12s\n","Ma nv","Ho ten","Phong","Gioi tinh","Tuoi");
    261.     for(int i=0;i<n;i++)
    262.         innode(a[i]);
    263.     textcolor(GREEN);
    264. }
    265. void timtheophong(node *a,int n,char *phong)
    266. {
    267.     textcolor(YELLOW);
    268.     printf("Cac nhan vien thuoc phong %s la :\n%-10s %-30s %-10s %-6s %12s\n",phong,"Ma nv","Ho ten","Phong","Gioi tinh","Tuoi");
    269.     for(int i=0;i<n;i++)
    270.         if (!stricmp(a[i].phong,phong)) innode(a[i]);
    271.     textcolor(GREEN);
    272. }
    273. int demnuu30(node *a,int n)
    274. {
    275.     int dem=0;
    276.     for(int i=0;i<n;i++)
    277.         if(a[i].gioitinh=='F'&&a[i].tuoi>30) dem++;
    278.     return dem;
    279. }
    280. void bai3()
    281. {
    282.     int n,i;
    283.     node *a;
    284.     char xau[100];
    285.     printf("Nhap vao thong tin bao nhieu nhan vien : ");
    286.     n=nhapso();
    287.     a=(node *)malloc(n*sizeof(node));
    288.     nhap(a,n);
    289.     xuat(a,n);
    290.     printf("Nhap vao ten phong ban : ");
    291.     nhapchuoi(xau,99);
    292.     timtheophong(a,n,xau);
    293.     textcolor(YELLOW);
    294.     printf("\nSo nhan vien nu tuoi lon 30 la : %d",demnuu30(a,n));
    295.     textcolor(GREEN);
    296.     free(a);
    297. }
    298. void mainmenu(void)
    299. {
    300.     char ch='a';
    301.     system("cls");
    302.     textcolor(RED);
    303.     printf("Nhap vao lua chon :\n1.Bai 1\n2.Bai 2\n3.Bai 3\n4.Exit\nLua chon : ");
    304.     textcolor(GREEN);
    305.     while(ch<'1'||ch>'4') ch=getch();
    306.     printf("%c",ch);
    307.     getch();
    308.     system("cls");
    309.     printf("\nBai %c\n",ch);
    310.     switch(ch)
    311.     {
    312.     case '1':bai1();break;
    313.     case '2':bai2();break;
    314.     case '3':bai3();break;
    315.     case '4':exit(0);
    316.     }
    317.     printf("\n\n\n\n\nPress any key to continue\n");
    318.     getch();
    319.     mainmenu();
    320.    
    321. }
    322. int main()
    323. {
    324.     mainmenu();
    325.     return 0;
    326. }


    tiếp
    Đề bài Code:
    1. C Programming Language - Assignment 2
    2. Viết chương trình mô phỏng menu dòng lệnh. Đầu tiên chương trình in ra màn hình các thông điệp sau:
    3.     CHUONG TRINH MO PHONG MENU LENH VOI HAI BIEN A VA B.
    4.     GIA TRI KHOI DAU CUA A VA B LA 1
    5. Chon cac chuc nang:
    6. 1-Nhap vao gia tri moi cho a, b
    7. 2-In ra tong, hieu, tich, thuong cua a, b
    8. 3-Hoan doi gia tri cua a va b cho nhau
    9. 4-Thoat
    10. Sau đó chương trình sẽ lặp lại yêu cầu người dùng nhập một số và sau đó thực thi chức năng tương ứng với giá trị người dùng nhập vào cho đến khi nào người dùng nhập giá trị 4 (tương ứng với chức năng thoát) thì mới kết thúc.
    11. Yêu cầu:
    12. + Viết được chương trình thực hiện theo đúng yêu cầu (3 đ)
    13. -   In ra thông điệp ban đầu (0.5 đ)
    14. -   Lặp lại quá trình chương trình hỏi người dùng nhập vào một số và sau đó thực thi chức năng tương ứng (1.5 đ)
    15. -   Xây dựng mỗi hàm tương ứng với mỗi chức năng và sau đó gọi hàm (1 đ)
    16. + Cải tiến chương trình: Các biến a, b không được khởi tạo giá trị ban đầu bằng 1 nữa. Ngay lần đầu nếu người dùng chọn các chức năng 2 hoặc 3 mà chưa chọn chức năng 1 (tức là chưa nhập giá trị cho a và b) thì in ra thông báo không thực hiện được chức năng.  (1 đ)
    17. Gợi ý:
    18. Bài này các em nên sử dụng cấu trúc do-while để thực hiện việc lặp, và sử dụng cấu trúc lựa chọn switch-case để chọn thực thi chức năng tương ứng với lựa chọn

    Code
    Visual C++ Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "windows.h"
    4.  
    5. int a,b,flag;
    6. #define BLACK 0
    7. #define LIGHTGRAY 8
    8. #define BLUE 9
    9. #define GREEN 10
    10. #define RED 12
    11. #define YELLOW 14
    12. #define WHITE 15
    13. void textcolor(WORD color)
    14. {
    15.     HANDLE hConsoleOutput;
    16.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    17.  
    18.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    19.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    20.  
    21.     WORD wAttributes = screen_buffer_info.wAttributes;
    22.     color &= 0x000f;
    23.     wAttributes &= 0xfff0;
    24.     wAttributes |= color;
    25.  
    26.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    27. }
    28. void textbackground(WORD color)
    29. {
    30.     HANDLE hConsoleOutput;
    31.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    32.  
    33.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    34.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    35.  
    36.     WORD wAttributes = screen_buffer_info.wAttributes;
    37.     color &= 0x000f;
    38.     color <<= 4;
    39.     wAttributes &= 0xff0f;
    40.     wAttributes |= color;
    41.  
    42.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    43. }
    44. void gotoxy(short x,short y)
    45. {
    46.     HANDLE hConsoleOutput;
    47.     COORD Cursor_an_Pos = { x,y};
    48.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    49.     SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
    50. }
    51. void clrscr(int c=BLACK,int top=0,int down=24)
    52. {
    53.     textbackground(c);
    54.     gotoxy(0,top);
    55.     for(int i=top;i<down;i++)
    56.         printf("                                                                                 ");
    57.     gotoxy(0,top);
    58. }
    59. void viet(char *xau="Quang",int tre=15)
    60. {
    61.     int i;
    62.     for ( i=0 ; i<strlen(xau) ; ++i)
    63.     { putch(xau[i]);Sleep(tre);}
    64. }
    65. void gau(int x,int y,int chungloai)
    66. {
    67.     switch (chungloai)
    68.     {
    69.     case 1:
    70.         gotoxy(x,y+1);  printf("   ,^~~~-.         .-~~~~-.^)");
    71.         gotoxy(x,y+2);  printf("   :  .--. \\       /  .--.  \\");
    72.         gotoxy(x,y+3);  printf("   : (    .-`<^~~~-: :    )  :");
    73.         gotoxy(x,y+4);  printf("   `. `-,~            ^- '  .'");
    74.         gotoxy(x,y+5);  printf("     `-:                ,.-~");
    75.         gotoxy(x,y+6);  printf("      .'                  `.");
    76.         gotoxy(x,y+7);  printf("     ,'   @   @            |");
    77.         gotoxy(x,y+8);  printf("     :    __               ;");
    78.         gotoxy(x,y+9);  printf("  ...{   (__)          ,----.");
    79.         gotoxy(x,y+10); printf(" /   `.              ,' ,--. `.");
    80.         gotoxy(x,y+11); printf("|      `.,___   ,      :    : :");
    81.         gotoxy(x,y+12); printf("|     .'    ~~~~       :    : :");
    82.         gotoxy(x,y+13); printf(" \\.. /               `. `--' .'");
    83.         gotoxy(x,y+14); printf("    |      3HGROUP     ~----~");
    84.         gotoxy(x,y+15); printf("    |     QUANGXENG       |");
    85.         break;
    86.  
    87.     case 2:
    88.         gotoxy(x,y+1);  printf(" / _` | | | |/ _` | '_ \\ / _` | \\ \\/ / _ \\ '_ \\ / _` |");
    89.         gotoxy(x,y+2);  printf("| (_| | |_| | (_| | | | | (_| |  >  <  __/ | | | (_| |");
    90.         gotoxy(x,y+3);  printf(" \\__, |\\__,_|\\__,_|_| |_|\\__, | /_/\\_\\___|_| |_|\\__, |");
    91.         gotoxy(x,y+4);  printf("    | |                   __/ |                  __/ |");
    92.         gotoxy(x,y+5);  printf("    |_|                  |___/                  |___/");
    93.         break;
    94.  
    95.     case 3:
    96.         //printf("     ,-.,-\"\`\"\"-./  \\   ");
    97.         //printf("\n       /   \\        \`-.|       ");
    98.         printf("       \\   /           \`-._     .:::.:::. ");         Sleep(30);
    99.         printf("\n         \|               \"=\\    :::::::::");         Sleep(30);
    100.         printf("\n         \|      .==\"    \|o_\|_    ':::::' ");          Sleep(30);
    101.         printf("\n         \|       _o.     \` (_)     ':'  ,;;;,;;;,");  Sleep(30);
    102.         printf("\n         ;                  \\\\          ;;;;;;;;;");  Sleep(30);
    103.         printf("\n         \\             _.    /\|-.        ':::::'");   Sleep(30);
    104.         printf("\n        \\           \` \`'---'/   \\        ':'");       Sleep(30);
    105.         printf("\n     \\       .--._     /-'   |");                    Sleep(30);
    106.         printf("\n   ,-`.    /     `-._(     /");                       Sleep(30);
    107.         printf("\n   `-._`-._\\         `\\   \'\\");                   Sleep(30);
    108.         printf("\n     ( `    `'._  _,   |    \\");                     Sleep(30);
    109.         printf("\n     /    ~-.   `|     |    |");                      Sleep(30);
    110.         printf("\n    /        `;-.|     |    |");                      Sleep(30);
    111.         printf("\n  .'  \\         /|     |    /");                     Sleep(30);
    112.         printf("\n      .'-.   '.      | \\     |  .'");                  Sleep(30);
    113.         printf("\n      `-._     '.    |       /\"` `\\");                Sleep(30);
    114.         printf("\n       /  `\"--.,_'-._\\-.___.'_     ;");               Sleep(30);
    115.         printf("\n      /          `\"\"\";--'     `.   |");              Sleep(30);
    116.         printf("\n     /            .'`            \\ /\"\"-.");          Sleep(30);
    117.         printf("\n    ;            /                \\\"\"-, \\");        Sleep(30);
    118.         printf("\n    |           /                 |    \\ |");          Sleep(30);
    119.         printf("\n    \\           |          '.           |/");          Sleep(30);
    120.         printf("\n     '.          \\         .'`-.        /");           Sleep(30);
    121.         printf("\n       '._        '.,___,.;'    '-.___.'");             Sleep(30);
    122.         printf("\n    `\"\"\"----------'`");                            Sleep(30);
    123.         break;
    124.  
    125.     }
    126. }
    127. void PR( int xgoc , int ygoc , int xdich , int ydich , char *xau="Quang" , int tre=15 , int mau =GREEN, int cach=1)
    128. {
    129.     int i,j=0;
    130.     textcolor(mau);
    131.     if (xgoc==xdich&&ygoc>ydich&&cach==1)
    132.     {
    133.         for (j=0 ; j<=strlen(xau) ; j++)
    134.         {
    135.             if (xau[j]!=32)
    136.                 for (i=ygoc ; i>= ydich ; i--)
    137.                 {
    138.                     gotoxy(xgoc,i);putch(xau[j]);
    139.                     gotoxy(xgoc,i+1);putch(' ');
    140.                     Sleep(tre);
    141.                 }
    142.             else {gotoxy(xgoc,ydich);putch(' ');}
    143.             xgoc++;
    144.         }
    145.     }
    146.  
    147.     if (ydich==ygoc&&xgoc>xdich&&cach==1)
    148.     {
    149.         for (j=0 ; j<=strlen(xau) ; j++)
    150.         {
    151.             if (xau[j]!=32)
    152.                 for (i=xgoc ; i>= xdich ; i--)
    153.                 {
    154.                     gotoxy(i,ygoc);printf("%c ",xau[j]);
    155.                     Sleep(tre);
    156.                 }
    157.             else {gotoxy(xgoc,ydich);putch(' ');}
    158.             xdich++;
    159.         }
    160.  
    161.     }
    162. }
    163. void ancontro()
    164. {
    165.     HANDLE hOut;
    166.     CONSOLE_CURSOR_INFO ConCurInf;
    167.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    168.     ConCurInf.dwSize = 10;
    169.     ConCurInf.bVisible = FALSE;
    170.     SetConsoleCursorInfo(hOut,&ConCurInf);
    171. }
    172. void hiencontro()
    173. {
    174.     HANDLE hOut;
    175.     CONSOLE_CURSOR_INFO ConCurInf;
    176.     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    177.     ConCurInf.dwSize = 10;
    178.     ConCurInf.bVisible = TRUE;
    179.     SetConsoleCursorInfo(hOut,&ConCurInf);
    180. }
    181. void tieude(char *xau="quang xeng",int x=0,int y=1)
    182. {
    183.     gotoxy(x,y);
    184.     textbackground(YELLOW);
    185.     textcolor(RED);
    186.     printf(" %s ",xau);
    187.     textbackground(BLUE);
    188.     textcolor(GREEN);
    189. }
    190. void ten(int n)
    191. {
    192.     switch(n)
    193.     {
    194.     case 0:gotoxy(20,2),printf("CHUONG TRINH MO PHONG MENU LENH VOI HAI BIEN A VA B");break;
    195.     case 1:gotoxy(9,5), printf("Nhap vao gia tri moi cho a va b.");if (flag) printf("Hien tai la : %d %d",a,b);break;
    196.     case 2:gotoxy(9,7); if (flag==0) textcolor(8);printf("In ra tong hieu tich thuong cua a va b");textcolor(GREEN);break;
    197.     case 3:gotoxy(9,9); if (flag==0) textcolor(8);printf("Hoan doi gia tri cua a va b");textcolor(GREEN);break;
    198.     case 4:gotoxy(9,11),printf("Thong tin ban quyen");break;
    199.     case 5:gotoxy(35,19),printf(" + Thoat + ");break;
    200.     case 97:gotoxy(34,21),printf("+ Chay lai +"),gotoxy(36,21);break;
    201.     case 98:gotoxy(12,21),printf("+ Tro lai +"),gotoxy(14,21);break;
    202.     case 99:gotoxy(59,21),printf("+ Thoat +"),gotoxy(61,21);break;
    203.     }
    204. }
    205. int lc=1,ct,oldlc=1;
    206. void mainmenu(void);
    207. void luachon(void)
    208. {
    209.     unsigned char nut='a',nutgia='a';
    210.     int tlc,maxlc,i,manglc[40];
    211.     fflush(stdin);
    212.     switch (ct)
    213.     {
    214.     case 0:maxlc=5;for (i=1;i<=7;i++) manglc[i]=i;break;
    215.     case 4:maxlc=2;manglc[1]=98;manglc[2]=99;oldlc=1;break;
    216.     case 1:case 2:case 3:
    217.     case 9:maxlc=3;manglc[1]=97;manglc[2]=98;manglc[3]=99;break;
    218.     }
    219.  
    220.  
    221.     //ban dau
    222.     tlc=lc=oldlc;
    223.     if (ct==9) tlc=lc=1;
    224.     textcolor(WHITE);
    225.     ten(manglc[lc]);
    226.  
    227.  
    228.  
    229.  
    230.     while (nutgia!=0xD)
    231.     {
    232.         // bat phim
    233.         nutgia=getch();
    234.         if (nutgia==224) nut=getch();
    235.  
    236.  
    237.         if (nutgia==0x1B)
    238.             switch (ct)
    239.         {
    240.             case 0:exit(0);
    241.         }
    242.  
    243.         switch (ct)
    244.         {
    245.         case 0: switch (nut)
    246.                 {
    247.  
    248.                     case 0x4B:case 0x48: lc--;if (flag==0&&(lc==2||lc==3)) lc=1;  break;
    249.                     case 0x4D:case 0x50: lc++;if (flag==0&&(lc==2||lc==3)) lc=4;  break;
    250.                 }
    251.                 break;
    252.         case 4: switch(nut)
    253.                 {case 0x50:case 0x4D:case 0x48:case 0x4B:lc++;break;}
    254.                 break;
    255.         case 1:case 2:case 3:case 9: switch(nut)
    256.                 {
    257.                     case 0x50:
    258.                     case 0x4D: if(lc==1)lc=3;else if(lc==3)lc=2;else lc=1;break;
    259.                     case 0x48:
    260.                     case 0x4B: if(lc==1)lc=2;else if(lc==3)lc=1;else lc=3;break;
    261.                 }
    262.                 break;
    263.  
    264.         }
    265.  
    266.         // gioi han bien lc
    267.         if (lc>maxlc) lc=1;
    268.         if (lc<1) lc=maxlc;
    269.  
    270.         //doi mau chu
    271.         textcolor(GREEN);ten(manglc[tlc]);
    272.         textcolor(WHITE);ten(manglc[lc]);
    273.  
    274.         //chuan bi cho vong lap sau - khoi tao lai gia tri
    275.         tlc=lc;
    276.         nut=0x61;
    277.     }
    278. }
    279. void start(void)
    280. {
    281.     int i;
    282.     SetConsoleTitle("Bui Tan Quang - C Programming Language - Assignment 2");
    283.     ancontro();
    284.     gau(1,0,3);
    285.  
    286.     textcolor(10);
    287.     PR(79,10,42,10,"C Programming Language - Assignment 2",2);
    288.     PR(46,16,46,12,"Bui Tan Quang - langman",10);
    289.     Sleep(500);
    290.     clrscr(BLUE);
    291.     gotoxy(0,24);
    292.     textbackground(LIGHTGRAY);
    293.     printf("                                                                                ");
    294.     gotoxy(0,24);
    295.     textcolor(RED);
    296.     printf("   Sinh vien  : ");
    297.     textcolor(BLACK);
    298.     printf(" Bui Tan Quang ");
    299.     textcolor(RED);
    300.     printf("               Yahoo! :");
    301.     textcolor(BLACK);
    302.     printf("  langmaninternet ");
    303.     gotoxy(0,0);
    304.     textbackground(LIGHTGRAY);
    305.     printf("                                                                                ");
    306.     PR( 60,0,25,0,"C Programming Language",1,15,1);
    307.     textbackground(BLUE);
    308.     textcolor(GREEN);
    309.     gau(22,4,1);
    310.     gotoxy(28,21);
    311.     viet("Bat dau",30);
    312.     viet("............",100);
    313.     mainmenu();
    314. }
    315. int nhapso()
    316. {
    317.     char ch='a',xau[10],i=0;
    318.     while(ch!=0xD||i==0)
    319.     {
    320.         ch=getch();
    321.         if (ch==0x8&&i) --i,printf("\b \b");
    322.         if ((!((i==0&&ch=='-')||(ch>='0'&&ch<='9')))||i>6) continue;
    323.         xau[i++]=ch;
    324.         printf("%c",ch);
    325.     }
    326.     xau[i]=NULL;
    327.     return atoi(xau);
    328. }
    329. void item1(void)
    330. {
    331.     ct=1;
    332.     tieude("Lua chon 1 : nhap vao a va b");
    333.     clrscr(BLUE,1,22);
    334.    
    335.     //to do place code here
    336.     hiencontro();
    337.     gotoxy(0,7);printf("Nhap vao so a :  ");
    338.     a=nhapso();
    339.     gotoxy(0,8);printf("Nhap vao so b :  ");
    340.     b=nhapso();
    341.  
    342.  
    343.     ancontro();
    344.     flag=1;
    345.     ten(97);ten(98);ten(99);
    346.     luachon();
    347.     if (lc==3) exit(0);
    348.     else if (lc==2) {oldlc=1;mainmenu();}
    349.     else item1();
    350. }
    351. void item2(void)
    352. {
    353.     ct=2;
    354.     tieude("Lua chon 2 : in ra tong hieu tich thuong cua 2 so : ");
    355.     clrscr(BLUE,1,22);
    356.    
    357.     //to do place code here
    358.     gotoxy(0,7);printf("Tong   2 so la :  %d\nHieu   2 so la :  %d\nTich   2 so la :  %ld\n",a+b,a-b,long(a)*b);
    359.     b?printf("Thuong 2 so la :  %lf",double(a)/b):printf("\nb==0 nen ko thuc hien duoc phep chia");
    360.     flag=1;
    361.     ten(97);ten(98);ten(99);
    362.     luachon();
    363.     if (lc==3) exit(0);
    364.     else if (lc==2) {oldlc=2;mainmenu();}
    365.     else item2();
    366. }
    367. void item3(void)
    368. {
    369.     ct=3;
    370.     tieude("Lua chon 3 : hoan doi gia tri a va b");
    371.     clrscr(BLUE,1,22);
    372.  
    373.     //to do place code here
    374.     gotoxy(0,7);
    375.     printf("Gia tri ban dau          cua a va b la : %7d va %7d\n",a,b);
    376.     a^=b^=a^=b;
    377.     printf("Gia tri sau khi thay doi cua a va b la : %7d va %7d",a,b);
    378.     flag=1;
    379.     ten(97);ten(98);ten(99);
    380.     luachon();
    381.     if (lc==3) exit(0);
    382.     else if (lc==2) {oldlc=3;mainmenu();}
    383.     else item3();
    384. }
    385. void banquyen(void)
    386. {
    387.     ct=4;
    388.     tieude("Thong tin ban quyen");
    389.     clrscr(BLUE,1,22);
    390.     gau(13,1,2);
    391.     PR(23,16,23,14,"Mon hoc       : C Programming Language " ,15,GREEN,1);
    392.     PR(23,17,23,15,"Sinh vien     : Bui Tan Quang" ,15,GREEN,1);
    393.     ten(98);ten(99);
    394.     luachon();
    395.     if (lc==2) exit(0);
    396.     else  {oldlc=4;mainmenu();}
    397. }
    398. void mainmenu(void)
    399. {
    400.     clrscr(BLUE,1,23);
    401.     tieude("Main Menu");
    402.     ct=0;
    403.     for (int i=0;i<7;i++) ten(i);
    404.     luachon();
    405.     switch (lc)
    406.     {
    407.     case 1:item1();break;
    408.     case 2:item2();break;
    409.     case 3:item3();break;
    410.     case 4: banquyen();break;
    411.     case 5: exit(0);break;
    412.     }
    413. }
    414. int main()
    415. {
    416.     start();
    417.     return 1;
    418. }


    1 số bài bị mất, chưa tìm thấy,.....

    đề bài big ass : xây dựng chương trình thi trắc nghiệm (post sau)
    //đang tìm lại
    Đã được chỉnh sửa lần cuối bởi langman : 16-07-2010 lúc 12:17 AM.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Oh mai god.Hàng hiếm dành cho các bạn mới hoc nè hốt về làm của thôi.tớ cũng hốt về rảnh mang ra đọc chơi đỡ buồn
    thanks bác cái nào

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Oh mai god.Hàng hiếm dành cho các bạn mới hoc nè hốt về làm của thôi.tớ cũng hốt về rảnh mang ra đọc chơi đỡ buồn
    thanks bác cái nào
    tớ post full code ở post 2 đó, cậu lấy cái đấy chạy cho nhanh đỡ phải copy thêm code vào

    tớ post hết lên đây để sau này khi nào cần mod việc nhập thì vô đây copy cho nhanh, đỡ mất time viết đi viết lại hoài
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    07 2010
    Bài viết
    288

    bài viết hay lắm bạn à. nhưng có những hàm như
    isdigit
    isalpha
    isalnum
    phải tự viết đúng không bạn.

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Chuẩn hóa việc nhập dữ liệu trên console.

    Trích dẫn Nguyên bản được gửi bởi AlexBlack Xem bài viết
    bài viết hay lắm bạn à. nhưng có những hàm như
    isdigit
    isalpha
    isalnum
    phải tự viết đúng không bạn.
    những cái này nằm trong ctype.h bạn à

    theo 0x stand thì dùng ctype là được
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  7. #7
    Ngày gia nhập
    12 2009
    Bài viết
    14

    Đọc vẫn chưa hiểu lắm :( hức.
    xau[i++]=ch,xau[i++]='.',printf("%c.",ch),...
    sa0 ngăn cách ở đây lại có "," cho mình hỏi ý nghĩa nó với :|

    ở phần "Nhập vào điểm thi của 1 học sinh"
    Code đó mình test, khi nhập vào "." thì nó tự fill thêm ".", nếu mình có nhập số thì khi trả về nó cũng trả về 0.00000 mà thôi langmang ạ.

  8. #8
    Ngày gia nhập
    12 2009
    Bài viết
    14

    Cả khi nhập. Mình ấn phím di chuyển tới tui... thì nó cũng báo lỗi nữa!
    Expesstion: (unsigned)(c+1) <=256

Các đề tài tương tự

  1. Kỹ thuật C++ nhập phân số a/b trên màn hình console
    Gửi bởi quantubanmang132 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 18-09-2013, 03:21 PM
  2. mã hóa pass nhập vào thành các kí tự * trên Console
    Gửi bởi tan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 30-12-2011, 07:16 PM
  3. Chuẩn hóa 1 xâu kí tự nhập từ bàn phím trong lập trình C?
    Gửi bởi trai xu nghe trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 24-07-2010, 12:38 PM
  4. bài tập về chuẩn hóa xâu trên C++?
    Gửi bởi ngoctan1789 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 12-01-2010, 09:24 PM
  5. Close console trên C# | Giúp mình về Console Application trên C# với?
    Gửi bởi letheson trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 15-05-2009, 12:28 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn