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

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

1 Like

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

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

1 Like

uồi chắc :frowning: 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 :wink:

đọc thấy vài chỗ sai :smiley: , 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;
}
1 Like

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.

1 Like

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 .

2 Likes

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

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

@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();
}

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

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]);

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

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

1 Like

đc rồi bác ạ :smile:

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

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();
}

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

1 Like

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();
}
1 Like

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?