代码打印时间0-100的2d数组正好但是现在我想要做的就是为每天的时间[o]设置植物,羚羊和老虎等出生率,死亡率和繁殖率等功能。这些功能是另一个VOID还是INT MAIN。如果我尝试例如... Rp(植物的繁殖)= t [i] .Plants + 30;它不会编译和运行,因为我不能添加30到t [i] .Plants我试图在第1天结束时添加30个额外的植物,所以在第2天有一个新的数字,植物开始时重复直到第100天。
尝试打印类似于植物羚羊和老虎和时间的东西,包括出生率,死亡率和繁殖等功能。时间将是0-100但其他值将改变。 enter image description here
感谢您的帮助,我真的很感激。
#include <iostream>
#include <string>
using namespace std;
struct population {
string Plants;
string Antelopes;
string Tigers;
double time[100];
};
void input (population[]);
void print (population[]);
void initialize (population[]);
void birthrate (population []);
int main ()
{
int Time[100];
int Plants[100];
int Antelopes[100];
int Tigers[100];
cout << " Time - Plants - Antelopes - Tigers \n";
cout << " --------------------------------------- \n";
for ( int i = 0; i <= 100; i++)
{
Time[0]= i ;
Plants[0] =i;
Antelopes[0] =i;
Tigers[0] =i;
cout << " " << Time[0] << " ---- " << " " << Plants[0] << " ---- " << " " << Antelopes[0] << " ---- " << " " << Tigers[0] << endl;
}
// int plants;
// cout << " Enter value for plants " << endl;
// cin >> plants;
}
void initialize (population t[])
{
for (int i=0; i < 1; i++)
{
t[i].Plants = "";
t[i].Antelopes = "";
t[i].Tigers = "";
for (int j=0; j < 100; j++)
t[i].time[j] = 0;
}
}
void input (population t[])
{
for (int i=0; i < 1; i++)
{
cout << " Enter initial population for Plants ";
cin >> t[i].Plants;
cout << " \n Enter initial population for Antelopes ";
cin >> t[i].Antelopes;
cout << " \n Enter initial population for Tigers ";
cin >> t[i].Tigers;
for (int j=0; j < 100; j++)
{
cout << "\n Enter time ";
cin >> t[i].time[j];
}
}
}
void print (population t[])
{
for (int i=0; i < 1; i++)
{
cout << " Plants Pop: " << t[i].Plants << endl;
cout << " Antelopes Pop: " << t[i].Antelopes << endl;
cout << " Tigers Pop: " << t[i].Tigers << endl;
for (int j=0; j < 100; j++)
cout << " " << t[i].time[j];
cout << endl;
}
}
void birthrate (population t[])
{
for (int i=0; i <= 100; i++)
{
string Rp;
Rp = (t[i].Plants);
cout << " " << Rp << endl;
for (int j=0; j < 100; j++)
cout << t[i].Plants[j] << " ";
cout << endl;
}
}
答案 0 :(得分:0)
您的代码存在许多重大问题,无法就如何继续提供良好的建议。
您正在创建一个类来存储所有pop值,但是这是使用字符串。改为存储数字数据。
然后,你甚至根本没有在你的主循环中使用那个类,你正在制作一些完全没有连接的新变量并使用它们。基本上砍掉了多余的变量。这是一个基本概要:
struct sample
{
float pop;
float deaths;
float births;
};
struct population
{
sample Plants;
sample Antelopes;
sample Tigers;
}
现在,每个“人口”对象将在一个时间点保存整个人口的快照。 如果要存储100个快照(这不是必需的),则可以创建包含100个人口对象的数组:
population pop[100];
但是,只有一个人口对象存储当前时间片几乎肯定更好:
population ecoSystem;
只需在更新后打印值即可。绝对不需要存储100个时间点的数据,除非需要将它们保存到文件中。你可以访问这样的值:
void input(population& p) // & = pass in a live reference to the population object
{
cout << " Enter initial population for Plants ";
cin >> p.Plants.pop;
cout << " \n Enter initial population for Antelopes ";
cin >> p.Antelopes.pop;
cout << " \n Enter initial population for Tigers ";
cin >> p.Tigers.pop;
}
并没有基本的理由一次输入100个数据点的信息,你只需循环更新100次,并有一个单独的“int t”时间变量,你可以使用哪个时间片。最多,您需要当前的填充变量,即下一个时间片的另一个填充变量,然后在计算更新后将其复制回当前的变量。