Marina_DC 0 Denunciar post Postado Abril 26, 2009 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 NAO 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]); } } Compartilhar este post Link para o post Compartilhar em outros sites
Marina_DC 0 Denunciar post Postado Abril 28, 2009 Resolvido Compartilhar este post Link para o post Compartilhar em outros sites