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

Đề tài: Gán 2 struct dc ko?

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    7

    Mặc định Gán 2 struct dc ko?

    Ví dụ mình có 2 cái struct là honso1 và honso2....honso1 đã có giá trị tử mẫu rồi còn honso2 chỉ mới khai báo ...vậy cho honso1=honso2 dc ko?

    và giúp mình đoạn code này....biên dịch đc nhưng chạy sai kq...

    Code:
    typedef struct honso
    {
    	int nguyen, tu, mau;
    };

    Code:
    honso congHS(honso mot, honso hai)
    {
    	honso tong;
    	tong.tu=(mot.tu*hai.mau)+(mot.mau*hai.tu);
    	tong.mau=(mot.mau*hai.mau);
    	tong.nguyen=mot.nguyen+hai.nguyen;
            rutGonPS(&tong);
            return tong;
    }
    
    honso tinhTongHSDuong(dslkd *ds)
    {
    	node *p;
    	p=ds->head;
            honso tong;
    	while(p!=ds->tail->next)
    	{
    		if(p->info.nguyen>=0)
    		{
    			tong=congHS(tong,p->info);
                    	p=p->next;
    		}
    		else
                    	p=p->next;
    	}
            return tong;
    }

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    609

    Về câu hỏi Gán 2 struct dc ko? thì câu trả lời là được.

    Trích dẫn Nguyên bản được gửi bởi vinhphat2808 Xem bài viết
    Ví dụ mình có 2 cái struct là honso1 và honso2....honso1 đã có giá trị tử mẫu rồi còn honso2 chỉ mới khai báo ...vậy cho honso1=honso2 dc ko?
    Không. Vì sao thì bạn tự hiểu rồi.

    Trích dẫn Nguyên bản được gửi bởi vinhphat2808 Xem bài viết
    và giúp mình đoạn code này....biên dịch đc nhưng chạy sai kq...

    Code:
    typedef struct honso
    {
    	int nguyen, tu, mau;
    };

    Code:
    honso congHS(honso mot, honso hai)
    {
    	honso tong;
    	tong.tu=(mot.tu*hai.mau)+(mot.mau*hai.tu);
    	tong.mau=(mot.mau*hai.mau);
    	tong.nguyen=mot.nguyen+hai.nguyen;
            rutGonPS(&tong);
            return tong;
    }
    
    honso tinhTongHSDuong(dslkd *ds)
    {
    	node *p;
    	p=ds->head;
            honso tong;
    	while(p!=ds->tail->next)
    	{
    		if(p->info.nguyen>=0)
    		{
    			tong=congHS(tong,p->info);
                    	p=p->next;
    		}
    		else
                    	p=p->next;
    	}
            return tong;
    }
    Vì sao sai kết quả thì chỉ có bạn biết thôi. Bạn không nói rõ đề bài thì ai biết được thế nào là kết quả đúng, thế nào là kết quả sai.

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Struct nếu là POD thì ok, cái này gọi là shallow-copy, còn nếu struct có pointer thì là deep-copy, phép gán xảy ra nhưng kết quả là không chính xác, code trên viết thiếu nhiều, và kết quả sai là sai như thế nào ? Chịu khó ghi rõ ra 1 tí đi cậu thì chắc sẽ có người giúp cậu đó ! Good luck !

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    7

    Viết chương trình nhập vào danh sách liên kết đơn các hỗn số (gồm 3 phần : phần nguyên, tử số>=0, mẫu số>0, tử < mẫu) và thực hiện các yêu cầu sau:
    a) Tính tổng các hỗn số dương
    Bài đang làm của mình đây...coi wa giùm với

    Code:
    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct honso
    {
    	int nguyen, tu, mau;
    };
    
    typedef struct node
    {
    	honso info;
    	node* next;
    };
    
    typedef struct dslkd
    {
    	node *tail, *head;	
    };
    
    void khoiTao(dslkd *ds)
    {
    	ds->tail=NULL;
            ds->head=NULL;
    }
    
    node* getnode()
    {
    	node *p;
    	p=(node*)malloc(sizeof(node));
            return p;
    }
    
    node* taoHonSo()
    {
    	int x;
    	node *p;
    	p=getnode();
    	printf("\nPhan nguyen(...-3, -2, -1, 0, 1, 2, 3,...): ");
    	scanf("%d",&x);
    	p->info.nguyen=x;
    	do
    	{
    		printf("\nTu so(0, 1, 2, 3,...): ");
    		do
    		{
    			scanf("%d",&x);
    			if(x<0)
            			printf("\nGia tri ko hop le");
    		}while(x<0);
            	p->info.tu=x;
    		printf("\nMau so(1, 2, 3,...): ");
    		do
    		{
    		scanf("%d",&x);
    		if(x<=0)
            		printf("\nGia tri ko hop le");
    		}while(x<=0);
    		p->info.mau=x;
    		if(p->info.tu>=p->info.mau)
            		printf("Tu so phai nho hon mau so\n");
            }while(p->info.tu>=p->info.mau);
            return p;
    }
    
    void themCuoiDS(dslkd *ds, node *p)
    {
    	if(ds->head==NULL)
    		ds->head=ds->tail=p;
    	else
    	{
    		ds->tail->next=p;
    		ds->tail=p;
    		p->next=NULL;
    	}
    }
    
    void xuatHonSo(honso p)
    {
    	printf("%d %d/%d",p.nguyen,p.tu,p.mau);
    }
    
    void xuatDS(dslkd *ds)
    {
    	node *p;
    	p=ds->head;
    	while(p!=ds->tail->next)
    	{
    		xuatHonSo(p->info);printf(", ");
                    p=p->next;
    	}
    }
    
    
    int uscln(long a,long b)
    {
    	if(a!=0 && b!=0)
            {
                a=abs(a);
                b=abs(b);
                while(a!=b)
                {
                    if(a>b)
                        a=a-b;
                    else
                        b=b-a;
                }
                return a;
            }
            else
                return 1;
    }
    
    void rutGonPS(honso *hs)
    {
    	int u;
            u=uscln(hs->tu,hs->mau);
            hs->tu=hs->tu/u;
            hs->mau=hs->mau/u;
    }
    
    honso congHS(honso mot, honso hai)
    {
    	honso tong;
    	tong.tu=(mot.tu*hai.mau)+(mot.mau*hai.tu);
    	tong.mau=(mot.mau*hai.mau);
    	tong.nguyen=mot.nguyen+hai.nguyen;
            rutGonPS(&tong);
            return tong;
    }
    
    honso tinhTongHSDuong(dslkd *ds)
    {
    	node *p;
    	p=ds->head;
            honso tong;
    	while(p!=ds->tail->next)
    	{
    		if(p->info.nguyen>=0)
    		{
    			tong=congHS(tong,p->info);
                    	p=p->next;
    		}
    		else
                    	p=p->next;
    	}
            return tong;
    }
    
    void main()
    {
    	clrscr();
    	dslkd *list;
    	int n;
    	node *p;
    	honso x;
            khoiTao(list);
    	printf("Ban muon danh sach lien ket co bao nhieu hon so: ");
    	scanf("%d",&n);
    	for(int i=1; i<=n; i++)
    	{
    		printf("Nhap gia tri cho so thu %d\n",i);
    		p=taoHonSo();
                    themCuoiDS(list,p);
    	}
    	xuatDS(list);
    	x=tinhTongHSDuong(list);
    	xuatHonSo(x);
    	getch();					
    }

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

  1. Gửi struct thông qua socket có khác nhau giữa gửi từng field và gửi cả struct?
    Gửi bởi bptvip_pro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 12-05-2013, 02:35 AM
  2. Bài tập C++ làm sao truy xuất biến của struct lồng trong struct
    Gửi bởi quangnam.tamky trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 10-04-2013, 05:22 PM
  3. Lập trình C++ Giúp đỡ về điểm khác nhau giữa struct và typedef struct
    Gửi bởi huydang2410 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-02-2013, 10:30 AM
  4. Khác nhau giữa struct trong c và struct trong c++
    Gửi bởi nhutlv01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 17-02-2012, 09:12 AM
  5. kiểu struct trên C++. CHo em hỏi rõ về kiểu struct???
    Gửi bởi nhonx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 13-01-2010, 08:39 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