In ra mã sản phẩm bị thiếu kí tự đầu

Mọi người ơi cho em hỏi sao khi xuất ra em lại bị thiếu mất mấy chữ cái đầu thế ạ

#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 : ";
        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;
        
    }
}

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=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);
	system("pause");

    return 0;
}

1 Like

Bạn ơi, hình như bạn tìm được cách giải quyết rồi phải không ?
Nếu bạn giải quyết được vấn đề của bạn rồi thì hãy để lại cách làm cho những người vô sau biết sửa.

2 Likes

mọi người mình thiếu cin.ignore ở sau cin . nếu các bạn dùng chung cin với cin.getline thì các bạn phải xóa bộ nhớ đệm sau cin đi thì nó mới không bị các lỗi như mất kí tự đầu nha

mình để lại cách làm rồi nha

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