2016-04-12 83 views
1

我是一名初學者,正在上一門編程課,而且我的任務有問題。我將製作一個可以存儲和分類數據的程序(我選擇了遊戲),並且一切似乎都會順利。除了當我選擇輸入遊戲時,以及稍後顯示我輸入的遊戲時,列表中不會有任何內容。有什麼我失蹤?數據沒有存儲顯示?

#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <string> 
#include <sstream> 
using namespace std; 

struct VidyaGames { 
string Title; 
string Date; 
string Developer; 
}; 

void getGames(VidyaGames array[], int &k); 
void displayGames(VidyaGames array[], int &k); 
void deleteGames(VidyaGames array[], int &k); 
void sortGames(VidyaGames array[], int &k); 



const int MAX = 150; 

string Title; 
string Date; 
string Developer; 

int main() 
{ 
char choice; 
VidyaGames array[MAX]; 
bool kek = true; 
int k = 0; 

do 

{ 

    cout << "Welcome to the 'Super Incredible Amazing Game Storage-o-Tron 5000(and one)." << endl; 
    cout << " " << endl; 
    cout << "Please select which task you would like to perform by typing in the " << endl; 
    cout << "corresponding letter in the bracket: " << endl; 
    cout << " " << endl; 
    cout << "[I]nput a game into the list." << endl; 
    cout << "[D]isplay the games you have stored." << endl; 
    cout << "[S]ort the games you have stored." << endl; 
    cout << "[R]emove a game from the list." << endl; 
    cout << "[Q]uit the program." << endl; 
    cin >> choice; 

    switch (choice) 
    { 
     case 'I': getGames(array, k); break; 
     case 'D': displayGames(array, k); break; 
     case 'S': deleteGames(array, k); break; 
     case 'R': deleteGames(array, k); break; 
     case 'Q': kek = false; break; 
     default : cout << "Hey. Remember when I gave you the specific  options you were allowed to choose?" << endl; 
        cout << "Maybe enter one of those?" << endl; 
        cout << " " << endl; 
     } 
     } 
while (kek); 
cout << "You have killed me." << endl; 

} 
void getGames(VidyaGames array[], int &k) 
{ 
system("cls"); 
VidyaGames tmp; 
char lel[100]; 
cout << "Enter the title of your game: " << endl; 
getline (cin, Title); 
cout << "Enter the date your game was published: (Example: March 15th, 2014)" << endl; 
getline (cin, Date); 
cout << "Enter the developer of your game: " << endl; 
getline (cin, Developer); 

} 

void displayGames(VidyaGames array[], int &k) 
{ 
system ("cls"); 
if (k==0) 
    cout << "There is literally nothing in this list, as you have made the mental choice to not put anything in it yet." << endl; 


else if (k > 0) { 
for (int i=0; i < 0; i++) 
{ 
    cout << "Title: " << array[i].Title << endl; 
    cout << "Release Date: " << array[i].Date << endl; 
    cout << "Developer: " << array[i].Developer << endl; 
    } 
} 
} 


    void deleteGames(VidyaGames array[], int &k) { 


system("cls"); 
char deleteChoice; 
if (k==0) 
    cout << "There is literally nothing in this list, as you have made the mental choice to not put anything in it yet." << endl; 
else { 
    cout << "Please type the name of the game you would like to delete: " << endl; 
    cin >> deleteChoice; 

} 
} 

    void sortGames(VidyaGames array[], int &k) 
    { 

    } 
+2

你需要真正填充陣列。你在getGames()中做的所有事情都是讀入全局字符串的輸入。 – Pemdas

回答

1

你忘記在你的數組中設置值。

我加4線的功能getGames:

array->Title = Title; 
array->Date = Date; 
array->Developer = Developer; 
k++; 

和改變功能displayGames一行:

for (int i=0; i < k; i++) 

這是最終代碼:

// test_3.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 


#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <string> 
#include <sstream> 
using namespace std; 

struct VidyaGames { 
    string Title; 
    string Date; 
    string Developer; 
}; 

void getGames(VidyaGames array[], int &k); 
void displayGames(VidyaGames array[], int &k); 
void deleteGames(VidyaGames array[], int &k); 
void sortGames(VidyaGames array[], int &k); 



const int MAX = 150; 

string Title; 
string Date; 
string Developer; 

int main() 
{ 
    char choice; 
    VidyaGames array[MAX]; 
    bool kek = true; 
    int k = 0; 

    do 

    { 

     cout << "Welcome to the 'Super Incredible Amazing Game Storage-o-Tron 5000(and one)." << endl; 
     cout << " " << endl; 
     cout << "Please select which task you would like to perform by typing in the " << endl; 
     cout << "corresponding letter in the bracket: " << endl; 
     cout << " " << endl; 
     cout << "[I]nput a game into the list." << endl; 
     cout << "[D]isplay the games you have stored." << endl; 
     cout << "[S]ort the games you have stored." << endl; 
     cout << "[R]emove a game from the list." << endl; 
     cout << "[Q]uit the program." << endl; 
     cin >> choice; 

     switch (choice) 
     { 
     case 'I': getGames(array, k); break; 
     case 'D': displayGames(array, k); break; 
     case 'S': deleteGames(array, k); break; 
     case 'R': deleteGames(array, k); break; 
     case 'Q': kek = false; break; 
     default : cout << "Hey. Remember when I gave you the specific  options you were allowed to choose?" << endl; 
      cout << "Maybe enter one of those?" << endl; 
      cout << " " << endl; 
     } 
    } 
    while (kek); 
    cout << "You have killed me." << endl; 

} 
void getGames(VidyaGames array[], int &k) 
{ 
    system("cls"); 
    VidyaGames tmp; 
    char lel[100]; 
    cout << "Enter the title of your game: " << endl; 
    getline (cin, Title); 
    cout << "Enter the date your game was published: (Example: March 15th, 2014)" << endl; 
    getline (cin, Date); 
    cout << "Enter the developer of your game: " << endl; 
    getline (cin, Developer); 

    array->Title = Title; 
    array->Date = Date; 
    array->Developer = Developer; 
    k++; 


} 

void displayGames(VidyaGames array[], int &k) 
{ 
    system ("cls"); 
    if (k==0) 
     cout << "There is literally nothing in this list, as you have made the mental choice to not put anything in it yet." << endl; 


    else if (k > 0) { 
     for (int i=0; i < k; i++) 
     { 
      cout << "Title: " << array[i].Title << endl; 
      cout << "Release Date: " << array[i].Date << endl; 
      cout << "Developer: " << array[i].Developer << endl; 
     } 
    } 
} 


void deleteGames(VidyaGames array[], int &k) { 


    system("cls"); 
    char deleteChoice; 
    if (k==0) 
     cout << "There is literally nothing in this list, as you have made the mental choice to not put anything in it yet." << endl; 
    else { 
     cout << "Please type the name of the game you would like to delete: " << endl; 
     cin >> deleteChoice; 

    } 
} 

void sortGames(VidyaGames array[], int &k) 
{ 

}