El siguiente codigo se encarga de buscar el numero mayor de un array de enteros, luego al final cuando se muestra la posicion de origen donde se ubico ese valor, no es el correcto, y aqui el codigo:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
main(){
int tem=0,may=0,pos=0,i,j,array[9];
for(i=0;i<10;i++){
cout<<"\n ingrese valor de array["<<i<<"]= ";
cin>>*(array+i);
}
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(*(array+i)>*(array+j)){
pos=i;
tem=*(array+i); /*intercambio*/
*(array+i)=*(array+j);
*(array+j)=tem;
may=tem; /* asignacion */
}
else
pos=j;
may=*(array+j);
}
}
cout<<"\n Valor mayor= "<<may<<" En la posicion array["<<pos<<"]";
cout<<"\n\n";
system("pause");
}
Hola.
Si solo tenes que mostrar el mayor valor y su posición (índice) no es necesario realizar intercambio alguno.
#include<iostream>
using namespace std;
int main()
{
int array[10];
for(int i=0; i<10; i++)
{
cout << endl << "ingrese valor de array[" << i << "]= ";
cin >> array[i];
}
int may=0, pos = 0;
for(int i=0; i<10; i++)
if (array[i] > may)
{
may = array[i];
pos = i;
}
cout << endl << "Valor mayor= " << may << " En la posicion array[" << pos <<"]";
cout << endl << endl;
cin.get();
cin.get();
}
Saludos.
Si pones pos = i, va a seguir estando mal ya que el array empieza en la posición 0 tendría que ser pos = i +1.