0
I’m wanting to call the bubbleSort code but it does not appear to run and I can’t figure out the problem since it shows no error.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
/*
Ordenacao bubblesort melhorada, selection sort, insertion sort, busca binária e sequencial
*/
#define MAX 30
#define MUL 900
void bubbleSortMelhorado(int *matriz);
void bubbleSort(int matriz[][MAX]);
void leValidaInt(int *opcao, char *msg, char *msgErro);
void leValidaOpcao(char *opcao, char *msgErro);
void chamaFuncoesMenu();
void chamaMenu();
int main(int argc, char *argv[]) {
//chamaMenu();
chamaFuncoesMenu();
return 0;
}
void chamaMenu(){
printf("(1)-Bubble Sort\n");
printf("(2)-Bubble Sort Melhorado\n");
printf("(3)-Selection Sort\n");
printf("(4)-Insertion Sort\n");
printf("(5)-Pesquisa Binária\n");
printf("(6)-Pesquisa Sequencial\n");
printf("(s)- Sair\n\n");
}
void chamaFuncoesMenu(){
int matriz[MAX][MAX];
int i, j;
srand(time(NULL));
for(i=0;i<30;i++){
for(j=0;j<30;j++){
matriz[i][j]=1+(rand()%900);
}
}
char opcao=' ';
do{
chamaMenu();
leValidaOpcao(&opcao, "\nOpcao invalida!\n");
switch(opcao){
case '1':
bubbleSort(matriz);
break;
case '2':
bubbleSortMelhorado(&matriz[0][0]);
break;
case '3':
break;
case '4':
break;
case '5':
break;
case '6':
break;
case 's':
exit(0);
break;
}
getch();
system("cls");
}while(opcao!='s');
}
void leValidaOpcao(char *opcao, char *msgErro){
int flag=1;
do{
scanf(" %c", &*opcao);
*opcao=tolower(*opcao);
if((*opcao<49||*opcao>54)&&*opcao!='s'){
printf("%s", msgErro);
flag=0;
}else{
flag=1;
}
}while(!flag);
}
void bubbleSort(int matriz[][MAX]){
int i, j, k, l=0;
int tmp=0;
int opcao=0;
do{
for(i=0;i<MAX;i++){
for(j=0;j<MAX;j++){
tmp=matriz[i][j];
l=j+1;
for(k=i;k<MAX;k++){
while(l<MAX){
if(tmp<matriz[k][l]){
tmp=matriz[k][l];
matriz[k][l]=matriz[i][j];
matriz[i][j]=tmp;
}
l++;
}
l=0;
}
}
}
for(i=0;i<MAX;i++){
for(j=0;j<MAX;j++){
printf("%d\t", matriz[i][j]);
}
printf("\n");
}
getch();
leValidaInt(&opcao, "\n(1)- Ordenar novamente\n(2)-Voltar ao menu\n", "\nOpcao invalida!\n");
if(opcao==2){
getch();
return;
}
}while(opcao==1);
}
void leValidaInt(int *opcao, char *msg, char *msgErro){
int flag=1;
do{
printf("%s", msg);
scanf("%d", &*opcao);
if(*opcao<1||*opcao>2){
printf("%s", msgErro);
flag=0;
}else{
flag=1;
}
}while(!flag);
}
void bubbleSortMelhorado(int *matriz){
int i, j, troca, tmp, opcao=0;
do{
for(i=1; i<MAX;i++){
troca=0;
for(j=MAX-1;j>=1;j--){
if(matriz[j-1]<matriz[j]){
tmp=matriz[j-1];
matriz[j-1]=matriz[j];
matriz[j]=tmp;
troca=1;
}
}
if(!troca){
return;
}
}
getch();
for(i=0;i<MUL;i++){
printf("%d\t", matriz[i]);
printf("\n");
}
leValidaInt(&opcao, "\n(1)- Ordenar novamente\n(2)-Voltar ao menu\n", "\nOpcao invalida!\n");
if(opcao==2){
getch();
return;
}
}while(opcao==1);
}