Mình có một đoạn code như dưới đây để test phần nhập dữ liệu vào của chương trình mình đang làm. Không hiểu tại sao dữ liệu nhập vào khi hiển thị ra không như dòng mình đã nhập vào. Mọi người có thể giúp được mình không? Nếu được xin chân thành cảm ơn mọi người !
CODE:
Code:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include<String.h>
#include<stdio.h>
struct info{
char id[8];
char name[30];
char birthday[20];
float m;
float p;
float c;
};
void nhap(info inf)
{
cout<<"Nhap thong tin cho HS : \n";
cout<<"Nhap ID: ";
cin.getline(inf.id,8);
cout<<"Nhap ho va ten: ";
cin.getline(inf.name,30);
cout<<"Nhap ngay sinh: ";
cin.getline(inf.birthday,20);
cout<<"Nhap diem toan :";
cin>>inf.m;
cout<<"Nhap diem Ly: ";
cin>>inf.p;
cout<<"Nhap diem Hoa: ";
cin>>inf.c;
}
void xuat(info inf)
{
cout<<"HS thu \n";
cout<<inf.id<<"\n";
cout<<inf.name<<"\n";
cout<<inf.birthday<<"\n";
cout<<inf.m<<"\n";
cout<<inf.p<<"\n";
cout<<inf.c<<"\n";
}
void main()
{
info inf;
nhap(inf);
xuat(inf);
}
Còn khi viết như thế này ( nhập xuất bình thường ) :
Code:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include<String.h>
#include<stdio.h>
struct info{
char id[8];
char name[30];
char birthday[20];
float m;
float p;
float c;
};
void nhap(info inf[],int n)
{
for(int i=0;i<n;i++)
{
cout<<"Nhap thong tin cho HS thu "<<i+1<<" : \n";
cin.ignore();
cout<<"Nhap ID: ";
cin.getline(inf[i].id,8);
cout<<"Nhap ho va ten: ";
cin.getline(inf[i].name,30);
cout<<"Nhap ngay sinh: ";
cin.getline(inf[i].birthday,20);
cout<<"Nhap diem toan :";
cin>>inf[i].m;
cout<<"Nhap diem Ly: ";
cin>>inf[i].p;
cout<<"Nhap diem Hoa: ";
cin>>inf[i].c;
}
}
void xuat(info inf[],int n)
{
for(int i=0;i<n;i++)
{
cout<<"HS thu "<<i+1<<"\n";
cout<<inf[i].id<<"\n";
cout<<inf[i].name<<"\n";
cout<<inf[i].birthday<<"\n";
cout<<inf[i].m<<"\n";
cout<<inf[i].p<<"\n";
cout<<inf[i].c<<"\n";
}
}
void main()
{
info inf[100];
int n;
cout<<"Nhap so luong HS: ";
cin>>n;
nhap(inf,n);
xuat(inf,n);
}