| 
| Autor | Beitrag |  
| Mysterio08 
          Beiträge: 21
 
 
 
 
 | 
Verfasst: Sa 02.10.10 12:00 
 
Hallo,
 ich habe eine Frage zur Case-Anweisung: Ist es möglich, auch ganze (Integer-)Bereiche prüfen zu lassen? In Delphi wäre das also äquivalent zu "1..5".
 Wenn es so etwas nicht gibt: Wie würdet ihr solche Prüfungen vornehmen? Mit if-else (die einzige Alternative, die mir einfällt)?! Da ist dann aber wieder der Nachteil, dass es bei vielen (Bereichs-)Prüfungen sehr unübersichtlich wird.
 
 mfg.
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 02.10.10 12:50 
 
Du kannst nur schauen, ob du die Bereiche mathematisch erfassen kannst und auf wenige Werte reduzieren kannst.
 Eine andere Möglichkeit gibt es in C# nicht, da musst du schon if..else benutzen.
 
 Je nach Anwendungszweck und Zahlenbereichen kann es aber andere Tricks bzw. Möglichkeiten geben.
 |  |  |  
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 02.10.10 14:46 
 
Also in C lässt man einfach das break am Ende weg. Jetzt ist mir aber die C#-case-Syntax nicht geläufig, deswegen kann ich nicht sagen, ob es da auch so geht. |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 02.10.10 14:49 
 
Ja, das geht genauso, aber man muss ja trotzdem die einzelnen Werte angeben. |  |  |  
| Mysterio08  
          Beiträge: 21
 
 
 
 
 | 
Verfasst: So 03.10.10 07:42 
 
	  |  jaenicke hat folgendes geschrieben  : |  	  | Du kannst nur schauen, ob du die Bereiche mathematisch erfassen kannst und auf wenige Werte reduzieren kannst. | 
 Ich bin auf diese Bereichsfrage erst gekommen, als ich eine ganz einfache Aufgabe lösen wollte: in ein Edit wird eine Zahl zwischen 1 und 15 eingegeben und ausgegeben wird die Note - wie man es von der Oberstufe kennt.
 Wie würdest du da solch einen mathematischen Bereich erfassen bzw. mit welchem Trick (nur damit ich mal eine Vorstellung habe). |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: So 03.10.10 08:18 
 
Nun, dort macht eine komplette Switch-Abfrage kaum Sinn, da man die Note auch direkt berechnen kann. Bereiche gibt es da für + oder - als Zusatz, das kann man mit modulo zusammenfassen. Hier mal zwei Lösungswege, ein kurzer und einer mit switch.   		                       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:
 
 |         private void button1_Click(object sender, EventArgs e){
 int Mark = 0;
 if (Int32.TryParse(textBox1.Text, out Mark))
 label1.Text = new string[] { "6", "5-", "5", "5+", "4-", "4", "4+", "3-",
 "3", "3+", "2-", "2", "2+", "1-", "1", "1+" }[Mark];
 }
 
 private void button2_Click(object sender, EventArgs e)
 {
 int Mark = 0;
 if (Int32.TryParse(textBox2.Text, out Mark)) {
 int NewMark = 6 - (Int32)Math.Ceiling(Mark / 3.0);
 String MarkString = NewMark.ToString();
 switch (Mark % 3)
 {
 case 0:
 if (Mark != 0)
 MarkString = MarkString + '+';
 break;
 case 1:
 MarkString = MarkString + '-';
 break;
 }
 label2.Text = MarkString;
 }
 }
 |  Ach ja, für die Zahlen 1-15 als Bereich könntest du modulo 15 benutzen, wenn du schauen willst ob eine Zahl in diesem Bereich ist. |  |  |  |