L

lokomaxi

Usuario (Argentina)

Primer post: 1 jul 2011Último post: 27 jul 2011
2
Posts
10
Puntos totales
1
Comentarios
P
Programacion en C - Busqueda binaria
Ciencia EducacionporAnónimo7/27/2011

Aki les dejo un codigo en donde se ingresan valores a un vector y los ordeno a travez del metodo de burbuja, luego realizo una busqueda binaria para encontrar la posicion un elemento dentro de este vector... Spero q les sirva y me puedan dejar un par de puntitos Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias. Está altamente recomendado para buscar en arrays de gran tamaño. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como máximo 26 comparaciones (en el peor de los casos). Este metodo de busqueda consiste en buscar la mitad del vector, si el elemento es mayor buscamos solo en el lado derecho, si es menor buscamos en el lado izquierdo, descartando la otra mitad y asi sucesivamente. #include <stdio.h> #include <stdlib.h> void cargar (int vec[], int tam) { int i; printf("Ingresar 10 valoresn"; for(i=0;i<tam;i++) { printf("Ingresar valor: "; scanf("%d",&vec); } } void ordenacion (int vec[], int tam) { int i,j,aux; for(i=0;i<tam-1;i++) { for(j=0;j<tam-i;j++) { if(vec>vec[j+1]) { aux=vec; vec=vec[j+1]; vec[j+1]=aux; } } } } void mostrar(int vec[], int tam) { int i; printf("n"; for(i=0;i<tam;i++) { printf("%d, ",vec); } printf("nn"; } int busqueda (int vec[],int buscado,int tam) { int inicio,medio,fin,ban=0; inicio=0; fin=tam-1; while(inicio<=fin && ban==0) { medio=(inicio+fin)/2; if(buscado==vec) { ban=1; } else { if(buscado<vec) { fin=medio-1; } else { inicio=medio+1; } } } return medio+1; } int main(int argc, char *argv[]) { int pos,num,vector[10]; cargar(vector,10); ordenacion(vector,10); printf("nEste es el vector ordenado"; mostrar(vector,10); printf("Ingresa el elemento a buscar: "; scanf("%d",&num); pos=busqueda(vector,num,10); printf("El elemento se encuentra en la posicion %d nn",pos); system("PAUSE"; return 0; }

10
0
E
Ejercicios de programacion en C
Apuntes Y MonografiasporAnónimo7/1/2011

Hola, soy estudiante de ingenieria en informatica y recien estoy empezando con esto de programacion en lenguaje C, aki dejo algunos ejercicios, espero q les sirva /*Como saber si un numero es primo o no*/ #include <stdio.h> #include <stdlib.h> int primo (int num) { int div,b=0; for(div=2;num>div;div++) { if(num%div==0) b=1; } return b; } int main(int argc, char *argv[]) { int num,x; printf("Ingrese un numero: "; scanf("%d",&num); x=primo(num); if(x==0) printf(" Es primo n"; else printf(" No es primo n"; system("PAUSE"; return 0; } -------------------------------------------------------------------------------------------------------------------------------------- /*Programa que permite calclar 25 precios que estan en moneda nacional, en Euro, Dolar y Real*/ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { float nac,euro,dolar,real,x=0,y=0,z=0,i=0; printf("Ingrese el valor del euro: "; scanf("%f",&euro); printf("Ingrese el valor del dolar: "; scanf("%f",&dolar); printf("Ingrese el valor del real: "; scanf("%f",&real); while(i<25) { printf("Ingrese el valor en pesos: "; scanf("%f",&nac); x=nac/euro; y=nac/dolar; z=nac/real; printf("n %f pesos son %f eurosn",nac,x); printf("n %f pesos son %f dolaresn",nac,y); printf("n %f pesos son %f realesnnn",nac,z); i++; } system("PAUSE"; return 0; } ------------------------------------------------------------------------------------------------------------------------------------------------------ /*-Dada una cadena de entrada, invertirla y luego indicar si la cadena inversa es igual a la cadena original.*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int longitud(char pal[]) { int i,longcad=0; for (i=0;pal!='';i++) { longcad++; } return longcad; } int comparo(char fr1[50],char fr2[50]) { int i,ban=0; for (i=0;fr1!='';i++) { if (fr1!=fr2) ban=1; } return ban; } int inversor (char fra1[50]) { int bandera,i,j=0; char fra2[50]; i=longitud(fra1); while (i>=0) { i--; fra2=fra1; j++; } printf ("nLa inversa de la frase es: "; puts (fra2); bandera=comparo(fra1,fra2); return bandera; } void pregunta(int b) { if (b==0) printf ("nLa frase ingresada es igual a su inversa.nn"; else printf ("nLa frase ingresada no es igual a su inversa.nn"; } int main() { int band; char frase[50]; printf ("Ingrese una frase: "; gets (frase); band=inversor(frase); pregunta (band); system("PAUSE"; return 0; } ------------------------------------------------------------------------------------------------------------------------------------------- /*Ingresar 10 numeros y determinar cual es el mayor, y cual es el menor. Hacer uso de funciones*/ #include <stdio.h> #include <stdlib.h> void cargar (char v[],int a) { int i; printf("Ingresa 10 valoresn"; for(i=0;i<a;i++) { printf("Ingresar valor: "; scanf("%d",v); v++; } } int mayor (char v[], int a) { int i,x=*v; for(i=0;i<a;i++) { if(x<*v) { x=*v; } v++; } return x; } int menor (char v[], int a) { int i,x=*v; for(i=0;i<a;i++) { if(x>*v) { x=*v; } v++; } return x; } void mostrar (a,b) { printf("nEl mayor es %dn",a); printf("nEl menor es %dn",b); } int main(int argc, char *argv[]) { int x,y,i; char v[10]; cargar(v,10); for(i=0;i<10;i++) { printf("%d, ",v); } x=mayor(v,10); y=menor(v,10); mostrar(x,y); system("PAUSE"; return 0; }

0
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.