0

我正在用 C++ 编写一个数据结构程序,但令人惊讶的是,该结构并不是我悲伤的原因。在我下面发布的程序中,我有两个 else if 语句即使满足它们的条件也不会显示在我的输出中。他们是

else if (response == n)
    cout << "Thank you, goodbye" << endl;

else if (response ==n)
    cout << "\n" << endl

这就是全部

// array of structures
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

#define NUM_MOVIES 6
//structure
struct movies_iit{
    string title;
    int year;
} films [NUM_MOVIES];

//global variables
char title [20];
int y = 1, n = 0, year;
string search;

//function 1
void sort_on_title(movies_iit films[], int n)
{
    //Local struct variable used to swap records
    movies_iit temp;    

    for(int i=0; i<n-1; i++)
    {
        for(int i=0; i<n-1; i++)
        {
            /*If s[i].title is later in alphabet than
            s[i+1].title, swap the two records*/
            if(films[i].title>films[i+1].title)
            {
                temp = films[i];
                films[i] = films[i+1];
                films[i+1] = temp;
            }  
        }
    }
}
//end function 1
//function query1 prototype
void query1 (movies_iit movie);
//function query2 prototype
void query2 (movies_iit movie);
//function 2 prototype
void printmovie (movies_iit movie);
//beginning of main
int main ()
{
    string mystr;
    int n;
    char response;

    for (n=0; n<NUM_MOVIES; n++)
    {
        cout << "Enter title: ";
        getline (cin,films[n].title);
        cout << "Enter year: ";
        getline (cin,mystr);
        stringstream(mystr) >> films[n].year;
    }
    //sort records, function 1 call
    sort_on_title(films, NUM_MOVIES);
    cout << "\nYou have entered these movies:\n";
    for (n=0; n<NUM_MOVIES; n++) 
        printmovie (films[n]);  //function 2 call
    //Query 1
    cout << "Perform an alphabetical search? (y/n)" << endl;
    cin >> response;

    if (response == y)
    {
        cout << "Please enter title" << endl;
        cin >> title;
        for (n=0; n<NUM_MOVIES; n++)
        {
            query1 (films[n]);
            response == n;
        }
    }
    else if (response == n)
        cout << "\n" << endl;
    else 
        cout << "invalid entry" << endl;
    //Query 2
    cout << "Perform a chronological search? (y/n)" << endl;
    cin >> response;
    //greater than
    if (response == y)
    {
        cout << "greater than what year?" << endl;
        cin >> year;
        for (n=0; n<NUM_MOVIES; n++)
        {
            query2 (films[n]);
        }
    }
    else if (response == n)
        cout << "Thank you, goodbye." << endl;
    else
        cout << "invalid entry" << endl;
    system("pause");
    return 0;
}
//end of  main
//function 2 definition
void printmovie (movies_iit movie)
{
    cout << movie.title;
    cout << " (" << movie.year << ")\n";
}

//function query1 defintion
void query1 (movies_iit movie)
{
    if (movie.title == title)
    {
        cout << " >> " << movie.title;
        cout << " (" << movie.year << ")\n";
    }
    else
    {
        cout << movie.title;
        cout << " (" << movie.year << ")\n";
    }
}

//function query2 definition
void query2 (movies_iit movie)
{
    if (movie.year >= year)
    {
        cout << movie.title;
        cout << " (" << movie.year << ")\n";
    }
}

这个想法是制作一种电影的迷你数据库。除了 else if 语句似乎被忽略之外,该代码实际上运行良好。谁能解释为什么会这样?

4

1 回答 1

0

response是一种char类型。将'y''n'放在单引号内:

if (response == 'y')
...
...
else if (response == 'n')
    cout << "\n" << endl;
于 2013-11-09T04:51:31.110 回答