-
13-03-2016, 05:22 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mọi Người Giúp Em Với: Không Thể Tìm Kiếm Tuyến Tính đối với struct, Tìm Kiếm Nhị Phân Thì Xuất Kết Quả Lỗi
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef struct STUDENT
{
char name[50];
int StudentID;
float GPA;
}Student;
void Nhap(Student dssv[], int i)
{
fflush(stdin);
cout << "Nhap ten sinh vien: ";
gets_s(dssv[i].name);
fflush(stdin);
cout << "Ma so sinh vien: ";
cin >>dssv[i].StudentID;
fflush(stdin);
cout << "Diem trung binh: ";
cin >> dssv[i].GPA;
}
void Xuat(Student dssv[], int i)
{
cout << "Ten Sinh Vien:";
puts(dssv[i].name);
cout << "Ma so sinh vien:" << dssv[i].StudentID << endl;
cout << "Diem trung binh: " << dssv[i].GPA << endl;
}
int Linearsearch(Student dssv[], int n, char *x)
{
int i = 0;
while ((i < n) && (dssv[i].name != x))
i++;
if (i == n)
return 0;
else
return 1;
}
int Binarysearch(Student dssv[], int n, int m)
{
int left,right, mid;
left = 0;
right = n - 1;
do
{
mid = (left + right) / 2;
if (dssv[mid].StudentID == m)
return 1;
else
if (dssv[mid].StudentID < m)
left = mid + 1;
else
right = mid - 1;
} while (left <= right);
return 0;
}
void hoanvi(Student &a, Student &b)
{
Student temp = a;
a = b;
b = temp;
}
void ShakeSort(Student dssv[], int n)
{
int j;
int left=0, right=n-1, k=0;
while (left < right)
{
for (j = right; j > left ; j--)
{
if (dssv[j].GPA > dssv[j - 1].GPA)
{
hoanvi(dssv[j], dssv[j - 1]);
k = j;
}
}
left = k;
for (j = left; j < right; j++)
{
if (dssv[j].GPA < dssv[j + 1].GPA)
{
hoanvi(dssv[j], dssv[j + 1]);
k = j;
}
}
right = k;
}
}
int main()
{
Student dssv[100];
int n,i,m;
char x[50];
cout << " So sinh vien can nhap vao:";
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Sinh vien thu " << i+1 << endl;
Nhap(dssv, i);
cout << endl;
}
fflush(stdin);
cout << "Ten sinh vien can tim: ";
gets_s(x);
if (Linearsearch(dssv, n, x) == 0)
cout << "Khong Tim Thay" << endl;
else
Xuat(dssv, i);
fflush(stdin);
cout << "Nhap MSSV can tim:";
cin >> m;
if (Binarysearch(dssv, n, m) == 1)
Xuat(dssv, i);
else
cout << "Khong Tim Thay" << endl;
ShakeSort(dssv, n);
for (i = 0; i < n; i++)
{
Xuat(dssv, i);
cout << endl;
}
system("pause");
return 0;
}View more random threads:
- Xử lý MessageBox trong VC++ như thế nào?
- Cách khai báo 1 vùng nhớ dữ liệu lên tới 6MBytes
- Cho hỏi về Lỗi khi biên dịch chương trình sử dụng MFC
- Lỗi tiếng việt khi insert từ MFC vào sql server?
- Chương trình đổi ngày sinh từ dương lịch sang âm lịch và ngược lại
- Hỏi về ZwSystemDebugControl
- Lỗi kí tự đặc biệt thành ô vuông khi sử dụng ExtTextOutW
- Định nghĩa đầy đủ về GDI - Graphics Device Interface
- [ Solved ]Constructor và toán tử gán bằng
- Làm thế nào để xuống dòng khi đọc file Txt?
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...