Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: mọi người xem mình đã nắm được cơ bản về con trỏ chưa? Thông qua bài này. Góp ý để code gọn, sạch hơn nhé.

  1. #1
    Ngày gia nhập
    01 2018
    Bài viết
    9

    Mặc định mọi người xem mình đã nắm được cơ bản về con trỏ chưa? Thông qua bài này. Góp ý để code gọn, sạch hơn nhé.

    mình có đọc qua bài viết về con trỏ của "langman", mình viết bài này mọi người xem mình còn thiếu sót gì về con trỏ nữa nhé. Yêu mọi người nhiều.
    CHÚC TẾT!!!
    Chúc anh chị, chú bác, cô trên cộng đồng C trẻ khỏe, hạnh phúc nhé.
    Đây là bài code về tìm số lớn nhất, nhỏ nhất trong một mảng n số nguyên.
    ----------------------------------------
    #include<stdio.h>
    #include<conio.h>
    #define size 9
    void nhap(int, int);
    void max_min(int, int, int, int);
    void xuat(int, int);
    void nhap(int a[], int *n)
    {
    int i;
    printf("Nhap gia tri cua n:\n");
    scanf("%d", n);
    for(i=0; i<*n; i++)
    {
    printf("Gia tri phan tu thu %d:\n", i+1);
    scanf("%d", (a+i));
    }
    }
    void max_min(int a[], int *n, int *max, int *min)
    {
    int i;
    *max=*a;
    *min=*a;
    for(i=0; i<*n; i++)
    {
    if(*(a+i)>*max) *max=*(a+i);
    if(*(a+i)<*min) *min=*(a+i);
    }
    }
    void xuat(int *max, int *min)
    {
    printf("Gia tri lon nhat trong mang la: %d\n", *max);
    printf("Gia tri nho nhat trong mang la: %d\n", *min);
    }
    int main(void)
    {
    int a[size],n,max,min;
    nhap(a,&n);
    max_min(a,&n,&max,&min);
    xuat(&max,&min);
    return 0;
    }

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    1,870

    Sai thì không hẳn đã sai, đúng thì chưa đúng.



    ...

  3. #3
    Ngày gia nhập
    01 2018
    Bài viết
    9

    Mặc định bạn ơi, sao mình dùng cfree 5.0 chạy được.

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Sai thì không hẳn đã sai, đúng thì chưa đúng.



    ...
    mình dùng cfree 5.0 chạy được. để đuôi cpp là chạy được. nhưng đuôi c không chạy. sai thì không hẳn sai. đúng không hẳn đúng mong bạn chỉ giáo để mình tiến bộ hơn. cảm ơn bạn nha

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    1,870

    Ôông hay bác cũng rứa.

    sai thì không hẳn sai. đúng không hẳn đúng

  5. #5
    Ngày gia nhập
    01 2018
    Bài viết
    9

    mình nghĩ lỗi như thế có thể sửa như sau, bạn xem thế nào nhé
    thay void nhap(...) int *n thành int &n.
    hoặc sửa hàm
    void nhap(int );
    void nhap(int a[], int n)
    {
    for(int i=0; i<n; i++)
    {
    printf("Nhap a[%d]=", i);
    scanf("%d", a+i);
    }
    }
    đàng dưới hàm int main(void) ta nhập giá trị của n (tất nhiên linh hoạt sửa lại biến n ở các hàm sao cho phù hợp):
    int main(void)
    { int n;.....
    printf("Nhap gia tri cua n:\n");
    scanf("%d", &n);
    ...
    }

  6. #6
    Ngày gia nhập
    08 2017
    Bài viết
    1,870

    Mặc định mọi người xem mình đã nắm được cơ bản về con trỏ chưa? Thông qua bài này. Góp ý để code gọn, sạch hơn nhé.

    Trích dẫn Nguyên bản được gửi bởi nicolaitesla Xem bài viết
    mình nghĩ lỗi như thế có thể sửa như sau, bạn xem thế nào nhé
    thầy void nhap(...) int *n thành int &n.
    hoặc sửa hàm
    ...
    Thầy của thầy bạn có thể là học trò tôi, sao chúng nó láo
    C Code:
    1. void nhap(int );
    2. void nhap(int a[], int n)
    3. {
    4.     for(int i=0; i<n; i++)
    5.     {
    6.        printf("Nhap a[%d]=", i);
    7.        scanf("%d", a+i);
    8.      }
    9. }
    10. đàng dưới hàm int main(void) ta nhập giá trị của n (tất nhiên linh hoạt sửa lại biến n ở các hàm sao cho phù hợp):
    11. int main(void)
    12. { int n;.....
    13. printf("Nhap gia tri cua n:\n");
    14. scanf("%d", &n);
    15. ...
    16. }

  7. #7
    Ngày gia nhập
    01 2018
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Thầy của thầy bạn có thể là học trò tôi, sao chúng nó láo
    C Code:
    1. void nhap(int );
    2. void nhap(int a[], int n)
    3. {
    4.     for(int i=0; i<n; i++)
    5.     {
    6.        printf("Nhap a[%d]=", i);
    7.        scanf("%d", a+i);
    8.      }
    9. }
    10. đàng dưới hàm int main(void) ta nhập giá trị của n (tất nhiên linh hoạt sửa lại biến n ở các hàm sao cho phù hợp):
    11. int main(void)
    12. { int n;.....
    13. printf("Nhap gia tri cua n:\n");
    14. scanf("%d", &n);
    15. ...
    16. }
    mình sửa lại cụ thể hơn đây. Nếu bạn có cách sửa lại cho đúng thì nói viết lại code cho mình xem, sao úp mở thể, mình không rõ
    #include<stdio.h>
    #include<conio.h>
    #define size 9
    void nhap(int, int &);
    void max_min(int, int, int, int);
    void xuat(int, int);
    void nhap(int a[], int &n)
    {
    int i;
    printf("Nhap gia tri cua n:\n");
    scanf("%d", &n);
    for(i=0; i<n; i++)
    {
    printf("Gia tri phan tu thu %d:\n", i+1);
    scanf("%d", (a+i));
    }
    }
    void max_min(int a[], int n, int *max, int *min)
    {
    int i;
    *max=*a;
    *min=*a;
    for(i=0; i<n; i++)
    {
    if(*(a+i)>*max) *max=*(a+i);
    if(*(a+i)<*min) *min=*(a+i);
    }
    }
    void xuat(int *max, int *min)
    {
    printf("Gia tri lon nhat trong mang la: %d\n", *max);
    printf("Gia tri nho nhat trong mang la: %d\n", *min);
    }
    int main(void)
    {
    int a[size],n,max,min;
    nhap(a,n);
    max_min(a,n,&max,&min);
    xuat(&max,&min);
    return 0;
    }

  8. #8
    Ngày gia nhập
    01 2018
    Bài viết
    9

    mình tự học C. không ai dạy mình cả, tự dowload tài liệu để học. code chạy trên cfree 5.o được mà.

    - - - Nội dung đã được cập nhật ngày 12-02-2018 lúc 07:22 PM - - -

    mình tự học C, tự dowload tài liệu về học không ai bày dạy cả nên không tránh khỏi thiếu sót. nếu monre chỉ dạy như thế thì chịu thôi. mình hỏi bạn khác vậy.

  9. #9
    Ngày gia nhập
    02 2016
    Bài viết
    299

    Bạn chỉ mới học con trỏ. Đầu óc của bạn còn nặng về cơ cấu dữ liệu căn bản (int) cho nên code của bạn chỉ gượng ép int thành *int thôi chứ nó khong phải là code theo chiều hướng con trỏ.

    Thứ nhất: những vòng lặp mảng phải chạy bằng con trỏ chứ không bằng chỉ số

    Thứ hai: kiểu truyền tham số theo con trỏ chỉ dùng cho 3 trường hợp sau
    1. mảng (tức là truyền con trỏ vào phần tử nào đó của mảng - thường là phần tử đầu tiên)
    2. tham biến (tức là trị ở nơi nó trỏ vào có thể thay đổi)
    3. biến ấy là con trỏ

    Điển hình là hàm max_min
    // code của bạn
    void max_min(int a[], int n, int *max, int *min)
    {
    int i;
    *max=*a;
    *min=*a;
    for(i=0; i<n; i++)
    {
    if(*(a+i)>*max) *max=*(a+i);
    if(*(a+i)<*min) *min=*(a+i);
    }
    }

    // code gần với con trỏ hơn
    void max_min(int *a, int n, int *max, int *min)
    {
    *max=*a;
    *min=*a;
    for (int *b=a+n; a < b; a++)
    {
    if(*a>*max) *max=*a;
    if(*a<*min) *min=*a;
    }
    }

    Lưu ý là tôi chỉ phỏng theo code của bạn.
    Hàm này không đúng lắm vì nó không xử ý trường hợp n==0

    - - - Nội dung đã được cập nhật ngày 13-02-2018 lúc 11:03 AM - - -
    Phàn sau này tôi vốn viết trong một bài riêng, bị tự động gộp chung vào bài này.

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Tôi buồn tre già mà măng chưa mọc.
    Làm sao sánh vai cường cuốc 5 trâu như lời bác rặn
    Theo toán thống kê thì do lấy mẫu không đúng cách. Một diễn đàn không đủ để làm đại diện cho cả một dân tộc.

    Không thấy được măng tốt thì cũng có thể do vùng đất không tốt cho măng. Vùng đất mẫu ở đây chỉ có 1 diễn đàn. Và măng ở đây chỉ 1 loại măng (lập trình)

    (huống chi chính bạn là người phê bình môi trường diễn đàn này)

    Phần 2 trong câu nói của bạn tôi không động tới vì nó còn tùy theo tư tưởng chính trị từng người.

    Chú thích:
    Cách làm việc về chỉnh sửa của diễn đàn này hết sức vô duyên
    2 câu trả ời khác nhau nó gộp lại thành 1
    Có lẽ người viết code diễn đàn không hề học qua cái gọi là ngữ cảnh tiếng Việt.
    Đã được chỉnh sửa lần cuối bởi NguNhuheo : 13-02-2018 lúc 11:12 AM.

  10. #10
    Ngày gia nhập
    08 2017
    Bài viết
    1,870

    quan niệm về lập trình, cuộc sống, xã hội hay chính trị làm sao thống nhất, duy nhất đúng cho mọi người.

    cách chứng minh cũng vậy, quy nạp, phản chứng, ...

    và đúng không phải là duy nhất, khác nhau, đối lập nhau cũng có thể cùng đúng.

    Chỉ ra cái sai, chưa đúng thì tương đối dễ hơn

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