lokomaxi
Usuario (Argentina)
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; }
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; }