30/09/2018, 18:19

Sắp xếp tăng dần các cầu thủ theo tuổi

Đề bài là nhập thông tin cầu thủ , nhập xuất thông tin đó . và em có làm thêm 1 câu là sắp xếp tăng dần số tuổi của các cầu thủ. và in ra màn hình. nhập xuất thì đã ok rồi ạ. còn sắp xếp sao nó cứ bảo lỗi 83 31 lvalue required as left operand of assignment là sao ạ. code :

#include "iostream"
using namespace std;
class cauthu { //nhap 1 cau thu
private:
    char ten[30];
    int tuoi,sbt,sp;
public:
    friend istream &operator>>(istream &inp, cauthu &d);
    friend ostream &operator<<(ostream &out, cauthu &d);
    int gettuoi() {
        return tuoi;
    }
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
    cout<<"
 nhap ten cau thu: ";
    inp.ignore(1);
    inp.get(d.ten,30);
    cout<<"
 nhap tuoi cau thu: ";
    inp>>d.tuoi;
    cout<<"
 nhap so an thang: ";
    inp>>d.sbt;
    cout<<"
 nhap so phut thi dau: ";
    inp>>d.sp;
}

ostream &operator<<(ostream &out, cauthu &d) { //xuat
    out<<"
 ten: "<
}
class day { // lop nhieu cau thu
private:
    cauthu *d;
    int n;
public:
    void nhap();
    void xuat();
    int mintuoi();
    int sx();
};
void day::nhap() { //nhap nhieu cau thu
    cout<<"
 nhap so cau thu : ";
    cin>>n;
    d=new cauthu[n];
    for(int i=1; i<=n; i++) {
        cout<<"
 nhap thong tin cau thu thu "< cin>>d[i];
    }
}
void day::xuat() { //xuat nhieu cau thu
    int i;
    cout<<"
 In: 
";
    for( i=1; i<=n; i++) {
        cout<<"thong tin cau thu thu "< cout<
    }
}
int day::mintuoi() { //tim so tuoi min
    int i;
    float min=d[1].gettuoi();
    for(i=1; i<=n; i++) {
        if (min>d[i].gettuoi())
            min=d[i].gettuoi();
    }
    return min;
}
int day::sx() { //sap xep
    int i,j;
    int tg;
    for( i=1; i<=n; i++)
        for( j=i+1; j<=n; j++)
            if(d[i].gettuoi() {
            tg=d[i].gettuoi();
                d[j].gettuoi()=d[i].gettuoi();
                d[j].gettuoi()=tg;
            }
    for(i=1; i<=n; i++)
    cout<<"	 "<
}
int main() {
    day d;
    d.nhap();
    d.xuat();
    cout<<"
 tuoi thap nhat trong doi la: "< d.sx();
}
Phạm Chương viết 20:36 ngày 30/09/2018

Coi edit lại phần code , post như vậy không ai đủ kiên nhẫn đọc đâu

long viết 20:29 ngày 30/09/2018

Coi edit lại phần code , post như vậy không ai đủ kiên nhẫn đọc đâu

làm ntn thì mới đc giúp ạ. em gà mới, mog bác chia sẻ tí

Phạm Chương viết 20:31 ngày 30/09/2018

làm ntn thì mới đc giúp ạ. em gà mới, mog bác chia sẻ tí

cout<<"thong tin cau thu thu "< cout<

Mới đọc sơ code vủa bạn đưa lên mà thấy lỗi cú pháp nhiều quá .
Để mình test xem .

long viết 20:23 ngày 30/09/2018

uồi chắc do lúc em k chạy đc nên copy đi copy lại nên vậy anh ạ .ẩu quá. hì hục mãi k ra nản quá, em rất rất cảm ơn anh ạ. anh xem zùm em

Đỗ Văn Chanh viết 20:20 ngày 30/09/2018

đọc thấy vài chỗ sai , ms học nên là điều bình thường, gettuoi kiểu int, min kiểu float(chỗ này k sai mà k nên để 2 kiểu thế này :3)
với lại hàm sắp xếp vòng for thứ nhất i < n không phải i <= n;
nếu như vòng for thế kia thì chỉ đổi được tuổi chứ chưa đổi được thông tin bao gồm tên, số bàn thắng, số phút thi đấu. Còn lại mình chưa đọc hết nên không biết còn gì không nữa
nên có 1 hàm sắp xếp riêng, không biết bạn học cấu trúc dữ liệu và giải thuật chưa, học rồi thì hàm sắp xếp đổi thành thế này:

template<class T>
void Swap(T &a,T &b)
{
T tmp;
	tmp = a;
	a = b;
	b=tmp;
}
Đỗ Văn Chanh viết 20:26 ngày 30/09/2018

có thể chụp ảnh màn hình chỗ lỗi, mn nhìn sẽ dễ hiểu hơn là ngồi đọc code của b.

Phạm Chương viết 20:23 ngày 30/09/2018

Code của bạn chưa build lần nào nên lỗi rất nhiều , nhiều chỗ viết không có mục đích .
đầu tiên :

#include "iostream"
#include "math.h"
using namespace std;
class cauthu { //nhap 1 cau thu
private:
    char ten[30];
    int tuoi,sbt,sp;
public:
    friend istream &operator>>(istream &inp, cauthu &d);
    friend ostream &operator<<(ostream &out, cauthu &d);
    int gettuoi() {
        return tuoi;
    }
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
    cout<<"\n nhap ten cau thu: ";
    inp.ignore(1);
    inp.get(d.ten,30);
    cout<<"\n nhap tuoi cau thu: ";
    inp>>d.tuoi;
    cout<<"\n nhap so an thang: ";
    inp>>d.sbt;
    cout<<"\n nhap so phut thi dau: ";
    inp>>d.sp;
}

khúc đó thì ổn .
Tiếp theo : Khúc này để xuất vậy nó xuất cái gì .

ostream &operator<<(ostream &out, cauthu &d) { //xuat
    out<<"\n ten: "<
}

Khúc này dùng để xuất vậy đọc đoạn này nó xuất cái gì ???

void day::xuat() { //xuat nhieu cau thu
    int i;
    cout<<"\n In: \n";
    for( i=1; i<=n; i++) {
        cout<<"thong tin cau thu thu "< cout<
    }
}

Tiếp theo sắp xếp lỗi cú pháp không nói nhé ,ý tưởng sắp xếp không có nhé .

int day::sx() { //sap xep
    int i,j;
    int tg;
    for( i=1; i<=n; i++)
        for( j=i+1; j<=n; j++)
            if(d[i].gettuoi() {
            tg=d[i].gettuoi();
                d[j].gettuoi()=d[i].gettuoi();
                d[j].gettuoi()=tg;
            }
    for(i=1; i<=n; i++)
    cout<<"\t "<
} 

Cái việc xuất ra bạn cũng không biết có xuất theo đúng ý bạn không .

cout<<"\n tuoi thap nhat trong doi la: "< d.sx();

Bạn coi lại nhé , làm lại đi .

long viết 20:33 ngày 30/09/2018

vâng em cảm ơn anh ạ . em sẽ thử , k đc em lại nhờ các anh giúp

long viết 20:23 ngày 30/09/2018

#include “iostream”
#include “math.h”
using namespace std;
class cauthu { //nhap 1 cau thu
private:
char ten[30];
int tuoi,sbt,sp;
public:
friend istream &operator>>(istream &inp, cauthu &d);
friend ostream &operator<<(ostream &out, cauthu &d);
int gettuoi() {
return tuoi;
}
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
cout<<"\n nhap ten cau thu: “;
inp.ignore(1);
inp.get(d.ten,30);
cout<<”\n nhap tuoi cau thu: “;
inp>>d.tuoi;
cout<<”\n nhap so an thang: “;
inp>>d.sbt;
cout<<”\n nhap so phut thi dau: ";
inp>>d.sp;
}

khúc đó thì ổn .Tiếp theo : Khúc này để xuất vậy nó xuất cái gì .

ostream &operator<<(ostream &out, cauthu &d) { //xuat
out<<"\n ten: "<
}

Khúc này dùng để xuất vậy đọc đoạn này nó xuất cái gì ???

void day::xuat() { //xuat nhieu cau thu
int i;
cout<<"\n In: \n";
for( i=1; i<=n; i++) {
cout<<"thong tin cau thu thu "< cout<
}
}

Tiếp theo sắp xếp lỗi cú pháp không nói nhé ,ý tưởng sắp xếp không có nhé .

int day::sx() { //sap xep
int i,j;
int tg;
for( i=1; i<=n; i++)
for( j=i+1; j<=n; j++)
if(d[i].gettuoi() {
tg=d[i].gettuoi();
d[j].gettuoi()=d[i].gettuoi();
d[j].gettuoi()=tg;
}
for(i=1; i<=n; i++)
cout<<"\t "<
}

Cái việc xuất ra bạn cũng không biết có xuất theo đúng ý bạn không .

cout<<"\n tuoi thap nhat trong doi la: "< d.sx();

Bạn coi lại nhé , làm lại đi .

vâng em cảm ơn anh ạ , sau xem sẽ xem xét kĩ rồi đăng bài :)), em đang xem + sửa lại đây

long viết 20:20 ngày 30/09/2018

@Chuong_Pham: sau khi sửa xong mấy cái lỗi linh tinh thì vẫn còn cái lỗi này ạ, đây chính là cái em thắc mắc, cái cách sắp xếp của em có dùng đc k . hay là dùng theo bạn @chanhbc có gì mấy anh xem giúp ạ : (tiện thể cho em hỏi đưa code vào miền đen như mấy a là làm ntn ạ )

#include "iostream"
using namespace std;
class cauthu { //nhap 1 cau thu
private:
    char ten[30];
    int tuoi,sbt,sp;
public:
    friend istream &operator>>(istream &inp, cauthu &d);
    friend ostream &operator<<(ostream &out, cauthu &d);
    int gettuoi() {
        return tuoi;
    }
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
    cout<<"\n nhap ten cau thu: ";
    inp.ignore(1);
    inp.get(d.ten,30);
    cout<<"\n nhap tuoi cau thu: ";
    inp>>d.tuoi;
    cout<<"\n nhap so an thang: ";
    inp>>d.sbt;
    cout<<"\n nhap so phut thi dau: ";
    inp>>d.sp;
}

ostream &operator<<(ostream &out, cauthu &d) { //xuat
    out<<"\nten: "<<d.ten<<"\ntuoi: "<<d.tuoi<<"\nso ban thang: "<<d.sbt<<"\nso phut thi dau: "<<d.sp;
}
class day { // lop nhieu cau thu
private:
    cauthu *d;
    int n;
public:
    void nhap();
    void xuat();
    int mintuoi();
    int sx();
};
void day::nhap() { //nhap nhieu cau thu
    cout<<"\n nhap so cau thu : ";
    cin>>n;
    d=new cauthu[n];
    for(int i=1; i<=n; i++) {
        cout<<"\n nhap thong tin cau thu thu "<<i;
		 cin>>d[i];
    }
}
void day::xuat() { //xuat nhieu cau thu
    int i;
    cout<<"\n In: \n";
    for( i=1; i<=n; i++) {
        cout<<"thong tin cau thu thu "<<i;
        cout<<d[i];
    }
}
int day::mintuoi() { //tim so tuoi min
    int i;
    float min=d[1].gettuoi();
    for(i=1; i<=n; i++) {
        if (min>d[i].gettuoi())
            min=d[i].gettuoi();
    }
    return min;
}
int day::sx() { //sap xep
    int i,j;
    int tg;
    for( i=1; i<=n; i++)
        for( j=i+1; j<=n; j++)
            if(d[i].gettuoi()<d[j].gettuoi()) {
                tg=d[i].gettuoi();
                d[j].gettuoi()=d[i].gettuoi();
                d[j].gettuoi()=tg;
            }
    for(i=1; i<=n; i++)
       cout<<"\t "<<d[i].gettuoi();
}
int main() {
    day d;
    d.nhap();
    d.xuat();
}

Đỗ Văn Chanh viết 20:35 ngày 30/09/2018

đặt code trong ``` bạn ơi

Đỗ Văn Chanh viết 20:35 ngày 30/09/2018

bạn thử thay thế chỗ hoán đổi bằng hàm sắp xếp của mình xem

if(.....)
Swap(ds[i],[ds[j]);
long viết 20:34 ngày 30/09/2018

làm sao để đặt code trong miền đen vậy bác :’(

Đỗ Văn Chanh viết 20:20 ngày 30/09/2018
Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…

bạn vào đây đọc, vào trang chủ diễn đàn có hướng dẫn đầy đủ rồi b nhé

long viết 20:34 ngày 30/09/2018

đc rồi bác ạ

Đỗ Văn Chanh viết 20:19 ngày 30/09/2018

bạn sửa lại xem được k

long viết 20:22 ngày 30/09/2018

vẫn k đc anh ơi :((

 #include "iostream"
using namespace std;
class cauthu { //nhap 1 cau thu
private:
    char ten[30];
    int tuoi,sbt,sp;
public:
    friend istream &operator>>(istream &inp, cauthu &d);
    friend ostream &operator<<(ostream &out, cauthu &d);
    int gettuoi() {
        return tuoi;
    }
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
    cout<<"\n nhap ten cau thu: ";
    inp.ignore(1);
    inp.get(d.ten,30);
    cout<<"\n nhap tuoi cau thu: ";
    inp>>d.tuoi;
    cout<<"\n nhap so an thang: ";
    inp>>d.sbt;
    cout<<"\n nhap so phut thi dau: ";
    inp>>d.sp;
}

ostream &operator<<(ostream &out, cauthu &d) { //xuat
    out<<"\nten: "<<d.ten<<"\ntuoi: "<<d.tuoi<<"\nso ban thang: "<<d.sbt<<"\nso phut thi dau: "<<d.sp;
}
class day { // lop nhieu cau thu
private:
    cauthu *d;
    int n;
public:
    void nhap();
    void xuat();
    int mintuoi();
    void swap(int,int);
     void sx();
};
void day::nhap() { //nhap nhieu cau thu
    cout<<"\n nhap so cau thu : ";
    cin>>n;
    d=new cauthu[n];
    for(int i=1; i<=n; i++) {
        cout<<"\n nhap thong tin cau thu thu "<<i;
		 cin>>d[i];
    }
}
void day::xuat() { //xuat nhieu cau thu
    int i;
    cout<<"\n In: \n";
    for( i=1; i<=n; i++) {
        cout<<"thong tin cau thu thu "<<i;
        cout<<d[i];
    }
}
int day::mintuoi() { //tim so tuoi min
    int i;
    float min=d[1].gettuoi();
    for(i=1; i<=n; i++) {
        if (min>d[i].gettuoi())
            min=d[i].gettuoi();
    }
    return min;
}
void swap(int *a,int *b)
{
	int tg;
	*a=tg;
	*a=*b;
	*b=tg;
}
void day::sx()
{
	int i,j;
	for(i=1;i<=n;i++)
	for(j=i+1;j<=n;j++)
	   if(d[i].gettuoi()>d[j].gettuoi())
	      swap(&d[i].gettuoi(),&d[j].gettuoi());
}
int main() {
    day a;
    a.nhap();
    a.xuat();
    a.sx();
}
Đỗ Văn Chanh viết 20:27 ngày 30/09/2018

để tối mình xem hộ, b học CTDL & GT chưa

Đỗ Văn Chanh viết 20:27 ngày 30/09/2018

sửa lại 1 vài chỗ, mới học nên code tùm lum quá hic
mà b viết thì viết code cho rõ ràng hơn chút các cái xuống dòng cho dòng xuất nhìn cho đỡ đau mắt “\n”
các dấu tab cũng thế ng đọc sẽ dễ nhìn hơn, mình hay sửa bài cho b mình mà nhìn code của bạn m cũng thế chả biết viết gì nữa.

 #include "iostream"
using namespace std;
class cauthu 
{ //nhap 1 cau thu
private:
    char ten[30];
    int tuoi,sbt,sp;
public:
    friend istream &operator>>(istream &inp, cauthu &d);
    friend ostream &operator<<(ostream &out, cauthu &d);
    int gettuoi() {
        return tuoi;
    }
};
istream &operator>>(istream &inp, cauthu &d) { //nhap 1 cau thu
    cout<<"\n nhap ten cau thu: ";
    inp.ignore(1);
    inp.get(d.ten,30);
    cout<<"\n nhap tuoi cau thu: ";
    inp>>d.tuoi;
    cout<<"\n nhap so an thang: ";
    inp>>d.sbt;
    cout<<"\n nhap so phut thi dau: ";
    inp>>d.sp;
}

ostream &operator<<(ostream &out, cauthu &d) { //xuat
    out<<"\nten: "<<d.ten<<"\ntuoi: "<<d.tuoi<<"\nso ban thang: "<<d.sbt<<"\nso phut thi dau: "<<d.sp;
}
class day { // lop nhieu cau thu
private:
    cauthu *d;
    int n;
public:
    void nhap();
    void xuat();
    int mintuoi();
    void sx();
};
void day::nhap() { //nhap nhieu cau thu
    cout<<"\n nhap so cau thu : ";
    cin>>n;
    d=new cauthu[n+1];// n+1 khong phai n
    for(int i=1; i<=n; i++) {
        cout<<"\n nhap thong tin cau thu thu "<<i;
		 cin>>d[i];
    }
}
void day::xuat() { //xuat nhieu cau thu
    int i;
    cout<<"\n In: \n";
    for( i=1; i<=n; i++) {
        cout<<"\nthong tin cau thu thu "<<i;
        cout<<d[i];
    }
}
//ham nay viet ma khong dung den
int day::mintuoi() { //tim so tuoi min
    int i;
    float min=d[1].gettuoi();
    for(i=1; i<=n; i++) {
        if (min>d[i].gettuoi())
            min=d[i].gettuoi();
    }
    return min;
}
void day::sx()
{
	int i,j;
	//cout<<"\nhaha "<<d[2].gettuoi()<<"\t"<<d[1].gettuoi();
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
	   		if(d[i].gettuoi() >= d[j].gettuoi())
	   		{
	   			cauthu tg;
	   			tg=d[i];
	   			d[i]=d[j];
	   			d[j]=tg;
	   		}
	      		
}
int main() {
    day a;
    //nhap 
	a.nhap();
	//xuat
    a.xuat();
    //sap xep
    a.sx();
    //in lai
    cout<<"\n Sap xep tang theo do tuoi";
    a.xuat();
}
long viết 20:35 ngày 30/09/2018

1 lần nữa , em xin cám ơn anh . em sẽ cố code gọn hơn , đỡ tù hơn ạ

Bài liên quan
0