Kteam Q&A Community

Cộng đồng hỏi đáp về các vấn đề trong lập trình, công nghệ thông tin.

2

Sao chép dữ liệu giữa 2 mảng trong C++

Dùng hàm sao chép như thế nào để sao chép dữ liệu hết từ A[200] sang B ạ.

Chạy thì case 1 nó sẽ hiễn thị chuổi còn case 2, 3 dùg mảng sao chép B C thì k hiển thị, làm s để sao khi sắp xếp thì hiển thị lun cả chuỗi giống như mình chạy case 1.

#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<time.h>
using namespace std;
typedef struct SINHVIEN
{
    char mssv[11];
    char HoTen[35];
    int Diem;
};
void NhapMang(SINHVIEN x[], int n)
{
    srand(time(0));
    for(int i=0; i<n; i++)
    {
        cout<<"\tNhap sinh vien thu: "<<i+1;
        cout<<"\nNhap ma so SV: ";
        fflush(stdin);
        gets(x[i].mssv);
        fflush(stdin);
        cout<<"\Nhap ho ten SV: ";
        gets(x[i].HoTen);
        x[i].Diem=rand()%11;
        cout<<"Diem SV la: "<<x[i].Diem<<"\n";
    }
}
void XuatMang(SINHVIEN x[], int n)
{
    
    for(int i=0; i<n; i++)
        cout<<"\nMa so sinh vien: "<<x[i].mssv<<"\tHo ten sinh vien: "<<x[i].HoTen<<"\tDiem sinh vien: "<<x[i].Diem <<"\n";
}
void HoanVi(int &a, int &b)
{
    float c=a;
    a=b;
    b=c;
}
void InterChangeSort(SINHVIEN x[], int n)
{
    int sosanh=0, hoanvi=0;
    for(int i=0; i<n-1; i++)
        for(int j=i+1; j<n; j++)
        {
            if(x[i].Diem<x[j].Diem)
            {
                HoanVi(x[i].Diem,x[j].Diem);
                sosanh++;
                hoanvi++;
            }
        }
    cout<<"\nDANH SACH SINH VIEN DUOC SAP XEP : ";
    XuatMang(x,n);
    cout<<"\nSo lan so sanh: "<<sosanh;
    cout<<"\nSo lan hoan vi: "<<hoanvi;
}
void SelectionSort(SINHVIEN x[], int n)
{
    int sosanh=0, hoanvi=0;
    for(int i=0; i<n-1; i++)
    {
        int min=i;
        for(int j=i+1; j<n; j++)
        {
            sosanh+1;
            if(x[j].Diem > x[min].Diem)
            {
                min=j;
            };
            HoanVi(x[min].Diem,x[i].Diem);
            hoanvi++;            
        }
    }
    cout<<"\nDANH SACH SINH VIEN DUOC SAP XEP : ";
    XuatMang(x,n);
    cout<<"\nSo lan so sanh: "<<sosanh;
    cout<<"\nSo lan hoan vi: "<<hoanvi;
}
void BubbleSort(SINHVIEN x[], int n)
{
    int sosanh=0, hoanvi=0;
    for(int i=0; i<n-1; i++)
        for(int j=n-1; j>i; j--)
        {
            sosanh++;
            if(x[j].Diem > x[j-1].Diem)
            {
                HoanVi(x[j].Diem, x[j-1].Diem);
                hoanvi++;
            }
        }
    cout<<"\nDANH SACH SINH VIEN DUOC SAP XEP : ";
    XuatMang(x,n);
    cout<<"\nSo lan so sanh: "<<sosanh;
    cout<<"\nSo lan hoan vi: "<<hoanvi;
}
void SaoChep(SINHVIEN a[], SINHVIEN b[], int n)
{
    for(int i=0; i<n; i++)
        b[i].Diem = a[i].Diem;
}
void main()
{
    SINHVIEN A[200], B[200], C[200];
    int chon,n;
    cout<<"\nNhap si so lop: ";
    cin>>n;
    NhapMang(A,n);
    SaoChep(A,B,n);
    SaoChep(A,C,n);
    cout<<"\t\t\tXUAT DANH SACH SINH VIEN ";
    XuatMang(A,n);
    do
    {
    cout<<"\n1.Sap xep diem so theo InterChangeSort:";
    cout<<"\n2.Sap xep diem so theo SelectionSort:";
    cout<<"\n3.Sap xep diem so theo BubbleSort:";
    cout<<"\nChon 1 trong cac chuc nang tren :";
    cin>>chon;
    switch(chon)
    {
    case 1 :
        {    
            cout<<"\t\t\tInterChangeSort";
            InterChangeSort(A,n);
            cout<<"\nNhan Esc de End,nhan phim bat ki de tiep tuc nhe!!!!";
        }
        break;
    case 2 :
        {
            cout<<"\t\t\tSelectionSort";
            SelectionSort(B,n);
            cout<<"\nNhan Esc de End,nhan phim bat ki de tiep tuc nhe!!!!";
        }
        break;
    case 3 :
        {
            cout<<"\t\t\tBubbleSort";
            BubbleSort(C,n);
            cout<<"\nNhan Esc de End,nhan phim bat ki de tiep tuc nhe!!!!";
        }
        break;
    default: cout<<"Chon 1, 2 hoac 3 nhe!";
    }
    }while(getch()!=27);
}

2 câu trả lời Thêm câu trả lời

2
Trần Thành Vi Thanh đã trả lời 2017-04-09 00:11:53

struct của bạn có 3 trường thông tin: mssv, hoten, diem mà khi sao chép bạn chỉ sao chép mỗi diem thì làm sao nó đúng được.

1
K9 đã trả lời 2017-04-04 21:00:00

Thật sự nhìn code phê quá. bạn đưa ra trường hợp cụ thể luôn được không nhỉ

Câu trả lời của bạn

Bạn có thể trả lời câu hỏi này? Hãy chia sẻ nó cho mọi người.

Hủy bỏ hoặc

Chiến dịch

Kteam - Howkteam Free Education