【发布时间】:2021-01-07 21:17:30
【问题描述】:
对于我的编程项目基础,我必须编写一个小应用程序,允许用户学习波兰语和英语的单词和短语。我项目的第一个函数将 100 个波兰语和英语单词加载到标准结构数组中。然后,对于负责我的应用程序的两种模式之一的功能(第一种是免费学习,另一种是测验),我想创建一个较小的动态结构数组,该数组将具有与用户输入一样多的元素,例如,如果您输入 10,此函数将创建一个 10 元素的动态结构数组。然后它会要求您翻译给定的单词/短语,直到您给出正确的答案。我被困在如何创建结构的动态数组上。由于某些难以想象的原因,我不允许使用非标准库(禁止使用 std::vector 和 std::array)。到目前为止,这是我的代码
void WczytywanieWyrazen(Wyrazenie Polskie[100], Wyrazenie Angielskie[100])
{
int i = 0, j = 0;
fstream plik1("PolskieSlowka.txt", ios::in);
fstream plik2("AngielskieSlowka.txt", ios::in);
string Fraza;
string Phrase;
for (int i = 0; i < 100; i++)
{
Polskie[i].wartosc = 0;
Angielskie[i].wartosc = 0;
}
while (getline(plik1, Fraza))
{
Polskie[i].zwrot = Fraza;
i++;
}
while (getline(plik2, Phrase))
{
Angielskie[j].zwrot = Phrase;
j++;
}
plik1.close();
plik2.close();
}
void TrybNauki()
{
srand(time(NULL));
int m;
cout << "Please enter how many words would you like to practice (1-100): ";
cin >> m;
Wyrazenie* Fiszki = new Wyrazenie[m];
}
这些方法中哪一种是正确的? :
Wyrazenie* Fiszki[m];
for (int i = 0; i < 100; i++)
{
Fiszki[i] = new Wyrazenie;
}
/////////////////////
Wyrazenie* Fiszki = new Wyrazenie[m];
【问题讨论】:
-
如果你想要
Wyrazenie的动态数组,那么第二种方法是正确的。第一种方法给出了一个指向(动态分配的)Wyrazenie的静态指针数组。 -
@Beta 谢谢,函数最后我只需要写
delete Wyrazenie[]对吧? -
是的,没错。