该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用



程序将.csv文件中的一系列单词放入数组中,然后随机生成句子。但它不起作用。

问题是在第一个版本中,它不会在屏幕上打印单词序列,尽管它为数组提供了坐标

#include <iostream>
#include <fstream>
#include <cstdlib>    
#include <ctime>
using namespace std;
const int m = 60454; 
int main(){
long n = 0,  numero, i, x;
string firstname, parole[m];
ifstream ip("data.csv");
while(ip.good()){
getline(ip,firstname,',');
parole[n] = firstname;

n++;
}
cout << "How long do you want the sentence? ";
cin >> x;
system("cls");
srand(time(NULL));
for(i = 0; i < x; i++);{
numero = rand()%(m);
cout << parole[numero] << " ";
}
ip.close();
}

这很奇怪,因为打印它们的这个版本都可以工作:

int main(({

long n = 0, i, x, numero;
string firstname, parole[m];
ifstream ip("data.csv");
while(ip.good()){
getline(ip,firstname,',');
parole[n] = firstname;
n++;
}
//cout << "quanto lunga vuoi la frase? ";
//cin >> x;
system("cls");
srand(time(NULL));
for(i = 0; i < m; i++);{
//numero = rand()%(m);
cout << parole[i] << " ";
}
ip.close();
}

你创建一个包含大量元素的数组 - 60454。 在第一种情况下,你会得到从 0 到 60454(可能是 30000(的随机数。parole[30000] 可能是一个空字符串,如果您的文件中的单词不超过 30000 个。因此,在第一种方案中,打印空字符串。 在第二种情况下,您打印从 0 到末尾的所有单词。

溶液:

for(i = 0; i < x; i++);{
numero = rand()%(n); // !!! Here use n( the number of words read from the file ) !!!
cout << parole[numero] << " ";

相关内容

  • 没有找到相关文章