dimanche 15 février 2015

Code generates duplicate number and does not start element list at 0

Once I load the code the element list starts at 703 and not 0. Also my random number generator does not output different values, and the last element contains a 0 and not a random number. Can someone please help?



main() {
//Declare Variables Here
int theNumber;
int choice, temp;
int i = 0, count = 0;
int randomIndex;
int unSortedNumbers[SIZE] = {0};
int sortedNumbers[SIZE] = {0};

srand((unsigned)time(NULL)); //seeds random number

for(i = 0; i < 1000; i++){ //for loop populates array with 1000 random numbers
theNumber = LB + rand() % + (UB - LB + 1);
unSortedNumbers[i] = theNumber;
count++;
} // end for

for(i = 0; i < 1000; i++) { //shuffles array to avoid repetition
temp = unSortedNumbers[i];
randomIndex = rand() % 1000;
unSortedNumbers[i] = unSortedNumbers[randomIndex];
unSortedNumbers[randomIndex] = temp;
} // end for

getMenu();
do{
choice = getUserChoice();
switch(choice){
case 1:
linearSearch(unSortedNumbers, i, count);
PAUSE;
break;
case 2:
sortArray(unSortedNumbers, sortedNumbers);
binarySearch(sortedNumbers, i, count);
PAUSE;
break;
case 3:
printf("Thanks for playing!\n\n");
PAUSE;
break;
default:
printf("Invalid Selection, try again. \n\n");
PAUSE;
break;
} // end switch
}while(choice != 3);
} // end main

void binarySearch(int sortedNumbers[], int i, int count){
int searchSorted = 0;

printf("What number would you like to search for?: ");
scanf("%i", &searchSorted);

if(searchSorted == sortedNumbers[i])
printf("Number %i was found. \n", searchSorted);

else
printf("Number %i was not found. \n", searchSorted);

FLUSH;
}// end binarySearch

void displayArray(int s[], char m[]) {
int i = 0;
printf("%s: \n", m);
for(i = 0; i < 1000; i++)
printf("Element %2i = %2i. \n", i+1, s[i]);
printf("\n");
} // end displayArray

void doTheSwitch(int unSortedNumbers[], int i, char *switchMade){
int temp;
temp = unSortedNumbers[i];
unSortedNumbers[i] = unSortedNumbers[i + 1];
unSortedNumbers[i + 1] = temp;
*switchMade = 'Y'; //switch was made
} //end doTheSwitch

void getMenu() {
CLS;
printf("*******************\n");
printf("Sorting & Searching\n");
printf("*******************\n");
printf("1. Linear Search. \n"); //searches in unSorted array
printf("2. Binary Search. \n"); //searches in sorted array
printf("3. Quit. \n\n");
printf("Enter your selection here: ");
return;
} // end getMenu

int getUserChoice(){
int result;
getMenu();
scanf("%i", &result);
FLUSH;
return result;
}// end getUserChoice

void linearSearch(int unSortedNumbers[], int i, int count) {
int searchNumber = 0;

printf("What number would you like to find? \n");
scanf("%i", &searchNumber);

if(searchNumber == unSortedNumbers[i])
printf("Number %i was found.\n", searchNumber);

else
printf("Number %i was not found.\n\n", searchNumber);

FLUSH;
} // end linearSearch

void sortArray(int unSortedNumbers[], int sortedNumbers[]){
char switchMade = 'N';
int i;
int bottom = SIZE - 1;
displayArray(unSortedNumbers, "The Unsorted List");

do{
switchMade ='N'; //no switch
for(i = 0; i < bottom; i++) //start at 0, go to bottom of array, increment by 1
{
if(unSortedNumbers[i] > unSortedNumbers[i + 1]) {//if the numeric value of the character is greater than the next character
doTheSwitch(unSortedNumbers, i, &switchMade); //switch the characters
sortedNumbers[i] = unSortedNumbers[i];
} // end if
}//end for
bottom--;
}while(switchMade == 'Y');

displayArray(sortedNumbers, "The Sorted List");
PAUSE;
}//end sortArray

Aucun commentaire:

Enregistrer un commentaire