Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: javier210186 en 3 Octubre 2011, 02:29 am



Título: Busqueda lineal
Publicado por: javier210186 en 3 Octubre 2011, 02:29 am
Cordial saludo, me estoy iniciando en C++ en la universidad y me ha tocado trabajar en un programa que, ordene y busque un elemento en una lista. El programa que tengo actualmente me corre, pero no me da el resultado esperado, que es el elemento a buscar en la posición que tiene,  he intentado de varias formas pero no puedo finalizar con la búsqueda correctamente.   El código es el siguiente, trabajo con turbo C 3.0


/*programa que muestra la puntuacion de las actividades de la unad*/
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
int main()
{
   clrscr();
   int estudiante[7]={0, 10,15, 8,14, 16, 13};
   int i, k,c,temp,valor ;          //c es el contador, temp variable temporal
   char  unidad[7]= {'u','n','i','d','a','d'};

      for (i=0; i<=6;i++)
      {
      printf ("%c",unidad );
      }

      for (k=1; k<7;k++)
      {
      printf ("\n la actividad %d es igual a  %d",k, estudiante[k] );
      }
printf("\n Procederemos a ordenar las notas del estudiante\n");


printf("Las notas del estudiante son\n  ");
      for (k=1; k<7;k++)
      {
      printf(" %d  ",estudiante[k]);
      }
         /*se aplica el algoritmo de la burbuja*/
      for (k=0; k<(7-1);k++)
         {
      for (c=k+1; c<7;c++)
      {
      if( estudiante[c]<estudiante[k]){
      temp=estudiante[c];
      estudiante[c]=estudiante[k];
      estudiante[k]=temp;
      }
         }
                  }
printf("\nlas notas ordenadas son:\n ");
for(k=0; k<7; k++){
printf(" %d", estudiante[k]);
}
printf("\n");

cout<<"\ndigite el numero a buscar\n";
cin>>valor;
for (k=0;k<7;k++);{
   if(valor==estudiante[k])
   cout<<"\n encontrado en la posicion\n"<<k+1<<endl;
else
cout<<"no existe en el arreglo";
}
getch();

return 0;
}


por favor colaboren me, es la ultima parte sobre búsqueda que no me arroja el resultado que es.


Título: Re: Busqueda lineal
Publicado por: satu en 3 Octubre 2011, 16:47 pm
Hola

El error lo tienes aquí:
Código
  1. cout<<"\ndigite el numero a buscar\n";
  2. cin>>valor;
  3. for (k=0;k<7;k++);{
  4. if(valor==estudiante[k])
  5. cout<<"\n encontrado en la posicion\n"<<k+1<<endl;
  6. else
  7. cout<<"no existe en el arreglo";
  8.  
En el for te sobra el ; del final (el que tienes puesto delante de la llave)

Puedes sustituir todo ese trozo por este:
Código
  1. cout<<"\ndigite el numero a buscar\n";
  2. cin>>valor;
  3. bool enc = false;
  4. for (k=0; k<7 && !enc; k++)
  5.    if(valor==estudiante[k])
  6.        enc = true;
  7.  
  8. if(enc)
  9.    cout<<"\nEncontrado en la posicion"<<k<<endl;
  10. else
  11.    cout<<"\nNo existe en el arreglo";
  12.  

Además te recomiendo que te leas esto (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html) y no olvides poner el code entre las etiquetas de GeSHi (la tienes al lado del botón de elegir el tipo de fuente)

Saludos


Título: Re: Busqueda lineal
Publicado por: javier210186 en 5 Octubre 2011, 06:07 am
Cordial saludo, efectivamente me funciono, te agradezco por la colaboración, pues la profesora me había dicho que estaba malo, pero eso ya lo sabia. ya me había pasado mas de una tarde dándole vueltas . De nuevo muchas gracias. se nota que tienes grandes conocimientos en la materia. ojala fueras mi profesor en la universidad. tal ves entendería mejor.