2013-04-15 2 views
-4

У меня проблема с моим меню. Я получаю номер от пользователя, но всякий раз, когда я получаю номер, он просто делает вариант, независимо от того, что я делаю. Что я делаю не так?if/else if/else menu issue c

int main() 
{ 
int array[SIZE]; 
int size = readNum(); 
fillArray(array, size); 
char option = 'y'; 
do 
{ 
    int num = menu(); 
    if(num == 1) 
     fillArray(array, size); 
    else if(num == 2) 
    { 
     int newSize = readNum(); 
     fillArray(array, newSize); 
    } 
    else 
    { 
     sortArray(array); 
    } 
}while(option == 'y'); 


return 0; 
}//end main 


int menu() 
{ 
printf("1)Change the values of the array\n2)Change the size of the array and the values in the array\n3)Find and display the mean and median\nChoice: "); 
int menuChoice = scanf("%i", &menuChoice); 
return menuChoice; 
} 
+0

Без просмотра 'menu()' как нам узнать, что вы сделали неправильно? – StoryTeller

+0

Что такое код для 'menu()'? Вероятно, это проблема. –

+0

Потому что 'menu' возвращает только' 1'? Пожалуйста, покажите нам функцию 'menu', иначе ответить невозможно. –

ответ

6

scanf функция возвращает номер или успешное превращение он сделал, а не фактическое преобразованное значение. Кажется, что вам всегда удается прочитать вашу ценность, поэтому вернет 1 за одно успешное преобразование.

Чтобы вернуть фактический выбор пользователя, не назначайте на него с вызовом:

int menuChoice: 

scanf("%i", &menuChoice); 

return menuChoice; 
+0

ОК. как мне изменить это, чтобы вернуть фактический выбор, который они хотят – kevorski

+1

@kevorski использовать 'int menuChoice; scanf ("% i", & menuChoice); 'вместо' int menuChoice = scanf ("% i", & menuChoice); ' – MOHAMED

+0

Удивительно, спасибо за помощь. @MOHAMED – kevorski

6
int menuChoice = scanf("%i", &menuChoice); 

scanf возвращает количество успешных преобразований, так что если сканирование успешно, вы перезапись преобразованное значение с 1.