1
我想获得一个矢量来存储类'复杂'类的对象。向量,指针,类和EoF循环(C++)
这是我曾试图把它存储:
ifstream values;
values.open("h://values.txt");
if(!values)
{
cout<<"Error: cannot open "<<"values.txt"<<endl<<endl;
}
else
{
//Initialise list
vector<Complex> v;
Complex *c1;
double a,b,d=0,e=0;
char c;
int count=0;
while(values)
{
values>>c>>a>>b;
c1=new Complex;
v.push_back(*c1);
cout<<c<<" "<<a<<" "<<b<<endl;
switch (c)
{
case 'r':
case 'R':
case 'p':
case 'P':
{
//Call constructor
v[count].setType(c);
switch (c)
{
case 'r':
case 'R':
{ v[count].setReal(a);
v[count].setImaginary(b);
v[count].topolar(a,b,d,e);
break;
}
case 'p':
case'P':
{ v[count].setLength(a);
v[count].setAngle(b);
v[count].frompolar(d,e,a,b);
break;
}
default:
{ cout<<"Type Error"<<endl;
break;
}
}
count++;
break;
}
default:
{
//error message
cout<<" Failed input type, ensure all of type 'r' or 'p'"<< endl;
cout<<"Programme Closing"<<endl;
break;
}
};
}
虽然这会阅读我在程序的信息,它坚持阅读的最后一行两次(我把COUT到这个循环,使很容易看到哪些数字在哪里)。我曾尝试使用for循环,但因为我希望它运行到文件结尾,所以我认为我必须使用while循环,但我可能是错误的。
我的主管在每条循环中都会覆盖c1的内容,但我认为这应该是正确的,因为信息在被下一行覆盖之前被传递给向量,所以我有点困惑。
接下来的问题是,当我再次尝试并在上面显示的循环之外打印出所有信息(例如为了在打印之前允许进行操作),它一遍又一遍地打印相同的东西,直到for循环达到计...
int y;
int z;
while(y!=3)
{
cout<< " What would you like to do?"<<endl;
cout<< " Type the number of the option you would like"<<endl;
cout<< " 1. Show all numbers in polar form"<<endl;
cout<< " 2. Show all numbers in rectangular form"<<endl;
cout<< " 3. Show all numbers in both forms"<<endl;
cout<< " 4. Convert a number to its conjugate"<<endl;
cout<< " 5. Exit"<<endl;
cin>>y;
switch(y)
{
case 1:
for(z=0; z<count;z++)
{
v[z].getLength();
v[z].getAngle();
cout<< a<<" "<<b<<endl;};
break;
case 2:
for (z=0; z!=count;z++)
{
v[z].getReal();
v[z].getImaginary();
};
break;
case 3:
cout<<" Real Imaginary | Length Angle | Original Type"<<endl;
for(z=0; z!=count;z++)
{ v[z].getLength();
v[z].getAngle();
v[z].getReal();
v[z].getImaginary();
cout<<a<<" "<<b<<" "<<d<<" "<<e<<endl;
在任何情况下,你尝试运行程序:
#include "Class definitions.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string.h>
#include <cmath>
#include <vector>
using namespace std;
任何帮助将不胜感激!
非常感谢! H x
感谢这是第一位,现在我只需要弄清楚如何让我的函数返回cout的正确信息,最好是让a和b在函数nd中重置为v [z]长度/角度等,然后在主程序还是有更好的方法来做到这一点? – 2012-03-22 11:39:51