01/10/2018, 16:18

Kết hợp 2 mảng c++

Nhập 2 mảng (a, N) và (b, M) và số nguyên p (0≤p<N). Hãy chèn mảng b vào vị trí p của a. Ví dụ: (a, 4): 5 3 6 7; (b, 3): 2 9 11; p:1  a, 7: 5 2 9 11 3 6 7
** e làm thế này:

#include <iostream>
using namespace std;
void nhap(int *a,int &N,int *b,int &M)
{
	for(int i=0;i<N;i++)
	{
		cout << "a[" << i << "] = ";cin >> *(a+i);
	}
	for(int i=0;i<M;i++)
	{
		cout << "b[" << i << "] = ";cin >> *(b+i);
	}
}
int kethop(int *a,int &N,int *b,int &M,int p)
{
	int c[N+M];
	for (int i=0;i<p;i++)
	{
		c[i]=a[i];
	}
	for (int i=p;i<N+p;i++)
	{
		c[i]=b[i-p];
	}
	for (int i=p+N;i<N+M;i++)
	{
		c[i]=a[i-N];
	}
	for (int i=0;i<N+M;i++)
	{
		cout << "c[" << i << "] = " << c[i] << endl;
	}
}
int main()
{
	int N,M,p;
	cout << "N = ";cin >> N;
	cout << "M = ";cin >> M;
	cout << "p = ";cin >> p;
	int a[N];
	int b[M];
	nhap(a,N,b,M);
	cout << "Mang b vao vi tri p trong mang a cho ra mang c nhu sau: " << endl;
	kethop(a,N,b,M,p);
	return 0;
}

nhưng không hiểu sao kết quả chạy sai, mn giúp e chỉ ra lỗi vs, e cảm ơn!

Nguyen Kien viết 18:26 ngày 01/10/2018

Bạn đã debug chương trình trước khi hỏi chưa ???

minh viết 18:25 ngày 01/10/2018

mình chạy nhưng kết quả hiện ra sai!

NBQ viết 18:26 ngày 01/10/2018

Lỗi nằm ở chỗ đoạn code trong hàm kethop bạn nhầm N với M:

Code của bạn có thể sửa lại như thế này:

#include <iostream>
using namespace std;
void nhap(int *a, int &N, int *b, int &M)
{
	for(int i=0;i<N;i++)
	{
		cout << "a[" << i << "] = ";cin >> *(a+i);
	}
	for(int i=0;i<M;i++)
	{
		cout << "b[" << i << "] = ";cin >> *(b+i);
	}
}
int kethop(int *a, int &N, int *b, int &M, int p)
{
	int c[N+M];
	for (int i = 0; i<p; i++)
	{
		c[i] = a[i];
	}
	for (int i = p; i < M + p; i++)
	{
		c[i] = b[i-p];
	}
	for (int i = p + M; i < N + M; i++)
	{
		c[i] = a[i-M];
	}
	for (int i = 0; i < N + M; i++)
	{
		cout << "c[" << i << "] = " << c[i] << endl;
	}
}
int main()
{
	int N, M, p;
	cout << "N = ";
	cin >> N;
	cout << "M = ";
	cin >> M;
	cout << "p = ";
	cin >> p;
	int a[N];
	int b[M];

	nhap(a, N, b, M);
	cout << "Mang b vao vi tri " << "a[" << p << "] trong mang a cho ra mang c nhu sau: " << endl;
	kethop(a, N, b, M, p);
	return 0;
}
minh viết 18:28 ngày 01/10/2018

cảm ơn b nhiều, nhiều chữ quá mình nhìn hoa mắt,


Bài liên quan
0