Benutzer mit den meisten Antworten
2D Array Hilffe

Frage
-
Guten Tag liebes Forum,
Ich brauche hilfe ich will gerne Arrays lernen und würde euch bitten mir mal ein Programm mit hilfe von 2D Arrays zu Programmieren das Den Notendurchschnitt 3er Schüler in 3 Fächern berechnet also ich meine das so : Da steht zb Stefan : Mathe : ( da kann man zahl eingeben) Englisch : ( da kann man zahl eingeben) Deutsch :( da kann man zahl eingeben)
Matthias : Mathe : ( da kann man zahl eingeben) Englisch : ( da kann man zahl eingeben) Deutsch : ( da kann man zahl eingeben)
Hannes : Mathe : ( da kann man zahl eingeben) Englisch ( da kann man zahl eingeben) Deutsch : ( da kann man zahl eingeben)
durchschnittsnote Stefan = ....
durchschnittsnote Matthias =.......
durchschnittsnote Hannes = .....
viielen Danke, ( für die die jz posten wollen find es selber herraus oder wir sind net da um deine Hü zu machen Schreibts bitte nichts ) Ansonsten biin ich allen Dankbar
Antworten
-
So in der Art könnte ein einfaches Program aussehen:
using System; namespace ConsoleApp { public class Notendurchschnitt { public static void Main() { // Eingabe Anzahl Schüler int anzahlSchueler; Console.Write("Bitte Anzahl der Schüler eingeben: "); anzahlSchueler = Int32.Parse(Console.ReadLine()); // Schülernamen einlesen string[] schueler = new string[anzahlSchueler]; for (int i = 0; i < anzahlSchueler; i++) { Console.Write("Schülername Nr. {0}: ", i+1); schueler[i] = Console.ReadLine(); } // Eingabe Anzahl Fächer int anzahlFaecher; Console.Write("Bitte Anzahl der Fächer eingeben: "); anzahlFaecher = Int32.Parse(Console.ReadLine()); // Fächer einlesen string[] faecher = new string[anzahlFaecher]; for (int i = 0; i < anzahlFaecher; i++) { Console.Write("Fach Nr. {0}: ", i+1); faecher[i] = Console.ReadLine(); } // Eingabe der Noten int[,] noten = new int[anzahlSchueler, anzahlFaecher]; for (int i = 0; i < anzahlSchueler; i++) { for (int j = 0; j < anzahlFaecher; j++) { Console.Write("Note für {0} in Fach {1}: ", schueler[i], faecher[j]); noten[i, j] = Int32.Parse(Console.ReadLine()); } } // Berechnen und Ausgabe der Durchschnittsnoten int klassenZaehler = 0; int klassenSumme = 0; for (int i = 0; i < anzahlSchueler; i++) { int zaehler = 0; int summe = 0; for (int j = 0; j < anzahlFaecher; j++) { // Für den Schüler zaehler++; summe += noten[i, j]; // Für die Klasse klassenZaehler++; klassenSumme += noten[i, j]; } if (zaehler > 0) Console.WriteLine("{0} hat einen Schnitt von {1}", schueler[i], summe/zaehler); else Console.WriteLine("Für {0} wurde keine Note eingegeben.", schueler[i]); } // Ausgabe des Klassendurchschnitts: if (klassenZaehler > 0) Console.WriteLine("Die Klasse hat einen Schnitt von {0}", klassenSumme / klassenZaehler); else Console.WriteLine("Es wurden keine Noten eingegeben."); // Warten auf Enter-taste für Ende Console.ReadLine(); } } }
- Als Antwort markiert Elmar BoyeEditor Montag, 6. Juni 2011 11:34
Alle Antworten
-
Hmm. Blödes Beispiel. Daher ist nun wichtig, was Du genau brauchst.
a) Diese Beispiel
b) Lernen, wie man mit 2D Array umgeht.
Bei A würde ich schreiben:
C# ist eine Objektorientierte Sprache und man sollte immer versuchen, die eigentlich notwendigen Objekte zu analysieren. Alsi ich sehe hier direkt, dass es Schüler gibt, die Fächer belegt haben und in diesen Fächern Noten bekommen... Also könnte man hier schon gleich ein kleines Objektmodell haben. Den Schülern würde ich also eine Collection mit Fächern geben (und natürlich so Dinge wie Name und so. Eine referenz auf eine Klasse könnte gut sein, u.s.w.) Jedes fach hat dann eine Note. Wobei man hier evtl. deutlich mehr an Noten erfassen will. So werden mehrere Arbeiten geschrieben und bewertet und es gibt mündliche Noten. Evtl. hat jede Note noch eine Gewichtung. Dann wäre die Endnote nur noch eine einfache Berechnung.
Und dann wäre die Berechnung der Durchschnitsnoten in etwa wie folgt zu berechnen:
foreach (var schueler in klasse.Schueler)
{
int summe = 0;
int zaehler = 0;
foreach (var fach in schueler.Noten)
{
summe += fach.Note;
zaehler++;
}
if (zaehler == 0)
Console.WriteLine("Der Schüler {0} hat keine Fächer belegt!", schueler.Name);
else
Console.WriteLine("Der Schüler {0} hat eine {1}.", schueler.Name, summe / zaehler);}
bezüglich b)
Arrays sind generell eine Ansammlun von "Feldern", die durchnummeriert sind. Die einzelnen Felder sind ansprechbar über die Nummer. Die Zählweise kann dabei variieren, in C# ist das erste Feld aber normalerweise immer mit 0 beziffert.
bei mehrdimmensionalen Array ist dies nicht anders, nur eben müssen mehrere Dimensionen angegeben werden. Bei zwei Dimensionen kann man sich dies also z.B. vorstellen wie ein kariertes Blatt Papier mit Feldern. Das Feld oben in der Ecke ist 0,0. Die erste 0 gibt dann z.B. die Zeile an und die Zweite die Spalte. 3,4 wäre also das 4te Feld in der 3 Reihe.
So könntest Du dir dies vorstellen.
Nun ist wichtig, dass Du die Felder füllen kannst. Hier kommt dan rein, dass es zwei Arten von Typen gibt: Value und Referenz. Value typen sind ganz einfach: Immer, wenn Du die weiter gibst, muss der ganze Wert geschrieben werden. Also int, long und so wären hier Beispiele. Wenn Du ein Array von int Zahlen hast, entspricht dies also, dass Du in die Kästchen immer die Zahl selbst schreibst.
Bei der Referenz ist dies komplizierter. Referenz-typen könnte man sich bildhaft vorstellen wie Bücher. Wenn Du eine neue Instanz erstellst, dann wird sozusagen ein Buch gedruckt und dann an seinen Platz gestellt. Und wann immer jemand damit arbeiten will, bekommt der lediglich eine Referenz ("Das Buch findest Du in dem Regal an der Stelle.")
In Deinem Beispiel - wenn man dem denn nun folgen möchte - müsstest Du nun z.B. an die Zeilen die Namen der Schüler "schreiben". Stefan wäre dann 0, Matthias 1, Hannes 2, ...
Und an die Spalten schreibst Du die Fächer (Mathe 0, Deutsch 1, Englisch 2, ....)
Nun kannst Du den Durchschnitt ausrechnen. Die Schleifen sind prinzipiell genauso wie schon oben. Nur eben haben wir jetzt ein Durchzählen, wofür eine for schleife genommen wird:
for (var schueler = 0; schueler <= 2; schueler++)
{
// ...
}geht durch alle schüler durch.
for (var fach = 0; fach <= 2; fach++) geht durch alle Fächer durch.
Die Note selbst bekommst Du durch den Zugriff aufs Array - also wenn das Array "Noten" heisst, dann wäre dies Noten[schueler, fach].
Damit kannst Du den Code aus a) abändern und Du hast die Berechnung.
Mit den besten Grüßen,
Konrad
-
Hmm. Blödes Beispiel. Daher ist nun wichtig, was Du genau brauchst.
a) Diese Beispiel
b) Lernen, wie man mit 2D Array umgeht.
Bei A würde ich schreiben:
C# ist eine Objektorientierte Sprache und man sollte immer versuchen, die eigentlich notwendigen Objekte zu analysieren. Alsi ich sehe hier direkt, dass es Schüler gibt, die Fächer belegt haben und in diesen Fächern Noten bekommen... Also könnte man hier schon gleich ein kleines Objektmodell haben. Den Schülern würde ich also eine Collection mit Fächern geben (und natürlich so Dinge wie Name und so. Eine referenz auf eine Klasse könnte gut sein, u.s.w.) Jedes fach hat dann eine Note. Wobei man hier evtl. deutlich mehr an Noten erfassen will. So werden mehrere Arbeiten geschrieben und bewertet und es gibt mündliche Noten. Evtl. hat jede Note noch eine Gewichtung. Dann wäre die Endnote nur noch eine einfache Berechnung.
Und dann wäre die Berechnung der Durchschnitsnoten in etwa wie folgt zu berechnen:
foreach (var schueler in klasse.Schueler)
{
int summe = 0;
int zaehler = 0;
foreach (var fach in schueler.Noten)
{
summe += fach.Note;
zaehler++;
}
if (zaehler == 0)
Console.WriteLine("Der Schüler {0} hat keine Fächer belegt!", schueler.Name);
else
Console.WriteLine("Der Schüler {0} hat eine {1}.", schueler.Name, summe / zaehler);}
bezüglich b)
Arrays sind generell eine Ansammlun von "Feldern", die durchnummeriert sind. Die einzelnen Felder sind ansprechbar über die Nummer. Die Zählweise kann dabei variieren, in C# ist das erste Feld aber normalerweise immer mit 0 beziffert.
bei mehrdimmensionalen Array ist dies nicht anders, nur eben müssen mehrere Dimensionen angegeben werden. Bei zwei Dimensionen kann man sich dies also z.B. vorstellen wie ein kariertes Blatt Papier mit Feldern. Das Feld oben in der Ecke ist 0,0. Die erste 0 gibt dann z.B. die Zeile an und die Zweite die Spalte. 3,4 wäre also das 4te Feld in der 3 Reihe.
So könntest Du dir dies vorstellen.
Nun ist wichtig, dass Du die Felder füllen kannst. Hier kommt dan rein, dass es zwei Arten von Typen gibt: Value und Referenz. Value typen sind ganz einfach: Immer, wenn Du die weiter gibst, muss der ganze Wert geschrieben werden. Also int, long und so wären hier Beispiele. Wenn Du ein Array von int Zahlen hast, entspricht dies also, dass Du in die Kästchen immer die Zahl selbst schreibst.
Bei der Referenz ist dies komplizierter. Referenz-typen könnte man sich bildhaft vorstellen wie Bücher. Wenn Du eine neue Instanz erstellst, dann wird sozusagen ein Buch gedruckt und dann an seinen Platz gestellt. Und wann immer jemand damit arbeiten will, bekommt der lediglich eine Referenz ("Das Buch findest Du in dem Regal an der Stelle.")
In Deinem Beispiel - wenn man dem denn nun folgen möchte - müsstest Du nun z.B. an die Zeilen die Namen der Schüler "schreiben". Stefan wäre dann 0, Matthias 1, Hannes 2, ...
Und an die Spalten schreibst Du die Fächer (Mathe 0, Deutsch 1, Englisch 2, ....)
Nun kannst Du den Durchschnitt ausrechnen. Die Schleifen sind prinzipiell genauso wie schon oben. Nur eben haben wir jetzt ein Durchzählen, wofür eine for schleife genommen wird:
for (var schueler = 0; schueler <= 2; schueler++)
{
// ...
}geht durch alle schüler durch.
for (var fach = 0; fach <= 2; fach++) geht durch alle Fächer durch.
Die Note selbst bekommst Du durch den Zugriff aufs Array - also wenn das Array "Noten" heisst, dann wäre dies Noten[schueler, fach].
Damit kannst Du den Code aus a) abändern und Du hast die Berechnung.
Mit den besten Grüßen,
Konrad
Vielen Dank Konrad,
Das war wirklcih sehr nett und ich danke dir viel mals nur brauche ich eine Methode die 2 D Arrays verwendet ohne var und so sondern nur mit : Schleifen,Strings,Int, und Arrays eben trozdem war das sehr nett und ich danke dir dafür :) ich währe sehr fro wenn du mir das programm mit arrays strings und intager programmieren könntest wie du beschriben hast mit zeilen und spalt wo Schüler und noten aufgelistet sind .
viel Dank für deine Grossartige Hilfe,. -
Das "var" Schlüsselwort ist einfach nur ein Feature von C#, das relativ neu ist. Wenn ich es beschreiben müsste, dann würde ich sagen, es ist für faule Entwickler, denn das "var" sagt dem Compiler: "Such Du den Typ raus - ich bin zu faul dazu!".
In der for Schleife wäre es zu ersetzen durch int. Bei den anderen Beispielen jeweils Durch die verwendete Klasse oder so (wobei das dann meiner Meinung nach schwieriger zu lesen ist. Ich bevorzuge das kurze var.
Wie gesagt: den Code hast Du prinzipiell schon. Wichtig ist, dass Du halt in den arrays die Spalten / Zeilennummer angeben musst. Da ist nichts mit Strings.
Evtl. kannst Du Arrays mit Schülern und Fächern basteln. Da hast Du dann die Zugehörigkeit von String zu array, weil es halt Arrays von Strings wären.
Versuch doch einmal, sowas selbst zu schreiben und bring Dein Ergebnis (egal ob es funktioniert oder nicht!) oder versuch die fehlenden Bruchstücke durch weitere, genauere Fragen zu bekommen. Da helfe ich (und bestimmt auch andere) gerne. Ansonsten bin ich tatsächlich der Meinung, dass die Erledigung von Aufgaben Dir nur temporär hilft. Ziel ist es in meinen Augen, Dir das Wissen zu vermitteln, dass Du selbst eine Lösung bauen kannst.
Mit den besten Grüßen,
Konrad
-
Das "var" Schlüsselwort ist einfach nur ein Feature von C#, das relativ neu ist. Wenn ich es beschreiben müsste, dann würde ich sagen, es ist für faule Entwickler, denn das "var" sagt dem Compiler: "Such Du den Typ raus - ich bin zu faul dazu!".
In der for Schleife wäre es zu ersetzen durch int. Bei den anderen Beispielen jeweils Durch die verwendete Klasse oder so (wobei das dann meiner Meinung nach schwieriger zu lesen ist. Ich bevorzuge das kurze var.
Wie gesagt: den Code hast Du prinzipiell schon. Wichtig ist, dass Du halt in den arrays die Spalten / Zeilennummer angeben musst. Da ist nichts mit Strings.
Evtl. kannst Du Arrays mit Schülern und Fächern basteln. Da hast Du dann die Zugehörigkeit von String zu array, weil es halt Arrays von Strings wären.
Versuch doch einmal, sowas selbst zu schreiben und bring Dein Ergebnis (egal ob es funktioniert oder nicht!) oder versuch die fehlenden Bruchstücke durch weitere, genauere Fragen zu bekommen. Da helfe ich (und bestimmt auch andere) gerne. Ansonsten bin ich tatsächlich der Meinung, dass die Erledigung von Aufgaben Dir nur temporär hilft. Ziel ist es in meinen Augen, Dir das Wissen zu vermitteln, dass Du selbst eine Lösung bauen kannst.
Mit den besten Grüßen,
Konrad
-
Hallo Ediiis,
das ist halt kein kompletter Code. Und die foreach Schleife als solche wirst du auch nicht brauchen, wenn Du mit dem Array arbeitest.
Ich gebe Dir einfach ein paar mehr Codeschnipsel, wie ich das jetzt erst einmal machen würde ...
(Ich gehe nun mal von 4 Schülern (0-3) und 3 Fächern (0-2) aus.a) Array mit Schülern: string[] schueler = new string[4]; schueler[0]="..."; ....
b) Array mit Fächern: string[] faecher = new string[3]; faecher[0]="..."; ....
c) Array mit Noten: int[,] noten = new int[4,3];
Nun musst Du die Noten füllen. Dazu kannst Du einfach eine Eingabe machen. Sind zwei Schleifen.
Zuerst eine Schleife über alle Schüler. (z.b. for (int i = 0; i<4; i++) )
- Ausgabe des Schülers (also schueler[i] ausgeben, damit klar ist, um welchen Schüler es nun geht. i ersetzt Du durch die gewählte Zählvariable.
- Dann eine Schleife über alle Fächer. (z.B. for (int j = 0; j < 3; j++) )
- Ausgabe a la. "Bitte Note für Fach faecher[j] eingeben.
- Die Zahl einlesen (So es eine Konsolen-Applikation ist) und in noten[i,j] speichern.Und dann die Berechnung prinzipiell wie in meiner foreach beispiel - nur eben die beiden foreach durch die for schleifen von der Eingabe ersetzen. Und die Summe ist dann natürlich mit noten[i,j] zu berechnen.
Reicht dies so, dass Du klar kommst? Zumindest habe ich das Gefühl, dass jetzt nicht mehr so viel fehlt ...
Mit den besten Grüßen,
Konrad
-
Lieber Konrad,Ich danke dir sehr für deine schnellen und guten Antworten doch ich habe ihmmer noch probleme und habe vergessen zu erwähnen das ich am ende auch den durchschnitt der drei schükler zusammenbrauche also so zu sagen den klassendurchschnitt ich würde dich inständig bitten mir den ganzen cod aufzuschreiben falles es dir keine mühe macht sodass ich mir den code anschauen und verstehen kann.
-
So in der Art könnte ein einfaches Program aussehen:
using System; namespace ConsoleApp { public class Notendurchschnitt { public static void Main() { // Eingabe Anzahl Schüler int anzahlSchueler; Console.Write("Bitte Anzahl der Schüler eingeben: "); anzahlSchueler = Int32.Parse(Console.ReadLine()); // Schülernamen einlesen string[] schueler = new string[anzahlSchueler]; for (int i = 0; i < anzahlSchueler; i++) { Console.Write("Schülername Nr. {0}: ", i+1); schueler[i] = Console.ReadLine(); } // Eingabe Anzahl Fächer int anzahlFaecher; Console.Write("Bitte Anzahl der Fächer eingeben: "); anzahlFaecher = Int32.Parse(Console.ReadLine()); // Fächer einlesen string[] faecher = new string[anzahlFaecher]; for (int i = 0; i < anzahlFaecher; i++) { Console.Write("Fach Nr. {0}: ", i+1); faecher[i] = Console.ReadLine(); } // Eingabe der Noten int[,] noten = new int[anzahlSchueler, anzahlFaecher]; for (int i = 0; i < anzahlSchueler; i++) { for (int j = 0; j < anzahlFaecher; j++) { Console.Write("Note für {0} in Fach {1}: ", schueler[i], faecher[j]); noten[i, j] = Int32.Parse(Console.ReadLine()); } } // Berechnen und Ausgabe der Durchschnittsnoten int klassenZaehler = 0; int klassenSumme = 0; for (int i = 0; i < anzahlSchueler; i++) { int zaehler = 0; int summe = 0; for (int j = 0; j < anzahlFaecher; j++) { // Für den Schüler zaehler++; summe += noten[i, j]; // Für die Klasse klassenZaehler++; klassenSumme += noten[i, j]; } if (zaehler > 0) Console.WriteLine("{0} hat einen Schnitt von {1}", schueler[i], summe/zaehler); else Console.WriteLine("Für {0} wurde keine Note eingegeben.", schueler[i]); } // Ausgabe des Klassendurchschnitts: if (klassenZaehler > 0) Console.WriteLine("Die Klasse hat einen Schnitt von {0}", klassenSumme / klassenZaehler); else Console.WriteLine("Es wurden keine Noten eingegeben."); // Warten auf Enter-taste für Ende Console.ReadLine(); } } }
- Als Antwort markiert Elmar BoyeEditor Montag, 6. Juni 2011 11:34
-
So in der Art könnte ein einfaches Program aussehen:
using System; namespace ConsoleApp { public class Notendurchschnitt { public static void Main() { // Eingabe Anzahl Schüler int anzahlSchueler; Console.Write("Bitte Anzahl der Schüler eingeben: "); anzahlSchueler = Int32.Parse(Console.ReadLine()); // Schülernamen einlesen string[] schueler = new string[anzahlSchueler]; for (int i = 0; i < anzahlSchueler; i++) { Console.Write("Schülername Nr. {0}: ", i+1); schueler[i] = Console.ReadLine(); } // Eingabe Anzahl Fächer int anzahlFaecher; Console.Write("Bitte Anzahl der Fächer eingeben: "); anzahlFaecher = Int32.Parse(Console.ReadLine()); // Fächer einlesen string[] faecher = new string[anzahlFaecher]; for (int i = 0; i < anzahlFaecher; i++) { Console.Write("Fach Nr. {0}: ", i+1); faecher[i] = Console.ReadLine(); } // Eingabe der Noten int[,] noten = new int[anzahlSchueler, anzahlFaecher]; for (int i = 0; i < anzahlSchueler; i++) { for (int j = 0; j < anzahlFaecher; j++) { Console.Write("Note für {0} in Fach {1}: ", schueler[i], faecher[j]); noten[i, j] = Int32.Parse(Console.ReadLine()); } } // Berechnen und Ausgabe der Durchschnittsnoten int klassenZaehler = 0; int klassenSumme = 0; for (int i = 0; i < anzahlSchueler; i++) { int zaehler = 0; int summe = 0; for (int j = 0; j < anzahlFaecher; j++) { // Für den Schüler zaehler++; summe += noten[i, j]; // Für die Klasse klassenZaehler++; klassenSumme += noten[i, j]; } if (zaehler > 0) Console.WriteLine("{0} hat einen Schnitt von {1}", schueler[i], summe/zaehler); else Console.WriteLine("Für {0} wurde keine Note eingegeben.", schueler[i]); } // Ausgabe des Klassendurchschnitts: if (klassenZaehler > 0) Console.WriteLine("Die Klasse hat einen Schnitt von {0}", klassenSumme / klassenZaehler); else Console.WriteLine("Es wurden keine Noten eingegeben."); // Warten auf Enter-taste für Ende Console.ReadLine(); } } }
Vielen dank :) bisd wirklich sehr nett danke nochmal
- Als Antwort markiert Ediiis Sonntag, 5. Juni 2011 13:12
- Tag als Antwort aufgehoben Elmar BoyeEditor Montag, 6. Juni 2011 11:35
-
So in der Art könnte ein einfaches Program aussehen:
using System; namespace ConsoleApp { public class Notendurchschnitt { public static void Main() { // Eingabe Anzahl Schüler int anzahlSchueler; Console.Write("Bitte Anzahl der Schüler eingeben: "); anzahlSchueler = Int32.Parse(Console.ReadLine()); // Schülernamen einlesen string[] schueler = new string[anzahlSchueler]; for (int i = 0; i < anzahlSchueler; i++) { Console.Write("Schülername Nr. {0}: ", i+1); schueler[i] = Console.ReadLine(); } // Eingabe Anzahl Fächer int anzahlFaecher; Console.Write("Bitte Anzahl der Fächer eingeben: "); anzahlFaecher = Int32.Parse(Console.ReadLine()); // Fächer einlesen string[] faecher = new string[anzahlFaecher]; for (int i = 0; i < anzahlFaecher; i++) { Console.Write("Fach Nr. {0}: ", i+1); faecher[i] = Console.ReadLine(); } // Eingabe der Noten int[,] noten = new int[anzahlSchueler, anzahlFaecher]; for (int i = 0; i < anzahlSchueler; i++) { for (int j = 0; j < anzahlFaecher; j++) { Console.Write("Note für {0} in Fach {1}: ", schueler[i], faecher[j]); noten[i, j] = Int32.Parse(Console.ReadLine()); } } // Berechnen und Ausgabe der Durchschnittsnoten int klassenZaehler = 0; int klassenSumme = 0; for (int i = 0; i < anzahlSchueler; i++) { int zaehler = 0; int summe = 0; for (int j = 0; j < anzahlFaecher; j++) { // Für den Schüler zaehler++; summe += noten[i, j]; // Für die Klasse klassenZaehler++; klassenSumme += noten[i, j]; } if (zaehler > 0) Console.WriteLine("{0} hat einen Schnitt von {1}", schueler[i], summe/zaehler); else Console.WriteLine("Für {0} wurde keine Note eingegeben.", schueler[i]); } // Ausgabe des Klassendurchschnitts: if (klassenZaehler > 0) Console.WriteLine("Die Klasse hat einen Schnitt von {0}", klassenSumme / klassenZaehler); else Console.WriteLine("Es wurden keine Noten eingegeben."); // Warten auf Enter-taste für Ende Console.ReadLine(); } } }
Vielen dank :) bisd wirklich sehr nett danke nochmal
Hätte noch eine lezte frage was bedeut dasanzahlSchueler =
Int32.Parse(Console.ReadLine());
und kann man es durch eine andere zeile code ersetzen :) nochmal iielen dank -
Console.ReadLine() liest eine ganze Zeile von der Console. Der Benutzer kann also beliebig viele Tasten drücken und die Eingabe mit Enter abschliessen.
Int32.Parse(string) versucht die Zeichenkette in eine ganze Zahl zu übersetzen und gibt bei Erfolg die Zahl zurück. (Bei einem Misserfolg gibt es eine Exception und damit würde das Program beendet. Kannst Du ja mal ausprobieren, indem Du "Otto" oder so eingibst.
Und ja, kann man ersetzen. Sollte man sogar. Aber das ginge dann weit über die gesetzte Aufgabe hinaus. Das, was fehlt, ist eine Fehlerbehandlung. Wenn Du also "Otto" als Anzahl der Schüler eingibst sollte zurück kommen: "Du Depp! Das ist doch keine Zahl! Versuch es nochmal!". Und evtl. kann man ein "quit" oder so als Befehl interpretieren, das Program zu verlassen.... Vieles ist Denkbar. Aber die Zeit, sich darüber Gedanken zu machen, ist meiner Meinung nach vorbei. Wenn man User-Input haben will, dann verwendet man Windows Forms, WPF, ASP.Net oder Silverlight. Kein Anwender will mehr in einem Textprogram rumhantieren :)
Mit den besten Grüßen,
Konrad
-
Ja, statt dem parse Aufruf kannst Du auch den Convert Aufruf machen.
Tipp: spiel doch einfach mit dem Code herum. Sowas einfach direkt selbst ausprobieren. Desweiteren kann ich auch nur empfehlen, sowas in der MSDN Library nachzulesen.
Mit den besten Grüßen,
Konrad
-
Die Write-Funktion macht unter dem Strich, was die String.Format Funktion macht. {0} {1} ... sind Argument. Diese werden mit den folgenden Parametern ersetzt. In diesem Fall heisst dies, dass der Wert von i+1 eingetragen wird. Wenn Du es ausführst, dann siehst Du die Ausgabe.
Hast Du schon einmal das Debuggen einer Applikation versucht? Dann kannst Du Schritt für Schritt durch die Applikation gehen und Dir alle Variablen ansehen und so. Denke mal, dass sowas helfen kann.
Und +1 weil intern die Zählweise 0, 1, 2, 3, ... ist. Wir Menschen fangen aber an bei 1 zu zählen. Daher habe +1 gesagt.
Mit den besten Grüßen,
Konrad
-
Die Write-Funktion macht unter dem Strich, was die String.Format Funktion macht. {0} {1} ... sind Argument. Diese werden mit den folgenden Parametern ersetzt. In diesem Fall heisst dies, dass der Wert von i+1 eingetragen wird. Wenn Du es ausführst, dann siehst Du die Ausgabe.
Hast Du schon einmal das Debuggen einer Applikation versucht? Dann kannst Du Schritt für Schritt durch die Applikation gehen und Dir alle Variablen ansehen und so. Denke mal, dass sowas helfen kann.
Und +1 weil intern die Zählweise 0, 1, 2, 3, ... ist. Wir Menschen fangen aber an bei 1 zu zählen. Daher habe +1 gesagt.
Mit den besten Grüßen,
Konrad
-
Hallo Ediiis,
als Antwort solltest Du markieren, was geholfen hat.
Ich habe Deine Absicht hier entsprechend korrigiert.Wenn Du weitere Antworten als hilfreich ansiehst, solltest Du sie entsprechend kennzeichen,
auch mehrere Beiträge als Antwort zu kennzeichnen ist möglich.Gruß Elmar
P. S.: Bitte zitiere nur die relevanten Ausschnitte, damit wird für alle das Lesen einfacher.