Was bedeutet inf?
-
Hi, ich habe versucht ein Programm zur Kalkulation von 3 Variablen zu schreiben.
Dabi bekomme ich immer als Ergebnis "Zahl und #inf" oder "Zahl und #ind".
Könnt ihr mit weiterhelfen?//Programm: Gauss_3.cpp //zuletzt geaendert am: 09.10.2009 #include <iostream> #include <conio.h> #include <string> using namespace std; int main() { int i=1; float xw1, xw2, xw3, yw1, yw2, yw3, zw1, zw2, zw3, s1, s2, s3; float xx, yy, ss, zz, x1a, x2a, y1a, y2a, z1a, z2a, s1a, s2a, xraus, yraus, zraus; std::string x, y, z; //Variablennamen //Wertabfragen //Variablennamen cout<<endl<<endl<<"1. Variable (Buchstabe oder Wort) eingeben: "; cin>>x; cout<<"2. Variable (Buchstabe oder Wort) eingeben: "; cin>>y; cout<<"3. Variable (Buchstabe oder Wort) eingeben: "; cin>>z; //1. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 1. Gleichung eingeben: "; cin>>xw1; cout<<"Wert von \""<<y<<"\" der 1. Gleichung eingeben: "; cin>>yw1; cout<<"Wert von \""<<z<<"\" der 1. Gleichung eingeben: "; cin>>zw1; cout<<"Summe der 1. Gleichung eingeben: "; cin>>s1; //2. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 2. Gleichung eingeben: "; cin>>xw2; cout<<"Wert von \""<<y<<"\" der 2. Gleichung eingeben: "; cin>>yw2; cout<<"Wert von \""<<z<<"\" der 2. Gleichung eingeben: "; cin>>zw2; cout<<"Summe der 2. Gleichung eingeben: "; cin>>s2; //3. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 3. Gleichung eingeben: "; cin>>xw3; cout<<"Wert von \""<<y<<"\" der 3. Gleichung eingeben: "; cin>>yw3; cout<<"Wert von \""<<z<<"\" der 3. Gleichung eingeben: "; cin>>zw3; cout<<"Summe der 3. Gleichung eingeben: "; cin>>s3; //Berechnung x1a=(xw1*xw2)-(xw2*xw1); y1a=(yw1*xw2)-(yw2*xw1); z1a=(zw1*xw2)-(zw2*xw1); s1a=(s1*xw2)-(s2*xw1); x2a=(xw3*xw2)-(xw2*xw3); y2a=(yw3*xw2)-(yw2*xw3); z2a=(zw3*xw2)-(zw2*xw3); s2a=(s3*xw2)-(s2*xw3); yy=(y1a*y2a)-(y2a*y1a); zz=(z1a*y2a)-(z2a*y1a); ss=(s1a*y2a)-(s2a*y1a); xraus=(s2a-zraus*z2a-yraus*y2a)/x2a; yraus=(s2a-zraus*z2a)/y2a; zraus=ss/zz; //Ausgabe cout<<x<<" = "<<xraus<<endl; cout<<y<<" = "<<yraus<<endl; cout<<z<<" = "<<zraus<<endl; cout<<endl<<"Zum Beenden Taste bet"<<char(132)<<"tigen..."; getch(); return 0; }
-
inf bedeutet infinite, also Unendlich (∞), kommt meißtens dann, wenn du irgendwo durch 0 teilst bei fließkommezahlen (bei Integern stürzt das Programm ab).
-
Hier die verbesserte Version, die auch, zumindest mathematisch, korrekt ist:
Wieso solche skurillen Zahlen angezeigt werden, wüsste ich noch gern.
Kann man die Ergebnisse so kürzen, dass keine Zehnerpotenz mehr dargestellt wird?Mit den Gleichungen
I. 2x+z=6
II. 4x+2y=12
III. 3x+2y+5z=10bekomme ich auf Papier die Werte x=2,909091, y=0,181818 und z=0,181818.
Diese stimmen auch hundertprozentig.//Programm: Gauss_3.cpp //zuletzt geaendert am: 09.10.2009 #include <iostream> #include <conio.h> #include <windows.h> #include <string> using namespace std; int main() { int i=1; float xw1, xw2, xw3, yw1, yw2, yw3, zw1, zw2, zw3, s1, s2, s3; float xx, yy, ss, zz, x1a, x2a, y1a, y2a, z1a, z2a, s1a, s2a, xraus, yraus, zraus; std::string x, y, z; //Variablennamen //Wertabfragen //Variablennamen cout<<endl<<endl<<"1. Variable (Buchstabe oder Wort) eingeben: "; cin>>x; cout<<"2. Variable (Buchstabe oder Wort) eingeben: "; cin>>y; cout<<"3. Variable (Buchstabe oder Wort) eingeben: "; cin>>z; //1. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 1. Gleichung eingeben: "; cin>>xw1; cout<<"Wert von \""<<y<<"\" der 1. Gleichung eingeben: "; cin>>yw1; cout<<"Wert von \""<<z<<"\" der 1. Gleichung eingeben: "; cin>>zw1; cout<<"Summe der 1. Gleichung eingeben: "; cin>>s1; //2. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 2. Gleichung eingeben: "; cin>>xw2; cout<<"Wert von \""<<y<<"\" der 2. Gleichung eingeben: "; cin>>yw2; cout<<"Wert von \""<<z<<"\" der 2. Gleichung eingeben: "; cin>>zw2; cout<<"Summe der 2. Gleichung eingeben: "; cin>>s2; //3. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 3. Gleichung eingeben: "; cin>>xw3; cout<<"Wert von \""<<y<<"\" der 3. Gleichung eingeben: "; cin>>yw3; cout<<"Wert von \""<<z<<"\" der 3. Gleichung eingeben: "; cin>>zw3; cout<<"Summe der 3. Gleichung eingeben: "; cin>>s3; //Berechnung x1a=(xw1*xw2)-(xw2*xw1); y1a=(yw1*xw2)-(yw2*xw1); z1a=(zw1*xw2)-(zw2*xw1); s1a=(s1*xw2)-(s2*xw1); x2a=(xw3*xw2)-(xw2*xw3); y2a=(yw3*xw2)-(yw2*xw3); z2a=(zw3*xw2)-(zw2*xw3); s2a=(s3*xw2)-(s2*xw3); yy=(y1a*y2a)-(y2a*y1a); zz=(z1a*y2a)-(z2a*y1a); ss=(s1a*y2a)-(s2a*y1a); xraus=(s2a-zraus*z2a-yraus*y2a)/x2a; yraus=(s2a-zraus*z2a)/y2a; zraus=ss/zz; //Ausgabe cout<<x<<" = "<<xraus<<endl; cout<<y<<" = "<<yraus<<endl; cout<<z<<" = "<<zraus<<endl; cout<<endl<<"Zum Beenden Taste bet"<<char(132)<<"tigen..."; getch(); return 0; }
-
Upps, das war der falsche Code.
Ich meine diesen hier://Programm: Gauss_3_1.cpp //zuletzt geaendert am: 09.10.2009 #include <iostream> #include <conio.h> #include <windows.h> #include <string> using namespace std; int main() { int i=1; float x1,x2,x3,x1a,x2a,xx, y1,y2,y3,y1a,y2a,yy, z1,z2,z3,z1a,z2a,zz, s1,s2,s3,s1a,s2a,ss; float xraus, yraus, zraus; std::string x, y, z; //Variablennamen //Intro while (i<=17) { cout<<char(178); Sleep(10); i++; } cout<<"> Phisherman Apps. <"; while (i<=34) { cout<<char(178); Sleep(10); i++; } cout<<endl<<" Programm zur Kalkulation von 3 Variablen per Gauss"<<endl; while (i<=88) { cout<<char(178); Sleep(10); i++; } //Wertabfragen //Variablennamen cout<<endl<<endl<<"1. Variable (Buchstabe oder Wort) eingeben: "; cin>>x; cout<<"2. Variable (Buchstabe oder Wort) eingeben: "; cin>>y; cout<<"3. Variable (Buchstabe oder Wort) eingeben: "; cin>>z; //1. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 1. Gleichung eingeben: "; cin>>x1; cout<<"Wert von \""<<y<<"\" der 1. Gleichung eingeben: "; cin>>y1; cout<<"Wert von \""<<z<<"\" der 1. Gleichung eingeben: "; cin>>z1; cout<<"Summe der 1. Gleichung eingeben: "; cin>>s1; //2. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 2. Gleichung eingeben: "; cin>>x2; cout<<"Wert von \""<<y<<"\" der 2. Gleichung eingeben: "; cin>>y2; cout<<"Wert von \""<<z<<"\" der 2. Gleichung eingeben: "; cin>>z2; cout<<"Summe der 2. Gleichung eingeben: "; cin>>s2; //3. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 3. Gleichung eingeben: "; cin>>x3; cout<<"Wert von \""<<y<<"\" der 3. Gleichung eingeben: "; cin>>y3; cout<<"Wert von \""<<z<<"\" der 3. Gleichung eingeben: "; cin>>z3; cout<<"Summe der 3. Gleichung eingeben: "; cin>>s3; //Berechnung y1a=(y1*x2)-(y2*x1); z1a=(z1*x2)-(z2*x1); s1a=(s1*x2)-(s2*x1); y2a=(y3*x2)-(y2*x3); z2a=(z3*x2)-(z2*x3); s2a=(s3*x2)-(s2*x3); yy=(y1a*y2a)-(y2a*y1a); zz=(z1a*y2a)-(z2a*y1a); ss=(s1a*y2a)-(s2a*y1a); xraus=(s1-yraus*y1-zraus*z1)/x1; yraus=(s2a-zraus*z2a)/y2a; zraus=ss/zz; //Ausgabe cout<<x<<" = "<<xraus<<endl; cout<<y<<" = "<<yraus<<endl; cout<<z<<" = "<<zraus<<endl; cout<<endl<<"Zum Beenden Taste bet"<<char(132)<<"tigen..."; getch(); return 0; }
-
Kann mir keiner helfen
?
-
Bestimmt. Aber sicher hat niemand Lust hier 100 Zeilen Code zu lesen. Versuch entweder den Code auf das wesentliche zu reduzieren oder noch besser, lass dir mehr Zwischenergebnisse aussuchen.
http://en.wikipedia.org/wiki/Floating_Point#Infinities
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6768
-
ich hab den thread sofort wieder geschlossen gehabt, weil der code einfach mal unter aller sau ist...
aber hauptsache, du postest irgend nen 20-zeilen-super-tolle-werbung-anzeige-bla mit.int main() { int i=1; float x1,x2,x3,x1a,x2a,xx, y1,y2,y3,y1a,y2a,yy, z1,z2,z3,z1a,z2a,zz, s1,s2,s3,s1a,s2a,ss; float xraus, yraus, zraus; std::string x, y, z; //Variablennamenaha... super idee... und super namen
der kommentar ist auch klasse...//Intro while (i<=17) { cout<<char(178); Sleep(10); i++; } cout<<"> Phisherman Apps. <"; while (i<=34) { cout<<char(178); Sleep(10); i++; } cout<<endl<<" Programm zur Kalkulation von 3 Variablen per Gauss"<<endl; while (i<=88) { cout<<char(178); Sleep(10); i++; }wieso postest du son dreck mit, wenn du nen fehler suchst?
//Wertabfragen //VariablennamenJz versteh ich auch den Kommentar von oben - allerdings für sich allein gesehen sollten Kommentare da sein, um Code zu verstehen und nicht der Code soll die Kommentare erklären xD
Wie wärs, einfach buchstaben für variablen zu nehmen?
Kann man bei x anfangen und bis z gehen und wenns noch mehr geben sollte fängt man halt bei a an - oder fängst gleich von a an...cout<<endl<<endl<<"1. Variable (Buchstabe oder Wort) eingeben: "; cin>>x; cout<<"2. Variable (Buchstabe oder Wort) eingeben: "; cin>>y; cout<<"3. Variable (Buchstabe oder Wort) eingeben: "; cin>>z;Wie wärs mit "Bezeichnung" oder "Variablenname" eingeben?
//1. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 1. Gleichung eingeben: "; cin>>x1; cout<<"Wert von \""<<y<<"\" der 1. Gleichung eingeben: "; cin>>y1; cout<<"Wert von \""<<z<<"\" der 1. Gleichung eingeben: "; cin>>z1; cout<<"Summe der 1. Gleichung eingeben: "; cin>>s1; //2. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 2. Gleichung eingeben: "; cin>>x2; cout<<"Wert von \""<<y<<"\" der 2. Gleichung eingeben: "; cin>>y2; cout<<"Wert von \""<<z<<"\" der 2. Gleichung eingeben: "; cin>>z2; cout<<"Summe der 2. Gleichung eingeben: "; cin>>s2; //3. Gleichung cout<<endl<<"Wert von \""<<x<<"\" der 3. Gleichung eingeben: "; cin>>x3; cout<<"Wert von \""<<y<<"\" der 3. Gleichung eingeben: "; cin>>y3; cout<<"Wert von \""<<z<<"\" der 3. Gleichung eingeben: "; cin>>z3; cout<<"Summe der 3. Gleichung eingeben: "; cin>>s3;stichwort wäre hier wohl array + schleife - wenn man sich nen kleines struct für variablen baut, würde das noch viel mehr vereinfachen...
//Berechnung y1a=(y1*x2)-(y2*x1); z1a=(z1*x2)-(z2*x1); s1a=(s1*x2)-(s2*x1); y2a=(y3*x2)-(y2*x3); z2a=(z3*x2)-(z2*x3); s2a=(s3*x2)-(s2*x3); yy=(y1a*y2a)-(y2a*y1a); zz=(z1a*y2a)-(z2a*y1a); ss=(s1a*y2a)-(s2a*y1a);wie wäre es, die variablen auch erst hier zu deklarieren?
bis jz hast du sie noch nicht gebraucht...xraus=(s1-yraus*y1-zraus*z1)/x1; yraus=(s2a-zraus*z2a)/y2a; zraus=ss/zz; //Ausgabe cout<<x<<" = "<<xraus<<endl; cout<<y<<" = "<<yraus<<endl; cout<<z<<" = "<<zraus<<endl; cout<<endl<<"Zum Beenden Taste bet"<<char(132)<<"tigen...";ae > char(132) !
getch(); return 0; }return 0; ist bei der main-fkt nicht notwendig - aber ansonsten hab ich zumindest an dem stück code nichts aussetzen^^
bb
-
unskilled schrieb:
wie wäre es, die variablen auch erst hier zu deklarieren?
das würde auch das gesuchte Problem in einen Fehler beim Compilieren umwandeln...
- aber ansonsten hab ich zumindest an dem stück code nichts aussetzen^^
abgesehen von dem getch(), dass ich nicht kenne und unbekannten headern wie conio.h und windows.h: entweder sind diese relevant, dann ist das im falschen Forum, oder überflüssig und haben hier nichts zu suchen.
-
camper schrieb:
unskilled schrieb:
wie wäre es, die variablen auch erst hier zu deklarieren?
das würde auch das gesuchte Problem in einen Fehler beim Compilieren umwandeln...
kA - gut möglich, aber ich werds mir nicht angucken^^
camper schrieb:
unskilled schrieb:
- aber ansonsten hab ich zumindest an dem stück code nichts aussetzen^^
abgesehen von dem getch(), dass ich nicht kenne und unbekannten headern wie conio.h und windows.h: entweder sind diese relevant, dann ist das im falschen Forum, oder überflüssig und haben hier nichts zu suchen.
conio.h ^^
und ja, ist überflüssig (funktionalität sollte "einfach auf nen (beliebigen) tastendruck warten" sein)
und hab doch was auszusetzen
getch() ist ja deprecated und das sagt einem MSVC -zumindest auf W4- auch... der sagt so gar, wie man das behebt: _getch() nehmen... ist mir nur gerade wieder eingefallen^^bb
-
Ich habe doch geschrieben, dass ich aus Versehen den falschen Code gepostet habe.
Ich konnte es eben nicht editieren, nachdem ich den Code mit "Werbung" gepostet habe, weil ich mich eben erst angemeldet habe...
Ich habe if-Anweisungen benutzt, weil ich noch nicht mehr im Informatikunterricht erlernt habe. Dort haben wir IMMER conio.h eingebunden.
windows.h ist für die Werbung (Sleep).Es ist eben nicht jeder so ein super Programmierer oder hockt den ganzen Tag vorm Kasten und lernt die Sprache.
Könnt ihr mir jetzt noch sagen, wie ich die Werte abrunde oder bin ich euch nicht Geek genug?

