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

Đề tài: Lập trình C | Một phương án viết chương trình giải bài tập lớn

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

    Wink Lập trình C | Một phương án viết chương trình giải bài tập lớn

    Đa phần các bạn sinh viên khj mới học C đều được giao khá nhiều bài tập ( thường là 1xx bài ) và ai cũng muốn làm 1 chương trình lớn trong đó có các menu rồi truy xuất đến các bài tập con ...v...v...
    Sau đây mình xin trình bày 1 số ý tưởng của mình để 1 số bạn mới học có thể tham khảo , hy vọng qua đó các bạn có thể phát triển rộng ra tạo nên các chương trình của riêng mình hoặc qua những ý tưởng của mình có thể mở rộng , phát triển , phát minh ra những ý tưởng của riêng mình.

    (các bạn có ý tưởng thì cứ pót lên nhé. Cùng nhau phát triển , cùng nhau lớn mạnh)

    Thiết kế chương trình muti-option (đa ngôn ngữ , đa dao diện , ......)

    1. Khung của chương trình.

    Giấy rách phải giữ lấy lề.
    Giữ gìn lề nếp , lối sống.
    .v.v...

    ko cần phải nói nhiều . Theo mình nghĩ cái khung nó rất quan trọng với chương trình. Nó thể hiện cái cấu tạo của chương trình, nó đánh bật cái đẹp trong giao diện. Một chương trình giàn trải từ trên xuống dưới sẽ tạo ra 1 cảm giác lan man của người xem .


    C Code:
    1. {
    2.             gotoxy(1,1);for(i=1;i<=80;++i){printf("*");}
    3.             for(i=1;i<=49 ; ++i)
    4.             { gotoxy(1,i);printf("*");gotoxy(80,i);printf("*");}
    5.             gotoxy(1,49);for(i=1;i<=80;++i){printf("*");}
    6.             gotoxy(1,5);for(i=1;i<=80;++i){printf("*");}
    7.             gotoxy(1,45);for(i=1;i<=80;++i){printf("*");}
    8. }

    đây là 1 cái khung được tiết kế bằng sao gồm 3 không gian :
    + tile bar : tiêu đề
    + main space : không gian chính
    + status bar : thanh trạng thái

    Xong cái sườn . Có thể bạn vào phát in luôn cái khung ra. Nếu ko muốn bạn có thể làm thế này :

    + định nghĩa hàm vẽ

    C Code:
    1. void ve(int goc, int dich ,int vitri , int kieuve  )
    2.     {
    3.         int i;
    4.         textcolor(YELLOW);
    5.         if (kieuve==1)
    6.             { gotoxy(goc,vitri);
    7.               for ( i=goc ; i<=dich ; ++i)
    8.                 { cprintf("*");delay(5);}
    9.             }
    10.         if (kieuve==2)
    11.             { for (i=goc ; i<=dich ; ++i)
    12.                 { gotoxy(vitri,i);cprintf("*");delay(5);}
    13.             }
    14.         if (kieuve==3)
    15.             { for (i=goc ; i>=dich ; --i )
    16.                 { gotoxy(i,vitri);cprintf("*");delay(5);}
    17.             }
    18.         if (kieuve==4)
    19.             { for (i=goc ; i>=dich ; --i )
    20.                 { gotoxy(vitri,i);cprintf("*");delay(5);}
    21.             }
    22.     }

    + sau đó vẽ cái khung ra

    C Code:
    1. ve(1,80,1,1);ve(1,49,80,2);ve(80,1,49,3);
    2.         ve(49,1,1,4);ve(1,80,5,1);ve(80,1,45,3);


    Chà đó là cái khung sao. cũng khá hay nhỉ. Cô giáo nhìn vào chắc thích lắm đó.

    Tiếp theo tôi sẽ trình bày khung bằng ASCII . Khung này cũng khá đẹp đấy !

    C Code:
    1.  
    2. {
    3.             gotoxy(1,1);printf("%c",201);
    4.             for (i=2 ; i<=79 ; i++) {printf("%c" , 205);}
    5.             printf("%c" , 187);
    6.             gotoxy(1,49);printf("%c",200);
    7.             for (i=2 ; i<=79 ; i++) {printf("%c",205);}
    8.             printf("%c",188);
    9.             for (i=2 ; i<=48 ; i++ )
    10.         {gotoxy(1,i);printf("%c",186);gotoxy(80,i);printf("%c",186);}
    11.             gotoxy(1,5);
    12.             printf("%c",204);
    13.             for (i=2 ; i<=79 ; i++) {printf("%c",205);}
    14.             printf("%c",185);
    15.             gotoxy(1,45);
    16.             printf("%c",204);
    17.             for (i=2 ; i<=79 ; i++) {printf("%c",205);}
    18.             printf("%c",185);
    19.             }


    hoặc là :

    C Code:
    1. {
    2.             gotoxy(1,1);printf("É");                   //201
    3.             for (i=2 ; i<=79 ; i++) {printf("Í");}             //205
    4.             printf("»");                       //187
    5.             gotoxy(1,49);printf("È");              //200
    6.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    7.             printf("¼");                       //188
    8.             for (i=2 ; i<=48 ; i++ )
    9.             {gotoxy(1,i);printf("º");gotoxy(80,i);printf("º");}   //186
    10.             gotoxy(1,5);
    11.             printf("Ì");                       //204
    12.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    13.             printf("¹");                       //185
    14.             gotoxy(1,45);
    15.             printf("Ì");                       //204
    16.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    17.             printf("¹");                       //185
    18.             }

    (code này bạn có copy vào BC 3.1 for dos nó sẽ hiện lên điều tôi muốn nói)



    Xong cái khung. phù phù


    2. title bar : đây là thanh tiêu đề. nó ở dòng thứ 3. bạn có thể dùng :

    C Code:
    1. gotoxy(20,3);cprintf("     Giai he thong bai tap tin A2         ");
    status bar : đây là thanh trạng thái ở dòng 47 . bạn có thể dùng :

    C Code:
    1. gotoxy(18,47);cprintf("F5 : thay doi giao dien , F6 : thay doi ngon ngu");


    3. Về main menu (lõi của chương trình)

    + hình thức menu

    => menu 1 chiều :

    bạn tham khảo ở đây http://forums.congdongcviet.com/showthread.php?t=4423


    mình xin trình bày cách làm menu 1 chiều (dòng sáng di chuyển) gắn gọn nhất :

    khởi tạo 2 biến : tlc và lc (temp lựa chọn và lựa chọn )

    Bước 1 : lúc đầu khj khởi động menu 1 chiều lên thì :

    tlc=lc=1;

    khởi tạo giá trị ban đầu cho dòng sáng : khởi động lên dòng sáng sẽ là dòng đầu tiên.

    Bước 2 :
    nhập nút và xử lý (đã trình bày bên kia )(đánh dâu chỗ này để tí trình bày thêm.)

    Bước 3:
    lc thay đổi. >> đến dòng lựa chọn in dòng sáng
    lúc này tlc chính là dòng sáng lúc nãy >> nhảy đến dòng tlc in bình thường.

    Bước 4:
    và đừng quên : gán cho tlc=lc sau khj thực hiện bước 3

    Bước 5:
    nhảy đến bước 2 (he he dùng vòng lặp while nha )


    ==> menu đa chiều :
    + dạng đơn giản : cũng làm tương tự như trên nhưng dùng thuật ...

    nghỉ mai pót tiếp
    Đã được chỉnh sửa lần cuối bởi langman : 21-03-2008 lúc 03:09 PM.
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

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

    ==> menu đa chiều :

    + với menu đa chiều dạng đơn giản mình có làm demo 1 cái ở bài tập lớn của mình các bạn có thể xem full code ở cuối

    + với menu 2 chiều chuẩn các bạn cũng làm các bước như trên tuy nhiên ở đây lựa chọn ko còn là 1 biến nữa mà sẽ có 2 biến lựa chọn : ngang và dọc :

    phác thảo cách làm :

    _ khởi tạo 1 hàm hienthiten(x,y). Với mỗi cặp tham biến x , y sẽ viết ra 1 dòng nào đó có tọa độ khác định trên màn hình.

    _ nhập phím và xử lý đưa ra sự biến thiên của lcx , lcy >> vị trị của dòng sáng thay đổi

    làm menu dạng này có độ phức tạp ^2. Để làm được bạn cần thực hiện thành công bạn cần có độ kiên trì cao. ý tưởng đã trình bày cụ thể. các bạn thử write xem sao. Có gì ko ổn cứ hỏi nha.


    4. Giải bài tập .

    Vấn đề này thì mình xin miễn trình bày để bài viết khỏi bị loãng

    tuy nhiên mình xin up 1 số code cơ bản lên để các bạn chưa bít có thể nghiên cứu :

    C Code:
    1. long giaithua(unsigned n)           // tinh giai thua voi n
    2.     {
    3.         if (n*(n-1)==0) return 1;
    4.         else return n*giaithua(n-1);
    5.     }
    6. long haicham(unsigned n)  // tinh n!!
    7.     {
    8.         if (n*(n-1)*(n-2)==0) return n;
    9.         else return n*haicham(n-2);
    10.     }
    11. int UCLN(int a,int b)
    12.     {
    13.         if (b==0) return a;
    14.         else return UCLN(b, a%b);
    15.     }
    16. int BCNN(int a,int b)
    17.     {
    18.         return a*b/UCLN(a,b);
    19.     }


    còn 1 số hàm check (nguyên tố , hoàn hảo ... ) mình sẽ up sau


    5. Đây là vấn đề chính cần bàn đến. Làm sao để chải chuốt cho ct ?



    + hàm viết thay cho hàm printf(). Bạn có thể dùng kết hợp thêm textcolor()

    C Code:
    1. void viet(char xau[])
    2.     {
    3.         int i;
    4.         for ( i=0 ; i<strlen(xau) ; ++i)
    5.             { putch(xau[i]);delay(5); }
    6.     }

    + Việc chuyển giữa bài tập <> Chương <> menu cần phải làm sạch cái không gian của main menu. các bạn có thể dùng hàm cleartab của mình như sau

    C Code:
    1. void clr(int dong , int goc , int dungluong , int kieu )
    2.     {
    3.         int i,j;
    4.         gotoxy(goc,dong);textcolor(10);delay(2);
    5.         if (kieu==1) { j =3 ;}
    6.         if (kieu==2) { j=32;}
    7.         gotoxy(goc,dong);
    8.             for (i=1; i<=dungluong ; i++)
    9.                 { cprintf("%c",j);}
    10.  
    11.     }
    12. void clrtb(void)
    13.     {
    14.         int i;
    15.         for ( i=6; i<=44 ; i++) {clr(i,2,78,1);}
    16.         for (i=6 ; i<=44 ; i++) {clr(i,2,78,2);}
    17.     }

    (hàm clr sau này còn dùng để tạo 1 cái Exit thật ấn tượng sẽ trình bày sau)

    + Cái quan trọng mà mình nói ở tiêu đề . Mutil-option . Mình xin trình bày 2 op cơ bản : ngôn ngữ và giao diện. Các option khác các bạn có thể tự khởi tạo theo những ý tưởng riêng của mình.

    Các bạn có để ý bước 4 mình viết chữ đỏ và to ko ?

    nhập nút và xử lí.

    mình hãy ăn ké chỗ này để tạo ra các op riêng cho mình nha !!!!

    nếu nút nhập là lên xuống trái phải thì biến thiên lc đi.

    nếu nút nhập vào là F5 > đổi giao diện : có thể đổi từ khung sao sang khung chuẩn và ngược lại

    nếu nút nhập vào là F6 > đổi ngôn ngữ hiển thị
    .....

    C Code:
    1. void luachon(int j)     //j la so luong lua chon
    2.             // cac gia tri de lua chon duoc luu trong mang mlc
    3.             //nap data vao mlc roi moi su dung ham nay
    4.     {
    5.         char nutgia,nut;
    6.         tlc=lc=1;
    7.         textcolor(15);ten(mlc[1]);
    8.         while (nutgia !=0xd)
    9.         {
    10.         nutgia=getch();
    11.         if (nutgia == 0 ){nut=getch();}
    12.         switch (nut)
    13.              {
    14.             case 0x48 :lc--;  break;
    15.             case 0x50 :lc++;  break;
    16.             case 0x4d :if (j>9) lc+=9; else lc++; break;   // sang phai
    17.             case 0x4b :if (j>9) lc-=9; else lc--; break;   // sang trai
    18.             case 0x3F :skin(sk);sk++;if(sk==3){sk=1;} break;
    19.             case 0x40 :changelang();break;
    20.              }
    21.         if (lc>=j+1) {lc-=j;}
    22.         if (lc<=0)   {lc+=j;}
    23.         textcolor(10);ten(mlc[tlc]);
    24.         textcolor(15);ten(mlc[lc]);
    25.         nut=0x61;
    26.         tlc=lc;
    27.         }
    28.     }

    Để hiểu rõ vấn đề hơn các bạn hãy tải bản demo của mình về tét thử và ngâm cứu nha.


    Có gì sai sót xin được chỉ bào và bỏ qua cho
    (bài tập đang làm dở )


    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "string.h"
    4. #include "dos.h"
    5. #include "math.h"
    6.  
    7.  
    8.  
    9. int i,j;
    10. int sk=2; // skin cua chuong trinh
    11. int lang=1; //language cua chuong trinh
    12.  
    13. // bien de thuc hien menu 1 chieu
    14. int mlc[50] ; // mang lua chon
    15. int lc;    //lua chon
    16. int tlc; // temp lua chon
    17.  
    18. // bien xac dinh toa do chuong - bai tap hien tai cua ct
    19. int bt; // bai tap
    20. int ct; // chuong trinh   0 :  main menu
    21.        //         1 :  Chuong I
    22.  
    23.  
    24.  
    25.  
    26.  
    27. void khojdong();
    28. void mainmenu();
    29.  
    30. void main(void)
    31.     {
    32.         clrscr();
    33.         khojdong();
    34.     }
    35.  
    36.  
    37. void viet(char xau[])
    38.     {
    39.         int i;
    40.         for ( i=0 ; i<strlen(xau) ; ++i)
    41.             { putch(xau[i]);delay(5); }
    42.     }
    43. void ve(int goc, int dich ,int vitri , int kieuve  )
    44.     {
    45.         int i;
    46.         textcolor(YELLOW);
    47.         if (kieuve==1)
    48.             { gotoxy(goc,vitri);
    49.               for ( i=goc ; i<=dich ; ++i)
    50.                 { cprintf("*");delay(5);}
    51.             }
    52.         if (kieuve==2)
    53.             { for (i=goc ; i<=dich ; ++i)
    54.                 { gotoxy(vitri,i);cprintf("*");delay(5);}
    55.             }
    56.         if (kieuve==3)
    57.             { for (i=goc ; i>=dich ; --i )
    58.                 { gotoxy(i,vitri);cprintf("*");delay(5);}
    59.             }
    60.         if (kieuve==4)
    61.             { for (i=goc ; i>=dich ; --i )
    62.                 { gotoxy(vitri,i);cprintf("*");delay(5);}
    63.             }
    64.     }
    65. void clr(int dong , int goc , int dungluong , int kieu )
    66.     {
    67.         int i,j;
    68.         gotoxy(goc,dong);textcolor(10);delay(2);
    69.         if (kieu==1) { j =3 ;}
    70.         if (kieu==2) { j=32;}
    71.         gotoxy(goc,dong);
    72.             for (i=1; i<=dungluong ; i++)
    73.                 { cprintf("%c",j);}
    74.  
    75.     }
    76. void clrtb(void)
    77.     {
    78.         int i;
    79.         for ( i=6; i<=44 ; i++) {clr(i,2,78,1);}
    80.         for (i=6 ; i<=44 ; i++) {clr(i,2,78,2);}
    81.     }
    82. void skin(int j  )
    83.     {
    84.         int i;
    85.         if (j==1)
    86.             {
    87.             gotoxy(1,1);for(i=1;i<=80;++i){printf("*");}
    88.             for(i=1;i<=49 ; ++i)
    89.             { gotoxy(1,i);printf("*");gotoxy(80,i);printf("*");}
    90.             gotoxy(1,49);for(i=1;i<=80;++i){printf("*");}
    91.             gotoxy(1,5);for(i=1;i<=80;++i){printf("*");}
    92.             gotoxy(1,45);for(i=1;i<=80;++i){printf("*");}
    93.             }
    94.         if (j==2)
    95.             {
    96.             gotoxy(1,1);printf("É");                   //201
    97.             for (i=2 ; i<=79 ; i++) {printf("Í");}             //205
    98.             printf("»");                       //187
    99.             gotoxy(1,49);printf("È");              //200
    100.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    101.             printf("¼");                       //188
    102.             for (i=2 ; i<=48 ; i++ )
    103.             {gotoxy(1,i);printf("º");gotoxy(80,i);printf("º");}   //186
    104.             gotoxy(1,5);
    105.             printf("Ì");                       //204
    106.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    107.             printf("¹");                       //185
    108.             gotoxy(1,45);
    109.             printf("Ì");                       //204
    110.             for (i=2 ; i<=79 ; i++) {printf("Í");}         //205
    111.             printf("¹");                       //185
    112.             }
    113.     }
    114. //************************************************************************\\
    115. // Exercise data - De bai
    116.  
    117. void debai(int bai)
    118.     {
    119.         switch (bai)
    120.         {
    121.         case 1:printf("Giai va bien luan bat phuong trinh bac nhat ax+b>0 ");break;
    122.         case 2:printf("Giai va bien luan phuong trinh bac hai axý+bx+c=0");break;
    123.         case 3:printf("Giai va bien luan bat phuong trinh bac hai axý+bx+c>0");break;
    124.         case 5:printf("Nhap a,b,c. Tam giac? Tinh S P. ");break;
    125.         case 8:printf("Nhap vao m/n. Tim dang toi gian cua phan so do");break;
    126.         case 9:printf("Tim UCLN va BCNN cua 2 so nhap tu ban phim");break;
    127.         case 11:printf("Tim so co 3 cs ma tong lap phuong cac cs = chinh no");break;
    128.         case 12:case 36:printf("Nhap vao n. Tinh so cac cd va tong cac cs cua n ");break;
    129.         case 13:printf("Nhap vao so nguyen n. Tinh n! va n!!");break;
    130.         case 14:printf("Giai bai vua ga vua cho. ");break;
    131.         case 15:printf("Nhap a,b tim min max. Nhap a,h tinh S");break;
    132.         case 25:case 28:printf("Nhap vao a,b cua hinh chu nhat. Tinh S,P.");break;
    133.         case 26:printf("Nhap x,n, tinh xü ");break;
    134.  
    135.         }
    136.     }
    137. //************************************************************************//
    138.  
    139.  
    140.  
    141.  
    142.  
    143. //************************************************************************\\
    144. // data language - du lieu cua ngon ngu
    145.  
    146. void ten(int n)
    147.     {
    148.         if (lang==1)
    149.         switch (n)
    150.         {
    151.         case  1 :gotoxy(9,9); cprintf("Chuong I   : Cac bai tap dang co ban ");break;
    152.         case  2 :gotoxy(9,11);cprintf("Chuong II  : Mang mot chieu          ");break;
    153.         case  3 :gotoxy(9,13);cprintf("Chuong III : Mang hai chieu - ma tran");break;
    154.         case  4 :gotoxy(9,15);cprintf("Chuong IV  : Xau ki tu               ");break;
    155.         case  5 :gotoxy(9,17);cprintf("Chuong V   : Cau truc                ");break;
    156.         case  6 :gotoxy(9,19);cprintf("Chuong VI  : Tap tin                 ");break;
    157.         case  7 :gotoxy(9,21);cprintf("Mot so bai tap nang cao              ");break;
    158.         case  8 :gotoxy(35,38);cprintf("+ Thoat +");break;
    159.         case  9 :gotoxy(20,3);cprintf("     Giai he thong bai tap tin A2         ");break;
    160.         case 10 :gotoxy(18,47);printf("Bui Tan Quang - langmaninternet@yahoo.com - CN1K7D1");break;
    161.         case 11 :gotoxy(27,7); printf("Cac dang bai tap chinh");break;
    162.         case 12 :gotoxy(18,47);cprintf("F5 : thay doi giao dien , F6 : thay doi ngon ngu   ");break;
    163.         case 98 :gotoxy(12,40);cprintf("+ Tro lai +");break;
    164.         case 99 :gotoxy(59,40);cprintf("+ Thoat +");break;
    165.         case 101:
    166.         case 102:
    167.         case 103:
    168.         case 104:
    169.         case 105:
    170.         case 106:
    171.         case 107:
    172.         case 108:
    173.         case 109 :gotoxy(5,9+3*(n-100)),cprintf("Bai %d",n-100);break;
    174.         case 110:
    175.         case 111:
    176.         case 112:
    177.         case 113:
    178.         case 114:
    179.         case 115:
    180.         case 116:
    181.         case 117:
    182.         case 118:gotoxy(26,9+3*(n-109)),cprintf("Bai %d",n-100);break;
    183.         case 119:
    184.         case 120:
    185.         case 121:
    186.         case 122:
    187.         case 123:
    188.         case 124:
    189.         case 125:
    190.         case 126:
    191.         case 127:gotoxy(49,9+3*(n-118)),cprintf("Bai %d",n-100);break;
    192.         case 128:
    193.         case 129:
    194.         case 130:
    195.         case 131:
    196.         case 132:
    197.         case 133:
    198.         case 134:
    199.         case 135:
    200.         case 136:gotoxy(70,9+3*(n-127)),cprintf("Bai %d",n-100);break;
    201.         }
    202.         else
    203.         switch (n)
    204.         {
    205.         case  1 :gotoxy(9,9);cprintf("PART  I  : The basic                 ");break;
    206.         case  2 :gotoxy(9,11);cprintf("PART II  : Array                     ");break;
    207.         case  3 :gotoxy(9,13);cprintf("PART III : Matric                    ");break;
    208.         case  4 :gotoxy(9,15);cprintf("PART IV  : String                    ");break;
    209.         case  5 :gotoxy(9,17);cprintf("PART V   : Struct & union            ");break;
    210.         case  6 :gotoxy(9,19);cprintf("PART VI  : File                      ");break;
    211.         case  7 :gotoxy(9,21);cprintf("The other                            ");break;
    212.         case  8 :gotoxy(35,38);cprintf("+ Exit  +");break;
    213.         case  9 :gotoxy(20,3);cprintf("Solution for A2 information problem system");break;
    214.         case 10 :gotoxy(18,47);cprintf("F5 : change skin      ,     F6 : change language   ");break;
    215.         case 11 :gotoxy(27,7);printf("Some kind of exercise ");break;
    216.         case 12 :gotoxy(18,47);printf("Bui Tan Quang - langmaninternet@yahoo.com - CN1K7D1");break;
    217.         case 98 :gotoxy(12,40);cprintf("+   Back  +");break;
    218.         case 99 :gotoxy(59,40);cprintf("+ Exit  +");break;      case 101:
    219.         case 102:
    220.         case 103:
    221.         case 104:
    222.         case 105:
    223.         case 106:
    224.         case 107:
    225.         case 108:
    226.         case 109 :gotoxy(5,9+3*(n-100)),cprintf("Exc %d",n-100);break;
    227.         case 110:
    228.         case 111:
    229.         case 112:
    230.         case 113:
    231.         case 114:
    232.         case 115:
    233.         case 116:
    234.         case 117:
    235.         case 118:gotoxy(26,9+3*(n-109)),cprintf("Exc %d",n-100);break;
    236.         case 119:
    237.         case 120:
    238.         case 121:
    239.         case 122:
    240.         case 123:
    241.         case 124:
    242.         case 125:
    243.         case 126:
    244.         case 127:gotoxy(49,9+3*(n-118)),cprintf("Exc %d",n-100);break;
    245.         case 128:
    246.         case 129:
    247.         case 130:
    248.         case 131:
    249.         case 132:
    250.         case 133:
    251.         case 134:
    252.         case 135:
    253.         case 136:gotoxy(70,9+3*(n-127)),cprintf("Exc %d",n-100);break;
    254.         }
    255.     }
    256. //************************************************************************//
    257.  
    258.  
    259.  
    260. //************************************************************************\\
    261. //Thu tuc quan trong
    262. long giaithua(unsigned n)           // tinh giai thua voi n
    263.     {
    264.         if (n*(n-1)==0) return 1;
    265.         else return n*giaithua(n-1);
    266.     }
    267. long haicham(unsigned n)  // tinh n!!
    268.     {
    269.         if (n*(n-1)*(n-2)==0) return n;
    270.         else return n*haicham(n-2);
    271.     }
    272. int UCLN(int a,int b)
    273.     {
    274.         if (b==0) return a;
    275.         else return UCLN(b, a%b);
    276.     }
    277. int BCNN(int a,int b)
    278.     {
    279.         return a*b/UCLN(a,b);
    280.     }
    281.  
    282. //************************************************************************//
    283.  
    284. //************************************************************************\\
    285. // Exercise data -  bai giai
    286.  
    287.  
    288. #define nhapa {printf("Nhap vao so a : ");scanf("%f", &a);gotoxy(5,21);}
    289. #define nhapb {printf("Nhap vao so b : ");scanf("%f", &b);gotoxy(5,23);}
    290. #define nhapc {printf("Nhap vao so c : ");scanf("%f", &c);gotoxy(5,25);}
    291. #define nhapn {printf("Nhap vao so n : ");scanf("%d", &n);}
    292. #define nhapm {printf("Nhap vao so m : ");scanf("%d", &m);}
    293. extern int i,j;
    294.  
    295. float a,b,c;
    296. int m,n;
    297. char ch;
    298. float s;
    299.  
    300.  
    301.  
    302. void bai1(void)
    303.     {
    304.         nhapa nhapb
    305.         if (a==0)
    306.             if (b>0) printf("Bat phuong trinh co nghiem voi moi x");
    307.             else printf("Bat phuong trinh vo nghiem");
    308.         if (a>0) printf("Bat phuong trinh co nghiem la x > %.2f" ,1.0*(-b)/a);
    309.         if (a<0) printf("Bat phuong trinh co nghiem la x < %.2f" ,1.0*(-b)/a);
    310.     }
    311. void bai2(void)
    312.     {
    313.         nhapa nhapb nhapc
    314.         if (a==0)
    315.             { if (b==0) if (c==0) printf("Phuong trinh co nghiem voi moi x");
    316.                     else printf ("Phuong trinh vo nghiem");
    317.               else printf("Phuong trinh co nghiem duy nhat la x = %.2f", (-c)/b);
    318.             }
    319.         else
    320.         {
    321.         s=b*b-4*a*c;
    322.         if (s<0) printf("Phuong trinh vo nghiem");
    323.            else if (s==0) printf("Phuong trinh co nghiem kep %.2f" ,(-b)/(2*a) );
    324.             else printf("Phuong trinh co 2 nghiem phan biet la %.2f va %.2f" , ((-b)+sqrt(s))/(2*a) ,1.0*((-b)-sqrt(s))/(2*a) );
    325.         }
    326.  
    327.     }
    328. void bai3(void)
    329.     {
    330.         nhapa nhapb nhapc
    331.         s=b*b-4*a*c;
    332.         if (s<0)
    333.             if (a<0) {printf("Bat phuong trinh vo nghiem");}
    334.             else printf("Bat phuong trinh co nghiem voi moi x");
    335.         else if (s==0)
    336.             if (a<0) {printf("Bat phuong trinh co nghiem x > ");}
    337.             else printf("Bat phuong trinh co nghiem voi moi x");
    338. //cha nho cai gi ca quen cac giai bai nay roi
    339.     }
    340. void bai4(void)
    341.     {
    342.         nhapa nhapb nhapc
    343.         if ((a+b>c)&&(a+c>b)&&(b+c>a))
    344.         {
    345.             printf("Day la 3 canh cua 1 tam giac ");
    346.             if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) {printf("vuong ");}
    347.             if ((a==b)&&(b==c)) {printf("deu ");}
    348.             else if ((a==b)||(b==c)||(c==a)) {printf("can ");}
    349.             s=(a+b+c)/2;gotoxy(15,27);printf("co :");
    350.             gotoxy(5,27);
    351.             printf("chu vi la %.2f va dien tich la %.2f", s*2 , sqrt(s*(s-a)*(s-b)*(s-b)) );
    352.         }
    353.         else printf("Day ko phai 3 canh cua 1 tam giac");
    354.     }
    355. void bai8(void)
    356.     {
    357.         nhapm gotoxy(5,21);nhapn
    358.         m/=UCLN(m,n);n/=UCLN(m,n);
    359.         gotoxy(5,23);printf("Dang toi gian cua phan so do la %d/%d ",m,n);
    360.     }
    361. void bai9(void)
    362.     {
    363.         nhapm gotoxy(5,21); nhapn
    364.         gotoxy(5,23);printf("Uoc chung lon nhat cua 2 so do la : %d ",UCLN(m,n) );
    365.         gotoxy(5,25);printf("Boi chung nho nhat cua 2 so do la : %d ",BCNN(m,n) );
    366.     }
    367. void bai11(void)
    368.     {
    369.         for (a=1 ; a<=9 ; a++)
    370.          for (b=1 ; b<=9 ; b++)
    371.           for (c=1 ; c<=9 ; c++)
    372.            if (a*a*a+b*b*b+c*c*c==a*100+b*10+c)
    373.             printf(" %.0f%.0f%.0f " , a,b,c );
    374.     }
    375. void bai12(void)  // bai 36
    376.     {
    377.         nhapn j=m=0;
    378.         for (i=1 ; i<=12 ; i++ )
    379.         {if (n==0) break;else {m+=n%10;n/=10;j++;}}
    380.         gotoxy(5,21);printf("So cac chu so cua n la %d " , j );
    381.         gotoxy(5,23);printf("Tong cac chu so cua n la : %d " ,m );
    382.     }
    383. void bai13(void)
    384.     {
    385.         nhapn
    386.         gotoxy(5,21);printf(" n! = %ld",giaithua(n));
    387.         gotoxy(5,23);printf("n!! = %ld",haicham(n));
    388.     }
    389. void bai14(void)
    390.     {
    391.         for (i=1 ; i<=24 ; i++)
    392.             if ((4*i+2*(36-i))==100)
    393.                 printf("Co %d cho %d ga", i, 36-i);
    394.     }
    395.  
    396. void bai15(void)
    397.     {
    398.         nhapa nhapb
    399.         printf("So lon la %.2f so be la %.2f" ,(a>b)?(a):(b) ,(a<b)?(a):(b));
    400.         gotoxy(5,27);printf("Nhap vao chieu cao : ");scanf("%f", &a);
    401.         gotoxy(5,29);printf("Nhap vao canh day  : ");scanf("%f", &b);
    402.         gotoxy(5,31);printf("Dien tich tam giac la : %.2f" , a*b/2);
    403.     }
    404. void bai18(void)
    405.     {
    406.         nhapn gotoxy(5,21);
    407.         printf(" n! = %ld",giaithua(n));
    408.     }
    409. void bai19(void)
    410.     {
    411.         nhapa
    412.     }
    413. void bai25(void)
    414.     {
    415.         nhapa nhapb
    416.  
    417.     }
    418.  
    419.  
    420. //************************************************************************\\
    421.  
    422.  
    423.  
    424.  
    425. void khojdong(void)
    426.     {
    427.         j=5;
    428.         char  xau[14]="Bui Tan Quang";
    429.         clrscr();fflush(stdin);
    430.         for (i=0 ; i<=12;i++)
    431.         {
    432.             if (i&1)
    433.             {gotoxy(39,22);cprintf("%d",j);--j;}
    434.             gotoxy(33+i,25);textcolor(14);cprintf("%c",xau[i]);
    435.             delay(500);
    436.             gotoxy(33+i,25);textcolor(10);cprintf("%c",xau[i]);
    437.         }
    438.         gotoxy(39,22);printf(" ");
    439.         for (i=0 ; i<=10; i++)
    440.         { gotoxy(33,25);textcolor(14);cprintf("%s",xau);delay(50);
    441.           gotoxy(33,25);textcolor(10);cprintf("%s",xau);delay(50);
    442.         }
    443.         ve(1,80,1,1);ve(1,49,80,2);ve(80,1,49,3);
    444.         ve(49,1,1,4);ve(1,80,5,1);ve(80,1,45,3);
    445.         clrtb();
    446.         mainmenu();
    447.     }
    448. void changelang(void)
    449.     {
    450.         lang++;
    451.         if (lang==3) {lang=1;}
    452.         textcolor(RED);ten(9);
    453.         textcolor(10);ten(10);
    454.         switch (ct)
    455.         {
    456.             case 0 : for (i=1; i<=11; i++) ten(i);break;
    457.             case 1 : for (i=1; i<=36; i++) ten(100+i);ten(99);break;
    458.         }
    459.  
    460.     }
    461. void luachon(int j)     //j la so luong lua chon
    462.             // cac gia tri de lua chon duoc luu trong mang mlc
    463.             //nap data vao mlc roi moi su dung ham nay
    464.     {
    465.         char nutgia,nut;
    466.         tlc=lc=1;
    467.         textcolor(15);ten(mlc[1]);
    468.         while (nutgia !=0xd)
    469.         {
    470.         nutgia=getch();
    471.         if (nutgia == 0 ){nut=getch();}
    472.         switch (nut)
    473.              {
    474.             case 0x48 :lc--;  break;
    475.             case 0x50 :lc++;  break;
    476.             case 0x4d :if (j>9) lc+=9; else lc++; break;   // sang phai
    477.             case 0x4b :if (j>9) lc-=9; else lc--; break;   // sang trai
    478.             case 0x3F :skin(sk);sk++;if(sk==3){sk=1;} break;
    479.             case 0x40 :changelang();break;
    480.              }
    481.         if (lc>=j+1) {lc-=j;}
    482.         if (lc<=0)   {lc+=j;}
    483.         textcolor(10);ten(mlc[tlc]);
    484.         textcolor(15);ten(mlc[lc]);
    485.         nut=0x61;
    486.         tlc=lc;
    487.         }
    488.     }
    489. void ChuongI(void)
    490.     {
    491.         for (i=1;i<=36; i++) {ten(100+i);mlc[i]=100+i;}
    492.         mlc[37]=98;mlc[38]=99;
    493.         ten(98);ten(99);
    494.         luachon(38);
    495.         clrtb();
    496.         gotoxy(5,19);
    497.         switch (lc)
    498.         {
    499.             case 1:bai1();break;
    500.             case 2:bai2();break;
    501.             case 3:bai3();break;
    502.         }
    503.     }
    504. void mainmenu(void)
    505.     {
    506.         ct=0;
    507.         {ten(11);ten(1);ten(2);ten(3);ten(4);ten(5);ten(6);ten(7);ten(8);};
    508.         ten(12);
    509.         textcolor(RED);ten(9);
    510.         // load mang lua chon
    511.         for (i=1 ; i<=8 ; i++ ) {mlc[i]=i;}
    512.         luachon(8);
    513.         ct=lc;
    514.         switch (ct)
    515.         {
    516.         case 1:clrtb(); ChuongI();break;
    517.         }
    518.     }
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

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

  1. Toàn Quốc Tìm người viết công cụ giải mã file video (Mã hóa đơn giản)
    Gửi bởi Kevin Hoang trong diễn đàn Việc làm IT(tự do)
    Trả lời: 3
    Bài viết cuối: 19-07-2013, 04:26 PM
  2. ADO.NET Cần gợi ý viết hàm kiểm tra hết hạn cho đọc giả
    Gửi bởi vcn9294 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-04-2013, 12:02 AM
  3. Lập trình C hai cách viết trong bài viết này có gì khác không, nếu khác mọi người giải thích giúp với
    Gửi bởi letung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 02-01-2013, 07:29 AM
  4. Viết chương trình giải phương trình bậc 2 bằng C#
    Gửi bởi hvtien trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 8
    Bài viết cuối: 07-07-2011, 02:31 AM
  5. Viết Giao Diện Phần Mềm bằng Flash, Core viết = C
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 31-05-2011, 06:45 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