martes, 16 de febrero de 2016

jueves, 21 de enero de 2016

Portada


 UNIVERSIDAD FERMÍN TORO

FACULTAD DE INGENIERÍA

ESCUELA DE COMPUTACIÓN

CABUDARE, EDO. LARA













Ejercicios Estructura de Datos II













Alumno: Ricardo Richard         
Asignatura: Estructura de Datos II
Seccion: SAIA                          

Ejercicio 2.

2.- A continuación se muestra el código de implementación dev c++ ,de una búsqueda de la cual usted debe de indicar que búsqueda es (secuencial, binaria o hast) indicar que hace el código y que resultado arroja


Despues  haber de limpiado el codigo lo mejor que pude remplazando los caracteres `` y ' ' por las comillas correctas " ademas de completar correctamente las lineas que estaba cortadas por saltos en linea no me fue posible correr el programa:

Codigo original copiado del PDF:


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include ``ordena.h''
#include ``hash.h''
int main(int argc,char *argv[])
{
int num_min,num_max,incr,tamano,nveces; char nombre[256];
short ret;
printf(``Practica numero 3, apartado 2\n''); printf(``Realizada por: Vuestros nombres\n''); printf(``grupo: Vuestro grupo\n''); printf(``introduce el numero ninimo de elementos a introducir en la tabla\n''); scanf(``%d'',&num_min);
printf(``introduce el numero maximo de elementos a introducir en la tabla\n''); scanf(``%d'',&num_max);
printf(``introduce el incremento\n''); scanf(``%d'',&incr);
printf(''Introduce el tamano de la tabla hash \n''); scanf(``%d'',&tamano);
printf(``Factor del retardo\n''); scanf(``%d'',&nveces);
printf(``Introduce el nombre del fichero\n''); scanf(``%s'',nombre); ret=time_Hash(nombre,num_min,num_max,incr,tamano,hash_div,n veces);
if(ret==ERR) {
printf("Error en la funcion time_Hash\n"); return ERR;
}
printf(``Fichero generado correctamente\n''); return OK;

}

Codigo limpio:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "ordena.h"
#include "hash.h"
int main(int argc,char *argv[])
{
int num_min,num_max,incr,tamano,hash_div,nveces;
char nombre[256];
short ret;
printf("Practica numero 3, apartado 2\n");
printf("Realizada por: Vuestros nombres\n");
printf("grupo: Vuestro grupo\n");
printf("introduce el numero ninimo de elementos a introducir en la tabla\n");
scanf("%d",&num_min);
printf("introduce el numero maximo de elementos a introducir en la tabla\n");
scanf("%d",&num_max);
printf("introduce el incremento\n");
scanf("%d",&incr);
printf("Introduce el tamano de la tabla hash \n");
scanf("%d",&tamano);
printf("Factor del retardo\n");
scanf("%d",&nveces);
printf("Introduce el nombre del fichero\n");
scanf("%s",nombre);
ret=time_Hash(nombre,num_min,num_max,incr,tamano,hash_div,nveces);
if(ret==ERR) {
printf("Error en la funcion time_Hash\n");
return ERR;
}
printf("Fichero generado correctamente\n");
return OK;
}  

Sin embargo al leer el codigo y ententer el algoritmo puedo decir que el metodo de busqueda es tipo Hash. En ella se crea una tabla utilizando una funcion de dispersion para ingresar los elementos, lo que permite que estos no puedan ser recorridos de forma secuencial. Los resultados que arrojarian son 2 posibles: ERR  en caso de que exista un error en la funcion y OK  en caso de que se genere correctamente.

Ejercicio 1.

1.- A continuación se muestra el código de implementación dev c++ ,de una búsqueda de la cual usted debe de indicar que búsqueda es (secuencial, binaria  o  hast)  indicar  que  hace  el  código  y  que  resultado  arroja


#include <cstdlib>
#include <iostream>
#define max 100

using namespace std;

  
void ingresarArreglo(float A[max],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<" A["<<i+1<<"]=";
cin>>A[i];
}
cout<<endl;
}
void reportarVector(float V[max],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<< V[i]<<"\t";


}
cout<<endl<<endl;
}


void ordenarSeleccion(float V[max],int n)
{
int i,j,k;
float temp;
for(i=0;i<n-1;i++)
{


k=i;


temp=V[i];




for(j=i+1;j<n;j++)
{
if(V[j]<temp)
{
k=jtemp=V[j];
}
}
V[k]=V[i] ;
V[i]=temp;
}
}
int  busquedaBinaria(float V[max],int ,int dato)
{
int mitad,izq,derizq=0;
der=n-1;
while(izq<=der)
{mitad=(izq+der)/2
if(dato>V[mitad izq=mitad+1
else if(dato<V[mitad

der=mitad-1;
else return mitad;
}
return -1;

}


int main(int argcchar *argv[])
{
float A[max];


int n,p=0,dato;
int pos;
cout<<"ingrese numero de elementos :"cin>>n;
ingresarArreglo(A,n)cout<<"vector ingresado"<<endlreportarVector(A,n)ordenarSeleccion(A,n);
cout<<"el vector ordenado:"<<endlreportarVector(A,n);

cout<<"ingrese numero a buscar:"cin>>datopos=busquedaBinaria(A,n,dato);
{  if(pos ==-1)
cout<<"el dato no esta en el arreglo"<<endl;

else

cout<<"el dato se encontro en la posicion:"<<pos
+1<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}

El tipo de busqueda de este codigo es Binaria y esto lo podemos ver porque es una busqueda con un arreglo ordenado a la vez que tiene un arreglo por seleccion, el cual muestra en pantalla el mensaje "el dato se encontro en la posicion:" junto a la posicion en la cual se encuentra el elemento buscado en primer lugar. Si el elemento no se encuentra entonces aparece en pantalla el mensaje "el dato no esta en el arreglo" concluyendo asi el algoritmo.