所以,我一直在做这个问题: Q. 编写一个程序,让用户跟踪他们最后一次与每个朋友交谈的时间。用户应该能够添加新朋友(想多少就加多少!)并存储他们上次与每个朋友交谈的天数。让用户也更新这个值。
我已经创建了指向指针 user_friends 的指针来存储二维字符串数组,用于存储朋友的姓名和编号。自上次谈话以来的天数。这是一个 3x2 数组,最初用于 3 个朋友。2 列存储朋友的姓名和编号。天数(都在字符串类型指针数组中)。
我的主要有这个:
int tsize = 3;
string **user_friends = new string*[tsize];
for ( int i = 0; i < tsize; i++ )
{
user_friends[i] = new string[2];
}
这是在数组中添加好友的 addFriends 函数。
void addFriends( string **user_f , int tsize )
{
static int next_friend = 0;
int index = 0;
string days;
if ( next_friend >= tsize )
{
cout << "\nGrowing array now...";
user_f = growArray ( user_f, tsize );
}
cout << "\n\nEnter index : ";
cin >> index;
cin.ignore();
cout << "\nEnter friend's name : ";
getline( cin, user_f[index][0] );
cout << "\nEnter days since last talked with this friend : ";
getline (cin, days);
user_f[index][1] = days;
next_friend++;
}
然后有这个 growArray 函数来扩展分配给字符串数组的内存:
string **growArray ( string **ptr, int cur_size )
{
string **new_ptr = new string*[ cur_size*2 ];
for ( int i = 0; i < cur_size; ++i )
{
new_ptr[i] = new string[2];
}
for( int i = 0; i < cur_size; ++i )
{
new_ptr[i] = ptr[i];
}
for ( int i = 0; i < cur_size; ++i )
{
for ( int j = 0; j < 2; ++j)
{
new_ptr[i][j] = ptr[i][j];
}
}
for ( int i = 0; i < cur_size; ++i )
{
delete ptr[i];
}
delete[] ptr;
return new_ptr;
}
然后这个显示函数打印数组。
void displayFriends( string **user_f, int tsize )
{
for ( int i = 0; i < tsize; ++i )
{
for( int j = 0; j < 2; ++j )
{
cout << user_f[i][j] << "\t";
}
cout << endl;
}
}
现在,当我输入最多 3 个朋友的详细信息时,程序运行良好。当我开始输入朋友 4 的详细信息时(即,当我输入 index as 3 时)程序崩溃了。growArray 函数有什么问题吗?
还有,显示功能好吗?