Ajuda em C

Delphi

26/12/2012

Boa tarde! Tudo bem?

Estou começando a aprender a programar em C
e esta dando um erro e preciso da ajuda de vocês.

Os fontes se abaixo.

A ordenação, o somatório e a fatorial consegui fazer. A dúvida está na pesquisa binária. Ele apresenta o erro no while. Veja o que pode fazer

Aguardo contato

/*7) Fazer um programa onde se leiam 10 elementos de uma matriz A do tipo vetor. Construir 2 matrizes B e C de mesmo tipo,
observando a seguinte lei de formação: todo elemento de B deverá ser o fatorial do elemento de A correspondente e todo
elemento de C deverá ser o somatório do elemento de A correspondente. Montar uma rotina de pesquisa binária, para
pesquisar os elementos armazenados na matriz A e a resposta deve mostrar o valor do fatorial correspondente armazenado
na matriz B e o somatório correspondente armazenado na matriz C. A rotina de pesquisa deverá dar ao usuário a opção de
continuar pesquisando ou não ao final de cada pesquisa.
Ex.: A[1] = 3 // B[1] = 6 // C[1]=6, A[2] = 4 // B[2]= 24 // C[3]=10...
Ao se pesquisar o valor 4 o sistema deve dar a seguinte resposta: “O valor 4 foi encontrado na posição 2, o seu fatorial é 24
e o somatório é 10.”; ou então se o valor pesquisado não for encontrado a resposta deve ser: “Valor X não encontrado.”*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int matrizA [2], matrizB[2],matrizC[2], i=0, j, fatorial=1, cont=0, elemento,somatorio, aux;
//char resposta = 's';
bool parar = false;

//Inserir valores na Matriz A
for (i=0; i<2; i++)
{
printf ("Digite o %d elemento: ", i);
scanf ("%d", &matrizA[i]);
}
//Ordenação
//int outra=0;
for (i=0; i<1; i++)
{
//outra = matrizA[i];
printf ("%d \n", matrizA[i]);
printf ("ta chegando no i %d \n", i);
getch ();
for (j=i++; j<2; j++)
{
printf ("ta chegando no j %d \n", j);
if (matrizA[i] < matrizA[j])
{
printf ("ta comparando \n");
aux = matrizA[i];
matrizA[i] = matrizA[j];
matrizA[j] = aux ;
getch ();
}
getch ();
}
getch ();
for (i=0; i<2; i++)
printf ("A matriz ordenada A %d \n ", matrizA[i] );
getch ();
}
//Inserir na Matriz B os valores da Matriz A
for (i=0; i<2; i++)
{
matrizB[i] = matrizA[i];
}

//Fatorial dos elementos da Matriz B
for (cont=0; cont<2; cont++)
{
elemento = matrizB[cont];
fatorial=1;
while (fatorial < matrizB[cont])
{
elemento = fatorial * elemento;
fatorial == fatorial++;
}
printf (" O fatorial de %d %d \n",matrizB[cont], elemento);
getch ();
}
//Inserir os valores da Matriz A na Matriz C
for (i=0; i<2; i++)
{
matrizC[i] = matrizA[i];
}

//Somatório dos elementos da Matriz C
for (cont=0; cont<2; cont++)
{
elemento = matrizC[cont];
somatorio=0;
while (somatorio < matrizC[cont])
{
elemento = somatorio + elemento;
somatorio == somatorio++;
}
printf (" O somatorio de %d %d \n",matrizC[cont], elemento);
getch ();
}
//Pesquisa Binária
int resposta=1, sim = 1, nao = 0, acha = 0, pesquisa, comeco, final, meio;


while (resposta == 1)
{
printf ("ta chegando na resposta \n");
printf ("Qual o número a ser pesquisado na matriz A? ");
scanf ("%d", &pesquisa);
printf ("esta salvando a pesquisa %d \n", pesquisa);
comeco=1;
final=2;
acha=0;
printf ("atribuicao de valores pra final %d \n acha %d \n e comeco %d \n ", final, acha, comeco);
getch ();
while (comeco < final) && (acha==0)
{
meio = (comeco + final)/2;
printf ("ta chegando na resposta \a");
printf ("acha %d \n", acha);
getch ();

if (pesquisa == matrizA[meio])
{

printf ("achou ");
//parar = true;
achou = 1;
getch ();
else
{
if (pesquisa > matrizA[meio])
{
final= meio--;
printf ("diminuindo 1 no meio");
getch ();
else
{
comeco = meio++;
printf ("acrescentando 1 no meio");
getch ();
}

}


}
}
}

}
//printf ("Deseja pesquisar outro valor para a matriz A? \a \a(sim/nao) ");
//scanf ("%d",&resposta );
//getch ()










}

Márcio Lima

Márcio Lima

Curtidas 0
POSTAR