Formatierung und Ausgabe
-
tach,
ich versuche gerade ein Tool zu programmierenm (am Bsp.: R=U/I), das dass experimentieren mit Formeln am PC ermöglicht. Es ist alles soweit in Ordnung, wenn da nicht diese Optischen desaster wären... die Formatierungen sind nicht in einer ebene!!!
Noch etwas! Wie kann ich dafür sorgen dass die Zahlen möglichst klein anfangen?0.000000000000000000000..................1;
#include<iostream> #include<conio.h> using namespace std; int main (void) { float r, i, u; do { switch(getch()) // Anwählen einer Größe { // R = U/I case'R': case'r': cout<<"\tSpannung"<<"\t\tStromstärke"<<"\t\t\tWiederstand"<< endl; do { if(getch() != 56) // Pfeiltaste Oben { ++u; // Vergrößerung um 1 cout<<"\t"<<u<< endl;; // Ausgabe } if(getch() != 50) // Pfeiltaste Unten { --u; // Verminderung um 1 cout<<"\t"<<u<< endl; // Ausgabe } if(getch() != 52) // Pfeiltaste Links { ++i; cout<<"\t\t\t\t"<<i<< endl; } if(getch() != 54) // Pfeiltaste Rechts { --i; cout<<"\t\t\t\t"<<i<< endl; } cout<<"\t\t\t\t\t\t\t\t"<<"R = "<< u/i<< endl; } while(getch() != 27); // Esc break; } } while(getch() != 27); // Esc }VDiV
-
Und jetzt Versuchs mal mit einer Formulierung was Du für ein Problem hast, was Du bisher versucht hast es zu lösen. Und so, dass man nicht raten muss was Du willst.
ich versuche gerade ein Tool zu programmierenm (am Bsp.: R=U/I), das dass experimentieren mit Formeln am PC ermöglicht. Es ist alles soweit in Ordnung, wenn da nicht diese Optischen desaster wären... die Formatierungen sind nicht in einer ebene!!!
Hört sich mehr nach einer Mitteilung als nach einer Frage an.
-
Knuddlbaer schrieb:
Und jetzt Versuchs mal mit einer Formulierung was Du für ein Problem hast, was Du bisher versucht hast es zu lösen. Und so, dass man nicht raten muss was Du willst.
Jawohl!
Die Erste Frage:
Wie man sieht sind Abfragen eingebaut die jeweils den Wert um 1 vermindern und um 1 erhöhen. Nun möchte ich aber, dass es jeweils nicht um 1 sondern um die kleinstmöglichste Zahl die C++ zu bieten hat von mir aus 0.0000000...000.1 usw erhöht. Das wäre ja blöd wenn es nur die Natürlichen Zahlen bzw. die Ganzen Zahlen sind.Die Zweite und somit die Letzte Frage:
Die Ausgabe entspricht nicht meiner Vorstellung! Das heißt
dass die Ausgabe nicht eben verläuft. Siehe unten:Mit eben meine ich:
Spannung Stromstärke Wiederstand
4___________0.2____________20Und das eine was meiner Vorstellung nicht entspricht meine ich:
Spannung Stromstärke Wiederstand
4
____________0.2
___________________________20Jetzt Zufrieden?
-
Wegen der Formatierung:
std::cout << std::right << std::setw(15) << "Spannung" << std::setw(15) << "Stromstaerke" << std::setw(15) << "Widerstand" << std::endl; std::cout << std::setw(15) << U << std::setw(15) << I << std::setw(15) << R << std::endl;Ausgabe:
Spannung Stromstaerke Widerstand 10.1 0.3 100Wenn Du wirklich das kleinstmögliche, brauchbare Inkrement suchst, dann würde ich
std::numeric_limits<typ>::epsilon()benutzen. Das ist das kleinstmögliche mit dem jeweiligen Typ repräsentierbare Inkrement auf 1. Zu finden ist das im Header <limits>.
Beispiel:float test = 1.0f; test += std::numeric_limits<float>::epsilon();So richtig sinnvoll ist das aber nicht. Ich würde eher selbst eine Schrittweite festlegen, die eine ausreichend große Genauigkeit gewährleistet.
-
edit: bitte löschen
-
cout<<right<<"Spannung"<<<setw (15)<<"Stromstaerke"<<setw (15)<<"Wiederstand"<< endl;Wenn ich diesen Code Abschnitt verändere, also statt diesen lästigen Escape Sequenzen die Funktion setw() einsetze meldet der Compiler einen Fehler obwohl ich die library iomanip benutzt habe !?
24 C:\Dokumente und Einstellungen\squidward\Desktop\formex\Untitled2.cpp expected primary-expression before '<' token
Ich arbeite unter Dev-cpp!
-
cout << right << "Spannung" << < setw(15) << "Stromstaerke" << setw(15)<< "Wiederstand" << endl; ^ HierMach mal Leerzeichen dazwischen. Dann fällt das Problem viel besser auf.
Weiterhin kann man es nicht oft genug wiederholen:
Dev-C++ ist veraltet. Sowohl die IDE selbst (hat viele Macken) als auch der Compiler dahinter (der lässt sich allerdings modernisieren).
Besorg die mal entweder Code::Blocks oder Visual Studio Express.Btw:
<iomanip>ist ein Header und keine Library.
-
float test = 1.0f; test += std::numeric_limits<float>::epsilon();So richtig sinnvoll ist das aber nicht. Ich würde eher selbst eine Schrittweite festlegen, die eine ausreichend große Genauigkeit gewährleistet.
Bin grad am Experimentieren mit diesenn numeric_limits muss wohl das Prog nachher etwas geschickter umschreiben...
Vielleicht so, Spannung, Stromstärke und Wiederstand sind veränderbar! R=U/I usw. sollen die berechneten werte ausgeben.
Spannung Stromstärke Wiederstand R=U/I R U = R*I I = U/R
Na ja...
falls ich irgendwo häng melde ich mich.Weiterhin kann man es nicht oft genug wiederholen:
Dev-C++ ist veraltet. Sowohl die IDE selbst (hat viele Macken) als auch der Compiler dahinter (der lässt sich allerdings modernisieren).
Besorg die mal entweder Code::Blocks oder Visual Studio Express.Sobald ich dieses Prog. fertiggeschrieben habe werde ich das wohl auch machen.
Btw: <iomanip> ist ein Header und keine Library.
Huch! Hab ich was falsch verstanden?
Also sind: iostream, cmath usw. auch Header

-
squidward schrieb:
Huch! Hab ich was falsch verstanden?
Also sind: iostream, cmath usw. auch Header

Das sind die zur Standardbibliothek gehörigen Header.

Normalerweise gehört zu eine Library eine gewisse Anzahl Header (Schnittstelle) und die kompilierten Definitionen (z.B DLL's). Allerdings gibt es Librarys, die ganz in Header gepackt sind, weil alles auf Templates basiert. (der STL-Teil der C++ Standardbibliothek aber auch in boost gibt es Haufenweise davon. ;))
Ein Header kann also schon die ganze Bibliothek sein.