Boa tarde, gostaria de saber se alguém pode me ajudar a resolver um problema, estou fazendo um trabalho da faculdade em linguagem C que precisa receber 10 letras e depois apresentar um menu onde a pessoa escolhe qual tipo de ordenação vai querer utilizar para ordenar essas letras, eu fiz o programa todo, com a funções, não sei se está certo, ele tá compilando certinho mas na execução, recebe os dados e apresenta o menu, mas após a escolha do método de ordenação ele encerra. Ahh sim, os métodos solicitados são BublleSort, Inserção Direta, Seleção Direta e QuickSort, esses modelos o professor já forneceu o algoritmo e só precisei fazer o código, mas provavelmente tem erros, enfim.
Já tentei mudar algumas coisas mas continua na mesma, será que alguém poderia me explicar o que pode ser? Aqui vai o código:
#include <stdio.h>
#include <stdlib.h>
void bubble(int conta, char* Letra);
void select(int tamanho, char* Letra);
void insert(int conta, char* Letra);
void quicksort (int conta, char* Letra);
int main (void)
{
char Letra[9];
int Cont, Opcao;
printf("\n\n ------------------- PROGRAMA DE ORDENACAO ------------------\n\n");
for (Cont=0; Cont<=9; Cont++)
{
printf("Insira uma letra: ");
scanf("%s", &Letra[Cont]);
}
printf("\n\n -------------------- LISTA não ORDENADA --------------------\n\n");
for (Cont=0; Cont<=9; Cont++)
{
printf("Letra: %c\n", Letra[Cont]);
}
printf("\n\n ------------------------------------------------------------\n\n");
do
{
printf("Escolha um metodo de ordenacao:\n");
printf("\nBublleSort 1");
printf("\nSelecao Direta 2");
printf("\nInsercao Direta 3");
printf("\nQuickSort 4");
printf("\n\nEntre com a opcao: ");
scanf("%i", Opcao);
}
while(Opcao < 5);
if(Opcao==1)
{
printf("---------------------- LISTA ORDENADA ----------------------\n\n");
bubble(9, Letra);
printf("%s\n", Letra);
}
if(Opcao==2)
{
printf("---------------------- LISTA ORDENADA ----------------------\n\n");
select(9, Letra);
printf("%s\n", Letra);
}
if(Opcao==3)
{
printf("---------------------- LISTA ORDENADA ----------------------\n\n");
insert(9, Letra);
printf("%s\n", Letra);
}
if(Opcao==4)
{
printf("---------------------- LISTA ORDENADA ----------------------\n\n");
quicksort(9, Letra);
printf("%s\n", Letra);
}
return 0;
}
void bubble(int conta, char *Letra)
{
int i, j;
for (i=conta-1; i>0; i--)
{
int troca = 0;
for (j=0; j<i; j++)
{
if (Letra[j]>Letra[j+1])
{
int temp = Letra[j];
Letra[j] = Letra[j+1];
Letra[j+1] = temp;
troca = 1;
}
if (troca == 0)
return;
}
}
}
void select(int tamanho, char* Letra)
{
int a, b, c;
int troca;
char t;
for(a=0; a<tamanho-1; ++a)
{
troca = 0;
c = a;
t = Letra[a];
for(b=a+1; b<tamanho; ++b)
{
if(Letra[b]<t)
{
c = b;
t = Letra[b];
troca= 1;
}
}
if(troca)
{
Letra[c] = Letra[a];
Letra[a] = t;
}
}
}
void insert(int conta, char* Letra)
{
int a, b;
char t;
for(a=1; a<conta; ++a)
{
t = Letra[a];
for(b=a-1; b>=0 && t<Letra[b]; b--)
{
Letra[b+1] = Letra[b];
printf("%s\n", Letra);
}
Letra[b+1] = t;
}
}
void quicksort (int conta, char* Letra)
{
if (conta <= 1)
return;
else
{
int x = Letra[0];
int a = 1;
int b = conta-1;
do
{
while (a < conta && Letra[a] <= x) a++;
while (Letra[b] > x) b--;
if (a < b)
{ /* faz troca */
int temp = Letra[a];
Letra[a] = Letra[b];
Letra[b] = temp;
a++; b--;
}
} while (a <= b);
/* troca pivô */
Letra[0] = Letra[b];
Letra[b] = x;
/* ordena sub-vetores restantes */
quicksort(b,Letra);
quicksort(conta-a,&Letra[a]);
}
}
Pergunta
Marina_DC
Boa tarde, gostaria de saber se alguém pode me ajudar a resolver um problema, estou fazendo um trabalho da faculdade em linguagem C que precisa receber 10 letras e depois apresentar um menu onde a pessoa escolhe qual tipo de ordenação vai querer utilizar para ordenar essas letras, eu fiz o programa todo, com a funções, não sei se está certo, ele tá compilando certinho mas na execução, recebe os dados e apresenta o menu, mas após a escolha do método de ordenação ele encerra. Ahh sim, os métodos solicitados são BublleSort, Inserção Direta, Seleção Direta e QuickSort, esses modelos o professor já forneceu o algoritmo e só precisei fazer o código, mas provavelmente tem erros, enfim.
Já tentei mudar algumas coisas mas continua na mesma, será que alguém poderia me explicar o que pode ser? Aqui vai o código:
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.