Busqueda lineal

Iniciado por javier210186, 3 Octubre 2011, 02:29 AM

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

javier210186

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.

satu

#1
Hola

El error lo tienes aquí:
Código (cpp) [Seleccionar]

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";

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 (cpp) [Seleccionar]

cout<<"\ndigite el numero a buscar\n";
cin>>valor;
bool enc = false;
for (k=0; k<7 && !enc; k++)
   if(valor==estudiante[k])
       enc = true;

if(enc)
   cout<<"\nEncontrado en la posicion"<<k<<endl;
else
   cout<<"\nNo existe en el arreglo";


Además te recomiendo que te leas esto 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
Breakbeat como forma de vida

javier210186

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.