Mọi người cho mình hỏi mình sau khi nhập xong giá tìm thì bị đứng máy nó báo lỗi như trên,không biết phải sửa thế nào
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<stdio.h>
#include<conio.h>
#include<string>
#include<math.h>
#include<iomanip>
using namespace std;
struct San_Pham
{
char ma[50];
char ten[150];
float gia;
};
void Nhap_Danh_Sach(San_Pham danh_sach_san_pham[],int n)
{
for(int i=0;i<n;i++)
{
cout<<"nhap san pham thu ["<<i<<"] : \n";
cout<<"nhap ma san pham : ";
//cin.ignore();
cin.getline(danh_sach_san_pham[i].ma,50);
cout<<"nhap ten san pham : ";
// cin.ignore();
cin.getline(danh_sach_san_pham[i].ten,150);
cout<<"nhap gia san pham : ";
//cin.ignore();
cin>>danh_sach_san_pham[i].gia;
cin.ignore();
}
}
void Xuat_Danh_Sach(San_Pham danh_sach_san_pham[],int n)
{
for(int i=0;i<n;i++)
{
San_Pham sp=danh_sach_san_pham[i];
cout<<sp.ma<<setw(15)<<sp.ten<<setw(10)<<sp.gia<<"\n";
}
}
San_Pham *Tim_San_Pham(San_Pham danh_sach_san_pham[],int n,float gia_tim)
{
int left=0;
int right=n-1;
int mid=(left+right)/2;
do
{
San_Pham sp=danh_sach_san_pham[mid];
if(sp.gia==gia_tim)
{
return &sp;
}
else if(sp.gia>gia_tim)
{
right=mid - 1;
}
else
{
left=mid + 1;
}
}while (left<=right);
return NULL;
}
int main()
{
//cout<<"Hello World";
int const n=2;
//cout<<"nhap so san pham : ";
//cin>>n;
San_Pham danh_sach_san_pham[n];//khai báo 1 mảng danh sách sản phẩm có n phần tử và có kiểu là sản phẩm
Nhap_Danh_Sach(danh_sach_san_pham,n);
//cout<<"\n";
cout<<"san pham sau khi nhap : \n";
Xuat_Danh_Sach(danh_sach_san_pham,n);
float gia_tim;
cout<<"Nhap gia muon tim : ";
cin>>gia_tim;
San_Pham *sp=Tim_San_Pham(danh_sach_san_pham,n,gia_tim);
if(sp == NULL)
{
cout<<"khong tim thay san pham co gia : "<<gia_tim;
}
else
{
//cout<<"tim thay san pham ";
cout<<sp -> ma<<setw(15)<<sp -> ten<<setw(10)<<sp -> gia;
}
system("pause");
return 0;
}