In ra giá trị lớn nhất trong mảng và vị trí của giá trị đó

Viết chương trình nhập 1 mảng n số nguyên, tìm giá trị lớn nhất trong mảng và in ra vị trị giá trị lớn nhất đó,
Em tìm được số max và min rồi cơ mà làm thế nào để in ra vị trí của giá trị lớn nhất trong mảng vậy ? Em mới học mảng có 1 ngày :frowning:

int a[100],b[100];
int n,k;
float max,min;
cout<<"Nhap n so nguyen can nhap ";cin>>n;
cout<<"Nhap k=";cin>>k;

for(int i=0;i<n;i++)
{
	cout<<"a["<<i<<"]=";
	cin>>a[i];
}

max=a[0];
min=a[0];
for(int i=0;i<n;i++)
{
	if(max<a[i])
	{
		max=a[i];
	}
	if(min>a[i])
	{
		min=a[i];
	}
}
cout<<"So lon nhat trong mang la "<<max<<endl;
cout<<"So be nhat trong mang la "<<min<<endl;

ngoài biến max bạn còn thêm biến vitrimax vào

    if(max < a[i])
        {
            max = a[i];
            vitrimax = i;
        }
3 Likes

Em có thể theo các step sau:

  1. Nhập mảng

  2. Tìm phần tử lớn nhất của mảng

  3. Tìm vị trí của phần tử lớn nhất
    –> Em có thể hiện thực theo code của em hoặc tham khảo code của anh:

    void input_array(int *arr_out, int &arr_size_out);
    int find_max(int *arr_in, int arr_size_in);
    int find_max_position(int *arr_in, int arr_size_in, int max_in);

    int main(int argc, char *argv[])
    {
    int arr[32];
    int arr_size;
    int max_element;
    int max_pos;

     input_array(arr, arr_size);
     max_element = find_max(arr, arr_size);
     max_pos = find_max_position(arr, arr_size, max_element);
    
     system("pause");
     return 0;
    

    }

    //input the array
    void input_array(int *arr_out, int &arr_size_out)
    {
    printf(“Enter the array size: “);
    scanf(”%d”, &arr_size_out);

     for(int i = 0; i < arr_size_out; i++)
     {
     	printf("arr[%d] = ", i);
     	scanf("%d", &arr_out[i]);
     }
    
     return;
    

    }

    //find max element of array
    int find_max(int *arr_in, int arr_size_in)
    {
    int max;
    int arr_tmp[32];

     memcpy(arr_tmp, arr_in, arr_size_in * sizeof(int));
    
     for(int i = 0; i < arr_size_in - 1; i++)
     {
     	if(arr_tmp[i] >= arr_tmp[i + 1])
     	{
     		int tmp = arr_tmp[i];
     		arr_tmp[i] = arr_tmp[i + 1];
     		arr_tmp[i + 1] = tmp;
     		max = tmp;
     	}
     }
    
     return max;
    

    }

    //find position of max element
    int find_max_position(int *arr_in, int arr_size_in, int max_in)
    {
    int max_pos;

     for(int i = 0; i < arr_size_in; i++)
     {
     	if(max_in == arr_in[i])
     	{
     		max_pos = i;
     	}
     }
    
     return max_pos;
    

    }

bài toán tìm kiếm và trả về vị trí phần tử lớn nhất trong mảng. mọi người kiểm tra va chỉ chỗ sai e vs ạ

#include<stdio.h>
#define MAX 100


void nhapmang(int A[],int n)
{
	for(int i=0;i<n;i++)
	{
	printf("A[%d] = ",i);
	scanf("%d",&A[i]);
	}
}

void xuatmang(int A[], int n)
{
	for(int i=0;i<n;i++)
	printf("%3d",A[i]);
}

//tim kiem va tra ve phan tu co gia tri lon nhat
int phantuMAX(int A[], int n)
{
	int max = A[0];
	for(int i=1;i<n;i++)
	{
	if(A[i]>A[0]) A[i]=max;
	}
	return max;	
}

int vitriMAX(int A[],int n)
{
	int vitrimax =0;
	for(int i=1;i<n;i++)
	{
	if(A[i]>A[vitrimax]) i=vitrimax;
	}
	return vitrimax;
}


int main()
{
	int A[MAX];
	int n;
	printf("nhap kich thuoc mang: ");
	scanf("%d",&n);
	
	nhapmang(A,n);
	printf("cac phan tu co trong mang la:");
	xuatmang(A,n);
	
	printf("phan tu lon nhat cua mang la %3d va no nam o vi tri %3d",phantuMAX(A,n),vitriMAX(A,n));
	
	return 0;
}
int phantuMAX(int A[], int n)
{
	int max = A[0];
	for(int i=1;i<n;i++)
	{
	if(A[i]>A[0]) A[i]=max; //Vấn đề ở đây, em đang so sánh giá trị của các phần tử với A[0] chứ k phải max-> if(A[i] > max) gán A[i] cho max
	}
	return max;	
}

Có thể gộp vị trí và phần từ max vào chung một hàm nhé :wink:

1 Like

sửa lại mà chương trình vẫn không in ra dòng a ơi !!! help e : printf(“phan tu lon nhat cua mang la %3d va no nam o vi tri %3d”,phantuMAX(A,n),vitriMAX(A,n));

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