Problema al mostrar posicion de un array

Iniciado por BJM, 19 Octubre 2012, 18:19 PM

0 Miembros y 1 Visitante están viendo este tema.

BJM

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:

Código (cpp) [Seleccionar]
#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");
          }

ecfisa

Hola.

Si solo tenes que mostrar el mayor valor y su posición (índice) no es necesario realizar intercambio alguno.

Código (cpp) [Seleccionar]

#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.

avaquerotoba

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.