Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

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

17:24 05-04-2017 3.246 lượt xem 2 bình luận

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

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Trần Thành Vi Thanh Member đã bình luận 00:11 09-04-2017

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.

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 21:00 04-04-2017

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 hỏi mới nhất