Hier habe ich noch eine Wertetabelle. FALLS es jemandem was bringen sollte:
http://www.loaditup.de/files/411960.pdfMeiner Meinung nach ist der ganze Code wichtig, dass man überhaupt erstmal versteht, was die Berechnungen bedeuten.
-
Phisherman schrieb:
Könnt ihr mir jetzt noch sagen, wie ich die Werte abrunde oder bin ich euch nicht Geek genug?

Ich hab dir x Dinge gegeben, die du zu erst verbessern solltest und danach kannst du noch mal fragen...
Im übrigen hat das auch nichts mit nicht Geek genug zu tun - es ist für uns auch arbeit, den fehler zu suchen - und zumindest ich seh das auch nicht auf anhieb und würde den debugger nutzen müssen...
das könntest du genau so tun
du kommst eben iwie extrem faul rüber - und faulen leuten hilft man auch nicht so gerne wie den fleißigen - zumindest ist das bei mir so... der hauptgrund bleibt aber die qualität deines codes... änder das und versuchs dann noch mal...um das noch mal klar zu stellen:
Upps, das war der falsche Code.
Ich meine diesen hier:[HIER IST DER CODE MIT WERBUNG - davor war die noch nicht dabei
und es ist nun mal der letzte quellcode... das es bei den anderen nicht mit drin steht, ist mir gerad erst aufgefallen - aber war nur 1 von x Gründen, wieso dir keiner hilft]aber hast du die erste antwort mal gelesen? vll hat er ja recht...
bb
edit:
es gibt übrigens auch url-tags - dann können faule leute wie ich es auch bin viele klicks/tastendrücke sparen ;o)
habs mir zugegebenermaßen auch erst kurz angeguckt - mal gucken, ob ich geduldig genug bin, das nachzuvollziehen^^
-
du hast z.bsp. nicht bedacht, was passiert, wenn einer der variablen 0 ist...
ne zeile mit 0 multiplizieren ist verboten...(z1a*y2a)-(z2a*y1a)=zz ; (s1a*y2a)-(s2a*y1a)=ss
[...]
zraus=ss/zzhier ist der fehler, wenn ich jz nicht selbst nen denkfehler hab^^
bb
-
Danke, das war der Fehler...