Cau1

 avatar
TalonEzio
c_cpp
2 years ago
3.3 kB
43
Indexable
#include <iostream>
#include <string>
using namespace std;
struct KhachHang
{
    int MaKhachHang;
    string TenKhachHang;
    string DiaChi;
    string SoDienThoai;
    int TongTienThanhToan;
};
struct Node
{
    KhachHang* data;
    Node* pNext;
    Node* pPrev;
};
struct DoubleList
{
    Node* pHead;
    Node* pTail;
};
void init(DoubleList*& List)
{
    List = new DoubleList();
    List->pHead = List->pTail = NULL;
}
void CreateKhachHang(KhachHang*& KhachHang)
{
    cout << "Ma khach hang: ";
    cin >> KhachHang->MaKhachHang;
    cin.ignore();
    cout << "Ten khach hang: ";
    getline(cin, KhachHang->TenKhachHang);
    cout << "Dia chi: ";
    getline(cin,KhachHang->DiaChi);
    cout << "So dien thoai: ";
    getline(cin, KhachHang->SoDienThoai);
    cout<<"Tong tien thanh toan : ";
    cin>>KhachHang->TongTienThanhToan;
}
Node* CreateNode()
{
    Node* pNode = new Node();
    if (pNode == NULL) return NULL;
    pNode->data = new KhachHang;
    CreateKhachHang(pNode->data);
    pNode->pNext = pNode->pPrev = NULL;
    return pNode;
}

void InsertLast(DoubleList*& List)
{
    Node* pNode = CreateNode();
    if (List->pHead == NULL)
    {
        List->pHead = List->pTail = pNode;
    }
    else
    {
        List->pTail->pNext = pNode;
        pNode->pPrev = List->pTail;
        List->pTail = pNode;
    }
}
void PrintKhachHang(KhachHang* KhachHang)
{
    cout << "Ma khach hang : " << KhachHang->MaKhachHang << endl;
    cout << "Ten khach hang : " << KhachHang->TenKhachHang << endl;
    cout << "Dia chi : " << KhachHang->DiaChi << endl;
    cout << "So dien thoai :" << KhachHang->SoDienThoai << endl;
    cout << "Tong tien thanh toan :" << KhachHang->TongTienThanhToan << endl;
}
void PrintList(DoubleList* List)
{
    if (List->pHead == NULL)return;
    Node* pNode = List->pHead;
    cout << "Danh sach khach hang:\n";
    while (pNode)
    {
        PrintKhachHang(pNode->data);
        pNode = pNode->pNext;
    }
}
void Cau3(DoubleList* List)
{
    if (List->pHead == NULL)return;
    Node* pNode = List->pHead;
    while (pNode)
    {
        if(pNode->data->DiaChi == "Ha Noi")
        {
            PrintKhachHang(pNode->data);
        }
        pNode = pNode->pNext;
    }
}
void Cau4(DoubleList* List)
{
    if (List->pHead == NULL)return;
    for(Node* pTemp1 = List->pHead;pTemp1->pNext;pTemp1 = pTemp1->pNext)
    {
        for(Node* pTemp2= pTemp1->pNext;pTemp2;pTemp2 = pTemp2->pNext)
        {
            if(pTemp1->data->TongTienThanhToan < pTemp2->data->TongTienThanhToan)
            {
                KhachHang *Temp = pTemp1->data;
                pTemp1->data = pTemp2->data;
                pTemp2->data = Temp;
            }
        }
    }
    cout<<"Danh sach sau khi sap xep tong tien thanh toan giam dan:\n";
    PrintList(List);
}
int main()
{
    DoubleList* List;
    init(List);
    int n;
    cout << "So luong khach hang : "; cin >> n;
    for (int i = 1; i <= n; ++i)
    {
        cout << "khach hang thu " << i <<":" << endl;
        InsertLast(List);
    }
    //cau 2
    PrintList(List);
    //cau 3
    Cau3(List);
    //Cau 4
    Cau4(List);
    return 0;
}
Editor is loading...