Chương trình in ra tên bị lỗi

đề yêu cầu nhập họ tên n người và in ra tên của từng người

#include <iostream>
using namespace std;
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
char *ten(char *goc)
{
	char *ten=new char[10];
	for(int i=strlen(goc)-1;i>=0;i++)
	{
		if(goc[i]==' ')
		 ten=(goc+i+1);
	}
	return ten;
}
int main(int argc, char** argv) {
	int n;
	cout<<"MOi NHAP n: "; cin>>n;
	char **hovaten=new char*[n];
	for(int u=0;u<n;u++)
	  hovaten[u]=new char[30];
	int k=0;
	while(k<n)
	{
		cout<<"Moi nhap ten nguoi thu "<<k+1<<" : ";
                cin.ignore();
		cin.getline(hovaten[k],30);
		k++;
	}
	char **lten=new char*[n];
	for(int j=0;j<n;j++)
	{ 
		lten[j]=ten(hovaten[j]);
		cout<<"Ten nguoi thu nhat la: "<<lten[j]<<endl;
	}
	return 0;
}

Lỗi ra sao vậy bạn?

Thế bạn có thắc mắc vì sao nó không cho nhập người thứ 1 mà hiện nhập người thứ 2 luôn không?
Bạn giải quyết vấn đề nhập trước đã, dữ liệu nhận được chưa đúng.
Để cin.ignore() sau lệnh nhập số xem sao.

2 Likes

Capture

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