Parallele Ausgabe mit cout sowie ofstream
-
Alternativ macht man die Ausgabe Zeile für Zeile und muss dann abwechseln von den Matrizen Daten ausgeben und dazwischen entsprechend viele Leerzeichen einfügen.
-
Hi
Leprechaun schrieb:
Ich würde mir eine Klasse bauen, die ein 2D-Array und eine printAt(x,y,text)-Funktion hat. Ist aber nur eine Möglichkeit.
Könntest du bitte ein beliebiges Minimalbeispiel schreigen um zu zeigen wie das geht?
Wird das dann auch mit ofstream funktionieren? Ich will ja eine Ausgabe auf dem terminel und in einem Text file.
sebi707 schrieb:
Alternativ macht man die Ausgabe Zeile für Zeile und muss dann abwechseln von den Matrizen Daten ausgeben und dazwischen entsprechend viele Leerzeichen einfügen.
Das ist leider keine Option für mich, weil ich mit absoluter Gewissheit weiss, dass ich dann völlig den Überblick verliere was ich mache.
Danke für die Hilfe und Gruß
cpp_Jungspund
-
cpp_Jungspund schrieb:
sebi707 schrieb:
Alternativ macht man die Ausgabe Zeile für Zeile und muss dann abwechseln von den Matrizen Daten ausgeben und dazwischen entsprechend viele Leerzeichen einfügen.
Das ist leider keine Option für mich, weil ich mit absoluter Gewissheit weiss, dass ich dann völlig den Überblick verliere was ich mache.
Danke für die Hilfe und Gruß
cpp_Jungspundkannst ja nen char[x][y] machen und dort die matrizen reinschreiben und dann das array ausgeben. dann kommste um die api-fkt drum rum und bleibst plattformunabhängig
-
cpp_Jungspund schrieb:
Hi
Leprechaun schrieb:
Ich würde mir eine Klasse bauen, die ein 2D-Array und eine printAt(x,y,text)-Funktion hat. Ist aber nur eine Möglichkeit.
Könntest du bitte ein beliebiges Minimalbeispiel schreigen um zu zeigen wie das geht?
Das ist doch trivial. Im Prinzip:
- Im Konstruktor ein 2D-Array anlegen und mit Spaces auffüllen. Das ist dein virtueller Bildschirm.
- Funktion schreiben: PrintAt(int,int,String), die einen Text an bestimmte x/y Koordinaten im Array schreibt.
- Funktion schreiben: Flush(), die das Array zeilenweise auf den Screen schreibt.
^^ das als Grundversion musste erstmal basteln. Wenn das geht, dann Erweiterungen anstöpseln wie Formatierung von Zahlen, Clear(), Steuerzeichen-Interpreter, Write-to-File, C++-Streams, Turtle-Grafik, usw ...

-
Es tut mir leid, aber das ist mir noch viel zu hoch. Ich lerne erst seit sehr kurz zeit C++.
Die Frage nach dem parallelen Output muss doch schon öfters gestellt worden sein. Gibt es da keine Bibliothek und ne Dokumentation dazu wie es geht, die das einem abnimmt?
-
Nein, es gibt keinen fertigen, magischen
super_duper_parallel_stream out;Das ist auch keine häufige Frage. Streams tragen als Information bloß Folgen von Zeichen. Position, Zeitpunkt der Ausgabe, Farbe etc. sind alles bestenfalls Interpretationen, die das Ausgabegerät, auf dem die Zeichen letztlich landen, hinzu "erfindet". Entsprechend mag es zwar möglich sein, einem Stream irgendwie diese Eigenart aufzudrücken, aber es gibt keine Methode, die sich aufdrängt. Daher auch keine konkreten Antworten. Es mögen zwar viele Leute eine oder mehrere Ideen haben, aber vermutlich ist niemand so wirklich begeistert von seinen Ideen (zumindest sehe ich das bei mir selber so). Denn wer wirklich so etwas wie du beschreibst braucht, der kann auch gleich eine richtige GUI nutzen. Das wäre sehr viel einfacher und natürlicher, als einem Stream künstlich so etwas auf zu zwingen.
-
Naja mein Ziel ist einfach nur eine Textdatei in der Matrizen nebeneinander stehen. Dafür brauche ich und will ich keine graphische Oberfläche oder dergleichen.
-
Alternativ macht man die Ausgabe Zeile für Zeile und muss dann abwechseln von den Matrizen Daten ausgeben und dazwischen entsprechend viele Leerzeichen einfügen.
Das ist leider keine Option für mich, weil ich mit absoluter Gewissheit weiss, dass ich dann völlig den Überblick verliere was ich mache.
Ich würde dir dann am Ende wirklich empfehlen das hier zu tun. Es ist für einen Beginner einfachste Variante. (Vllt nicht die eleganteste, aber die einfachste).
Benutze Funktionen und gute Variablennamen um den Überblick zu behalten und du scheinst ja mit Matrizen zu rechnen, dann ist dashier doch auch kein Problem.Gib einfach so viele Leerzeichen aus, wie es noch fehlen für die Breite des linke bereichs.
|-------------- X Zeichen ---------------| Nur Y Zeichen_____________________________ Hier sinds nur Z Zeichen__________________usw.
EDIT: Natürlich unter der Voraussetzung das man Monospace Fonts verwendet!
Oh und dass das hier geht erwähne ich lieber nochmal:
void print(std::ostream& stream, std::string const& what) { stream << what; } // somewhere else: std::ofstream writer("file.txt"); print(std::cout, "Hello"); print(writer, "World");
-
Ich habe jetzt hinbekommen was ich wollte. Habe es wie folgt gemacht:
cout << "Binäre Adjazenzmatrix" << " Bipolare Adjazenzmatrix" << endl ; cout << "ohne Selbstkopplung" << " ohne Selbstkopplung" << endl ; for( ik=0; ik<ADSIZE;++ik) { for(il=0; il<ADSIZE;++il) cout << setw(2) << adjazenz_bin[ik][il] << setw(2); cout << " "; for(il=0; il<ADSIZE; ++il) cout << setw(2) << adjazenz_bip[ik][il] << setw(2); cout << endl; }Das ist für C++ Könner vielleicht schlecht aber jetzt läuft es erstmal.
Weil ich dazu lernen will, möchte ich aber auch das was Leprechaun zu mir schrieb versuchen. Dazu muss ich aber noch etwas warten um mehr Grundlagen zu erlernen.
Danke für die Hilfe.
-
cpp_Jungspund schrieb:
Ich habe jetzt hinbekommen was ich wollte. Habe es wie folgt gemacht:
cout << "Binäre Adjazenzmatrix" << " Bipolare Adjazenzmatrix" << endl ; cout << "ohne Selbstkopplung" << " ohne Selbstkopplung" << endl ; for( ik=0; ik<ADSIZE;++ik) { for(il=0; il<ADSIZE;++il) cout << setw(2) << adjazenz_bin[ik][il] << setw(2); cout << " "; for(il=0; il<ADSIZE; ++il) cout << setw(2) << adjazenz_bip[ik][il] << setw(2); cout << endl; }Das ist für C++ Könner vielleicht schlecht aber jetzt läuft es erstmal.
Also ich finde Deine Lösung gut.