0
#include <iostream> 
#include <string>
#include <math.h> 
#include <fstream>
using namespace std;

int main()
{
    int i;
    string information[10][7];

    //This bit should check if theres anything stored currently.
    cout << "\nWhich Slot would you like to store the informaton in ?(1-10)";
    cin >> i;
    i--;

    //input
    for (int j=0;j<7;j++)
    {
        switch(j+1)
        {
        case 1:
            cout << "\nFirst Name: ";
            break;
        case 2:
            cout << "\nLast Name: ";
            break;
        case 3:
            cout << "\nAge: ";
            break;
        case 4:
            cout << "\nEmail: ";
            break;
        case 5:
            cout << "\nDoor Number: ";
            break;
        case 6:
            cout << "\nRoad Name: ";
            break;
        case 7:
            cout << "\nPost Code: ";
            break;
        default:
            ;
        }

        cin >> information[i][j];
    }

    // output
    for (int j=0;j<7;j++)
    {   
        switch(j+1)
        {
        case 1:
            cout << "\nFirst Name: ";
            break;
        case 2:
            cout << "\nLast Name: ";
            break;
        case 3:
            cout << "\nAge: ";
            break;
        case 4:
            cout << "\nEmail: ";
            break;
        case 5:
            cout << "\nDoor Number: ";
            break;
        case 6:
            cout << "\nRoad Name: ";
            break;
        case 7:
            cout << "\nPost Code: ";
            break;
        default:
            ;
        }       

        cout << information[i][j];
    }
    system("PAUSE");

    return 0;
}

基本的に問題は、ユーザーが選択した配列に既に情報が格納されているかどうかを確認するために、このコードをどうするかということです。どうやって確認するの?また、たとえば文字列を使用した場合でも、年齢を入力してユーザーの詳細を検索する方法を知りたいのですが、それは可能ですか、それとも int を使用する必要がありますか?

4

3 に答える 3

1

bool 配列を使用するとオーバーヘッドが発生する可能性がありますが、削除も行う場合に役立つ場合があります。

bool stored[10] = {false};

/* ... */

do {
  cout << "\nWhich Slot would you like to store the informaton in ?(1-10)";
  cin >> i;
  i--;
} while (stored[i]);

stored[i] = true;

もちろん、文字列用の 7 つのメンバーとこの情報用の 1 つのブール値を持つクラス/構造を定義できます。

于 2012-12-28T00:45:56.493 に答える
0

コードが配列に戻ったように見えるという事実から始めましょう。7 文字の長さのフィールドが 10 個あります。入れ替わっても、名前やメールアドレスが10文字というのはかなり短いです。私の名字は 9 文字ですが、それより長い名前を見たことがあります。

そして最後にあなたの質問です。perreal が提案する方法を使用できます。しかし、私はおそらく単純にそうするでしょうif (string[i][0] == "") ... stuff to do when it's empty ...;

于 2012-12-28T00:51:00.520 に答える
0

string::length関数 ( information[1].length())を使用するのはどうですか? 0 を返す場合は、初期化されていません。

比較して何かを見つけるだけです。

于 2012-12-28T01:57:37.757 に答える