Konvertierung von txt in eine array funktioniert nicht

Habe jetzt den Code wie vorgeschlagen modifiziert nurverteilt er die werte auf verschiedene matrizen******!!
C++:
{
double X =sqrt(pow(xPoint[0+k]-xPoint[i],2)+pow(yPoint[0+k]-yPoint[i],2));
{

 vector<double> matrix;
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
matrix.push_back(X);
}
}

for(int i=0; i<5; i++)//Anzahl der Zeilen
{
for(int j=0; j<5; j++)//Anzahl der Spalten
{
cout <<X << " ";//iZeilen j Spalten

}
cwriter Arrays haben eine feste grösste, die manuelle eingabe ist nur für Testzwecke, später werden dann die Daten aus einem txt file kommen und dann muss er mit 15 verschiedenen matrizen aus 15 txt files jede andere grösse arbeiten dann reden wir über 1000*1000 Matrizen... deswegen Vektor und später kommt ein teil 2 zum thema metaheuristik und dafür sind vektoren voraussetzung damit er später elemente zufällig aus einem container löschen und in einen anderen einfügen kann...

edit:
Dieses die aktuelle version, er liest alle zahlen ein aber er liest die spalten untereinander statt nebeneinander ein er sollte bei jedem 4 ten werte eine neue spalte beginnen und die zeilen und spalten sind verdreht.
C++:
#include <iostream>
#include<cmath>
#include<vector>
using namespace std;


int main()
{
double xPoint[6];
double yPoint[6];



for (int i=0;i<5;i++)
{
cout<<"Enter the x coordinate for position"<<i<<":"<<endl;
cin>>xPoint[i];
cout<<"Enter the y coordinate for position"<<i<<":"<<endl;
cin>>yPoint[i];
}
for (int k=0;k<5;k++)
{


for (int i=0;i<5;i++)

{
double X =sqrt(pow(xPoint[0+k]-xPoint[i],2)+pow(yPoint[0+k]-yPoint[i],2));
{

 vector<double> matrix;
for(int i=0; i<5; i++)

{
matrix.push_back(X);
}
cout<<X<<" ";
}
cout<<endl;

}
}
}
 
Zuletzt bearbeitet von einem Moderator:
Moin,

benutze doch die Code-Tags ... so bekommt man ja Augenkrebs :(

Wie weiter oben schon gesagt wurde, sind Vektoren als eindimensionale Speicher.
Du fügst dort eine Reihe von einzelnen Werten ein - und Schluß!
Sollte es eine 'echte' Matrix sein wäre ein Vector vlt. nur bedingt geeignet ...

Erkläre doch mal genau, was Du eigentlich erreichen willst!


Gruß
Klaus
 
was ich genau brauche ist das die derzeitigen richtigen werte nicht in einer spalte wiedergegeben werden sondern in 4 spalten also als beispiel;

aktuelle Ausgabe: alle Zahlen in einer Spalte
Code:
1
2              
3
4
5
6

was ich gerne hätte wäre
Code:
1    2
3    4
5    6

PS: versuche als Codetag c und /c zu verwenden geht aber nicht..
 
Zuletzt bearbeitet:
Moin,

reinholdweihs hat gesagt.:
1
2 was ich gerne hätte wäre dieses; 1 4
3 2 5
4 3 6
5
6
also die Werte nicht in einer schlange sondern auf spalten aufgeteilt
ääh, was :confused:
1 - 3 in die erste Spalte und 4 - 6 in eine Zweite ****

Das geht eben wir bereits geschrieben mit einem eindimensionalen Vektor kaum ...
Höchstens
C++:
vector< vector<int> >
und dann die 'inneren' Vektoren' als Spalten interpretieren! Ist aber von den Zugriffen komplexer ...

Warum kein zweidimensionales Array?
C++:
int myArray = new int[3][3];

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Ich habe es zuerst mit genau der schreibweise porbiert die du vorgeschlagen hast, das ging aber nicht und hat einen error produziert, dann haben ich ein float array definiert nut leider kommt die ausgabe überhaupt nicht hin( siehe Anhang), jede der werte wird eine komplette zeile lang eingelesen! LG Reinhold
C++:
#include <iostream>
#include<cmath>
#include<vector>
using namespace std;


int main()
{
double xPoint[6];
double yPoint[6];



for (int i=0;i<5;i++)
{
cout<<"Enter the x coordinate for position"<<i<<":"<<endl;
cin>>xPoint[i];
cout<<"Enter the y coordinate for position"<<i<<":"<<endl;
cin>>yPoint[i];
}
for (int k=0;k<5;k++)
{


for (int i=0;i<5;i++)

{
double X =sqrt(pow(xPoint[0+k]-xPoint[i],2)+pow(yPoint[0+k]-yPoint[i],2));
{float myArray[5][5];
for(int i=0; i<5; i++)
{
    for(int y=0;y<5;y++)
    {
        myArray[i][y]=X;
    }
}
for(int i=0;i<5;i++)

cout<<myArray[0][0]<<" ";
}
cout<<endl;

}
}
}
 

Anhänge

  • array2d.PNG
    array2d.PNG
    17,3 KB · Aufrufe: 6
Zuletzt bearbeitet:
Das geht eben wir bereits geschrieben mit einem eindimensionalen Vektor kaum ...

Das würde ich so nicht unterschreiben. Man kann ja die Werte auch alle hintereinander ablegen und merkt sich in einer zusätzlichen Variable noch, wieviele Spalten eine Zeile hat. Dann geht das auch mit einem eindimensionalem Vektor.

@reinholdweihs: Was hast du gegen die Code Tags?

Gruß,
Wolf
 
Moin,

zur Verwendung der Tags:
klicke im Editor auf den Button mit # und ändere dann die Worte CODE zu CPP !!
Und Du brauchst BEIDE Tags - den Öffnenden und den Schließenden !!

Das würde ich so nicht unterschreiben. Man kann ja die Werte auch alle hintereinander ablegen und merkt sich in einer zusätzlichen Variable noch, wieviele Spalten eine Zeile hat. Dann geht das auch mit einem eindimensionalem Vektor.
eben ... kaum :)
Ist aber für Anfänger und bei großen Wertemengen schlecht zu handeln ...

@reinholdweihs: Was hast du gegen die Code Tags?
hat er nicht ... erhat nur den schließenden Tag vergessen

Gruß
Klaus
 
zum code tag problem.. bei der Raute oben #15 öffnet sich leider nichts:

Bin ein wenig weitergekommen wenn mann bei cout [5][5]reingibt ändert sich die matrix nimmt allerdings dann nur einen Wert...

Code:
#include <iostream>
#include<cmath>
#include<vector>
using namespace std;


int main()
{
double xPoint[6];
double yPoint[6];



for (int i=0;i<5;i++)
{
cout<<"Enter the x coordinate for position"<<i<<":"<<endl;
cin>>xPoint[i];
cout<<"Enter the y coordinate for position"<<i<<":"<<endl;
cin>>yPoint[i];
}
for (int k=0;k<5;k++)
{


for (int i=0;i<5;i++)

{
float X =sqrt(pow(xPoint[0+k]-xPoint[i],2)+pow(yPoint[0+k]-yPoint[i],2));
{float myArray[5][5];
for(int i=0; i<5; i++)
{
    for(int y=0;y<5;y++)
    {
        myArray[i][y]=X;
    }
}
for(int i=0;i<5;i++)

cout<<myArray[5][5]<<" ";
}
cout<<endl;

}
}
}

edit:
Das Rätsel ist gelöst******!! einfach einen String hinter der Eingabe einfügen und alles wird Zuckerwatte :) schönen Abend ....
Code:
#include <iostream>
#include<cmath>
#include<vector>
using namespace std;


int main()
{
    double xPoint[6];
    double yPoint[6];



    for (int i = 0; i < 5; i++)
    {
        cout << "Enter the x coordinate for position" << i << ": ";
        cin >> xPoint[i];
        cout << "Enter the y coordinate for position" << i << ": ";
        cin >> yPoint[i];
        cout << string(50, '\n');
    }

    double myArray[5][5];

    for (int k = 0; k < 5; k++)
    {
        for (int j = 0; j < 5; j++)
        {
            double X = sqrt(pow(xPoint[k] - xPoint[j], 2) + pow(yPoint[k] - yPoint[j], 2));
            myArray[k][j] = X;
            cout << X << " ";
        }
        cout << endl;
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Du musst bei den Code-Tags auch ein Slash "/" statt einem Backslash "\" nehmen. Dann wird es auch funktionieren.

Auch wäre es empfehlenswert deinen Beitrag zu editieren, als einen neuen zu schreiben. Damit bleibt dein Beitrag etwas übersichtlicher.
 
Zurück