Latest topics
Similar topics

    week8 full

    Go down

    Re: week8 full

    Bài gửi by chikclik on 10/04/11, 12:02 pm

    Thành thật xin lỗi Chikclik, edit bài, xóa nhầm mất bài 1. Khi nào onl thì edit lại hộ Koltec nhé.
    By Koltec So good

    =====================

    Code:
    #include

    int main()
    {int a,b,d,dem1;
    char c,tong;

    while(1)
    {

    printf("\t\tTen tac gia : Nguyen Trung Lam\n");
    printf("\t\tTen chuong trinh chuyen co so\n\n");
    printf("\t 1.Nhap so\n");
    printf("\t 2.chuyen sang he nhi phan\n");
    printf("\t 3.chuyen sang he 16\n");
    printf("\t 4.chuyen sang he 8\n");
    printf("\t 5.thoat\n");

    scanf("%d",&a);
    switch (a) {

    case 1:printf("nhap so\n");
    scanf("%d",&b);d=b;continue;
    case 2:/*chuyen sang he nhi phan*/
    if(b>=0) { tong=1;
              while(b>=2){b=b/2;tong =tong+1;}
              int A[tong];
              for(dem1 =1;dem1<=tong;dem1++){A[dem1]=d%2;d=d/2;}
              for(dem1 =1;dem1<=tong;dem1++){printf("%d",A[tong-dem1+1]);}
              printf("\n");}
    else printf("dung nhap so am chu\n");continue;
    case 3:printf("%x\n",b);continue;
    case 4:printf("%o\n",b);continue;
    case 5:printf("thoat that a Yes(y) No(N):");c=getch();printf("%c\n",c);getch();break;


    }
    printf("Chuc quy vi mot buoi toi that thu vi \n\n");


    if (c=='Y'||c=='y') break;

    }
    return 0;
    }

    ===================

    Code:
    #include
    #include
    //nkiem tra so truoc
    int nhaptruoc(int truoc,int m)
    {
        while (1)
        {
            scanf("%d",&truoc);

            if (m%2==1) {if
    ((truoc%2==0)&&(truoc<6)&&(truoc>0)) break; else
    printf("sai luat!hay~~nhap lai!");} else
            {if ((truoc%2==1)&&(truoc<6)&&(truoc>0)) break; else printf("sai luat!hay~~nhap lai!");}
        }
        return truoc;
    }
    //kiem tra so sau
    int nhapsau(int truoc,int sau)
    {

        while (1)
        {
            scanf("%d",&sau);
            if (truoc%2==1) {if
    ((sau%2==0)&&(sau<6)&&(sau>0)) break; else
    printf("sai luat!hay~~nhap lai\n");} else
            {if ((sau%2==1)&&(sau<6)&&(sau>0)) break;else printf("sai luat!hay~~nhap lai\n");}
        }
        return sau;
    }

    typedef struct
    {
        char ten1[40],ten2[40];
        int diem1,diem2,turn1,turn2,LUOT;
    } thongtin;
    //in thong tin
    void inthongtin(thongtin s)
    {
        printf("\t\t\t\tGAME TUNG SUC XAC\n");
        printf("\t\t\t\tTURN THU %d\n",s.LUOT);
        printf("\tPlayer1\t\t\t\t|\tPlayer2        \n");
        printf("Nick name:\t%-20.20s\t|Nick name:\t%-20.20s\n",s.ten1,s.ten2);
        printf("Diem:\t\t%-d\t\t\t|Diem:\t\t%-d\n",s.diem1,s.diem2);
        //printf("turn thu:%d\t\t\t|turn thu:%d\n",s.turn1,s.turn2);
        printf("\n\n");
    }
    int main()
    {
        int m,n,dem=0,truoc,sau,demluot,dich;
        thongtin tt,s;
        demluot=0;
        tt.diem1=0;
        tt.diem2=0;
        srand((unsigned)time(NULL));
        printf("PLAYER1's name:");gets(tt.ten1);
        printf("PLAYER2's name:");gets(tt.ten2);
        printf("\n");
        printf("Enter numbers win:");scanf("%d",&dich);
        printf("Nguoi choi 1 di truoc!\n");
        while (1)
        {
            //test nguoi choi 1
            printf("\tPLAY1's turn:\n");
            printf("So ban chon:");
            truoc=nhaptruoc(truoc,dem);
            m=rand()%(truoc)+1;printf("So random la:%d\n",m);
            tt.diem1+=m;
            if (tt.diem1==dich) {printf("GAME OVER!PLAYER 1 WON\a\a\a\a\a\a\a"); break;} else
            {if (tt.diem1>dich) {tt.diem1-=dich;printf("Ban phai quay ve vi tri so %d",tt.diem1);}}
            //test nguoi choi 2
            printf("\tPLAYER2's turn:\n");
            printf("So ban chon:");
            dem=nhapsau(truoc,sau);
            n=rand()%(dem)+1;printf("So random la:%d\n",n);
            tt.diem2+=n;
            if (tt.diem2==dich) {printf("GAME OVER!PLAYER 2 WON\a\a\a\a\a\a\a"); break;} else
            {if (tt.diem2>dich) {tt.diem2-=dich;printf("Ban phai quay ve vi tri so %d",tt.diem2);}}
            //in ra turn
            ++demluot;
            tt.LUOT=demluot;
            s=tt;
            inthongtin(s);
            if (demluot==2*dich) {printf("Da qua luot choi!\n");printf("KET QUA HOA\\n\a\a\a\a\a\a");break;}
        }
        return 0;
    }

    ========================

    mình chỉ test trên codeblock.chưa test tren ubuntu.có ji góp ý nhé!

    Edited by Koltec.
    PS: edit bài thôi, đừng post nhiều thế Chikclik nhé. S_have fun! So good
    avatar
    chikclik

    Tổng số bài gửi : 12
    Points : 20
    Join date : 21/03/2011

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by myname2 on 10/04/11, 09:35 pm

    dùng nhiều thứ chưa học quá :-S

    _________________
    Bước chân không ngừng nghỉ, bước chân hướng về phía trước, đó là bước chân của tôi!
    avatar
    myname2

    Tổng số bài gửi : 66
    Points : 90
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà Nội

    Xem lý lịch thành viên https://facebook.com/tuanhai

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by xlKD on 10/04/11, 10:06 pm

    Tg? se-ri CIntro nay la cua anh Sang giu~ ban quyen =))
    avatar
    xlKD

    Tổng số bài gửi : 53
    Points : 62
    Join date : 27/09/2010
    Age : 26

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Woodyx on 10/04/11, 11:14 pm

    Em cũng theo dõi seri của anh sáng hàng tuần.
    Tuần này nghe lâu quá hen.
    Siêu nhân nào mới nổi zậy?
    avatar
    Woodyx

    Tổng số bài gửi : 26
    Points : 35
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà nội pro

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by chikclik on 10/04/11, 11:41 pm

    bạn Sáng đi công tác tại Phú Thọ rồi.chắc là đang vui vẻ trên đấy rồi.
    avatar
    chikclik

    Tổng số bài gửi : 12
    Points : 20
    Join date : 21/03/2011

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by haidang001 on 11/04/11, 01:32 am

    Đang cày cuốc trò gì gì trên face của myname2 vs mấy đứa em, quên hết cả ae.
    Thank chikclik lâp hộ threat.

    Koltec bổ sung vài phần còn thiếu:

    Đề bài: gồm 3 bài
    Bài 1: acb (anh có bồ So good )
    Code:

        Cai tieng chuong trinh tinh lai suat tiet kiem. Viet lai chuong trinh do voi menu sau:
        TAI KHOAN TIEN GUI ACB.
            1. Gui tien
            2. Lai suat
            3. Chi tiet lai suat
            4. Thoat.

    Bài 2: basen
    Code:

        Viet chuong trinh chuyen doi he co so voi menu sau:
            CT Chuyen doi he co so.
            Tac gia: ABC.

            1. Nhap so (he 10).
            2. So o he nhi phan.
            3. So o he thap luc phan.
            4. So o he tam.
            5. Thoat.

    Bài 3: smallgame
    Code:

        You are requested to write a game for 2 player. The goal is to reach to a given number (exp 100 - inputted from users) from the a starting number (inputted).
        Who play first is determined by a random number is even or not. The game is play by turn, in each turn players can choose a positive number less than 5 - and depend on number selected by the other in previous turn. If the previous is odd then the next is even and inversely.
        Who reach the destination first.


        Interface expected.

        ICT GAME CENTER - SMART STRATEGY
        start: 5 <-
        destination: 100 <-
        who play first (randomly): 2
        P2 - turn
        Choose a number: 4
        Now the value is 9
        P1 - turn
        Choose a number: 6 <invalid - greater than 5>
        Choose a number: 2<invalid - even as previous slected>
        Choose a number: 3
        Now the value is 12 . . .
        . . .
        P1 has won the game.! Congratulation.

    Phần 2: Solution
    Tham khảo bài Chikclik.

    Phần 3: (bonus)
    Đây là phiên bản tự xướng của Koltec.

    Bài 2': basen v2.0
    Code:

    /*Base converter v2.0*/

    /*Copyright (c) haidang001 (tm) (@yahoo.com)*/
    /*S_have fun! :)*/

    /*Viet chuong trinh chuyen doi he co so voi menu sau:
      CT Chuyen doi he co so.
      Tac gia: ABC.

      1. Nhap so (he 10).
      2. So o he nhi phan.
      3. So o he thap luc phan.
      4. So o he tam.
      5. Thoat.*/

    #include <stdio.h>

    char ans[100], bin[100];
    int bquit = 0, t, i, inpbase = 0, outbase = 0, inp[1000], out[1000], x, success;

    void init()
    {
      ans[0] = 'a';
      inp[0] = 0;
    } //End init

    void mainmenu()
    {
      printf("\n\t\tBase converter v2.0\n");
      printf("\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
      printf("\t\t  S_have fun! :)\n\n");

      printf("1: Input number\n");
      printf("2: Show result\n");
      printf("3: Setting\n");
      printf("4: Show Decimal\n");
      printf("5: Quit\n\n");
    } //End mainmenu

    void printinp()
    {
      for (i = inp[0]; i >= 1; i--)
        printf("%d ", inp[i]);
    } //End printinp()

    void printout()
    {
      for (i = out[0]; i >= 1; i--)
        printf("%d ", out[i]);
    }//End printout()

    void input() //Input number
    {
      if (inpbase < 2)
        {
          printf("Base of input number is not set\n");
          return;
        };
      inp[0] = -1;
      while (inp[0] <= 0)
        {
          printf("Number of digit of input number: ");
          scanf("%d", &inp[0]);
          getchar();
        };

      while (1)
        {
          printf("Now, enter %d digit of input number as base %d number(each digit seperated by at least one space or one enter character.\n", inp[0], inpbase);
          success = 1;
          for (i = inp[0]; i >= 1; i--)
        {
          scanf("%d", &inp[i]);
          getchar();
          if ((inp[i] < 0) || (inp[i] >= inpbase))
            success = 0;
        };

          if (success == 1)
        break;
        };

      while ((inp[0] > 0) && (inp[inp[0]] == 0))
        inp[0]--;
         
      printf("\nYour input number is (base %d): ", inpbase);
      printinp();
      printf("\n");

    } //End input

    void getx()
    {
      x = 0;
      for (i = inp[0]; i >= 1; i--)
          x = x * inpbase + inp[i];
    }//End getx()

    void getout()
    {
      printf("x = %d\n", x);
      t = x;
      out[0] = 0;
      while (t > 0)
        {
          out[++out[0]] = t % outbase;
          t = t / outbase;
        };
         
    }//End getout()

    void decimal() // Quick show Decimal
    {
      if (inpbase < 2)
        {
          printf("Base of input number is not set\n");
          return;
        };

      if (inp[0] <= 0)
        {
          printf("Input number is not set\n");
          return;
        };
     
      getx();
      printf("Your inputed number show as Decimal number: %d\n", x);
      return;
    };



    void show() //Show result
    {
     
      if (inpbase < 2)
        {
          printf("Base of input number is not set\n");
          return;
        };

      if (inp[0] <= 0)
        {
          printf("Input number is not set\n");
          return;
        };

      if (outbase < 2)
        {
          printf("Base of output number is not set\n");
          return;
        };

      getx();
      getout();

      printf("%-25s: %d\n", "Base of input number", inpbase);
      printf("%-25s: ", "Input number");
      printinp();
      printf("\n%-25s: %d\n", "Base of output number", outbase);
      printf("%-25s: ", "Output number");
      printout();
      printf("\n");
     
    } //End show();

    void setting() //Setting
    {
      ans[0] = 'a';

      while (ans[0] != '3')
        {
          printf("1: Set base of input number. Current value: %d\n", inpbase);
          printf("2: Set base of ouput number. Current value: %d\n", outbase);
          printf("3: Return to main menu\n\n");

          ans[0] = 'a';
          while ((ans[0] < '1') || (ans[0] > '3'))
        {
          printf("Enter your choose: ");
          gets(ans);
        };
          printf("\n");

          switch (ans[0])
        {
        case '1': //Base of input number
          inpbase = 0;
          while (inpbase < 2)
            {
              printf("Input base of input number: ");
              scanf("%d", &inpbase);
              getchar();
            };
          break;

        case '2': //Base of ouput number
          outbase = 0;
          while (outbase < 2)
            {
              printf("Input base of ouput number: ");
              scanf("%d", &outbase);
              getchar();
            };
          break;
        };
        };
    } //End setting

    int quit()
    {
      ans[0] = 'a';
      while ((ans[0] != 'Y') && (ans[0] != 'N'))
        {
          printf("Are you sure want to Quit program? (Y/N)");         
          gets(ans);
          ans[0] = toupper(ans[0]);
        };
      if (ans[0] == 'Y')
        return 1;
      else
        return 0;
    } //End quit



    main()
    {
      init();
     
      while (1)
        {
          mainmenu();
          ans[0] = 'a';
         
          while ((ans[0] < '1') || (ans[0] > '5'))
        {
          printf("Enter your choose: ");
          gets(ans);
        };
          printf("\n");

          switch (ans[0])
        {
        case '1': //Input number; Positive only
          input();
          break;

        case '2': //Show result
          show();
          break;

        case '3': //Setting
          setting();
          break;

        case '4': //Quick Decimal
          decimal();
          break;

        case '5': //Quit
          bquit = quit();
          break;
        };

          if (bquit)
        break;
         
          printf("\nPress Enter to return to main menu . . .");
          gets(ans);           
        };

      printf("\nThank for using program!\n");
      printf("S_have fun! :)\n");
      return 0;
     
    };//End main()

    Bài 3': smallgame v2.0

    Cứ vào solo vs insane thì biết So good).
    Tự compile rồi tự xướng luôn nhé.

    smallgame v2.0
    Code:
    /*Copyright (c) haidang001 (tm) (@yahoo.com)*/
    /*S_have fun! :)*/
    /*You are requested to write a game for 2 player. The goal is to reach to a given number (exp 100 - inputted from users) from the a starting number (inputted).
      Who play first is determined by a random number is even or not. The game is play by turn, in each turn players can choose a positive number less than 5 - and depend on number selected by the other in previous turn. If the previous is odd then the next is even and inversely.
      Who reach the destination first.


      Interface expected.

      ICT GAME CENTER - SMART STRATEGY
      start: 5 <-
      destination: 100 <-
      who play first (randomly): 2
      P2 - turn
      Choose a number: 4
      Now the value is 9
      P1 - turn
      Choose a number: 6
      Choose a number: 2
      Choose a number: 3
      Now the value is 12 . . .
      . . .
      P1 has won the game.! Congratulation.*/

    #include
    #include
    #include

    #define targetmax 1000

    int start = 5, finish = 30, mode = 2, bquit = 0, v[2][3] = {{0, 2, 4}, {1, 3, 5}}, f[targetmax + 1][2], s[targetmax + 1][2];
    char ans[100], *who[3];

    void init()
    {
      who[1] = "Computer";
      who[2] = "Human";

      int i, j;
      for (i = start; i <= finish; i++)
        for (j = 0; j <= 1; j ++)
          f[i][j] = -1;

      for (i = 0; i <= 5; i++)
        for (j = 0; j <= 1; j++)
          {
        f[finish + i][j] = 0;
        s[finish + i][j] = 0;
          };
    }//End init()

    int getf(int x, int y)
    {
      int i, nx, ny;
     
      if (f[x][y] > -1)
        return f[x][y];
     
      f[x][y] = 0;
      s[x][y] = 0;
      for (i = 0; i <= 2; i++)
        if (x + v[y][i] <= finish)
          {
        s[x][y]++;
        nx = x + v[y][i];
        ny = 1 - y;
        getf(nx, ny);
        if (f[nx][ny] < s[nx][ny])
          f[x][y]++;
          };

      return f[x][y];
    }

    void mainmenu()
    {
      printf("\n\t\tSMALL GAME v2.0\n");
      printf("\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
      printf("\t\t S_have fun! :)\n\n");

      printf("1: Human Vs Human\n");
      printf("2: Human Vs Computer\n");
      printf("3: Computer Vs Human\n");
      printf("4: Setting\n");
      printf("5: Quit\n\n");
    }//End mainmenu()

    void hvh()
    {
      int p, x, value, prev;
     
      printf("Start number: %d\n", start);
      printf("Target number: %d\n", finish);

      srand((unsigned)time(NULL));
      p = rand() % 2 + 1;

      printf("P%d plays first\n", p);
      printf("\nP%d-turn\n", p);
      while (1)
        {
          printf("Choose a number: ");
          scanf("%d", &prev);
          getchar();
         
          if ((prev < 0) || (prev > 5))
        continue;
          else
        break;
        };
     
      value = start + prev;
      printf("Now value is %d\n", value);

      while (value < finish)
        {
          p = 3 - p;
          printf("\nP%d-turn\n", p);
         
          while (1)
        {
          printf("Choose a number: ");
          scanf("%d", &x);
          getchar();
         
          if ((x < 0) || (x > 5))
            continue;
          if ((x - prev) % 2 == 0)
            continue;
          if (value + x > finish)
            continue;
          break;
        };
         
          value +=  x;
          printf("Now value is %d\n", value);
          prev = x;
        };
     
      printf("\nP%d win!! Conratulation . . .", p);
      getchar();
    } //End hvh()

    void setting() //Setting
    {
      printf("Computer mode 's setting: \n");
      printf("\t1: Easy\n");
      printf("\t2: Normal (default)\n");
      printf("\t3: Insane\n\n");
      ans[0] = 'a';
      while ((ans[0] < '1') || (ans[0] > '3'))
        {
          printf("Enter your choose (current %d): ", mode);
          gets(ans);
        };

      switch (ans[0])
        {
        case '1':
          mode = 1;
          break;

        case '2':
          mode = 2;
          break;

        default:
          mode = 3;
          break;
        };
    } //End setting

    int quit()
    {
      ans[0] = 'a';
      while ((ans[0] != 'Y') && (ans[0] != 'N'))
        {
          printf("Do you really want to quit game? (Y/N)");
          gets(ans);
          ans[0] = toupper(ans[0]);
        };
      if (ans[0] == 'Y')
        return 1;
      else
        return 0;
    } //Quit

    void easy(int p) //p = 1 => computer turns first
    {
      int x, value, prev;
     
      printf("Start number: %d\n", start);
      printf("Target number: %d\n", finish);
      srand((unsigned)time(NULL));

      printf("%s turns first\n", who[p]);
      printf("\n%s-turn\n", who[p]);
     
      if (p == 1)
        {
          prev = rand() % 5 + 1;     
          printf("Choose a number: %d\n", prev);
        }
      else
        {
          while (1)
        {
          printf("Choose a number: ");
          scanf("%d", &prev);
          getchar();
         
          if ((prev < 0) || (prev > 5))
            continue;
          else
            break;
        };
        };
     
      value = start + prev;
      printf("Now value is %d\n", value);

      while (value < finish)
        {
          p = 3 - p;
          printf("\n%s-turn\n", who[p]);

          if (p == 1) //Computer
        {
          if ((finish - value <= 5) && (((finish - value - prev) % 2 + 2) % 2 == 1))
            x = finish - value;
          else
            {
              x = v[prev % 2 == 0][rand() % 3];
              if (value + x > finish)
            x = v[prev % 2 == 0][0];
            };
          printf("Choose a number: %d\n", x);
        }
          else
        while (1)
          {
            printf("Choose a number: ");
            scanf("%d", &x);
            getchar();
         
            if ((x < 0) || (x > 5))
              continue;
            if ((x - prev) % 2 == 0)
              continue;
            if (value + x > finish)
              continue;
            break;
          };
         
          value +=  x;
          printf("Now value is %d\n", value);
          prev = x;
        };
     
      printf("\n%s win!! Conratulation . . .", who[p]);
      getchar();
    } //End easy()

    void normal(int p) //p = 1 => computer turns first
    {
      int i, nv, x, y, value, prev, t, max;
     
      printf("Start number: %d\n", start);
      printf("Target number: %d\n", finish);
      srand((unsigned)time(NULL));

      printf("%s turns first\n", who[p]);
      printf("\n%s-turn\n", who[p]);
     
      if (p == 1)//First turn
        {
          max = 0;
          for (i = 0; i <= 5; i++)
        if (start + i <= finish)
          {
            t = getf(start + i, i % 2 == 0);
            if (t >= max)
              {
            max = t;
            prev = i;
              };
          };
          printf("Choose a number: %d\n", prev);
        }
      else
        {
          while (1)
        {
          printf("Choose a number: ");
          scanf("%d", &prev);
          getchar();
         
          if ((prev < 0) || (prev > 5))
            continue;
          else
            break;
        };
        };
     
      value = start + prev;
      printf("Now value is %d\n", value);//End firstturn

      while (value < finish) //Turn repeation
        {
          p = 3 - p;
          printf("\n%s-turn\n", who[p]);

          if (p == 1) //Computer
        {
          if ((finish - value <= 5) && (((finish - value - prev) % 2 + 2) % 2== 1))
            x = finish - value;
          else
            {
              max = 0;
              y = (prev % 2 == 0);
              for (i = 0; i <= 2; i++)
            {
              nv = value + v[y][i];
              if (nv <= finish)
                {
                  getf(nv, 1 - y);
                  if (f[nv][1-y] >= max)
                {
                  max = f[nv][1-y];
                  x = v[y][i];
                };
                };
            };
            };
          printf("Choose a number: %d\n", x);
        }
          else
        while (1)
          {
            printf("Choose a number: ");
            scanf("%d", &x);
            getchar();
         
            if ((x < 0) || (x > 5))
              continue;
            if ((x - prev) % 2 == 0)
              continue;
            if (value + x > finish)
              continue;
            break;
          };
         
          value +=  x;
          printf("Now value is %d\n", value);
          prev = x;
        };
     
      printf("\n%s win!! Conratulation . . .", who[p]);
      getchar();
    } //End normal()

    void insane(int p) //p = 1 => computer turns first
    {
      int i, nv, y, x, value, prev, nx, ny;
      float fmax;
     
      printf("Start number: %d\n", start);
      printf("Target number: %d\n", finish);
      srand((unsigned)time(NULL));

      printf("%s turns first\n", who[p]);
      printf("\n%s-turn\n", who[p]);
     
      if (p == 1)//First turn
        {
          fmax = 0;
          for (i = 0; i <= 5; i++)
        if (start + i <= finish)
          {
            nx = start + i;
            ny = (i % 2 == 0);
            getf(nx, ny);
            if ((fmax == 0) || (s[nx][ny] == 0) || (fmax < ((float)f[nx][ny] / s[nx][ny])))
              {
            fmax = (s[nx][ny] == 0) ? 0 : ((float)f[nx][ny] / s[nx][ny]);
            prev = i;
              };
          };
          printf("Choose a number: %d\n", prev);
        }
      else
        {
          while (1)
        {
          printf("Choose a number: ");
          scanf("%d", &prev);
          getchar();
         
          if ((prev < 0) || (prev > 5))
            continue;
          else
            break;
        };
        };
     
      value = start + prev;
      printf("Now value is %d\n", value);//End firstturn

      while (value < finish) //Turn repeation
        {
          p = 3 - p;
          printf("\n%s-turn\n", who[p]);

          if (p == 1) //Computer
        {
          if ((finish - value <= 5) && (((finish - value - prev) % 2 + 2) % 2== 1))
            x = finish - value;
          else
            {
              fmax = 0;
             
              y = (prev % 2 == 0);
              for (i = 0; i <= 2; i++)
            {
              nv = value + v[y][i];
              if (nv <= finish)
                {
                  nx = nv;
                  ny = 1 - y;
                  getf(nx, ny);
                  if ((fmax == 0) || (s[nx][ny] == 0) || (fmax < ((float)f[nx][ny] / s[nx][ny])))             
                {
                  fmax = (s[nx][ny] == 0) ? 0 : ((float)f[nx][ny] / s[nx][ny]);
                  x = v[y][i];
                };
                };
            };
            };
          printf("Choose a number: %d\n", x);

        }
          else
        while (1)
          {
            printf("Choose a number: ");
            scanf("%d", &x);
            getchar();
         
            if ((x < 0) || (x > 5))
              continue;
            if ((x - prev) % 2 == 0)
              continue;
            if (value + x > finish)
              continue;
            break;
          };
         
          value +=  x;
          printf("Now value is %d\n", value);
          prev = x;
        };
     
      printf("\n%s win!! Conratulation . . .", who[p]);
      getchar();
    } //End insane()


    main()
    {
      init();

      while (1)
        {
          mainmenu();
     
          ans[0] = 'a';
          while ((ans[0] < '1') || (ans[0] > '5'))
        {
          printf("Select a number: ");
          gets(ans);
        };
          printf("\n");

          switch (ans[0])
        {
        case '1': //Human Vs Human
          hvh();
          break;
         
        case '2': //Human Vs Computer
          switch (mode)
            {
            case 1:
              easy(2);
              break;

            case 2:
              normal(2);
              break;

            default:
              insane(2);
              break;
            };
          break;

        case '3': //Com vs human
          switch (mode)
            {
            case 1:
              easy(1);
              break;

            case 2:
              normal(1);
              break;

            case 3:
              insane(1);
              break;
            };
          break;

        case '4': //Setting
          setting();
          break;

        case '5': //Quit
          bquit = quit();
          break;
        };

          if (bquit)
        break;
        };
     
      printf("\nThank for playing!\n");
      printf("S_have fun! :)\n");
      return 0;
    }


    3 thư viện sử dụng trong bài (đề phòng lỗi html)
    Code:

    stdio.h
    time.h
    stdlib.h
    Vì code khá dài (khoảng hơn 500 lines lận), nên khó tránh được sai sót. Có gì ae góp ý giúp Koltec để hoàn thiện.
    Thank for reading So good.

    _________________
    koltec.
    Email : tranvansangk41@gmail.com.

    Y!M : haidang001.
    Skype : haidang001.
    Website : haidang001.tk or trầnvănsáng.vn

    Facebook : facebook.com/haidang001[/size]

    SĐT: 0942 666 890 (or 0982 802 454).


    Thu đi để lại lá vàng
    Anh đi để lại cho nàng thằng く
    Mùa thu nối tiếp mùa thu.
    Thằng くnối tiếp thằng くra đời.


    S_have fun!
    avatar
    haidang001

    Tổng số bài gửi : 91
    Points : 176
    Join date : 25/09/2010
    Age : 26

    Xem lý lịch thành viên http://haidang001.tk

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Woodyx on 11/04/11, 08:31 am

    HIX! Toàn cái chưa học. Đọc cũng chẳng hiểu mấy.
    Tuần này die òy Sad
    avatar
    Woodyx

    Tổng số bài gửi : 26
    Points : 35
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà nội pro

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by chikclik on 11/04/11, 09:44 am

    học hành vất vả.kết quả chẳng ra ji.chán
    avatar
    chikclik

    Tổng số bài gửi : 12
    Points : 20
    Join date : 21/03/2011

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by myname2 on 11/04/11, 10:09 am

    Bài 3 code của Lâm với Sáng cao siêu quá :-S Tớ chỉ nông dân thôi, mọi người góp ý nhé Very Happy
    Bai3.c
    Code:

    #include<stdio.h>
    #include <stdlib.h>
    #include <time.h>


    int main()
    {
        int dice, xuatphat, dich, diem, luot, so, sotruoc;

        printf("Tro choi voi con so v1.0\n");//introduction
        printf("Tac gia: myname2\n\n");

        printf("Nhap so bat dau: ");//input
        scanf("%d", &xuatphat);
        printf("Nhap so dich: ");
        scanf("%d", &dich);

        diem = xuatphat;
        luot = 1;
        srand ( time ( NULL ));
        dice = 1 + rand () % 2;
        printf("\nChuong trinh se chon ngau nhien nguoi choi truoc...\n");

        switch(dice)//game
        {
            case '1'://player 1 first
            {
                printf("Ban so 1 se choi truoc!\n\n");

                printf("Luot 1, moi ban so 1 nhap so: ");
                while (1)
                {
                    scanf("%d", &so);
                    if ((so > 0) && (so < 5)) break;
                        else printf("Nhap sai luat, moi nhap lai: ");
                }
                diem = diem + so;
                sotruoc = so;
                luot++;
                printf("Diem hien tai la: %d\n\n", diem);

                while (diem < dich)
                {
                    printf("Luot %d, moi ban so %d nhap so: ", luot, (luot % 2 == 1)? 1: 2);
                    while (1)
                    {
                        scanf("%d", &so);
                        if ((so >= 0) && (so < 5) && ((so + sotruoc) % 2 == 1)) break;
                            else printf("Nhap sai luat, moi nhap lai: ");
                    }
                        sotruoc = so;

                    diem = diem + so;
                    luot++;
                    printf("Diem hien tai la: %d\n\n", diem);
                }
                printf("Ban so %d da thang!!!\n", (luot % 2 == 0)?1:2);
            }
            default://player 2 first
            {
                printf("Ban so 2 se choi truoc!\n\n");

                printf("Luot 1, moi ban so 2 nhap so: ");
                while (1)
                {
                    scanf("%d", &so);
                    if ((so > 0) && (so < 5)) break;
                        else printf("Nhap sai luat, moi nhap lai: ");
                }
                diem = diem + so;
                sotruoc = so;
                luot++;
                printf("Diem hien tai la: %d\n\n", diem);

                while (diem < dich)
                {
                    printf("Luot %d, moi ban so %d nhap so: ", luot, (luot % 2 == 1)? 2: 1);
                    while (1)
                    {
                        scanf("%d", &so);
                        if ((so >= 0) && (so < 5) && ((so + sotruoc) % 2 == 1)) break;
                            else printf("Nhap sai luat, moi nhap lai: ");
                    }
                        sotruoc = so;

                    diem = diem + so;
                    luot++;
                    printf("Diem hien tai la: %d\n\n", diem);
                }
                printf("Ban so %d da thang!!!\n", (luot % 2 == 0)?2:1);
            }
        }

    return 0;

    }


    Chú thích: Có thể dùng chương trình con nhưng chưa học nên dài ra thế đây :">

    @Anh em: Còn bai2 đổi cơ số, tó có thắc mắc là có phải đổi cơ số cho số âm và số thập phân hay không, đầu bài hình như chí nói là số :-S Và đổi theo cách của Lâm có được ko? Túc đỏi cơ số 8 và 16 thì dùng luôn tham số cảu lệnh printf, và đổi nhị phân có nhất thiết phải dùng mảng ko :-S

    _________________
    Bước chân không ngừng nghỉ, bước chân hướng về phía trước, đó là bước chân của tôi!
    avatar
    myname2

    Tổng số bài gửi : 66
    Points : 90
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà Nội

    Xem lý lịch thành viên https://facebook.com/tuanhai

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Woodyx on 11/04/11, 10:11 am

    Mấy cái bài trên dùng mảng à? :shock:

    ==============

    Hey! Hải xồm. Bài chuyển đổi cơ số cậu có cách nào khác ngoài dùng mảng ko? bounce

    ============

    ....

    Edited by koltec. S_have fun! So good
    avatar
    Woodyx

    Tổng số bài gửi : 26
    Points : 35
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà nội pro

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by chikclik on 11/04/11, 12:55 pm

    bai2 ko phải do mình làm.ông lớp B làm thôi.theo mình thì dùng mảng là hợp lý.
    avatar
    chikclik

    Tổng số bài gửi : 12
    Points : 20
    Join date : 21/03/2011

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by myname2 on 11/04/11, 06:46 pm

    Theo tớ trinh sát mấy hôm nay thì chả có cách nào mà ko dùng mảng cả :-<

    _________________
    Bước chân không ngừng nghỉ, bước chân hướng về phía trước, đó là bước chân của tôi!
    avatar
    myname2

    Tổng số bài gửi : 66
    Points : 90
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà Nội

    Xem lý lịch thành viên https://facebook.com/tuanhai

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by truonggiang.bka on 11/04/11, 08:00 pm

    a e xem ho bai t voi nhe
    y tuong rat don gian
    chu yeu la copy paste nen co ve tiet kiem thoi gian (^_^)
    con dung va du chua thi chua biet!

    ======================

    #include
    #include
    int main()
    {
    printf("Bai tap: Game don gian \n\n ");

    int xuatphat,dich,a,b,l;
    int tong=0,c;

    printf("Nhap diem xuat phat: ");
    scanf("%d",&xuatphat);
    printf(" Nhap dich: ");
    scanf("%d",&dich);
    printf("chon nguoi choi truoc: \n");
    tong=tong+xuatphat;

    do{
    srand((unsigned) time(NULL));
    a=rand()%3;
    }while(a==0);
    printf("Nguoi %d choi truoc\n ",a);
    l=fabs(a-3);

    printf("**P%d - turn \n",a);
    do {
    printf(" Chon mot so:");
    scanf("%d",&b);
    }while(b<=0 || b>5);
    tong=tong+b;
    printf("Now value: %d\n",tong);

    while(1)
    {
    printf("**P%d - turn\n",l);
    do {
    printf(" Chon mot so:");
    scanf("%d",&c);
    }while(c<=0 || c>5 ||(b+c)%2==0);
    tong=tong+c;
    printf("Now value: %d\n",tong);
    if (tong==dich)
    {
    printf("nguoi choi %d thang\n",l);
    break;
    }
    if ((100-tong)>0 && (100-tong)<=5)
    {
    printf("Nguoi choi %d thang",a);
    break;;
    }

    printf("**P%d - turn \n",a);
    do{
    printf(" Chon 1 so:");
    scanf("%d",&b);
    }while(b<=0 || b>5 || (b+c)%2==0);
    tong=tong+b;
    printf("Now value: %d\n",tong);
    if (tong==dich)
    {
    printf("nguoi choi %d thang\n",a);
    break;
    }
    if ((100-tong)>0 && (100-tong)<=5)
    {
    printf("Nguoi choi %d thang",l);
    break;;
    }

    }

    return 0;
    }
    [code]


    Edited by koltec. S_have fun! So good
    avatar
    truonggiang.bka

    Tổng số bài gửi : 5
    Points : 6
    Join date : 04/10/2010

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by haidang001 on 11/04/11, 09:00 pm

    Woodyx đã viết:Mấy cái bài trên dùng mảng à? :shock:

    ==============

    Hey! Hải xồm. Bài chuyển đổi cơ số cậu có cách nào khác ngoài dùng mảng ko? bounce


    myname2 đã viết:Theo tớ trinh sát mấy hôm nay thì chả có cách nào mà ko dùng mảng cả :-<

    Đây là cách không dùng đến mảng của bài 2. Ae tham khảo qua rồi cho ý kiến.

    basenv1.1
    Code:

    /*Copyright (c) haidang001 (tm) (@yahoo.com)*/
    /*S_have fun! :)*/

    /*Viet chuong trinh chuyen doi he co so voi menu sau:
      CT Chuyen doi he co so.
      Tac gia: ABC.

      1. Nhap so (he 10).
      2. So o he nhi phan.
      3. So o he thap luc phan.
      4. So o he tam.
      5. Thoat.*/

    #include <stdio.h>

    main()
    {

      char ans[100];
      int x, quit = 0, neg = 0, t, i, j;

      ans[0] = 'a';
      while (1)
        {
          printf("\n\t\tBase converter v1.0\n");
          printf("\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
          printf("\t\t  S_have fun! :)\n\n");

          printf("1: Input number (decimal)\n");
          printf("2: Show Binary\n");
          printf("3: Show Hexadecimal\n");
          printf("4: Show Octal\n");
          printf("5: Show Decimal\n");
          printf("6: Quit\n\n");

          ans[0] = 'a';
          while ((ans[0] < '1') || (ans[0] > '6'))
        {
          printf("Enter your choose: ");
          gets(ans);
        };
          printf("\n");

          switch (ans[0])
        {
        case '1': //Input number;
          printf("Enter number: ");
          scanf("%d", &x);
          getchar();
         
          neg = 0;
          if (x < 0)
            {
              neg = 1;
              x = -x;
            };
         
          break;

        case '2': //Binary
          if (x == 0)
            {
              printf("Number shows as Binary number: 0\n");
              break;
            };
         
          printf("Number shows as Binary number: %c", neg?'-':' ');
          t = x;

          i = 30;
          while ((1 << i) > t)
            i--;
          t -= (1 << i);
          printf("1");
          for (j = i - 1; j >= 0; j--)
            if (1 << j <= t)
              {
            t -= (1 << j);
            printf("1");
              }
            else
              printf("0");
          printf("\n");
          break;

        case '3': //Hexadecimal
          printf("Number shows as Hexadecimal number: %c%X\n", neg?'-':' ', x);
          break;

        case '4': //Octal
          printf("Number shows as Octal number: %c%o\n", neg?'-':' ', x);
          break;

        case '5': //Decimal
          printf("Orginal entered number is (Decimal): %c%d\n",neg?'-':' ', x);
          break;

        case '6': //Quit
          ans[0] = 'a';
          while ((ans[0] != 'Y') && (ans[0] != 'N'))
            {
              printf("Are you sure want to Quit program? (Y/N)");         
              gets(ans);
              ans[0] = toupper(ans[0]);
            };
          if (ans[0] == 'Y')
            quit = 1;
          else
            quit = 0;
        };

          if (quit)
        break;
          printf("\nPress Enter to return to main menu . . .");
          gets(ans);
        };

      printf("\nS_have fun! :)\n");
      return 0;
    }

    _________________
    koltec.
    Email : tranvansangk41@gmail.com.

    Y!M : haidang001.
    Skype : haidang001.
    Website : haidang001.tk or trầnvănsáng.vn

    Facebook : facebook.com/haidang001[/size]

    SĐT: 0942 666 890 (or 0982 802 454).


    Thu đi để lại lá vàng
    Anh đi để lại cho nàng thằng く
    Mùa thu nối tiếp mùa thu.
    Thằng くnối tiếp thằng くra đời.


    S_have fun!
    avatar
    haidang001

    Tổng số bài gửi : 91
    Points : 176
    Join date : 25/09/2010
    Age : 26

    Xem lý lịch thành viên http://haidang001.tk

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by truonggiang.bka on 11/04/11, 10:00 pm

    bai chuyen co so con mot cach nua ko can dung mang
    chi khoang 5 - 6 thoi
    thao tac tren bit
    nhung hoi kho hieu mot chut
    avatar
    truonggiang.bka

    Tổng số bài gửi : 5
    Points : 6
    Join date : 04/10/2010

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by huy_d_t on 11/04/11, 11:11 pm

    chuyen sang he nhi phan co 1 cach ko dung mang, nhung phai dung ct con de quy :-S

    _________________
    huy_d_t = huy đê tiện ( not " dâm tặc", các bác gọi thế em ế vợ)
    avatar
    huy_d_t

    Tổng số bài gửi : 112
    Points : 142
    Join date : 26/09/2010
    Đến từ : Đại dâm tặc

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by haidang001 on 11/04/11, 11:12 pm

    truonggiang.bka đã viết:bai chuyen co so con mot cach nua ko can dung mang
    chi khoang 5 - 6 thoi
    thao tac tren bit
    nhung hoi kho hieu mot chut
    Uk, đúng là có cách ko dùng mảng, xử lý bit, có cả cách ko dùng mảng cũng k xử lý bit, cũng ko cần ct đệ quy (chỉ nhân chia thông thường So good ).

    Code day:

    dec2bin
    Code:

    /*dec2bin*/
    /*Quick Decimal to Binary converter*/

    /*Copyright (c) haidang001 (tm) (@yahoo.com)*/
    /*S_have fun! :)*/

    #include <stdio.h>

    main()
    {
      int x, s = 1;
     
      printf("Decimal input: ");
      scanf("%d", &x);
      printf("Binary output: ");

      if (x == 0) printf("0");

      while (s <= x)
        s = s * 2;
      s = s / 2;
     
      while (s > 0)
        {
          if (s <= x)
        {
          x -= s;
          printf("1");
        }
          else
        printf("0");
          s = s / 2;
        };
     
      printf("\n\nS_have fun! :)\n");
      return 0;
    }

    _________________
    koltec.
    Email : tranvansangk41@gmail.com.

    Y!M : haidang001.
    Skype : haidang001.
    Website : haidang001.tk or trầnvănsáng.vn

    Facebook : facebook.com/haidang001[/size]

    SĐT: 0942 666 890 (or 0982 802 454).


    Thu đi để lại lá vàng
    Anh đi để lại cho nàng thằng く
    Mùa thu nối tiếp mùa thu.
    Thằng くnối tiếp thằng くra đời.


    S_have fun!
    avatar
    haidang001

    Tổng số bài gửi : 91
    Points : 176
    Join date : 25/09/2010
    Age : 26

    Xem lý lịch thành viên http://haidang001.tk

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by myname2 on 12/04/11, 12:03 am

    << là dịch bit phải ko?
    @Huy: ct con thì ai chả biết, nhưng mà còn vượt khung hơn cả mảng, nhất là xài đệ quy
    @Sáng: thuật toán cuối cùng là thuật toán gì vậy :-S

    _________________
    Bước chân không ngừng nghỉ, bước chân hướng về phía trước, đó là bước chân của tôi!
    avatar
    myname2

    Tổng số bài gửi : 66
    Points : 90
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà Nội

    Xem lý lịch thành viên https://facebook.com/tuanhai

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Tung_tobe on 12/04/11, 12:20 am

    Hơhơ cái chuyển từ thập sang nhị chả hiểu j hết @@
    avatar
    Tung_tobe

    Tổng số bài gửi : 100
    Points : 124
    Join date : 27/09/2010

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by chikclik on 12/04/11, 12:50 am

    oạch.cái bài chuyển cơ số lằng nhằng thế.
    avatar
    chikclik

    Tổng số bài gửi : 12
    Points : 20
    Join date : 21/03/2011

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Woodyx on 12/04/11, 09:09 am

    Đọc đi đọc lại thấy cách dùng mảng vẫn là hay và dễ hiểu nhất!!! cheers
    avatar
    Woodyx

    Tổng số bài gửi : 26
    Points : 35
    Join date : 27/09/2010
    Age : 26
    Đến từ : Hà nội pro

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by hieupro1269 on 12/04/11, 03:12 pm

    Đây là cách của mình,sử dụng những gì đã học Very Happy
    Cốt yếu trong cách này là mã "\r",trong bảng mã ASCII nó là mã lùi con trỏ về đầu dòng.(Cái này trong môn thầy Khánh So good))
    Thuật toán rất đơn giản nhưng do trình bày kém nên nhìn hơi rối,anh em thông cảm,đây là code nháp nên làm ko cẩn thận Very Happy.
    Code:
    #include
    void main()
    {
      int i,t,a,so,du,nguyen=1,tmp;
      printf("enter:");
      scanf("%d",&so);
      tmp=so;
      for (;nguyen!=0;)
        {
          nguyen=tmp/2;
          du=tmp%2;
          tmp=nguyen;i++; //xac dinh so ki tu cua so nhi phan
        }
      t=i;tmp=so;
      for (;t!=0;t--)
        {
          nguyen=tmp/2;
          du=tmp%2;
          tmp=nguyen;
          a=t;
          printf("\r");  // \r trong bang ma ASCII la ma lui ve dau dong
          for(;a>0;a--) printf(" ");
          printf("%d",du);
         
        }
    }
    avatar
    hieupro1269

    Tổng số bài gửi : 31
    Points : 37
    Join date : 04/10/2010
    Age : 26

    Xem lý lịch thành viên

    Về Đầu Trang Go down

    Re: week8 full

    Bài gửi by Sponsored content


    Sponsored content


    Về Đầu Trang Go down

    Về Đầu Trang

    - Similar topics

     
    Permissions in this forum:
    Bạn không có quyền trả lời bài viết