0

私が書こうとしているプログラムは次のとおりです。ユーザーがそれぞれの友達と最後に話した時間を追跡できるようにするプログラムを作成します。ユーザーは、新しい友達を (好きなだけ) 追加し、各友達と最後に話した日数を保存できる必要があります。ユーザーがこの値を更新できるようにします (ただし、負の値などの偽の数値を入力させないでください)。友達の名前で、友達と話してからどのくらい経ったかでソートされたリストを表示できるようにします。

以下は、これまでに書いたコードです。どのように進行するかはよくわかりません。

#include <iostream>
#include <string>

using namespace std;

struct User {
    string name;
    int noDays;
};

int *growArray (int * friends, int * size) {
    *size *= 2;
    int *new_friends = new int[*size];
    for (int i=0; i < *size; i++) {
        new_friends[i] = friends[i];
    }
    delete [] friends;
    return new_friends;
}

int main()
{

    User user;
    int control;
    int next_element = 0;
    int size = 10;
    int *friends = new int[size];

        if (size == next_element+1) {
            friends = growArray(friends, &size);
        }

        for (int i = 0; i < size; i++) {
        cout << "Please enter your friends name" << endl;
        cin >> user.name;
        cout << "Please enter no of days you last spoke to them" << endl;
        cin >> user.noDays;
        next_element++;
        }


    return 0;
}
4

1 に答える 1

0

上記のコードを書き直したので、参照できるかもしれません (//変更された場合):

#include <iostream>
#include <string>

using namespace std;

struct User {
    string name;
    int noDays;
};
//Note: Return Types
User *growArray (User * friends, int * size) {
    //cout << "into growArray()\n";
    User *new_friends = new User[*size * 2];
    for (int i=0; i < *size; i++) {
        new_friends[i].name = friends[i].name;
        new_friends[i].noDays = friends[i].noDays;
    }
    *size *= 2; //Place here
    delete [] friends;
    return new_friends;
}

int main()
{
    int size = 2;
    int next_element = 0;
    //struct array
    User *friends = new User[size]; 
    //use while instead of for
    while(1)
    {
        cout << "Please enter your friend's name (or q to exit):" << endl;
        cin >> friends[next_element].name;
        if (friends[next_element].name == "q")
        {
            break;
        }
        cout << "Please enter no of days you last spoke to them:" << endl;
        cin >> friends[next_element].noDays;
        if (size == ++next_element)
        {   
            //Return Types
            friends = growArray(friends, &size);
        }
    }
    //print result
    cout << "Do you want to print this list? (Y/N)";
    string choice;
    if (((cin >> choice) == "Y") || choice =="y")
    {
        cout << "List:\n";
        for (int i = 0; i < next_element; i++)
        {
            cout << friends[i].name << '\t' << friends[i].noDays << '\n';
        }   
    }
    //delete
    delete [] friends;
    return 0;   
}
于 2015-03-16T03:17:57.870 に答える