Zahlen sortieren - Bessere Lösung

Bei dem Quellcode ist der Unterschied zur ersten Lösung das hier eine variable Anzahl von Zahlen sortiert werden kann. Wenn am Ende "exit" eingegeben wird, sortiert das Programm die Zahlen und gibt diese aus.


Zu Beginn wird eine ArrayList namens "sortieren" deklariert und erstellt. Danach folgt eine "for"-Schleife die einen string mit "Console.ReadLine();" einliest und diesen in der Variable "strzahl" speichert. In der "for"-Schleife werden die eingegebenen Zahlen mit "sortieren.Add(strzahl)" in die Arraylist hinzugefügt. Danach wird die nächste Zahl mit "Console.ReadLine();" eingelesen und in "strzahl" gespeichert. Da das alles in einer Schleife ist und sie auch irgendwann beendet werden muss, wird mit "if (strzahl == "exit")" abgefragt, ob die Variable "strzahl" den Wert "exit" beinhaltet. Falls dies der Fall ist, wird die Schleife mit "break;" verlassen.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Zahlen_sortieren
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Zahlen eingeben. \n z.B. \n 4 \n 5 \n 2 \n 7 \n 1 \n Wenn sie fertig sind geben sie exit zum beenden ein. \n Achtung: nur Zahlen von 0-9 verwendbar!");
Console.WriteLine("------------------------------------------------------------------");
ArrayList sortieren = new ArrayList();
for (string strzahl = Console.ReadLine(); ;)
{
sortieren.Add(strzahl);
strzahl = Console.ReadLine();
if (strzahl == "exit")
{
break;
}
}

Hier werden wieder die ganzen Zahlen mit "sortieren.Sort();" sortiert. Und wieder mit "PrintValues(sortieren);" ausgegeben.

Console.WriteLine("------------------------------------------------------------------");
sortieren.Sort();
Console.Write(" Zahlen:");
PrintValues(sortieren);
Console.WriteLine("Drücken sie enter um zu beenden!");
Console.ReadLine();
}
public static void PrintValues(IEnumerable myList)
{
foreach (Object obj in myList)
Console.Write(" {0}", obj);
Console.WriteLine();
}

}
}

Analyse

Positives

  • Man kann beliebig viele Zahlen sortieren
  • Der Code ist kürzer

Negatives

  • Man kann noch immer nicht zweistellige Zahlen sortieren
  • Die for-Schleife wurde falsch verwendet