Hỏi & đáp lập trình

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi canh en buon, 23/5/07.

  1. Himarin ~♥

    Himarin ~♥ Nyan ~♥

    Tham gia ngày:
    20/7/08
    Bài viết:
    9,986
    Nơi ở:
    Amakawa family
    Em có thắc mắc này mà tìm mãi chả biết hỏi ở đâu , đành vào đây hỏi tạm vậy ( có gì xin mod ở đây nhẹ tay )

    Em đang học cách sử dụng hexedit , nhưng em không biết làm thế nào để có thể chèn thêm một số byte vào chỗ này và bớt đi một số byte tương ứng ở một vị trí khác
    Có ai thông thạo cách sử dụng hexedit hay hexworkshop xem thử hộ em với

    [​IMG]

    Ví dụ như ở dưới đây : em muốn tìm cách làm sao để chuyển dòng bôi đen kia thành " 80 09 01 00 00 00 FF D3 03 96 F6 FF FF 00 FE DE C6 03 " , đồng thời bỏ bớt đi 6 byte ở một vị trí khác ( để giữ nguyên dung lượng file )

    Nếu chương trình hexedit này ko có khả năng làm được như vậy thì có ai làm ơn cho em xin 1 chương trình có công dụng tương tự và có khả năng tùy chỉnh như trên với :) . Em cảm ơn trước :)

    P/s : Em đã đính kèm theo trình hex em đang sử dụng . Nếu bài này post nhầm chỗ thì xin mod move hộ em sang đâu đấy cũng được :-"
     
  2. DHBL

    DHBL Youtube Master Race

    Tham gia ngày:
    7/11/08
    Bài viết:
    58
    sài winhex đi dễ dùng hơn, hồi trước crack mình cũng sài winhex nè. Ngoài ra khi thao tác với hex thì phài đảm bảo dùng lượng của file thêm bao nhiêu thì phải bớt bấy nhiều, nếu muốn thêm mà ko bớt thì kiếm chỗ nào trống toàn số 00000 mà add vào rùi dùng ngắt chuyển hướng lên hoặc xuống
     
  3. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    cho em hỏi xí về lệnh for:
    Mã:
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int t,j;
          int a[100],n,i;
          printf ("nhap vao n (voi n la so phan tu trong mang )");
          scanf  ("%d",&n);
          
          for (i=0;i<n;i++)
          {
              printf ("nhap vao gia tri cua a[%d]",i);
              scanf ("%d",&a[i]);
              }
          [COLOR="Red"]for(i=0;i<n-1;i++)
          for(j=i+1;j<n;j++)[/COLOR]
           if (a[i]<a[j])
           {
                         t=a[i];
                         a[i]=a[j];
                         a[j]=t;
                         }
            for (i=0;i<n;i++)
    
            printf("%5d",a[i]);
    
           getch ( );
    
          }
    
    ở phần bôi đỏ đó là 2 cái lệnh for
    theo lí thuyết thì sau khi kiểm tra điều kiện của biểu thức 2 của lệnh for thứ nhất nếu đúng nó sẽ thực hiện lệnh sau for đó
    nhưng sau cái for thứ nhất lại còn 1 cái for thứ 2
    vậy lúc này nó sẽ xét tiếp cái for thứ 2 rồi mới thực hiện lệnh if đằng sau 2 cái for đó hay sao ạh ?
    Nghĩa là for 1 , for 2 xong if
    Hay for 1 tới if,tiếp theo là for 2 xong tới if.
    Hay là trường hợp khác ạh.
    Hình như hơi rối thì phải ::(
     
  4. toi5

    toi5 Try Hard Moderator Lão Làng GVN

    Tham gia ngày:
    27/5/03
    Bài viết:
    6,866
    chả có gì là rối cả, tại bạn học không kỹ đó thôi
    -cái for thứ nhất nếu đúng điều kiện sẽ làm cái for thứ 2, cái for thứ 2 mà đúng điều kiện thì sẽ làm tiếp đến hết vòng for sẽ nhảy lên lại vòng for thứ 1 làm tiếp đến khi for thứ 1 sai điều kiện hay hết for
    -nếu for thứ nhất sai điều kiện thì coi như for thứ 2 không làm, mà if cũng nằm trong for thứ 2 --> if cũng không làm
    thực ra đúng thì nên viết như vậy:
    Mã:
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int t,j;
          int a[100],n,i;
          printf ("nhap vao n (voi n la so phan tu trong mang )");
          scanf  ("%d",&n);
          
          for (i=0;i<n;i++)
          {
              printf ("nhap vao gia tri cua a[%d]",i);
              scanf ("%d",&a[i]);
              }
          [COLOR="Red"]for(i=0;i<n-1;i++)
                   for(j=i+1;j<n;j++)[/COLOR]
                           if (a[i]<a[j])
                              {
                                 t=a[i];
                                 a[i]=a[j];
                                 a[j]=t;
                               }
            for (i=0;i<n;i++)
    
            printf("%5d",a[i]);
    
           getch ( );
    
          }
    
     
  5. [Bash]Noob

    [Bash]Noob Youtube Master Race

    Tham gia ngày:
    3/10/07
    Bài viết:
    41
    Hiện tớ muốn tìm hiểu về lập trình web mà tớ thì lại không biết bắt đầu từ đâu cả, ai đó có thể hướng dẫn những khái niệm căn bản về lập trình web được không?
     
  6. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    hic
    Sao trong topic này ít người hỏi quá hỉ
    Em lại hỏi nữa ::(.
    Đề là nhập và xuất mảng bằng hàm :
    em làm đây :
    Mã:
    #include <stdio.h>
    #include <conio.h>
          void nhap(int a[300],int n);
          void xuat(int a[300],int n);
          main()
          {
                 int n;
                 printf ("nhap vao n voi n la so phan tu trong mang :");
                 scanf ("%d",&n);
                 
                }
                
      void nhap(int a[300],int n)
            { 
                  int i;
                  for (i=0;i<n;i++)
                  {
                     printf ("nhap vao gia tri cua a[%d]",i);
                     scanf ("%d",&a[i]);
                      }
                      }
      void xuat(int a[300],int n)
                      {
                           int i;
                           for (i=0;i<n;i++)
                           {
                               printf ("%d",a[i]);
                               }
                               }
                               
    Ko biết sai chỗ nào mà khi em chạy,lúc "hay nhap vao n voi n la so phan tu trong mang".Em ấn 1 số bất kì thì nó thoát chương trình,ai chỉ em sửa hen
    Chắc xong câu này tìm chỗ khác cho nó rôm rả chứ cứ làm phiền mấy anh hoài..........................
     
  7. DHBL

    DHBL Youtube Master Race

    Tham gia ngày:
    7/11/08
    Bài viết:
    58
    viết 2 cái hàm mà không gọi nó trong hàm main() thì nó kết thúc đúng rồi còn g2i nữa:
    Mã:
    main()
          {
                 int n,a[300];
                 printf ("nhap vao n voi n la so phan tu trong mang :");
                 scanf ("%d",&n);
                 nhap(a,n);
                 xuat(a,n);
            }
    
     
  8. haiduong87

    haiduong87 Knee before Eden Lord Lão Làng GVN

    Tham gia ngày:
    20/5/04
    Bài viết:
    24,517
    Nơi ở:
    TP HCM
    Có phải ct chạy thì nó chạy những cái trong hàm main() không?
    Nếu đúng vậy thì nó chạy đúng mà... Hàm main() chì đến đó thôi @@.

    p/s: ngôn ngữ trên là ngôn ngữ gì hỉ? :p
     
  9. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    tại cái tiết về hàm em trốn học mất tiu
    mà em thêm 2 cái
    Mã:
    nhap(a,n);
    xuat(a,n);
    
    rồi ,bi giờ thì ko chạy đc lun
    em xài Bloodshed-Dev đó
     
  10. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    thêm vào câu lệnh "dừng màn hình"
    Mã:
    nhap(a,n);
    xuat(a,n);
    getch();
    
    DONE!!!
     
  11. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    cho em bổ sung chút :
    tại anh DHBL nói pải gọi hàm nó mới thực thi chương trình đó
    em thấy cái chương trình sau ở hàm main đâu có cái nào tựa tựa như là gọi hàm đâu mà nó vẫn chạy ngon lành mà
    Mã:
    #include <stdio.h>
    #include <conio.h>
    float max3s (float a,float b,float c);
    main()
    {
          float x,y,z;
          int o;
          tt : printf ("nhap vao 3 so :");
          scanf ("%f%f%f",&x,&y,&z);
          printf ("\nso lon nhat la %f",max3s(x,y,z));
          printf ("\nco tip tuc ko c-k");
          
          if (o=='c') goto tt;
          else getch();
          }
          float max3s (float a,float b,float c)
          {
                float max;
                max=a;
                if (max<b) max=b;
                if (max<c) max=c;
                return(max);
                }
                
    
     
  12. haiduong87

    haiduong87 Knee before Eden Lord Lão Làng GVN

    Tham gia ngày:
    20/5/04
    Bài viết:
    24,517
    Nơi ở:
    TP HCM
    Cái đó là cái gì?? Có vẻ không ổn...
     
  13. toi5

    toi5 Try Hard Moderator Lão Làng GVN

    Tham gia ngày:
    27/5/03
    Bài viết:
    6,866
    viết gì mà dính nguyên một cục thế hỏi chi nhìn ko ra là phải...
    viết tách ra vậy dễ nhìn hơn nè
    Mã:
    #include <stdio.h>
    #include <conio.h>
    float max3s (float a,float b,float c);
    main()
    {
          float x,y,z;
          int o;
          tt : printf ("nhap vao 3 so :");
          scanf ("%f%f%f",&x,&y,&z);
          printf ("\nso lon nhat la %f",max3s(x,y,z));
          printf ("\nco tip tuc ko c-k");
          
          if (o=='c') goto tt;
          else getch();
          }
    
    float max3s (float a,float b,float c)
          {
                float max;
                max=a;
                if (max<b) max=b;
                if (max<c) max=c;
                return(max);
           }
                
    
    max3s(x,y,z) --> cái này ko phải gọi hàm thì là gì.: gọi hàm max3s truyền vào 3 tham số là x,y,z......
    hàm con này
    Mã:
    float max3s (float a,float b,float c)
          {
                float max;
                max=a;
                if (max<b) max=b;
                if (max<c) max=c;
                return(max);
           }
                
    viết dính lẹo nên tưởng cái float nằm trong main chứ gì....
     
  14. thaitrung

    thaitrung Legend of Zelda

    Tham gia ngày:
    30/5/06
    Bài viết:
    926
    Nơi ở:
    CastleVania
    hix nói người ta viết 1 cục mà xem ra viết lại cũng có khá hơn gì đâu.trích lại nguyên văn:
    float max3s (float a,float b,float c);
    main()
    {
    float x,y,z;
    int o;
    tt : printf ("nhap vao 3 so :");
    scanf ("%f%f%f",&x,&y,&z);
    printf ("\nso lon nhat la %f",max3s(x,y,z));
    printf ("\nco tip tuc ko c-k");

    if (o=='c') goto tt;
    else getch();
    }
    ở hàm main khi viết tắt nhập 1 lượt 3 biến và đọc 3 biến đó 1 lượt thì chuơng trình nó rối lắm có khi nó chạy dc lại có khi ko, lại có khi cho ra ko đúng như kết quả(lúc trước tôi làm nhiều bài nên gặp nhiều trường hợp như vậy). Bởi vậy khi nhập bất kì 1 biến nào đó nên nhập tuần tự đừng có làm biếng. Đây là những điều cơ bản để hạn chế các Bug khi biên dịch đấy
     
  15. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    anh viết cũng 1 cục như em mà ::(.
    Nhưng ở hàm float khai đối a,b,c mà nhỉ
    tại sao khi gọi hàm lại thành x,y,z
    Như vậy liệu máy có hỉu ko ... ?
     
  16. haiduong87

    haiduong87 Knee before Eden Lord Lão Làng GVN

    Tham gia ngày:
    20/5/04
    Bài viết:
    24,517
    Nơi ở:
    TP HCM
    a,b,c là biến cục bộ đối với hàm max3s. Chỉ có tác dụng trong hàm max3s. Đoạn này:
    Mã:
    float max3s(float a,float b, float c)
    , nên hiểu là khi gọi hàm max3s thì truyển vào 3 số kiểu float để hàm tính toán thôi.

    x,y,x là biến toàn cục trong hàm main, khi gọi hàm max3s trong hàm main và truyền 3 tham số x,y,z, thì nên hiểu là truyền vào hàm max3s 3 số float thôi.

    p/s: tên hàm là max3s, kiểu trả về là float, chử không phải hàm float nhé (chỗ bôi đỏ đó)!
     
  17. toi5

    toi5 Try Hard Moderator Lão Làng GVN

    Tham gia ngày:
    27/5/03
    Bài viết:
    6,866
    xuống dòng cái float còn muốn gì nữa..........vậy mà 1 cục à
     
  18. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    Nhưng khi tính toán và cho ra số lớn nhất ở hàm max3s với 3 đối a,b,c.Giả sử số lớn nhất là a và giá trị của nó là 10,thì làm sao máy biết đc a tương ứng với x để mà khi xuất ra màn hình sẽ là "so lon nhat la %f,max3s(x,y,z) "chứ .
    Nghĩa là máy chỉ biết số lớn nhất trong 3 số a,b,c chứ đâu có biết số lớn nhất trong 3 số x,y,z ?
    Chỗ này em nghĩ hay là máy sẽ hỉu theo thứ tự a,b,c.x,y,z :
    a=x
    b=y
    c=z
    Nếu ko pải thì giải thích giúp em hen.
     
  19. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    Chính xác!!!
    Đúng là máy nó hiểu như thế.
    nếu truyền theo thứ tự khác như:
    Mã:
    max3s(y,z,x)
    
    thì sẽ tương đương như:
    Mã:
    a=y;
    b=z;
    c=x;
    
     
  20. DHBL

    DHBL Youtube Master Race

    Tham gia ngày:
    7/11/08
    Bài viết:
    58
    1> 3 số a,b,c máy nó đâu biết số nào lớn, nó đâu có thống minh như ta nhìn vào là biết, ta phải viết code hướng dẫn nó làm.:D
    2> khi ta gọi hàm và truyền đối số cho nó thì thì mỗi đối số sẽ được tạo 1 bản sao riêng tức là copy nó qua 1 vùng nhớ khác tách biệt với vùng nhớ của đối vừa tạo vd: a=10 truyền vào max3s(x,y,z) thì nó sẽ tạo 1 biến mới x và copy cái giá trị 10 nên x=10. Và khi kết thúc cái hàm thì biến này được thu hồi và trả lại cho hệ thống, không ảnh hướng dính liếu gì tới biến a cả. Còn x,y,z chỉ là tên biến kí hiệu đề ta quản lý mà thôi, nếu buồn buồn viết luôn địa chỉ bộ nhớ cũng chạy được học lập trình nhúng thì sẽ rõ hơn vấn đề này.
    3> Ngoài ra còn 2 loại nữa là truyền địa chỉ vùng nhớ của biến vào hàm, truyền địa chỉ của hàm khác vào 1 hàm( con trỏ hàm).
     

Chia sẻ trang này