Autor |
Beitrag |
CanPolat
      
Beiträge: 38
|
Verfasst: Sa 02.05.09 22:35
also ich habe mal ein programm geschrieben dass mir eine wertetabbele von einer e-funktion wieder geben soll.
ich hba nun das problem dass bei der ausgabe die gleichzeichen bzw die zahlen überhaupt nicht auf einer linie sind... kann mann das irgendwie umgehen?
das passiert wenn mehrere werte ausgegeben werden sollen, bei wenigen werten ist es eigentlich ganz ok.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace die_kleinste_aus_3_Variabelen { class Program { static void Main(string[] args) { int x = 0; while (x < 10) { double aw = -1; double bw = -1; double a = 0; double y = 0; while (aw < 0) { aw = 0; Console.WriteLine("a * exp^ y * x"); Console.WriteLine(); Console.Write("Gib bitte a ein: "); if (Double.TryParse(Console.ReadLine(), out a)) { while (bw < 0) { bw = 0; Console.Write("Gib bitte y ein: "); if (Double.TryParse(Console.ReadLine(), out y)) { } else { Console.WriteLine("Es wurde keine gültige Zahl eingegeben!"); Console.WriteLine(); bw = bw - 1; } } } else { Console.WriteLine("Es wurde keine gültige Zahl eingegeben!"); Console.WriteLine(); Console.WriteLine(); aw = aw - 1; } } double tabstart; double tabend; double tabstep;
Console.Write("Bei welchen Wert soll die Tabbelle beginnen? "); tabstart=Convert.ToDouble(Console.ReadLine()); Console.Write("Bei welchen Wert soll die Tabbelle enden? "); tabend = Convert.ToDouble(Console.ReadLine()); Console.Write("In welchen Abstand soll es berechnet werden? "); tabstep = Convert.ToDouble(Console.ReadLine()); Console.WriteLine(""); Console.WriteLine(""); double t = tabstart; double zähler = 1; Convert.ToDouble(zähler); Convert.ToDouble(t);
if (t >= tabend) { Rechnen1: if (t >= tabend) { Console.WriteLine(zähler + " = " + t + " = " + (a * Math.Exp(y * t))); t = t - tabstep; zähler = zähler + 1; goto Rechnen1; } } else { Rechnen: if (t <= tabend) { Console.WriteLine(zähler + " = " + t + " = " + (a * Math.Exp(y * t))); t = t + tabstep; zähler = zähler + 1; goto Rechnen; } } Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine("in einzelarbeit gerechnet von MIR XDDD"); x = x + 1; Console.Read(); } } } } |
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 02.05.09 22:42
Dafür füll einfach die umgewandelten Zahlen mit Leerzeichen vom Anfang her auf bis zu einer bestimmten Länge. C#-Quelltext 1: 2: 3: 4: 5: 6:
| String DoubleToString(double value, int len) { String temp = value.ToString(); while (temp.Length() < len) temp = " " + temp; return temp; } | So oder so ungefähr sollte das klappen. 
|
|
CanPolat 
      
Beiträge: 38
|
Verfasst: Sa 02.05.09 23:11
hmm... nach langem überlegen bin ich drauf gekommen auf was du hinaus willst, und genau über sowas hatte ich nachgedacht^^
aber ich komm net drauf wie und wo ich es einsätzen muss>.<... dazu kommt noch das ich nicht ganz verstehe was du mit ".Length" bezwcken willst.
bei:
C#-Quelltext 1: 2: 3: 4: 5: 6:
| String DoubleToString(double value, int len) { String temp = value.ToString(); while (temp.Length() < len) temp = " " + temp; return temp; } |
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 02.05.09 23:13
Naja, solange die Länge der Strings mit dem Zahlenwert kleiner als die vorgegebene Länge ist, wird ein Leerzeichen davor gesetzt. Am Ende hat der String mit der Zahl dann die übergebene Länge len.
|
|
CanPolat 
      
Beiträge: 38
|
Verfasst: So 03.05.09 10:16
auf die gefahr hin dass ich wieder ärger bekomme (von wegen DU MUSST DIR DIE GUNDLAGEN EINEIGNEN!!!)
ich bekomme es ums verrecken nicht hin, sitze mitlerweile schon seit 2std daran>.<
habe schon gegoogeld (mit msdn und c# openbook dahinter), in msdn nachgeguckt, im c# index nachgeguckt und sogar willkürlich übberal in meinen programm eingesätzt^^
ich bin soweit dass ich den befehl schon entgültig verstanden habe(was es machen soll) aber wie muss ich das in mein programm einbauen? kann mir das vill einer sagen (am besten die stelle gleich makieren an die es soll?
währe echt super lieb von euch^^
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.05.09 10:17
C#-Quelltext 1:
| DoubleToString(zähler, 10) + " = "... | 
|
|
CanPolat 
      
Beiträge: 38
|
Verfasst: So 03.05.09 10:48
achso^^
so geht das xD
danke.. habs verstanden^^
nur das funktioniert nicht, weil es die leerzeichen erst ergenzt wenn die zahl ja schon größer ist^^
naja.. so einen schöhnheitsfehler muss man wohl oder übel in kauf nehmen^^
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.05.09 10:52
Wenn die Zahlen größer sein können, musst du eben statt 10 Ziffern eine größere Breite angeben, aber das wird doch eigentlich kaum der Fall sein. 
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: So 03.05.09 10:59
spricht irgendwas gegen "string.Format"?
Wenn nein...
C#-Quelltext 1:
| string.Format("{0,20:#.##########}",zähler) |
BTW. versuch GOTO zu meiden...
|
|
CanPolat 
      
Beiträge: 38
|
Verfasst: So 03.05.09 11:08
das mit dem Format ist ja der hammer, genau sowas habe ich gesucht^^ danke;)
ehm... warum soll ich nicht mit goto arbeiten?, damit kann mann doch vonn schnell zum ziehl kommen;=)
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: So 03.05.09 12:51
CanPolat hat folgendes geschrieben : | das mit dem Format ist ja der hammer, genau sowas habe ich gesucht^^ danke;) |
Und warum hast du es in deiner neuen Frage zur Formatierung nicht probiert?
CanPolat hat folgendes geschrieben : | ehm... warum soll ich nicht mit goto arbeiten?, damit kann mann doch vonn schnell zum ziehl kommen;=) |
Es wird sehr unübersichtlich, wenn du von irgendwo "schnell" irgendwohin springst. Eine kurze, unvollständige Erläuterung ist unter Wikipedia: Sprunganweisung zu finden.
Jürgen
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.05.09 12:57
Ich wundere mich ohnehin warum eine moderne Sprache wie C# goto überhaupt implementiert hat, das wusste ich bis jetzt nicht einmal.
Aber das gehört hier nicht hin.
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: So 03.05.09 16:32
Auch wen wir jetzt ein wenig Offtopic gehen...
Goto hat schon seine Daseinsberechtigung. Es gibt z.b. keinen performanteren Weg als über goto wenn man verschachtelte Schleifen hat und alle verlassen will. ( Okay in java gibts labeled breaks die das gleiche macht im Prinzip ). Ansonsten müsste man bei jeder Bedingung noch zusätzliche checks einbauen die eben bei jedem durchlauf ein wenig performance kosten.
|
|