Encuentra los índices de los números máximos en una matriz.
Tengo un programa en C que encuentra el primer y segundo máximo en un arreglo, pero quiero obtener los índices de estos elementos. Aquí está mi código:
#include <stdio.h>
int main(){
int max1,max2,n;
scanf("%d",&n);
int a[n],i;
int i_m1,i_m2;
i_m1 = i_m2=0;
for(i = 0;i < n;i++){
scanf("%d",&a[i]);
}
max1 = max2 = 0;
for(i = 0;i < n;i++){
if(a[i]>max1){
max1=a[i];
//i_m1++;
} else if(a[i]>max2 && a[i]<max1){
max2=a[i];
//i_m2++;
}
}
printf("%d %d\n",max1,max2);
//printf("%d %d\n",i_m1,i_m2);
for(i = 0;i < n;i++){
printf("%d ",a[i]);
}
return 0;
}
primero ingreso el número de elementos en el arreglo y luego el arreglo.
por ejemplo, si tengo un arreglo:
número de elementos: 5
elementos en el arreglo:
3 4 2 5 1
índices:
0 1 2 3 4
max1=5, max2=4
i_m1=3, i_m2=1
¿cómo puedo obtener los índices i_m1 y i_m2? max2=”a[i];” i_m2++;=”” }=”” }=”” printf(“%d=”” %d\n”,max1,max2);=”” printf(“%d=”” %d\n”,i_m1,i_m2);=”” for(i=”0;i” <=”” n;i++){=”” printf(“%d=”” “,a[i]);=”” }=”” return=”” 0;=”” }=”” ="" primero="" ingreso="" el="" número="" de="" elementos="" en="" el="" arreglo="" y="" luego="" el="" arreglo.="" por="" ejemplo,="" si="" tengo="" un="" arreglo:=""
=”” número=”” de=”” elementos:=”” 5=”” elementos=”” en=”” el=”” arreglo:=”” 3=”” 4=”” 2=”” 5=”” 1=”” índices:=”” 0=”” 1=”” 2=”” 3=”” 4=”” max1=”5,” max2=”4″ i_m1=”3,” i_m2=”1″ “`=”” ¿cómo=”” puedo=”” obtener=”” los=”” índices=”” i_m1=”” y=””></max1){
max2=a[i];
//i_m2++;
}
}
printf(“%d %d\n”,max1,max2);
//printf(“%d %d\n”,i_m1,i_m2);
for(i = 0;i < n;i++){
printf(“%d “,a[i]);
}
return 0;
}
primero ingreso el número de elementos en el arreglo y luego el arreglo.
por ejemplo, si tengo un arreglo:
número de elementos: 5
elementos en el arreglo:
3 4 2 5 1
índices:
0 1 2 3 4
max1=5, max2=4
i_m1=3, i_m2=1
“`
¿cómo puedo obtener los índices i_m1 y i_m2?></stdio.h>
davy.ai
Para obtener los índices de los dos elementos máximos en el arreglo, puedes usar dos variables para realizar un seguimiento de los índices mientras recorres el arreglo.
Aquí está el código modificado:
En el código modificado, agregamos dos variables
i_m1
ei_m2
para realizar un seguimiento de los índices del primer y segundo elemento máximo respectivamente. Mientras recorremos el arreglo, comparamos el elemento actual tanto con el primer máximo (a[i_m1]
) como con el segundo máximo (a[i_m2]
). Si el elemento actual es mayor que el primer máximo, actualizamosi_m2
ai_m1
ei_m1
al índice del elemento actual. Si el elemento actual está entre el primer y el segundo máximo, actualizamosi_m2
al índice del elemento actual.Al final del bucle, tenemos los índices de los dos elementos máximos, que podemos usar para imprimir sus valores y índices respectivamente.</stdio.h>