Nombre: punteros
Descripción:
Considerar el problema de buscar un número en una lista de enteros utilizando la búsqueda binaria. Utilizar expresiones de punteros para acceder a valores individuales en vez de referirnos explícitamente a elementos individuales de la formación. Visualizar la posición del vector en la que se encuentra dicho número. El proceso será repetitivo.
URL: http://www.mygnet.net/codigos/cplusplus/punteros/punteros.1648
Código Fuente:
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
void main ()
{
int *p,n,i,j,aux,nbusq,li,ls,c=0,m;
printf ("¿Cuantos enteros quieres introducir? ");
scanf ("%i",&n);
p=(int*)malloc(n*sizeof(int));
if (p==NULL)
{
printf ("nNo hay suficiente memoria");
exit (-1);
}
printf ("nIntroduce los %i numeros:n",n);
for (i=0;i<n;i++)
scanf ("%i",(p+i));
for (i=0;i<n;i++)
{
for (j=i;j<n;j++)
{
if (*(p+i)>*(p+j))
{
aux=*(p+i);
*(p+i)=*(p+j);
*(p+j)=aux;
}
}
}
printf ("nEl vector ordenado es el siguiente: ");
for (i=0;i<n;i++)
printf ("%i ",*(p+i));
printf ("n¿Que número quieres encontrar en el vector? ");
scanf ("%i",&nbusq);
li=0;
ls=n;
for (i=0;i<n;i++)
{
m=(li+ls)/2;
if (*(p+m)<nbusq)
li=m;
else
{
if (*(p+m)>nbusq)
ls=m;
else
if (c==0)
{
printf ("El numero %i se encuentra en la posicion %i",nbusq,m+1);
c=1;
}
}
}
if (c==0)
printf ("El numero no se encuentra en el vector");
}