Entwickler-Ecke
C# - Die Sprache - if Anweisungen
0jeppa - So 18.10.09 09:58
Titel: if Anweisungen
Hallo Zusammen,
leider habe ich noch grosse mühe mit der Programmierung. Dieses Beispiel sollen wir lösen, aber selbst da stehe ich schon an. Eigentlich sollte diese Aufgabe ja nicht so schwierig sein, aber ich weiss schon garnicht so richtig wie anfangen.
Wäre für eure Hilfe wirklich sehr dankbar.
Dies ist die Aufgabe:
Die Integerzahl c lässt sich aus den beiden Ganzzahlen a und b bestimmen.
c = 0 für a < 3 und b < 5
c = 1 für 3 <= a < 7 und b < 5
c = 2 für 3 <= a < 7 und 5 <= b < 10
c = 3 für 7 <= a und 5 <= b < 10
c = 4 sonst
Viele Grüsse
Thomas
0jeppa - So 18.10.09 11:10
Hallo
Danke für die schnelle Antwort und die Tips.
Eigentlich sind mir die if-anweisungen soweit klar. Ich habe einfach das Problem, das ich nicht weiss wie ich das mit c# umsetzen kann, also sprich was ich eingeben muss.
So habe ich es mal eingegeben, aber das stimmt ja nicht.
C#-Quelltext
1: 2: 3: 4: 5:
| Console.WriteLine("a = ; b = ");
int c = 0;
if ( a < 3 && b < 5); |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christian S. - So 18.10.09 11:24
Naja, Du musst ja noch hinschreiben, was passieren soll, wenn die Bedingung wahr ist. Ein Semikolon ist da ein bisschen wenig ;-)
0jeppa - So 18.10.09 12:55
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| static void Main(string[] args) { Console.WriteLine("a = ");
int c = 0; if ( a < 3 );
{Console.WriteLine(c = 0);
if (a > 3);
Console.WriteLine (c = 1); |
Wieso funktioniert das nicht?
Ich probiere jetzt schon mehrere Stunden daran rum und komme einfach auf keine Lösung.
Moderiert von
Christian S.: C#-Tags hinzugefügt
jaenicke - So 18.10.09 13:00
Du machst nach dem if ja nichts. Durch das Semikolon beendest du das if gleich wieder...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if (irgendwas) MachWas();
if (irgendwas) { MachWas(); MachWas(); } |
0jeppa - So 18.10.09 13:30
Ich komme da nicht weiter, vielleicht gibt es ja irgendjemand der mir das Programm zu dem Problem schreiben kann, damit ich überhaupt erstmal weiss was ich da alles machen muss.
0jeppa - So 18.10.09 13:42
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| Console.WriteLine("a = ");
int c = 0; int a = 0; int b = 0;
if (a < 3 && b < 5) { Console.WriteLine(c = 0); } { if (a > 3 && b < 5)
Console.WriteLine(c = 1);
if (3 < a && a < 7 && 5 <= b && b < 10)
Console.WriteLine(c = 2); if (7 <= a && 5 <= b && b < 10)
Console.WriteLine(c = 3); else Console.WriteLine(c = 4); |
Habe nochmal etwas angepasst, vielleicht kann mir jemand sagen, warum es noch nicht so funktioniert wie es sollte.
Moderiert von
Christian S.: C#-Tags hinzugefügt
jaenicke - So 18.10.09 13:50
Wenn da steht <=, dann solltest du das auch schreiben (hast du bei a nicht überall wie in der Liste). Und es fehlen ein paar else, da sonst das else nur für das letzte if gilt.
Veränderst du die Werte von a und b denn? Wenn du die fest auf 0 setzt, kann es ja nicht klappen.
Und im Forum solltest du die C# Tags verwenden: <span class="inlineSyntax">{PROTECTTAGa3dd33d2b2536ff99b7270dd32390392}</span>
0jeppa - So 18.10.09 14:03
Danke für den Tip, habe es nochmal angepasst
C#-Quelltext
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:
| Console.WriteLine("a = ");
int c = 0; int a = 0; int b = 0;
if (a < 3 && b < 5) { Console.WriteLine(c = 0); } { if (a > 3 && b < 5)
Console.WriteLine(c = 1); else
if (3 <= a && a < 7 && b < 5)
Console.WriteLine(c = 2); else
if (7 <= a && 5 <= b && b < 10)
Console.WriteLine(c = 3); else Console.WriteLine(c = 4); |
Wie kann ich es denn programmieren, das ich für a und b immer andere werte eingeben kann?
Moderiert von
Christian S.: C#-Tags hinzugefügt
0jeppa - So 18.10.09 14:15
Ok, nun komme ich der Sache immer näher, glaube ich zumindest.
Kann jetzt Werte für a und b eingeben, aber das c wird nicht ausgegeben.
Wenn ich int a=0 und int b=0 wegnehme kommt mir gleich ein Fehler. Was ist noch falsch?
C#-Quelltext
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:
| static void Main(string[] args) { Console.WriteLine("a = "); Console.ReadLine();
Console.WriteLine("b = "); Console.ReadLine();
int c = 0; int a = 0; int b = 0;
if (a < 3 && b < 5) { Console.WriteLine(c = 0); } { if (a > 3 && b < 5)
Console.WriteLine(c = 1); else
if (3 <= a && a < 7 && b < 5)
Console.WriteLine(c = 2); else
if (7 <= a && 5 <= b && b < 10)
Console.WriteLine(c = 3); else Console.WriteLine(c = 4); |
Moderiert von
Christian S.: C#-Tags hinzugefügt
jaenicke - So 18.10.09 14:21
Du ignorierst ja auch die Eingabe, die dir ReadLine zurückgibt...
0jeppa - So 18.10.09 14:35
Ja, stimmt.
aber ich kann ja nicht sagen if (console.readline < 3) anstelle (a < 3)
Ich weiss nicht wie ich das umsetzen kann.
jaenicke - So 18.10.09 14:39
Du musst den eingelesenen Wert in einen Integerwert umwandeln falls möglich und damit dann arbeiten.
C#-Quelltext
1: 2: 3:
| int MyValue = 0; if Int32.TryParse(Console.ReadLine(), out MyValue) Console.WriteLine(MyValue); |
0jeppa - So 18.10.09 15:05
Wo muss ich das reinbasteln, grad am Anfang?
Diese Begriffe sagen mir nichts.
Christian S. - So 18.10.09 15:09
0jeppa hat folgendes geschrieben : |
Wo muss ich das reinbasteln, grad am Anfang? |
Wo willst Du die Werte den einlesen? Am Ende macht's wohl einen Sinn ;-)
0jeppa - So 18.10.09 15:19
C#-Quelltext
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:
| namespace ConsoleApplication1 { class Program { static void Main(string[] args) {
Console.WriteLine("a = "); Console.ReadLine(); Console.WriteLine("b = "); Console.ReadLine();
int MyValue = 0; if (Int32.TryParse(Console.ReadLine(), out MyValue)) Console.WriteLine(MyValue);
if (a < 3 && b < 5) { Console.WriteLine(c = 0); int c = Convert.ToInt32(Console.ReadLine()); } { if (a > 3 && b < 5)
Console.WriteLine(c = 1); else
if (3 <= a && a < 7 && b < 5)
Console.WriteLine(c = 2); else
if (7 <= a && 5 <= b && b < 10)
Console.WriteLine(c = 3); else Console.WriteLine(c = 4); |
Hilfe benötigt, was muss ich tun???
Moderiert von
Christian S.: C#-Tags hinzugefügt
jaenicke - So 18.10.09 15:21
Sorry, aber es bringt nichts, wenn du einfach etwas hineinkopierst ohne irgendwie zu versuchen zu verstehen was da passiert. :nixweiss:
0jeppa - So 18.10.09 15:38
Natürlich versuche ich es zu verstehen, auch wenn es vielleicht manchmal nicht danach aussieht.
Ich muss also a und b konvertieren, ist das richtig?
int a = Convert.ToInt32(Console.ReadLine());
0jeppa - So 18.10.09 16:04
Ich danke dir für deine Hilfe und Unterstützung.
Aber irgendwie komme ich nicht mehr weiter.
JüTho - So 18.10.09 16:18
Zitat: |
int a = Convert.ToInt32(Console.ReadLine()); |
Und was passiert, wenn "a2#xyz!" eingegeben wird? Wie willst du das als Zahl verrechnen? Sebastian hat dir eine andere Lösung genannt und aufgeschrieben. Ich möchte dasselbe aufteilen
C#-Quelltext
1: 2: 3: 4: 5:
| string input = Console.ReadLine(); int MyValue = 0; if ( int.TryParse(input, out MyValue) ) { } |
Aber du hast viel grundsätzlichere Probleme. Du musst
schrittweise vorgehen.
- Ich muss einen ersten Wert eingeben.
- Dieser Wert muss (soweit möglich) in eine Zahl konvertiert werden.
- Dann brauche ich den zweiten Wert.
- Auch der ist zu konvertieren.
- Dann prüfe ich die erste Bedingung.
- Wenn sie erfüllt ist, dann kann ich das Ergebnis ausgeben.
- Andernfalls prüfe ich die zweite Bedingung.
- usw.
Wenn du mit deinen Anweisungen und Code-Schnipseln hin- und herspringst, kannst du nicht sinnvoll vorankommen.
Wenn du von Hamburg nach Köln fahren willst, steigst du auch nicht als erstes in Osnabrück in den Zug, kaufst dann in Bremen die Fahrkarte und steigst in Dortmund aus.
Außerdem musst du berücksichtigen, wo etwas
gemacht wird und wo etwas
abgefragt wird. Bei WriteLine() sagst du dem Computer etwas; aber das Ergebnis interessiert dich nicht weiter; du gehst einfach davon aus, dass der Text wirklich geschrieben wird. Bei ReadLine() willst du das Ergebnis haben und weiterverarbeiten; also brauchst du eine
Zuweisung dieses Textes an eine Variable (bei mir input). WriteLine() hat den
Rückgabewert void, ReadLine() liefert einen string zurück.
Schließlich musst du noch den
Geltungsbereich von Variablen berücksichtigen. Wenn die Festlegung "int i" gelöscht wird, kannst du die Variable i nicht benutzen. Woher soll der Compiler wissen, was du damit meinst?
Du musst wirklich alles von Anfang an lernen. Dazu hatte ich schon einmal auf das
OpenBook [
http://openbook.galileocomputing.de/visual_csharp/] hingewiesen. Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!