Ejemplos de C - Punteros, arrays y estructuras

1.- Programa que inicializa un vector y realiza distintas operaciones sobre él:

#include<stdio.h>
#define ELE 100
int fmenu(void);
int felementos(void);
int fvalor(void);
void finicializar(int elementos, int *pvector);
void fvisualizar(int elementos, int *pvector);
int fbusqueda_lineal(int elementos,int valor, int *pvector);
int fbusqueda_lineal_ordenada(int elementos, int valor, int *pvector);
int fbusqueda_binaria(int elementos,int valor, int *pvector);
void fordenar_baraja(int elementos, int *pvector);
void fordenar_burbuja(int elementos, int *pvector);


void main()
{

int elementos=0;
int pvector[ELE];
int valor;
int opcion;

do
{
opcion=fmenu();
switch (opcion)
{
case 1:
elementos=felementos();
finicializar(elementos,pvector);
break;
case 2: if(elementos==0)
puts("\nTienes que inicializar el vector");
else
fvisualizar(elementos,pvector);
break;
case 3: if(elementos==0)
puts("\nTienes que inicializar el vector");
else
{valor=fvalor();
fbusqueda_lineal(elementos,valor,pvector);}
break;
case 4:if(elementos==0)
puts("\nTienes que inicializar el vector");
else
fordenar_baraja(elementos,pvector);
break;
case 5:if(elementos==0)
puts("\nTienes que inicializar el vector");
else
fordenar_burbuja(elementos,pvector);
break;
case 6:if(elementos==0)
puts("\nTienes que inicializar el vector");
else
{valor=fvalor();
fbusqueda_lineal_ordenada(elementos,valor,pvector);}
break;
case 7: if(elementos==0)
puts("\nTienes que inicializar el vector");
else
{valor=fvalor();
fbusqueda_binaria(elementos,valor,pvector); }
break;
case 8:
break;
default:
break;
}
}
while (opcion!=8);

}

int fmenu(void)
{
int opcion;
do
{
puts(" ESTE PROGRAMA REALIZA LOS SIGUIENTES PROCESOS \n");
puts("-------------------------------------------------------------------------------------------\n");
puts("1.-INICIALIZA UN VECTOR, COMO MÁXIMO DE 100 NÚMEROS \n");
puts("2.-VISUALIZA EL CONTENIDO DE UN VECTOR \n");
puts("3.-BUSCA UN VALOR EN UN VECTOR NO ORDENADO\n");
puts("4.-ORDENA UN VECTOR POR EL MÉTODO DE LA BARAJA \n");
puts("5.-ORDENA UN VECTOR POR EL MÉTODO DE LA BURBUJA \n");
puts("6.-BUSCA UN VALOR EN UN VECTOR ORDENADO MEDIANTE BÚSQUEDA LINEAL\n");
puts("7.-BUSCA UN VALOR EN UN VECTOR ORDENADO MEDIANTE BÚSQUEDA BINARIA\n");
puts("8.-FINALIZA\n");
scanf("%d",&opcion);
}
while (opcion!=1 && opcion !=2 && opcion !=3 && opcion !=4 && opcion!=5 && opcion!=6
&& opcion!=7 && opcion!=8);
return(opcion);
}

int felementos()
{
int elementos;

do
{
puts("\n¿Cuantos numeros quieres guardar?");
scanf("%d",&elementos);
}while(elementos< 1 || elementos > 100);

return(elementos);
}

void finicializar(int elementos,int *pvector)
{
int indice;
for (indice=0;indice<elementos;indice++,pvector++)
{
puts("Teclea un numero\n");
scanf("%d",pvector);
}

}


void fvisualizar(int elementos, int *pvector)
{
int indice;
for (indice=0;indice<elementos;indice++,pvector++)
printf("En la posicion %d y en la direccion de memoria %u esta el numero %d\n",indice,
pvector,*pvector);
}
int fvalor()
{
int valor;
fflush(stdin);
puts("Teclea el valor a buscar\n");
fflush(stdin);
scanf("%d",&valor);
return(valor);
}

int fbusqueda_lineal(int elementos,int valor, int *pvector)
{
int indice;
indice=0;
while(pvector[indice]!=valor && indice<elementos)
indice++;
if (pvector[indice]==valor)
{
printf("El valor %d esta en la posicion %u\n",valor,indice);}
else
printf("El valor %d no esta en el vector\n",valor);
}

int fbusqueda_lineal_ordenada(int elementos,int valor, int *pvector)
{
int indice;
indice=0;
while (pvector[indice]<valor && indice<elementos)
indice++;
if (pvector[indice]==valor)
{printf("El valor %d esta en la posicion %d\n",valor,indice);}
else printf("El valor %d no esta en el vector\n",valor);
}
int fbusqueda_binaria(int elementos,int valor, int *pvector)
{
int indice_c, indice_i,indice_d;
indice_i=0;
indice_d=elementos;
indice_c=(indice_i+indice_d)/2;
while (pvector[indice_c]!=valor && indice_i<indice_d)
{
if (pvector[indice_c]>valor)
{indice_d=indice_c-1;}
else indice_i=indice_c+1;
indice_c=(indice_i+indice_d)/2;
}
if (pvector[indice_c]==valor)
printf("El valor %d esta en la posicion %d\n",valor,indice_c);
else printf("El valor %d no esta en el vector\n",valor);
return (valor);
}
void fordenar_baraja(int elementos, int *pvector)
{
int indice_i,aux,indice_j;
for (indice_i=1;indice_i<=elementos-1;indice_i++)
{
aux=pvector[indice_i];
indice_j=indice_i-1;
while (pvector[indice_j]>aux && indice_j>0)
{
pvector [indice_j+1]=pvector[indice_j];
indice_j--;
}
if (pvector[indice_j]>aux)
{
pvector[indice_j+1]=pvector[indice_j];
pvector[indice_j]=aux; }
else pvector[indice_j+1]=aux;
}
for (indice_i=0;indice_i<=elementos-1;indice_i++)
printf("El valor %d esta en la posicion %d\n",pvector[indice_i],indice_i);
}
void fordenar_burbuja(int elementos, int *pvector)
{
int indice_i,indice_j,aux;
for(indice_i=1;indice_i<=elementos-1;indice_i++)
for (indice_j=0;indice_j<=(elementos-indice_i);indice_j++)
if(pvector[indice_j]>pvector[indice_j+1])
{
aux=pvector[indice_j];
pvector[indice_j]=pvector[indice_j+1];
pvector[indice_j+1]=aux;
}
for (indice_i=0;indice_i<=elementos-1;indice_i++)
printf("El valor %d esta en la posicion %d\n",pvector[indice_i],indice_i);
}


VOLVER

A PROGRAMAR © 2002. All Rights Reserved.
Hosted by www.Geocities.ws

1