BT3-5.Viết chương trình thực hiện các yêu cầu sau:
Hàm tìm bị lỗi rùi đang sửa hì hì, các bạn thử sửa giúp nha
- .Khai báo cấu trúc dữ liệu của một danh sách liên kết đơn các tỉnh. Biết
- rằng thông tin của mỗi tỉnh bao gồm: tên tỉnh, diện tích, dân số
- .Cài đặt các thao tác cơ bản cho danh sách liên kết đơn các tỉnh (thêm, sửa ,xóa, duyệt).
- .Tính tổng diện tích của tất cả các tỉnh trong danh sách liên kết
- Tìm địa chỉ của node chứa tính có diện tích lớn nhất trong danh sách liên kết.
- .Tìm một tỉnh có dân số lớn nhất
- .Sắp xếp danh sách tăng dần theo diện tích.
- Spoiler:
- Đã gỡ bỏ --> Updating ....
- Code:
#include "iostream.h"
#include "iomanip.h"
#include "stdio.h"
#include "conio.h"
typedef struct TINH
{
char tenTinh[20];
double soDan;
double dienTich;
};
typedef struct THONGTIN
{
TINH thongTin;
THONGTIN *tiep;
};
typedef struct DANHSACH
{
THONGTIN *dau;
THONGTIN *cuoi;
};
THONGTIN *LayTinh(TINH tinh);
void TaoDanhSach(DANHSACH &DS);
void ThemDau(DANHSACH &DS,THONGTIN *thongTin);
THONGTIN *ThemTinh(DANHSACH &DS,TINH tinh);
void NhapThongTin(DANHSACH &DS);
void XuatDuLieu(DANHSACH &DS);
THONGTIN *TimTinh(DANHSACH DS,TINH tinh);
void SuaThongTin(DANHSACH &DS);
void XoaTinh(DANHSACH &DS);
void Tim1Tinh(DANHSACH DS);
double TongDienTich(DANHSACH DS);
int DiaChiSmax(DANHSACH DS);
void DanSoLonNhat(DANHSACH DS);
void GanTinh(TINH &t1,TINH &t2);
void SapXep(DANHSACH &DS);
THONGTIN *LayTinh(TINH tinh)
{
THONGTIN *tt = new THONGTIN;
if(tt == NULL)
{
cout<<"Khong du bo nho";
return NULL;
}
tt->thongTin = tinh;
tt->tiep = NULL;
return tt;
}
void TaoDanhSach(DANHSACH &DS)
{
DS.dau = DS.cuoi = NULL;
}
void ThemDau(DANHSACH &DS,THONGTIN *thongTin)
{
if(DS.dau == NULL)
{
DS.dau = DS.cuoi = thongTin;
}
else
{
thongTin->tiep = DS.dau;
DS.dau = thongTin;
}
}
THONGTIN *ThemTinh(DANHSACH &DS,TINH tinh)
{
THONGTIN *t = LayTinh(tinh);
if(t == NULL)
return NULL;
ThemDau(DS,t);
return t;
}
void NhapThongTin(DANHSACH &DS)
{
THONGTIN *tinh = new THONGTIN;
cout<<"Nhap vao ten tinh: "; fflush(stdin);
gets(tinh->thongTin.tenTinh);
cout<<"So dan trong tinh: ";
cin>>tinh->thongTin.soDan;
cout<<"Dien tich cua tinh: ";
cin>>tinh->thongTin.dienTich;
ThemTinh(DS,tinh->thongTin);
}
void XuatDuLieu(DANHSACH &DS)
{
THONGTIN *tt;
cout<<"+--------------------+----------+-----------+\n";
cout<<"| TEN TINH | SO DAN | DIEN TICH |\n";
cout<<"+--------------------+----------+-----------+\n";
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
{
cout<<"|"<<setw(20)<<tt->thongTin.tenTinh<<"|"<<setw(10)<<tt->thongTin.soDan<<"|"<<setw(11)<<tt->thongTin.dienTich<<"|"<<endl;
cout<<"+--------------------+----------+-----------+\n";
}
getch();
}
THONGTIN *TimTinh(DANHSACH DS,TINH tinh)
{
THONGTIN *t;
for(t = DS.dau; t != NULL; t = t->tiep)
{
if(t->thongTin.tenTinh == tinh.tenTinh)
return t;
}
}
void SuaThongTin(DANHSACH &DS)
{
THONGTIN *tt;
TINH tinh;
cout<<"Nhap vao ten tinh can sua: "; fflush(stdin);
gets(tinh.tenTinh);
tt = TimTinh(DS,tinh);
if(tt != NULL)
{
cout<<tt->thongTin.tenTinh<<"\nNhap vao ten moi: ";
gets(tt->thongTin.tenTinh);
cout<<tt->thongTin.soDan<<"\nSo dan: ";
cin>>tt->thongTin.soDan;
cout<<tt->thongTin.dienTich<<"\nDien tich: ";
cin>>tt->thongTin.dienTich;
cout<<"Da sua xong thong tin tinh "<<tinh.tenTinh;
}
else cout<<"Khong co tinh "<<tinh.tenTinh<<endl;
getch();
}
void XoaTinh(DANHSACH &DS)
{
THONGTIN *tt,*t,*t1;
TINH tinh;
cout<<"Nhap vao ten tinh can xoa: "; fflush(stdin);
gets(tinh.tenTinh);
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
{
if(tt->thongTin.tenTinh == tinh.tenTinh)
{
GanTinh(DS.dau->thongTin,tt->thongTin); break;
}
for(t = DS.dau; t != NULL; t = t->tiep)
{
t1 = t->tiep;
GanTinh(t->thongTin,t1->thongTin);
if(t1->tiep == NULL)
t->tiep = NULL;
}
}
}
void Tim1Tinh(DANHSACH DS)
{
THONGTIN *tt;
TINH tinh;
cout<<"Nhap vao ten tinh can tim: "; fflush(stdin);
gets(tinh.tenTinh);
tt = TimTinh(DS,tinh);
if(tt != NULL)
{
cout<<"Tim thay tinh "<<tinh.tenTinh<<" voi thong tin sau: \n";
cout<<"+--------------------+----------+-----------+\n";
cout<<"| TEN TINH | SO DAN | DIEN TICH |\n";
cout<<"+--------------------+----------+-----------+\n";
cout<<"|"<<setw(20)<<tt->thongTin.tenTinh<<"|"<<setw(10)<<tt->thongTin.soDan<<"|"<<setw(11)<<tt->thongTin.dienTich<<"|\n";
cout<<"+--------------------+----------+-----------+\n";
}
else cout<<"Khong co tinh "<<tinh.tenTinh<<endl;
getch();
}
double TongDienTich(DANHSACH DS)
{
THONGTIN *tt;
double t = 0;
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
t = t + tt->thongTin.dienTich;
return t;
}
int DiaChiSmax(DANHSACH DS)
{
THONGTIN *tt;
int d = 0;
double max = DS.dau->thongTin.dienTich;
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
if(max < tt->thongTin.dienTich)
d++;
return d;
}
void DanSoLonNhat(DANHSACH DS)
{
THONGTIN *tt;
double max = DS.dau->thongTin.soDan;
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
if(max < tt->thongTin.soDan)
max = tt->thongTin.soDan;
for(tt = DS.dau; tt != NULL; tt = tt->tiep)
if(tt->thongTin.soDan == max) break;
cout<<"Tinh co nhieu dan nhat: "<<tt->thongTin.tenTinh<<endl;
getch();
}
void GanTinh(TINH &t1,TINH &t2)
{
TINH gan;
gan.tenTinh = t1.tenTinh;
gan.dienTich = t1.dienTich;
gan.soDan = t1.soDan;
t1.tenTinh = t2.tenTinh;
t1.dienTich = t2.dienTich;
t1.soDan = t2.soDan;
t2.tenTinh = gan.tenTinh;
t2.dienTich = gan.dienTich;
t2.soDan = gan.soDan;
}
void SapXep(DANHSACH &DS)
{
THONGTIN *t,*t1;
for(t = DS.dau; t != NULL; t = t->tiep)
{
for(t1 = t->tiep; t1 != NULL; t1 = t1->tiep)
{
if(t->thongTin.dienTich > t1->thongTin.dienTich)
{
GanTinh(t->thongTin,t1->thongTin);
}
}
}
}
void main()
{
THONGTIN *tinh = new THONGTIN;
DANHSACH L;
TaoDanhSach(L);
int chon, d = 0;
do {
cout<<"+-------------------------------+\n";
cout<<"+ (*_*) MENU (*_*) +\n";
cout<<"+-------------------------------+\n";
cout<<"+ 1. Them vao du lieu 1 tinh +\n";
cout<<"+ 2. Xuat du lieu ra +\n";
cout<<"+ 3. Sua thong tin 1 tinh +\n";
cout<<"+ 4. Xoa mot tinh (dang sua) +\n";
cout<<"+ 5. Tim mot tinh theo ten +\n";
cout<<"+-------------------------------+\n";
cout<<"+ 6. Tong dien tich cac tinh +\n";
cout<<"+ 7. Vi vi tri co S max +\n";
cout<<"+ 8. Tinh co nhiu dan nhat +\n";
cout<<"+ 9. Sap xep tang theo S +\n";
cout<<"+-------------------------------+\n";
cout<<"+ 0. Thoat khoi chuong trinh +\n";
cout<<"+-------------------------------+\n";
cin>>chon;
switch(chon)
{
case 1 : NhapThongTin(L);
break;
case 2 : XuatDuLieu(L);
break;
case 3 : SuaThongTin(L);
break;
case 4 : XoaTinh(L);
break;
case 5 : Tim1Tinh(L);
break;
case 6 : cout<<"Tong dien tich cac tinh: "<<TongDienTich(L)<<endl; getch();
break;
case 7 : cout<<"Vi tri tinh co dien tich lon nhat: "<<DiaChiSmax(L)<<endl; getch();
break;
case 8 : DanSoLonNhat(L);
break;
case 9 : SapXep(L);
break;
case 0 : d = 1;
}
} while (!d);
}
Hàm tìm bị lỗi rùi đang sửa hì hì, các bạn thử sửa giúp nha