30/09/2018, 18:19

Viết chương trình sử dụng con trỏ và cấp phát động cho mảng một chiều

a) Viết một đoạn chương trình nhập một mảng nguyên có n phần tử, n nhập từ bàn phím.
b) Viết một hàm trả về giá trị lớn nhất trong một mảng số nguyên n phần tử.
c) Gọi hàm vừa viết trong hàm main() với đối số là mảng ở câu (a) và đưa kết quả ra màn hình
Yêu cầu: sử dụng con trỏ nguyên và cấp phát động cho mảng một chiều (chú ý thu hồi bộ nhớ) *

em bị mắc chỗ dùng hàm với mảng ạ! e cảm ơn!

Nguyễn Hồng Sơn viết 20:27 ngày 30/09/2018

Ở dạy nhau học ko giúp bạn làm bài tập thì phải. Chỉ giúp sửa lỗi thôi

Giang Phạm viết 20:25 ngày 30/09/2018

bạn ném code của bạn làm lên đi được bao nhiêu sửa bấy nhiêu

viết 20:22 ngày 30/09/2018

Bạn phải đem code mình đã viết ra đây, mọi người sửa cho chứ k ai code hết cho bạn được đâu.
Ví dụ hàm nhập:

void nhapMang(int a[], int n) {
	for (int i = 0; i < n; i++) {
		cout << "Nhap vao a[" << i << "] = ";
		cin >> a[i];
	}
}
Cường viết 20:32 ngày 30/09/2018

Đây ạ e chạy nó toàn báo lỗi @@

#include<iostream>
using namespace std;
int max(int*B,int j);
int main()
{
	int i,n;
	int *A= new int[n];
	cout <<"nhap so phan tu cua mang:";
	cin >>n;
	for (i=0;i<n;i++)
{
    cout <<"A["<<i<<"]= ";
	cin>> A[i];
}
int k;
k=max(A,n);
cout<<"max="<<k<<endl;
return 0;
}
int max(int *B,int j)
{
	int i,max1=B[0];
	for (i=0;i<j;i++)
	if (B[i]>max1)
	max1=B[i];
	return max1;
}
Giang Phạm viết 20:30 ngày 30/09/2018

using namespace std;int max(int*B,int j);int main(){ int i,n; int *A= new int[n]; cout <<“nhap so phan tu cua mang:”; cin >>n; for (i=0;i{ cout <<“A[”< cin>> A[i];}int k;k=max(A,n);cout<<“max=”<return 0;}int max(int *B,int j){ int i,max1=B[0]; for (i=0;i if (B[i]>max1) max1=B[i]; return max1;}

bài của bạn có khai báo thư viện <iostream> chưa vậy

Cường viết 20:21 ngày 30/09/2018

anh chị đợi e 1 lát. e copy code bị lỗi

viết 20:34 ngày 30/09/2018

bài của bạn có khai báo thư viện <iostream> chưa vậy

Bạn ấy khai báo rồi.

for (i=0;i{ cout <<“A[”< cin>> A[i];}

Sai ở vòng for, code này của bạn thực sự rất tối nghĩa.

Giang Phạm viết 20:28 ngày 30/09/2018

iostream

chắc do copy code bị lỗi í

Cường viết 20:33 ngày 30/09/2018

không phải ạ. tại lỗi copy. e có khai báo đầy đủ và vòng lặp for rõ ràng ạ. để e lấy code lại

Cường viết 20:24 ngày 30/09/2018

E copy code tại dev C++ mà toàn bị lỗi chữ thôi ạ

viết 20:21 ngày 30/09/2018

Bạn chụp ảnh post lên đây cũng được mà.

Cường viết 20:23 ngày 30/09/2018

đây ạ anh chị giúp e với

viết 20:26 ngày 30/09/2018

Bạn thử đảo vị trí cho hàm int max(int *B, int j) lên trên hàm int main() xem thử có sai không.

Cường viết 20:19 ngày 30/09/2018

mình thay như bạn bảo nhưng khi kiểm tra lỗi ko báo lỗi. khi chạy thử thì bị ntn

viết 20:35 ngày 30/09/2018

Cái cmd che hết code r, hay bạn copy paste bị nhầm đâu đó ?
Code mình đảo 2 hàm của bạn đây, bạn xem có gì khác nhau không nhé :

#include <iostream>
using namespace std;

int max(int *B, int j) {
	int i, max1 = B[0];
	for (i = 0; i < j; i++)
		if (B[i] > max1)
			max1 = B[i];
	return max1;
		
}

int main() {
	int i, n;
	int *A = new int[n];
	cout << "Nhap so phan tu cua mang : ";
	cin >> n;
	for (int i = 0; i < n; i++) {
		cout << "A[" << i << "] = ";
		cin >> A[i];
	}
	int lonnhat;
	lonnhat = max(A, n);
	cout << "max = " << lonnhat << endl;
	return 0;
}
Cường viết 20:34 ngày 30/09/2018

vẫn thông báo y hệt ạ bạn xem dùm mình phần khai báo và sử dụng hàm *int max(int B, int j) cho mảng có đúng không ạ! mình bị lơ mơ chỗ này

viết 20:28 ngày 30/09/2018

Thế lạ nhỉ, mình cũng dùng Dev C đây mà thấy có lỗi gì đâu, hàm tính max dùng con trỏ đúng rồi, hay do của bạn có vấn đề.

Còn lỗi ban đầu là vì cái Dev C này khá là củ chuối, nó chỉ chạy tới hết hàm main() là dừng, bất kể sau nó còn bao nhiêu hàm đi chăng nữa. nên phải cho các hàm con lên trên main().

Cường viết 20:33 ngày 30/09/2018

vậy chắc do máy mình có vấn đề rồi, để mình xem lại cám ơn bạn và mọi người nhiều nha

Dương Nylghara viết 20:31 ngày 30/09/2018
#include <iostream>
using namespace std;

int max(int *B, int j) {
	int i, max1 = B[0];
	for (i = 0; i < j; i++)
		if (B[i] > max1)
			max1 = B[i];
	return max1;
		
}

int main() {
	int i, n;
	
	cout << "Nhap so phan tu cua mang : ";
	cin >> n;
        int *A = new int[n];
	for (int i = 0; i < n; i++) {
		cout << "A[" << i << "] = ";
		cin >> A[i];
	}

	int lonnhat;
	lonnhat = max(A, n);
	cout << "max = " << lonnhat << endl;
        delete A;
	return 0;
}

Khi ta khai báo một con trỏ có n phân tử thì ta nên khai báo như này…!! ( Cấp phát sau khi nhập n )

Bài liên quan
0