Lỗi trong c++ - khó khăn khi đọc chuỗi

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

Lỗi ở trên đâu vậy bạn?

anh thử gỡ lỗi và xem con trỏ sp là biết ngay ạ

bạn này đăng quá nhiều câu hỏi nhưng hầu hết đều là những câu không đáng hỏi hoặc kiểu không có tìm hiểu hay suy nghĩ gì cả

5 Likes

Việc “debug code của bạn” là việc của bạn, không phải việc của mình.

https://daynhauhoc.com/guidelines

Các chủ đề có nội dung sau sẽ bị khóa khi được đăng lên DNH:

  • Chủ đề trùng lặp.
  • Chủ đề là nhờ trợ giúp bài tập về nhà, bài thảo luận, hoặc một nhiệm vụ mà người tạo chủ đề phải tự mình hoàn thành.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?