chức năng của việc khai báo kích thước trong bài về mảng 1 chiều

anh chị cho em hỏi Tại sao trong bài mảng một chiều này, khi khai báo biến hằng Size " define Size 100 " thì nó chạy đúng, còn khi bỏ nó đi thì chỉ có phần tìm vị trí lớn nhất nó lại bị sai ạ?

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

define Size 100
---------------

void Nhap(int a[10], int &n);
void Xuat(int a[10], int n);
int ViTriLonNhat(int a[10], int n);
void SapXep(int a[10], int n);

int main()
{
	int n;
	int a[10];
	
	cout << "Nhap mang:" << endl;
	Nhap(a, n);

	cout <<"Xuat"<< endl;
	Xuat(a, n);

	cout << " vi tri lon nhat: " << ViTriLonNhat(a,n)<< endl;
	
	cout << " mang duoc sap xep ";
	SapXep(a, n);
	cout << endl;

	Xuat(a, n);

	system("pause");

	return 0;
}

void Nhap(int a[10], int &n)
{
	
	cout << " nhap n: ";
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cout << "a [" << i << "] = ";
		cin>>a[i] ;
	}
}

void Xuat(int a[10], int n)
{
		
	for (int i = 0; i < n; i++)
	{
		cout << "a [" << i << "] = "<<a[i]<<endl;
		
	}
}

int ViTriLonNhat(int a[10], int n)
{
	int vt = 0;
	int lonnhat = a[vt];
	for (int i = 0; i <= n-1; i++)
	{
		if (a[i] > lonnhat)
			vt = i;
	}
	return vt;
}

void SapXep(int a[10] , int n)
{
	for (int i = 0; i <= n-2; i++)
	{
		for (int j = i+ 1; j <= n-1; j++)
		{
			if (a[i] > a[j])
			{
				int tem = a[i];
				a[i] = a[j];
				a[j] = tem;
			}
				
		}
	}
}

ở trên define mà nhìn xuống dưới thấy có chỗ nào dùng đến đâu. Nên bỏ nó đi sao lại lỗi được? @@

1 Like

:slight_smile: em cũng đang thắc mắc chỗ này…

Mà ý bạn là tìm vị trí lớn nhất, tức là tìm vị trí của phần tử lớn nhất trong mảng hay là tìm cái index lớn nhất ?? :slight_smile:

nhìn code này chắc là tìm vị trí của phần tử lớn nhất :joy: chỗ điều kiện nên cập nhật lại max

em tìm vị trí của mảng có giá trị lớn nhất a à. Sao người mới ko cho up ảnh lên thế anh @ltd ?

Cho e hỏi ké luôn ở đây tại sao trong c++ có khái niệm tham chiếu còn trong c thì ko ạ?

Cái khái niệm tham chiếu tức là dùng toán tử & thì nó chỉ xuất hiện trong C++ thôi ^^, còn trong C thì mình dùng con trỏ *.

Trong C++ có tham trị, tham chiếu, con trỏ, còn trong C chỉ có tham trị và con trỏ thì em biết rồi. Ý em hỏi là sao trong C++ dùng đến cái & kia trong khi cũng có cái * đấy thôi, mà bên C lại chỉ cần đến * không có &?


:slight_smile: mình tìm được trên Google, bạn đọc tham khảo nhé

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