Fiz este programa, que executa normalmente até a opção de pesquisa de array, quando ele trava. O que há de errado?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define TAM 100
void lerArray(int[],int);
void ordenaArray(int[],int);
int pesquisaArray(int[],int,int);
int a[TAM];
main()
{
int fim=0,opcao,tam,elemento,pesquisa,pos;
int chave1=0;
while(!fim)
{
system("cls");
printf("Programa de pesquisa binaria em arrays\n"
"Escolha uma opcao:\n\n"
"1. Ler array\n"
"2. Pesquisar elemento no array\n"
"3. Sair\n");
scanf("%d",&opcao);
switch(opcao)
{
case 1:
{
printf("Qual o tamanho do array?\n");
scanf("%d",&tam);
while(tam<1||tam>TAM)
{
system("cls");
printf("O array deve ter entre um e %d elementos.\n"
"Quantos elementos havera no array?\n",TAM);
scanf("%d",&tam);
}
int a[tam];
lerArray(a,tam);
ordenaArray(a,tam);
chave1=1;
}
break;
case 2:
{ if(chave1==1)
{
printf("Que elemento sera pesquisado?\n");
scanf("%d",&elemento);
pesquisa = pesquisaArray(a,pos,elemento);
if(pesquisa==0)
printf("O elemento %d foi encontrado na posicao %d.\n",elemento,pos);
if(pesquisa==1)
printf("O elemento não foi encontrado!\n");
}
else
printf("Leia um array antes!\n");
}
break;
case 3:
fim=1;
break;
default:
printf("Digite 1, 2 ou 3!\n");
break;
}
getch();
}
}
void lerArray(int a[], int tam)
{ int i;
printf("Digite os termos, separados por enter ou espaco:\n "); /*Impressão do pedido de entrada pelo teclado*/
for(i=0;i<tam;i++) /* lerArray usa um for para receber pelo teclado os valores do array, de entrada[0]*/
scanf("%d",&a); /*até entrada[tam]*/
}
void ordenaArray(int a[],int tam)
{
int passo,aux,cont;
for (passo=1;passo<tam;passo++)
{
for(cont=0;cont<tam-passo;cont++)
{
if(a[cont]>a[cont+1])
{
aux=a[cont];
a[cont]=a[cont+1];
a[cont+1]=aux;
}
}
}
}
int pesquisaArray(int a[],int pos,int elemento)
{ int tam;
int inf=0,sup=tam-1,meio;
meio=(inf+sup)/2;
if(a[meio]==elemento)
{
pos=meio;
return 0;
}
else if(a[meio]<elemento)
return pesquisaArray(a,meio+1,elemento);
else
return pesquisaArray(a,meio-1,elemento);
return 1;
}
Pergunta
gbplayer
Fiz este programa, que executa normalmente até a opção de pesquisa de array, quando ele trava. O que há de errado?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.