Code bị trôi lệnh c++

Mọi người ơi cho em hỏi cứ nhập đến sản phẩm thứ 2 thì bị trôi lệnh mà dùng cin.ignore thì lại bị xóa phần dưới có ai chỉ giúp mình với

#include <iostream>
#include<cstdlib>
#include<ctime>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>

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 : ";
      gets(danh_sach_san_pham[i].ma);
  	//cin.ignore();
      cout<<"nhap ten san pham : ";
      gets(danh_sach_san_pham[i].ten);
  	//cin.ignore();
      cout<<"nhap gia san pham : ";
      cin>>danh_sach_san_pham[i].gia;
  }
}

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<<"ma san pham : "<<sp.ma<<"\n";
      cout<<"ten san pham : "<<sp.ten<<"\n";
      cout<<"gia san pham : "<<sp.gia<<"\n";
  }
}

int main()
{
  //cout<<"Hello World";
  
  int const n=3;
  //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\n";
  Xuat_Danh_Sach(danh_sach_san_pham,n);

  system("pause");

  return 0;
}

Trước khi nhập chuỗi thì nhớ xóa bộ đệm.
Kết quả:


Chi tiết tìm hiểu tại đây.

1 Like

cảm ơn bạn nhiều nhiều nhiều…

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?