Load-Funktionen, die mit einer case-Anweisung switch
Ich Schreibe ein Programm in C++ und ich habe in der Lage gewesen, um es zu kompilieren und zu laufen beginnen, wie immer, wenn ich wählen Sie eine option in der jeweiligen Funktion soll aufgerufen werden durch eine switch-case-Anweisung nicht aufgerufen wird. Bin ich etwas fehlt in meinem code?
//The following program framework is given.
//Add the programming logic to complete the assignment.
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
//function prototypes should be placed here
//Main must be the first function in the program. Write other functions after it.
int main()
{
char cInput;
string strFileName;
vector<string> vecStudent;
cout<<"Please enter the data file name (with location): ";
cin >> strFileName;
//call a function to read the content of the input file into
//the vector vecStudent
while (true)
{
cout<<"----------------------------------------"<<endl;
cout<<" Student Record - Main Menu "<<endl;
cout<<"----------------------------------------"<<endl;
cout<<" Enter 1 to display ALL students"<<endl;
cout<<" Enter 2 to add a student name"<<endl;
cout<<" Enter 3 to delete a student name"<<endl;
cout<<" Enter 4 to SAVE and quit the program"<<endl;
cout<<"----------------------------------------"<<endl;
cout<<"Enter menu option: ";
cin>>cInput;
switch (cInput)
{
case '1':
//call function display names
void displaynames();
break;
case '2':
void addname();
//call a function add name
break;
case '3':
void deletename();
//call function delete names
break;
case '4':
void saveandquit();
//call function save and quit
return 0;
if( cInput != 1,2,3,4)
cout<<"invalid input"<<endl;
break;
}
}
return 0;
}
int displaynames()
{
ifstream inFile;
ofstream outFile;
string strFileName;
string strFName,strLName;
vector<string> vecStudent;
char line[80];
//open input file
inFile.open(strFileName.c_str());
if (inFile.fail())
{
cout << " Input file error!" << endl;
return -1;
}
while (inFile>>strFName>>strLName)
vecStudent.push_back(strFName+ " "+strLName);
inFile.close();
//display the content of the vector
for(int i =0; i< vecStudent.size();i++)
cout<<vecStudent[i]<<endl;
return 0;
}
int addname()
{
ifstream inFile;
ofstream outFile;
string strFileName;
string strFName,strLName;
vector<string> vecStudent;
char line[80];
//add a new name
cout << endl<< " Enter a new name( First and Last Name):";
cin>>strFName>>strLName;
vecStudent.push_back(strFName+ " "+strLName);
//open output file for writing
outFile.open(strFileName.c_str());
if ( outFile.fail())
{
cout<<" Output file error! Student was not added"<<endl;
return -1;
}
//display the content of the vector
for(int i=0; i<vecStudent.size(); i++)
cout<< vecStudent[i]<<endl;
for(int i=0; i<vecStudent.size();i++)
outFile<<vecStudent[i]<<endl;
outFile.close();
return 0;
}
int saveandquit()
{
ifstream inFile;
ofstream outFile;
string strFileName;
string strFName,strLName;
vector<string> vecStudent;
int i=0;
char line[80];
// open output file for writing
outFile.open(strFileName.c_str());
if ( outFile.fail())
{
cout<<" Output file error!"<<endl;
return -1;
}
//display the content of the vector
for(int i=0; i<vecStudent.size(); i++)
cout<< vecStudent[i]<<endl;
for(int i=0; i<vecStudent.size();i++)
outFile<<vecStudent[i]<<endl;
outFile.close();
cout << " file saved. enter -1 to quit";
cin>> i;
if( i=-1)
return 0;
}
int deletename()
{
ifstream inFile;
ofstream outFile;
string strFileName;
string strFName,strLName;
vector<string> vecStudent;
int namepos = 0;
char line[80];
inFile.open(strFileName.c_str());
if (inFile.fail())
cout <<"Input file error!"<<endl;
//read the names from the file into the vector
while (inFile >> strFName >> strLName)
vecStudent.push_back(strFName+" "+strLName);
inFile.close();
cout <<"\nEnter the name to be deleted (First name and Last name): ";
cin >>strFName >>strLName;
int i=0, pos=-1;
int size = vecStudent.size();
bool found=false;
//use a linear search to find the name in the vecotor of names
while (i < size && !found)
{
if (vecStudent [i] == strFName+" "+strLName)
{
found = true;
cout <<"\nthat name is in the "<<(pos + 1) <<" position in the list\n";
cout <<"Please enter the position in list\n";
cin>> pos;
//use an iterator to delete name from vecStudent. vector.erase requires an iterator. used a while loop to find the name and make sure it was in the
//vector of strings. then the loop displays the position in the vector that the string is. the program asks the user to enter the number position of the name
//from there the user enters the name and the program uses a for loop to find the position and the built in vector.erase to remove the name from the list.
for(int i=0; i ==pos; i++)
{
if(i == pos)
{
vecStudent.erase (vecStudent.begin());
}
}
}
}
return 0;
}
InformationsquelleAutor user1319815 | 2012-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie eigentlich nur deklarieren Funktionen anstelle von aufrufen.
Erklärt eine Funktion.
Anrufe eine Funktion.
Sie werden vor
main()
und call Sie Sie in Ihremswitch
-case
.InformationsquelleAutor Alok Save
Sind Sie aufrufen der Funktionen falsch. Es sollte
Um eine Funktion aufzurufen, müssen Sie nur den Namen der Funktion und die Parameter der Funktion (in diesem Fall, scheint keiner zu sein. Der Weg, den Sie derzeit haben, es ist die Deklaration einer Funktion als eine Funktion aufrufen.
Er erwähnt in seinem code-Kommentare, die Erklärungen sind über Haupt, er scheint nur verwechselt werden, wie Sie zum aufrufen der Funktionen.
Diese Kommentare Aussehen beschränken. Ich bin sicher, wenn er wüsste, was ein Prototyp war, hätte er nicht den Fehler gemacht, die er Tat.
InformationsquelleAutor josephthomas
In Ihrem code-block (switch), Sie ruft nicht alle Funktionen, sondern nur eine Deklaration.
Verschieben (nach vorne) Erklärungen (
void displaynames();
) auf die oberste Ebene Ihrer Quell-Datei (wie man das definieren der Funktionen, nachdem Sie Sie), und dann rufen Sie über die normale Funktion syntax Anwendung (displaynames();
).Vom irgendwo im Netz:
InformationsquelleAutor modelnine