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

Đề tài: [C++] Xin sửa lỗi giùm mình chương trình

  1. #1
    No Avatar
    petepan86 Khách

    Mặc định [C++] Xin sửa lỗi giùm mình chương trình

    mình chỉ mới học C++ đây thôi, khi làm thử về con trỏ thì nó không báo lỗi về cú pháp, nhưng khi cho chạy thì không được. Mọi người xem giúp sai chỗ nào, cám ơn rất nhiều
    Đây là chương trình tạo danh sách FIFO
    #include "iostream.h"
    #include "stdlib.h"
    //#include "calloc.h"
    struct node{
    int info;
    node *next;
    };
    void taonut(node *f);
    void xuat(node *f);
    void taonut(node *f)
    { node *p,*q;
    int i;
    f=NULL;
    p=f;
    for (i=1;i<=10;i++){
    q=new node;
    q->info=i;
    q->next=NULL;
    if (f==NULL)
    f=q;
    else
    { p->next=q;
    p=q;
    }
    }
    }
    void xuat(node *f) {
    node r;
    node *p;
    p=&r;
    p=f;
    while(p!=NULL)
    { cout << p->info<<" ";
    p=p->next;
    }
    }
    void main()
    {
    node *f;
    taonut(f);
    xuat(f);
    }

  2. #2
    No Avatar
    noname.cpp Khách

    Code:
    void taonut(node *f)//f được truyền như tham trị
    {	node *p,*q;
    int i;
    f=NULL;//những thay đổi đối với f không có tác dụng sau khi kết thúc hàm
    p=f;
    for (i=1;i<=10;i++){
      q=new node;
      q->info=i;
      q->next=NULL;
      if (f==NULL)
    	  f=q;// thiếu lệnh : p = f;
    	else 
    	{ p->next=q;
    	p=q;
    	}
    }
    Nên nhớ rằng có 2 kiểu truyền tham số ,đó là truyền theo kiểu tham trị và tham biến.Truyền theo tham trị thì những thay đổi đối với những đối số đó trong thân hàm sẽ không được lưu lại sau khi kết thúc hàm và ngược lại nếu truyền theo tham biến thì những thay đổi vẫn sẽ được giữ lại sau lời gọi hàm.

    Ở trên bạn truyền con trỏ f theo kiểu tham trị vì thế những biến đổi của f trong hàm không có tác dụng sau khi gọi hàm.Vậy hãy sửa hàm trên như sau :

    void taonut(node** f) và gọi hàm như sau : taonut(&f)
    Muốn thay đổi f trong thân hàm ta làm như sau : *f = NULL;

    Còn cách khác là dùng alias :

    void taonut(node* &f);
    Gọi hàm : taonut(f);
    Sử dụng : f = NULL;

  3. #3
    No Avatar
    petepan86 Khách

    cám ơn bạn nhiều nhé. mình làm được rồi (^_^)

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

  1. các bạn sửa giùm lỗi này hộ tớ với!
    Gửi bởi mr.cuong_tq trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 01-10-2012, 06:36 PM
  2. Fix lỗi giùm em với ạ
    Gửi bởi anhtnse02984 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 10-08-2012, 02:19 PM
  3. Turbo C Lỗi Mọi người sữa giùm mình lỗi ni
    Gửi bởi binhlama00 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 01-03-2012, 08:56 PM
  4. mấy anh sửa lỗi này giùm em nha
    Gửi bởi lu_ngovan trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-05-2010, 04:17 PM
  5. sửa giùm em bài sắp xếp
    Gửi bởi tonggiavinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-01-2008, 09:42 PM

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