PDA

View Full Version : có ai rành Contructor giúp em với huhuhu



hoangia
29-04-2009, 16:03
Do tài liệu bằng tiếng anh nên có lẽ dịch rồi hỉu sai, các bác giúp m với
Đề là:
viết các hàm chức năng sau:
1 khởi tạo (contructor)
2 nhập
3 xuất
4 kt 1 số thực có thuộc tập hợp hay ko?
5 xóa 1 số thực
6 sao chép 1 tập hợp khác
7 kt 1 tập hợp có giống tập hợp khác hay ko?
8 kết 2 tập hợp
9 giao 2 tập hợp

tình hình là m đụng đến phần khai báo floatset ở câu 6,7,8,9 bị lỗi,với câu 5 em xài thuật đúng mà ko bít thiếu chổ nào mong các bác giúp đỡ:

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
typedef class floatset
{
private:
float *elems;
int n;
int size;
public:
floatset(int n);
void input();
void output();
void check();
void add();
void del();
void copy(floatset);
void equal(floatset);
void unism(floatset,floatset);
void interset(floatset,floatset);
};

void floatset::input()

{
int n;
float e;
cout<<"mhap so phan tu";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"nhap fan tu thu"<<i<<"]=\n";
cin>>e;
elems[i]=e;
}

}

void floatset::output()
{
int n;
for(int i=0;i<n;i++)
cout<<"\nso phan tu "<<i<<" la"<<elems[i];
}

void floatset::check()
{
int n,x;
cout<<"\nhap phan tu can kiem tra: ";
cin>>x;
for(int i=0;i<n;i++)
if(x==elems[i])
cout<<"co phan tu: "<< x <<" trong mang o vi tri: "<<i<<endl;
}

void floatset::add()
{
int n,x,y,tam;
cout<<"\nnhap phan tu can them vao";
cin>>x;
cout<<"nhap vi tri can chen";
cin>>y;
n=n+1;
for(int i=n;i>y;i--)
elems[i]=elems[i-1];
elems[y]=x;
}

void floatset::del()
{
int x;
cout<<"\nnhap gia tri can xoa x:";
cin>>x;
// elems[i]=x;
for(int i=0;i<n;i++)
if(elems[i]==x)
for(;i<n;i++)
elems[i]=elems[i+1];
n=n-1;

}

//void floatset::copy()
//{
// floatset q;
// q.input
//}


void main()
{
clrscr();
int n;
float *elems;
floatset p(1);
p.input();
p.output();
p.check();
p.add();
p.output();
p.del();
p.output();
//p.copy();
getch();
}

[=========> Bổ sung bài viết <=========]

bài này hơi khó các bác thông cảm

kimduquan
01-05-2009, 09:37
bạn thử khai báo lại floatset::void input()xem,trong hàm input chưa cấp phát bộ nhớ cho con trỏ elems,mà muốn cấp phát thì phải viết thêm hàm khởi tạo ko tham số,trong hàm add,del cũng phải dùng cấp phát động,trong hàm copy phải khai báo là q.input() nhưng vì chưa có hàm khởi tạo ko tham số nên bạn khai báo là floatset q là sai.Bạn có thể sửa lại = cách viết thêm hàm khởi tạo ko tham số,vì trong class có con trỏ nên bạn phải viết thêm hàm hủy nữa,bạn đưa các toán tử phạm vi ra trước tên phương thức.