Tìm số lớn nhất trong mảng C/C++

0
26142
tim so lon nhat trong mang

Bài toán tìm số lớn nhất, nhỏ nhất trong mảng C/C++ là bài toán thường gặp. Đây là bài toán giúp bạn luyện tập rất tốt ngôn ngữ lập trình C/C++.

Bài viết chữa bài tập số 9 trong chuỗi bài tập làm chủ ngôn ngữ C/C++ .

1. Giới thiệu bài toán

Bài toán tìm số lớn nhất, luôn là bài toán hay cho các bạn mới học lập trình.

Đề bài:

Viết hàm trả về giá trị và chỉ số của phần tử lớn nhất trong mảng 1 chiều a có n phần tử.

Mình đánh giá đây là bài toán ở mức đơn giản, hầu hết các bạn đều có thể làm được.

2. Giải quyết bài toán

2.1 Ý tưởng giải quyết

Chúng ta sẽ viết hàm (FindMax) để giải quyết bài toán này.

Ý tưởng:

  • Khai báo hai biến Max và biết Location (chỉ số, vị trí)
  • Gán Max là phần tử đầu tiên của mảng (a[0]), gán Location =0.
  • Cho vòng for duyệt từ phần tử thứ 2 đến cuối mảng, nếu gặp phần tử lớn hơn Max, ta gán Max bằng phần tử đó, Location = vị trí của phần tử đó
  • Cuối cùng in ra kết quả Max và Location

Thật đơn giản phải không nào!

2.2 Code C/C++ tìm số lớn nhất trong mảng

Dựa theo ý tưởng mình trình bày ở trên, mình viết hàm FindMax sau:

Code C:

void FindMax(int a[], int n){
	int Max, Location;
	Max=a[0];
	Location =0;
	for(int i=1;i<n;i++){
		if(a[i]>Max){
			Max=a[i];
			Location=i;
		}
	}
	
	printf("\nPhan tu Max: %d", Max);
	printf("\nChi so cua phan tu Max: %d", Location);
}

Code C++:

void FindMax(int a[], int n){
	int Max, Location;
	Max=a[0];
	Location =0;
	for(int i=1;i<n;i++){
		if(a[i]>Max){
			Max=a[i];
			Location=i;
		}
	}
	
	cout<<"\nPhan tu Max: "<<Max<<endl;
	cout<<"Chi so cua phan tu Max: "<<Location<<endl;
}

Thật ra, ngôn ngữ lập trình C++ là nâng cấp của ngôn ngữ lập trình C. Do đó, các cấu trúc tương đối giống nhau, chỉ khác câu lệnh nhập xuất ra màn hình thôi.

2.3 Chương trình tìm số lớn nhất trong C/C++

Mính sẽ thêm phần nhập xuất mảng và một số cấu trúc mặc định của ngôn ngữ là thành chương trình theo bài yêu cầu.

Code C:

#include<stdio.h>
void nhap(int a[], int &n){
	do{
		printf("Nhap n: ");
		scanf("%d",&n);
	}
	while(n<2||n>99);
	
	for(int i=0; i<n; i++){
		printf("a[%d]: ",i);
		scanf("%d",&a[i]);
	}
}

void xuat(int a[], int n){
	printf("Mang vua nhap la: \n");
	for(int i=0;i<n;i++){
		printf("%5d",a[i]);
	}
}

void FindMax(int a[], int n){
	int Max, Location;
	Max=a[0];
	Location =0;
	for(int i=1;i<n;i++){
		if(a[i]>Max){
			Max=a[i];
			Location=i;
		}
	}
	
	printf("\nPhan tu Max: %d", Max);
	printf("\nChi so cua phan tu Max: %d", Location);
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
	xuat(a,n);
	FindMax(a,n);
	return 0;
}

Code C++:

#include<bits/stdc++.h>
using namespace std;
void nhap(int a[], int &n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i<n; i++){
		cout<<"a["<<i<<"]: ";
		cin>>a[i];
	}
}

void xuat(int a[], int n){
	cout<<"Mang vua nhap la:\n";
	for(int i=0;i<n;i++){
		cout<<"  "<<a[i];
	}
}
void FindMax(int a[], int n){
	int Max, Location;
	Max=a[0];
	Location =0;
	for(int i=1;i<n;i++){
		if(a[i]>Max){
			Max=a[i];
			Location=i;
		}
	}
	
	cout<<"\nPhan tu Max: "<<Max<<endl;
	cout<<"Chi so cua phan tu Max: "<<Location<<endl;
}
int main(){
	int a[100];
	int n;
	nhap(a,n);
	xuat(a,n);
	FindMax(a,n);
	return 0;
}

Xong rồi. Kết quả của việc chạy chương trình bên trên đây:

tim so lon nhat trong mang code C 2

Bài viết đến đây là hết, càm ơn bạn đã quan tâm bài viết của mình . Đừng bỏ lỡ những bài tập C/C++ tiếp theo nhé!

Xem tiếp Bài 10: Tìm số nhỏ nhất trong mảng

Xem lại bài 8: Hàm tính trung bình các số lẻ và chia hết cho 5

Tải về file đề cương 67 bài tập lập trình C/C++

Mọi vấn đề thắc mắc trong quá trình tham khảo bài viết, bạn đọc vui lòng comment xuống phía dưới bài viết để mình hỗ trợ.

Rất mong nhận được các ý kiến đóng góp của mọ người để bài chia sẻ của mình hoàn thiện hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here