entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

¿como puedo corregir el buscador?

realice este codigo y todo me funciona bien pero al momento de buscar un numero me imprime varias cosas que no tiene nada que ver porfavor ayuda para corregirlo
de antemano gracias y les muestro mi código

#include<stdio.h>
#include<stdlib.h>
int numero=0;
int cant=0;
int nb=0;
int contador=0;
int tam=0;
int i,j;
int menor,AUX,valor,a=0,in=0;
int pos_menor,alto,central,bajo;
int pos=0;

int intro_num(int num_glo[],int cant){
    char op1;
    op1 ='s';
    for(int i=0;i<cant;i++){
        while (op1=='s'){
                printf("Introduce un numero: ");
                scanf("%i", & numero);
                printf("Deseas continuar:\nsi=s\nno=n \n");
                fflush(stdin);
                scanf("%c", & op1);
                num_glo[contador]=numero;
                contador = contador + 1;
if(numero>=num_glo[a])
    num_glo[i-1]=numero;
else
    {
     printf("Numero incorrecto\n");
    i--;
    }
a=i-1;
}
for(i=0;i<cant;i++)
{
menor=num_glo[i];
pos_menor=i;
for(j=i+1;j<contador;j++)
{
if(menor>num_glo[j])
{
menor=num_glo[j];
pos_menor=j;
}}
AUX=num_glo[i];
num_glo[i]=num_glo[pos_menor];
num_glo[pos_menor]=AUX;}
bajo=0;
alto=tam-1;
central=(bajo+alto)/2;
while(bajo<=alto&&num_glo[central])
{
if(valor<num_glo[central]) alto=central-1;
else bajo=central+1;
central=(bajo+alto)/2;
}
if(valor==num_glo[central]) printf("El valor se encuentra en la posici¢n %i",central);

}
                        }

int buscar(int num_glo[]){
      char op1;
    op1 ='s';
        while (op1=='s'){
        printf("Cual numero quieres buscar \n");
        scanf("%i", & nb);
        for(int i=0;i<contador;i++){
    if (num_glo[i]==nb){
        num_glo[i]=num_glo[i+1];
        if (i+1<contador)
    for(int j=i+1;j<contador;j++)
        {
        num_glo[j]=num_glo[j+1];

    }
pos++;
}}
 printf("continuar s/n \n");
 fflush(stdin);
 scanf("%c", & op1);
printf("\nel numero se encuentra en la posicion %d\n",&pos);
}
}

int eliminar(int num_glo[]){
    char op1;
    op1 ='s';
        while (op1=='s'){
        printf("Cual numero quieres borrar \n");
        scanf("%i", & nb);
        for(int i=0;i<contador;i++){
    if (num_glo[i]==nb){
        num_glo[i]=num_glo[i+1];
        if (i+1<contador)
    for(int j=i+1;j<contador;j++)
        {
        num_glo[j]=num_glo[j+1];
    }
    contador=contador-1;
}}
 printf("continuar s/n \n");
 fflush(stdin);
 scanf("%c", & op1);

                    }
                           }

void imprimir(int num_glo[]){
for(i=0;i<contador;i++)
{
printf("num %i=%i\n",i,num_glo[i]);
}
                                }

main(){
    int op;
    printf("Introduce el tamanio opcional de tu arreglo porfavor \n");
    scanf("%i", & cant);
    int num_glo[cant];
    menu:
    printf("MENU \n");
    printf("Insertar  : 1 \n");
    printf("Borrar    : 2 \n");
    printf("Buscar    : 3 \n");
    printf("Imprimir  : 4 \n");
    printf("Salir     : 5 \n");
    scanf("%i", & op);
    switch (op){
    case 1: intro_num(num_glo,cant);
            goto menu;
             break;
    case 2: eliminar(num_glo);
            goto menu;
             break;
    case 3:   buscar(num_glo);
                goto menu;
    case 4: imprimir(num_glo);
            goto menu;
             break;
    case 5:printf("gracias vuelva pronto\n");
          break;
               }
    system("PAUSE");
}

1 Respuesta

1voto

Weno varias cosas el programa no compila y veo que tienes variables que no coinciden arriba declaras pos_menor y luego la llamas posmenor, por cierto las variables globales cuantas menos utilices mejor, y los gotos quitalos con un while haces lo mismo.

PD: veo funciones int que no retornan nada... cualquier función que no declares como void a de acabar con un return y la variable que retornes que sea del mismo tipo que la función.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta