2017-05-20 3 views
0

Ich versuche, einige Daten aus einer TXT-Datei in einen Vektor hinzuzufügen, die innerhalb einer Struktur, aber der Vektor nicht kompiliert werden. Der Code ist wie folgt.Fehler bei dem Versuch, Daten hinzufügen innere Struktur Vektor

#include <iostream> 
#include <fstream> 
#include <typeinfo> 
#include <string> 
#include <iomanip> 
#include <vector> 

using namespace std; 

typedef struct 
{ 
    vector<double> xAxis[100]; 
    vector<double> yAxis[100]; 
} AxisValues; 

void startup() 
{ 
    cout << "Numerical Integrator - calculating area under a curve.\n\n"; 
    cout << "Enter the name of the file which contains data points (x and y coordinates) that form the curve:\n"; 
} 

void inputVal() 
{ 
    AxisValues aValues; 
    int n1 = 0, n2 = 0, n3 = 0, n4 = 0, n5 = 0, n6 = 0, n7 = 0, n8 = 0; 
    string fileName; 
    ifstream infile; 

    cin >> fileName; //enter curve_s1.txt here 

    infile.open(fileName); 
    if (infile.fail()) { cout << "ERROR: FILE NOT DETECTED\n\n"; } 

    for (n1 = 0; n1 < 10; n1++) 
    { 
     infile >> aValues.xAxis[n2]; 
     n2++; 
     for (n3 = 0; n3 < 10; n3++); 
     { 
      infile >> aValues.yAxis[n4]; 
      n4++; 
     } 
    } 

    cout << "x y\n"; 
    for (n5 = 0; n5 < 10; n5++) 
    { 
     cout << aValues.xAxis[n6] << " "; 
     n6++; 
     for (n7 = 0; n7 < 10; n7++); 
     { 
      cout << aValues.yAxis[n8] << "\n"; 
      n8++; 
     } 
    } 
} 

double trapezoidalRule(const double &x1, const double &x2, const double &y1, const double &y2) 
{ 
    double result = 0; 
    result = (x2 - x1)*((y1 + y2)/2); 
    return result; 
} 

int main() 
{ 
    startup(); 
    inputVal(); 
    //cout << trapezoidalRule(4, 5, 2, 3) << "\n"; 

    system("pause"); 
    return 0; 
} 

Ich bekomme die folgenden Fehler für diese.

E0349 kein Operator ">>" passt diese Operanden E0349 kein Operator ">>" passt diese Operanden E0349 kein Operator "< <" passt diese Operanden E0349 kein Operator "< <" passt diese Operanden

C2679 binär '>>': kein Operator gefunden, die einen Operanden der rechte Hand nimmt vom Typ 'std :: vector>' (oder es ist keine akzeptable conversion)

C2679 binäre '>>': nein Operator gefunden, den des Typs 'std :: vector>' einen rechten Operanden dauert (oder gibt es keine akzeptable conversion)

C2679 binär '< <': fand kein Operator, den ein rechten Operanden Takes Typ 'std :: vector>' (oder gibt es keine akzeptable conversion)

Fehler C2679 binärer '< <': kein Operator gefunden, die ein rechten Operanden vom Typ nimmt 'std :: vector>' (oder es gibt keine akzeptable conversion)

+0

Did senden Sie bedeuten ein Array von 100 Vektoren haben? –

+0

'vector xAxis [100];' definiert ein Array von Vektoren nicht einen einzelnen Vektor der Größe 100. Sind Sie sicher, dass dies das ist, was Sie wollen? – user4581301

+0

oh okay Entschuldigung, ich weiß nichts über C++ 11 krank löschen meinen Kommentar. Danke – Tyger

Antwort

-1

Wenn Sie einen Vektor machen wollen, die Größe sollte 100 hat Sie Folgendes eingeben:

vector <int> vecName(100); 

In diesem Fall Sie cin Zahlen können von Stream hinzuzufügen, wie dies auf den Vektor (die Sie in Ihrem Code haben)

cin>>vecName[i]; 

Aber wenn Sie 100 Vektoren haben möchten Sie geben sollte (was Sie getan haben):

vector <int> vecName[100]; 

Und Sie können int durch temporäre Variable l hinzufügen diese ike:

int temp; 
cin>>temp; 
vecName[i].push_back(temp); 

Ihr Fehler kommt aus, dass Sie ganze Zahlen auf einen Vektor nicht auf eine ganze Zahl

Verwandte Themen