Thắc mắc tại sao chương trình không hiểu n là gì

// mang 1 chieu.cpp : Defines the entry point for the console application.
//nhap vap mang so nguyen xuat mang vua nhap tinh tong cac phan tu trong mang


#include "stdafx.h"
#include <iostream>
using namespace std;

//nhap mang 
void nhapmang(int *a, int n);
//in mang
void inmang(int *a, int n);
// tinh tong
int tongpt(int *a, int n);




int _tmain(int argc, _TCHAR* argv[])
{
	int  n;

	int *a = new int[n];// dung phat dong 

	cout << "nhap phan tu n=";
	cin >> n;

	nhapmang(a, n);
	inmang(a, n);

	cout << "tong=" << tongpt(a, n) << endl;

	// giai phong 
	delete[] a;

	return 0;
}


//nhap mang
void nhapmang(int *a, int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << "phan tu thu " << i << ":";
		cin >> a[i];
	}
}

// in mang
void inmang(int *a, int n)
{
	cout << "mang sau khi nhap:" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
	cout << endl;
}
// tinh tong cac phan tu
int tongpt(int *a, int n)
{
	int tong = 0;
	for (int i = 0; i < n; i++)
	{
		tong += a[i];
	}
	return tong;
}

Hàm main của bạn đâu?

1 Like

hi. gio ms de ý để đăng lại

ms biết trag này nên cug ko rành lắm.

  1. Bạn chưa cho máy tính biết n của bạn có giá trị bao nhiêu, mà bạn cấp phát động n phần tử, máy tính có hiểu được bạn muốn cấp phát bao nhiêu không?

  2. Coi lại bài truyền tham chiếu vào hàm của anh @ltd để sửa lại hàm nhập mảng.

1 Like

rõ hơn đi ms học con trỏ nên hơi ngơ ngơ

ak minh hieu roi cam on ban

theo kinh nghiệm của mình thì int *a = new int[n] lúc này n đang làm 1 biến rác. Vậy nên nhập n trước rồi hãy khai báo biến mảng.

nhìn sơ lược qua thế thôi :smile: lười mở ide lên test

2 Likes
  • Bạn dời cái dòng cấp phát động xuống dưới dong cin>>n;

mih quất lun do while rồi cho cin n nằm trog lun rồi hehe

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