Làm thế nào để tìm tất cả các vị trí của số lớn nhất trong mảng (code pascal/c/c++)?

mấy bác cho em hỏi làm thế nào để tìm tất cả các vị trí của số lớn nhất trong mảng.
VD: 1 5 6 7 7 3 2 7
số lớn nhất là: 7
các vị trí xuất hiện : 4 5 8

chạy vòng lặp đầu tiên để tìm ra số lớn nhất.
chạy vòng lặp nữa để in ra các vị trí có giá trị bằng số lớn nhất đó.

1 Like

Đầu tiên bạn tạo 1 mảng có thể nhập sẵn
tạo 1 biến 1 biến max (kiểu dữ liệu cùng với mảng)
tạo 1 vòng lặp for để chạy hết cái mảng
gán giá trị đầu tiên của mảng vào biến max
tạo 1 cái if so sánh
nếu giá thứ 2 của mảng > max
max = vi tri so do

Sau đó tiếp tục tạo 1 vòng lặp để tiếp tục tìm vị trí giá trị lớn nhất
if giá trị tại vị trí i == max thì t ghi lại giá trị
chạy đến hết chương trình ta được các vị trí

mình viết bằng C++ đây.

#include<iostream>
#include<ctime>
using namespace std;
int main()
{
	srand(time(0));
	int16_t max, mang[10];
	for (int16_t i=0; i<10; i++)
	{
		mang[i] = rand()%10+1;
		cout<<" "<< mang[i];
	}
	cout<< endl;
	// bat dau tim so lon nhat
	max = mang[0];
	for (int16_t i=1; i<10; i++) if (mang[i] > max) max = mang[i];
	cout<<" SO LON NHAT TRONG DAY : " << max << endl;
	// hien thi vi tri
	cout<<" XUAT HIEN TAI CAC VI TRI : ";
	for (int16_t i=0; i<10; i++) if (mang[i] == max) cout<< i + 1 << " ";
	return(0);
}

hey có lỗi

srand nằm trong thư viện stdlib.h (hay cstdlib)

1 Like

tớ dùng DevC++, chạy ổn

mà cái srand hay rand đấy tớ dùng để khởi tạo mảng số test thôi, xóa đi rồi nhập test bằng tay là được mà :smile:

bạn viết giùm mình cái đoạn tìm các vị trí bằng pascal được không, mình viết mãi mà không được

bạn viết tương tự như bạn Quang minh ở phía trên ấy

chỉ cần chạy 1 vòng lặp là đủ rồi,
Đầu tiên bạn tạo 1 mảng có thể nhập sẵn
tạo 1 biến 1 biến max (kiểu dữ liệu cùng với mảng) và 1 mảng chứa vị trí max
tạo 1 vòng lặp for để chạy hết cái mảng
gán giá trị đầu tiên của mảng vào biến max
tạo 1 cái if so sánh
nếu giá trị từ vị trí thứ 2 của mảng > max thì max = giá trị tại vị trí đó đồng thời reset mảng chứa vị trí max. add vị trí mới đó vào mảng chứa vị trí max. Nếu giá trị từ vị trí thứ 2 của mảng = max add vị trí đó vào mảng chứa vị trí max

khi xong hết vòng lặp ta được mảng chứa các vị trí bằng với max
mã giả.

func main(){
    var numberList = init number list
    var maxPositionList = List()
    
    var size = numberList.length
    var max = numberList[0]
    maxPositionList.add(0)

    for(i = 1; i < size; i++){
        var numberItem = numberList[i]
        if(max == numberItem){
            maxPositionList.add(i)
        } else if(numberItem > max){
            maxPositionList.clear()
            maxPositionList.add(i)
            max = numberItem
        }
    }

    printLine(max)
    printLine(maxPositionList)
}
1 Like

Bạn ơi bạn dùng hàm clear, đó là thư viện có sẵn. còn như pascal hay C thì chủ thớt yêu cầu có lẽ khó à nha

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