2016-08-31 3 views
-4

listSelectedDVD() должен отображать деталь, когда я вхожу в заголовок. но в моем коде Im смог ввести заголовок, но не отображал details.unable для аргумента pass-in.Вызов функции void в инструкции IF C++

#include <iostream> 
#include <string> 

using namespace std; 

struct myStock // declare myStock fields 
{ 
    string title; 
    double price; 
    int stockLevel; 
    bool award; 
};//end of strcut myStock 

myStock list[5]; 

void initialize(); 
void listSelectedDVD(string); 

int main() 
{ 
    int choice; 
    string enterTitle; 

    cout << "****** MAIN MENU ******" << endl; 
    cout << "1. List deatils of selected title" << endl; 
    cout << "4. Exit" << endl; 
    cout << endl; 
    cout << "enter your choice: " << endl; 
    cin >> choice; 

if (choice == 1) 
    {   
     cout << "Enter a Title: " << endl; 
     cin >> enterTitle; 
     listSelectedDVD(enterTitle); 
    } 
    else if (choice == 4) 
    { 
     return 0; 
    } 
    system("PAUSE");  
}//end of main 

Вот моя пустота Функция ничтожной Initialize() & ничтожной listSelectedDVD (строка enterTitle);

void initialize() 
{ 
    list[0].title = "Ilo Ilo"; 
    list[0].price = 35.55; 
    list[0].stockLevel = 15; 
    list[0].award = true; 

    list[1].title = "Money Just Enough"; 
    list[1].price = 10.35; 
    list[1].stockLevel = 0; 
    list[1].award = false; 
} 

void listSelectedDVD(string enterTitle) 
{ 
for(int i=0;i<5;i++) 
    { 
     if (list[i].title.compare(enterTitle) == 0) //list[i].title == enterTitle 
     { 
      cout << "Title : " << list[i].title << endl; 
      cout << "Price : " << list[i].price << endl; 
      cout << "Stock : " << list[i].stockLevel << endl; 
      cout << "Award : " << list[i].award << endl; 
     } 
     else { 
      out<<"Invalid Title"<<endl; 
      //call back the main menu function// 
     } 
    } 
} 
+0

Похоже, вам нужно будет предоставить последовательность событий. На данный момент ответ может быть простым, что название не существует. – ChiefTwoPencils

+0

Можете ли вы предоставить, какой результат вы получаете или это просто пусто? Также вы уверены, что 'enterTitle' является либо' Ilo Ilo', либо 'Money Just Enough'? – LP496

+0

Конечно, заголовок с пробелами по имени не найден при использовании 'cin >> enterTitle;'. Используйте отладчик для такого рода проблем, а не stackoverflow. – grek40

ответ

0

Прежде чем вызывать списокSelectedDVD(), вы должны сначала вызвать initialize().

int main() 
{ 
    initialize(); 

    //rest of your code 

}//end of main 
0

Основная проблема в том, когда вы берете на пользовательский ввод на этой линии «CIN >> enterTitle;», он получает первое слово, которое вы набранный отделенный пробелом. Поэтому, когда вы набираете

деньги просто достаточно

то значение enterTitle просто становится «Деньги».

Именно по этой причине ваша программа не может найти соответствия. («Деньги» - это не то же самое, что «Money Just Enough»)

Один из способов решения этой проблемы - изменить код, чтобы вы могли получить целую строку в виде строкового ввода.

+0

И как предложили @ user5478656, вы должны вызвать функцию инициализации внутри основной функции. Вы определили эту функцию и предоставили ее прототип, но вы никогда не называли его нигде в своем коде. –

Смежные вопросы