I have a problem with my program and that is it won't exit properly. My aim is to have the user input "q" or "Q" for the program to exit. But instead of exiting immediately when Q is inputted. The program just continues and any further input can't be inputted.
This is my code(It is required for the user to only input Q/q to exit the program):
Code:
#include<stdio.h>#include<conio.h>
#include<stdlib.h>
void printmenu();
void bubble_sortASC(int[], int);
void bubble_sortDSC(int[], int);
void selection_sortASC(int[], int);
void selection_sortDSC(int[], int);
void insertion_sortASC(int[], int);
void insertion_sortDSC(int[], int);
void main() {
int arr[30], num, i, choice;
char order, order2, order3;
printf("\nEnter no of elements :");
scanf("%d", &num);
printf("\nEnter array elements :");
for (i = 0; i < num; i++)
scanf("%d", &arr[i]);
printmenu();
do{
scanf("%d",&choice);
switch(choice){
case 1:
printf("Input 'A' for Ascending and 'D' for Descending:");
scanf(" %c",&order);
switch(order){
case 'a':
printf("Chosen Ascending Order.\n");
bubble_sortASC(arr, num);
break;
case 'A':
printf("Chosen Ascending Order.\n");
bubble_sortASC(arr, num);
break;
case 'D':
printf("Chosen Descending Order.\n");
bubble_sortDSC(arr, num);
break;
case 'd':
printf("Chosen Descending Order.\n");
bubble_sortDSC(arr, num);
break;
}
printmenu();
break;
case 2:
printf("Input 'A' for Ascending and 'D' for Descending:");
scanf(" %c",&order2);
switch(order2){
case 'a':
printf("Chosen Ascending Order.\n");
selection_sortASC(arr, num);
break;
case 'A':
printf("Chosen Ascending Order.\n");
selection_sortASC(arr, num);
break;
case 'D':
printf("Chosen Descending Order.\n");
selection_sortDSC(arr, num);
break;
case 'd':
printf("Chosen Descending Order.\n");
selection_sortDSC(arr, num);
break;
}
printmenu();
break;
case 3:
printf("Input 'A' for Ascending and 'D' for Descending:");
scanf(" %c",&order3);
switch(order3){
case 'a':
printf("Chosen Ascending Order.\n");
insertion_sortASC(arr, num);
break;
case 'A':
printf("Chosen Ascending Order.\n");
insertion_sortASC(arr, num);
break;
case 'D':
printf("Chosen Descending Order.\n");
insertion_sortDSC(arr, num);
break;
case 'd':
printf("Chosen Descending Order.\n");
insertion_sortDSC(arr, num);
break;
}
printmenu();
/* default:
printf("Something went wrong. Your input may have been invalid.");
break; */
}
}while(choice != 'Q' && choice != 'q');
getch();
}