Code chạy vẫn ra đúng nhưng hiện lỗi "has stopped working"

#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;
void nhap_Day(int *p,int n)
{
	int i;
	cout<<"nhap vao day d: "<<endl;
	for(i=0;i<n;i++)
		{
			cout<<"phan tu "<<i<<" = ";
			cin>>*(p+i);
		}
}
void hien_Day(int *p,int n)
{
	int i;
	cout<<"day vua nhap la: "<<endl;
	for(i=0;i<n;i++)
	cout<<*(p+i)<<" ";
}
void chen_Kitu(int *p,int n)
{
	int x,k,i;
	bool stop;
	cout<<endl<<"nhap vao x va k: ";
	cin>>x>>k;
	if(k>=1&&k<=n)	stop=true;
	else 			stop=false;
	if(stop==true)
		{
			++n;					//tang phan them phan tu cua day len 1
			for(i=n+1;i>=k;i--)
				{
					*(p+i)=*(p+i-1);
				}
			*(p+k)=x;
		hien_Day(p, n);	
		}
	else cout<<"khong hop le. ";
}
main()
{
	int *p,n;
	p=new int[n];
	do{
		cout<<"nhap vao 5<=n<=30: ";
		cin>>n;
	}while(n<5||n>30);
	nhap_Day(p,n);
	hien_Day(p, n);
	chen_Kitu(p,n);
}
1 Like

n chưa được nhập gíá trị.

1 Like

ơ a,cấp phát động được khai thế này mà

Thế thì mình hỏi bạn là bạn đang muốn cấp phát cho p bao nhiêu phần tử?
Bạn cấp phát xong rồi bạn mới nhập n thì máy làm sao nó biết?

1 Like

bạn chạy thử đi,đến lúc chạy CT mình có nhập n mà.

nó nhận n này này,

Bạn phải nhập giá trị cho biến n trước câu lệnh này
p=new int[n];
chứ không phải cấp phát động rồi mới nhập n

2 Likes

mình sửa rồi nhưng nó vẫn báo lỗi đấy

main()
{
	int *p,n;
	do{
		cout<<"nhap vao 5<=n<=30: ";
		cin>>n;
	}while(n<5||n>30);
	p=new int[n];
	nhap_Day(p,n);
	hien_Day(p, n);
	chen_Kitu(p,n);
}

bạn chạy có lỗi không,mình vẫn ra kết quả đúng nhưng xong lại thông báo "…has stopped working :sweat_smile:

chương trình chạy bình thường, không lỗi gì cả:

ps: trình biên dịch g++ (gcc compiler)

2 Likes
#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;
void nhap_Day(int *p,int n)
{
	int i;
	do{
		cout<<"nhap vao 1<=n<=20: ";
		cin>>n;
	}while(n<1||n>20);
	for(i=0;i<n;i++)
		{
			cout<<"*(p+"<<i<<")= ";
			cin>>*(p+i);
		}
}
void hien_Day(int *p,int n)
{
	int i;
	for(i=0;i<n;i++)
		{
			cout<<*(p+i)<<" ";
		}
}
main()
{
	int n,*p;
	p=new int[n];
	nhap_Day(p,n);
	hien_Day(p,n);
}

bài này là mình truyền tham chiếu cho n nên hàm hien_Day nó không in ra ,bạn chỉ mình cách truyền tham trị được không

Bạn bôi đen code rồi ấn Ctrl + K để format code nhá :smile:

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