Hi
Ich soll in Studium ein kleines Programm in C# schreiben.
Der User soll 12 Testergebnisse und 4 Übungsergebnisse eingeben können.
Zum Schluss soll der Durchschnitt ausgerechnet werden, sowohl von den 12 Tests, als auch von den 4 Übungen.
Diese beiden Durchschnitte zählen 50/50 und ergeben eine Gesamtnote.
Das ist soweit recht leicht, aber das Programm soll einen Fehler ausspucken, wenn der User zB etwas falsches eingiebt, wie ein Wort statt einer Zahl.
Zudem soll das Programm eine Meldung machen, wenn der User irgendwie unter 50% im Test/Übung erreicht hat und ihn mitteilen, dass er doch nicht bestanden hat.
So weit bin ich jetzt:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Üb1
{
class Program
{
static void Main(string[] args)
{
// Tests = x
// Übungen = y
int[] Ergebnis_Test = new int[16];
int[] Ergebnis_Übung = new int[10];
#region Tests
for (int x=1; x<13; x++)
{
Console.WriteLine("Bitte Testergebnis " + x + " eingeben");
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Gesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Tests);
Console.WriteLine("Bitte beliebige Zahl oder einen beliebigen Buchstaben eintippen zum fortfahren");
Console.ReadLine();
#endregion Tests
#region Übung
for (int y = 1; y < 5; y++)
{
Console.WriteLine("Bitte Übungsergebnis " + y + " eingeben");
Ergebnis_Übung[y] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Gesamtpunktzahl der Übungen: " + Ergebnis_Übung.Sum());
int Durchschnitt_Übung = Ergebnis_Übung.Sum() / 4;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Übung);
Console.ReadLine();
#endregion Übung
}
}
}
+ Antworten
Ergebnis 1 bis 25 von 49
- 02.11.11, 10:11 #1
Anfänger: Wie wird das in C# programmiert? Need help :(
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 02.11.11, 10:33 #2Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
Für die Fehler bei falscher Eingabe:
füg in deine For schleife eine FormatExeption ein: ToInt32 Method (String) (übrigens sehr gute Adresse, wenn du nicht weiter kommst)
Lösung(nicht getestet)
Spoiler: Anzeigen
Und das nicht bestanden ist, gilt auch wenn nur einem Wert unter 50%?
Entweder gleich bei der Eingabe der Werte Prüfen und einen Bool setzen, oder eine for(each) schleife, die den minimalwert raus findet. Ist der Minimalwert kleiner 50% hat er nicht bestanden.
- 02.11.11, 10:34 #3
Zu 1:
Du kannst einfach an der Stelleein trycatch verwendenErgebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
Da hier ein Fehler geschmissen wird wenn es nicht geparsed werden kann. Alternativ ginge auchtry
{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
}
catch
{
//Fehler bei Eingabe
}
Zudem kann man das ganze auch in einer Methode aufrufen die sich bei einem Fehler wiederum selbst aufruftbool erfolgreich = Int32.TryParse(Console.ReadLine(), out Ergebnis_Test[x]);
Zu 2:private int eingabe()
{
int wert = 0;
Console.Writeline("Einegben:");
bool erfolgreich = Int32.TryParse(Console.ReadLine(), out wert);
if (erfolgreich == false)
{
console.writeLine("Fehler bei eingabe");
return eingabe();
}
else
{
return wert;
}
}
Hier muss die maximale erreichbare Punktzahl durch zwei geteilt werden und wenn das diese größer ist als die erreichten Punkte gibt es die Meldung.
if((Maximale_Punktzahl/2) >= Erreichte_Punktzahl){
Console.Writeline("nicht erreicht");
}MUHHAHAHAHAHAHAHAHA
- 02.11.11, 10:42 #4
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 04.11.11, 17:00 #5
Hmm ... nun rumprobiert und was soll ich sagen ... ich kriege es irgendwie nicht hin

Aktuell sieht es so aus:
namespace Üb1
{
class Program
{
static void Main(string[] args)
{
// Tests = x
// Übungen = y
int[] Ergebnis_Test = new int[16];
int[] Ergebnis_Übung = new int[10];
#region Tests
for (int x = 1; x < 13; x++)
{
Console.WriteLine("\nBitte Testergebnis " + x + " eingeben");
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Test[x] <= 50)
{
Console.WriteLine("Unter 50%, leider nicht bestanden.");
}
else
{
Console.WriteLine("Super, dieser Test wurde bestanden.");
}
}
Console.WriteLine("\nGesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Tests);
Console.WriteLine("\n");
#endregion Tests
#region Übung
for (int y = 1; y < 5; y++)
{
Console.WriteLine("\nBitte Übungsergebnis " + y + " eingeben");
Ergebnis_Übung[y] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Übung[y] <= 50)
{
Console.WriteLine("Unter 50%, leider nicht bestanden.");
}
else
{
Console.WriteLine("Super, diese Übrung wurde bestanden.");
}
}
Console.WriteLine("\nGesamtpunktzahl der Übungen: " + Ergebnis_Übung.Sum());
int Durchschnitt_Übung = Ergebnis_Übung.Sum() / 4;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Übung);
#endregion Übung
#region Bestanden/Nicht bestanden
int Gesamtergebnis = (Durchschnitt_Tests + Durchschnitt_Übung)/2;
if (Gesamtergebnis <= 50)
{
Console.WriteLine("\nUnter 50%, leider nicht bestanden.");
}
else
{
Console.WriteLine("\nSuper, bestanden.");
}
Console.ReadLine();
#endregion Bestanden/Nicht bestanden
}
}
}
Ich weiß leider nicht, ich das mache, dass er einen Fehler ausspucht, wenn ein einziges Ergebnis unter 50% ist.
Er sagt dem User zwar an, dass er da unter 50% hat ode rhalt über 50%, allerdings weiß ich nicht, wie ich das dann anstelle, dass er dem User sagt, wenn er alle Werte eingetragen hat, das er nicht bestanden hat, wenn ein Ergebnis unter 50% war.
Oder wie er das macht, wenn zb anstatt einer Punktzahl ein Wort/Buchstabe eingetippt wird, dass er dann die Eingabe wiederholen will.
Kann mir da wer helfen? Vllt wo einfach was reinkopieren ...Geändert von Terr0rSandmann (04.11.11 um 17:37 Uhr)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 07.11.11, 10:25 #6
Puhh ... niemand? Muss das bis Di Abend abgeben und bin voll überfordert
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 07.11.11, 20:14 #7Leutnant zur See
- Registriert seit
- 18.03.2007
- Beiträge
- 1.189
"Er sagt dem User zwar an, dass er da unter 50% hat ode rhalt über 50%, allerdings weiß ich nicht, wie ich das dann anstelle, dass er dem User sagt, wenn er alle Werte eingetragen hat, das er nicht bestanden hat, wenn ein Ergebnis unter 50% war."
Nach jeder Eingabe und erfolgreicher Prüfung, dass es eine Zahl ist, wird geprüft, ob es unter 50% ist. Wenn ja, setz einfach eine Variable auf true (Typ boolean), die kannst du z.B. unter50prozent nennen. Am Ende wertest du diese einfach aus: Ist sie wahr, dann wahr ein Ergebnis unter 50%.
Bzgl. prüfen, einer schrieb doch:
du hast aber nurCode:try { Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine()); } catch { //Fehler bei Eingabe }
Nimm einfach die Eingabe in eine Schleife. Im catch wird der Fehler gefangen, dort setzt du x = x-1, sodass er aktuelle Durchlauf noch einmal geschieht.Code:Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
Geändert von Thunderhit (07.11.11 um 20:17 Uhr)
Intel Core 2 Duo E6420 @ 2,8GHZ
Sapphire HD 5850
MDT 4GB DDR2-800
Cooler Master Stacker STC-T01
Gigabyte DS3P
Windows 7 Prof. 64bit
- 08.11.11, 16:01 #8
Wo genau muss den die bool Sache hin? Also an welche Stelle muss ich das einbauen und wie muss die Anweisung denn aussehen? Habe noch nie mit bool gearbeitet.
(habe erst seit Okt. 2011 C#, also totaler Noob
)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 16:48 #9
bool hasFailed = false;
if (Ergebnis_Übung[y] < 50)
{
Console.WriteLine("Unter 50%, leider nicht bestanden.");
hasFailed = true;
}
else
{
Console.WriteLine("Super, diese Übrung wurde bestanden.");
}
}
if(hasFailed){
Console.WriteLine("Übung insgesamt nicht bestanden, da ein Ergebnis unter 50%");
}
- 08.11.11, 18:49 #10
Toll ... nun habe ich erfahren, dass das leicht anders ist.
Die Tests sind in 4 Blöcken gestaffelt.
Entweder man schafft die 3 Tests vom Block mit über 50% oder die Übung mit mind. 50%.
Um zum Schluss für für die Endprüfung zugelassen zu werden, müssen alle 4 Blöcke bestanden sein.
Also ...
Test 1 - 3 über 50% oder Übung1 über 50%.
Test 4 - 6 über 50% oder Übung2 über 50%.
Test 7 - 9 über 50% oder Übung3 über 50%.
Test 10 - 12 über 50% oder Übung 4 über 50%.
Puhhh ... das ist ja echt kacke
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 19:13 #11Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
Auch nicht viel schwerer. Dein einlesen der Übungen und Tests ist fertig, wenn du das noch einbaust:
Erklärung:
- Mit try versucht er, wie der name schon sagt, den Wert einzulesen und zu convertieren, bei irgend einem Fehler, wird dieser mit catch abgefangen und behandelt. Mehr hier: try-catch )
- x = x -1; sorgt dafür, dass der falsche Wert erneut eingegeben werden muss.
*Das selbe auch bei allen anderen Eingaben, die Fehler verursachen können.for (int x=1; x<13; x++)
{
Console.WriteLine("Bitte Testergebnis " + x + " eingeben");
try{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
}
catch
{
Console.Writeline("Falsche Eingabe");
x = x -1;
}
}
kleiner Typo: Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Übung);
So jetzt zu den Abfragen:
du kannst If-Abfragen auch UND-Verknüpfen, mit einem &&
z.B:Ich würde persönlich einen Bool benutzen, kannst aber auch einen int nehmen und +1 zählen, wenn er größer 1 ist, hat man bestanden.IF(Test1 >50 && Test2 > 50 && Test3 > 50)
{PART1 bestanden}
IF(Ügung1 > 50)
{PART1 bestanden}
...
IF(PART1 bestanden && PART" bestanden && PART3 bestanden && PART4 bestanden)
{"Du hast bestanden"
}else{
"Loser
"
}
PS: lern das auch erst seit Oktober, das ist keine Ausrede
Geändert von unl34shed (08.11.11 um 19:14 Uhr)
- 08.11.11, 19:30 #12
Jo, das ist die Lösung. Man muss es eben nur noch mit den richtigen Variablen ergänzen.
- 08.11.11, 19:31 #13
Mal hier ein aktueller Ausschnitt der Region Test:
Funzt soweit halbwegs. Er merkt, wenn ich eine Zahl über 100 eintippe, dass die Eingabe falsch war und fragt das Ergebnis erneut ab.#region Tests
for (int x = 1; x < 13; x++)
{
Console.WriteLine("\nBitte Testergebnis " + x + " eingeben");
try
{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100) // nur Zahlen von 0 - 100
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben");
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.");
x--;
}
bool hasFailed = false;
if (Ergebnis_Test[x] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Test[x] < 101)
{
Console.WriteLine("Super, dieser Test wurde bestanden.");
}
else
{
Console.WriteLine("Ungültige Eingabe.");
x--;
}
if (hasFailed)
{
Console.WriteLine("Test nicht bestanden, da ein Ergebnis unter 50%.");
}
}
Console.WriteLine("\nGesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Tests);
Console.WriteLine("\n");
#endregion Tests
Wenn ich allerdings einen Buchstabe oder ein Wort eintippe, dann sagt er mir zwar, dass die Eingabe fehlerhaft ist, sagt mir aber zusätzlich, dass der Test bestanden wurde, was ja totaler Quatsch ist.
Wo genau liegt denn da der Fehler? Bzw wie mache ich ihm klar, dass er das nicht so ausgeben soll?Geändert von Terr0rSandmann (08.11.11 um 19:32 Uhr)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 19:37 #14Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
Das catch liegt an der falschen Stelle. Das Programm arbeitet einen Befehl nach dem anderen ab.
Die ganzen Abfragen ob bestanden oder nicht, kommen nach catch, werden also alle überprüft egal oder der Wert stimmt oder nicht.Geändert von unl34shed (08.11.11 um 19:39 Uhr)
- 08.11.11, 19:40 #15
Aber das ist doch nach dem Catch, oder? Verstehe das nciht ganz, wie du das meinst ...
Geändert von Terr0rSandmann (08.11.11 um 19:43 Uhr)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 19:47 #16Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
Bei der try catch versucht er das was in try drin steht auszuführen.
bei irgend einem Fehler wird das im catch ausgeführt
Danach arbeitet er deine for-schleife einfach weiter ab, nur dass es keinen eingelesenen Wert gibt, da er ja falsch war.
Oder glaubst, dass er wegen dem x-- wieder von vorne anfängt?
Das macht er nicht, eine For schleife vergleicht immer nur vor jedem Durchlauf der schleife, ob die Bedingung noch zu trift.
- 08.11.11, 19:47 #17
Die Schleife wird trotzdem weiter bearbeitet, trotz des Fehlers.
Du kannst enweder den code ab bool mit in den try-Block packen, oder nach x--; ein continue; anfügen ;DGeändert von m0rf (08.11.11 um 19:49 Uhr)
- 08.11.11, 19:49 #18Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
oder so
hey cool continue kannt ich noch nicht, thx m0rfGeändert von unl34shed (08.11.11 um 19:54 Uhr)
- 08.11.11, 19:59 #19
Ah super, das mit continue; funktioniert.
Toll ... nun habe ich aber irgendetwas gemacht, wieso er nicht mehr weiter macht und das Programm abstürzt, wenn ich einen Buchstaben eingebe.
Puhh ... Alles Mist ^^
Edit:
Etwas verwirrend, wenn er nicht einrückt, hoffe ihr erkennt es trotzdem.
Funktioniert soweit halbwegs, nur das mit den Bestehen der Blöcke fehlt wohl ...
Es funktioniert jetzt recht gut. Er meldet einen Fehler, wenn die eingegebene Zahl über 100 ist und will das Ergebnis erneut wissen. Wenn ich einen Buchstaben eingebe, dann meldet er, das Buchstaben nicht zulässig sind udn möchte das Ergebnis erneut wissen.namespace Üb1
{
class Program
{
static void Main(string[] args)
{
// Tests = x
// Übungen = y
int[] Ergebnis_Test = new int[16];
int[] Ergebnis_Übung = new int[10];
#region Tests
for (int x = 1; x < 13; x++)
{
Console.WriteLine("\nBitte Testergebnis " + x + " eingeben (in %)");
try
{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben sind nicht gültig.");
x--;
continue;
}
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Test[x] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Test[x] < 101)
{
Console.WriteLine("Super, dieser Test wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
x--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Test nicht bestanden, da ein Ergebnis unter 50%.");
}
}
Console.WriteLine("\nGesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Tests);
Console.WriteLine("\n");
#endregion Tests
#region Übung
for (int y = 1; y < 5; y++)
{
Console.WriteLine("\nBitte Testergebnis " + y + " eingeben (in %)");
try
{
Ergebnis_Übung[y] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben sind nicht gültig.");
y--;
continue;
}
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Übung[y] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Übung[y] < 101)
{
Console.WriteLine("Super, diese Übung wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
y--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Übung nicht bestanden, da ein Ergebnis unter 50%.");
}
}
Console.WriteLine("\nGesamtpunktzahl der Übungen: " + Ergebnis_Übung.Sum());
int Durchschnitt_Übung = Ergebnis_Übung.Sum() / 4;
Console.WriteLine("Durchschnitt Tests: " + Durchschnitt_Übung);
#endregion Übung
#region Bestanden/Nicht bestanden
int Gesamtergebnis = (Durchschnitt_Tests + Durchschnitt_Übung) / 2;
if (Gesamtergebnis < 50)
{
Console.WriteLine("\nUnter 50% in der Gesamtwertung, leider nicht bestanden.");
}
else
{
Console.WriteLine("\nSuper, du hast bestanden.");
}
Console.ReadLine();
#endregion Bestanden/Nicht bestanden
}
}
}
Soweit, so gut
Nun ist nur noch das Problem mit dem bestehen der Teilblöcke
Geändert von Terr0rSandmann (08.11.11 um 20:14 Uhr)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 20:22 #20
Das wäre für 1 den ersten Teilblock
Jetzt frag nicht wieder, wo das hingehört und wie man das für die anderen Blöcke macht. Schau dir das in Ruhe an, dann ist das recht leicht zu verstehen.Code:if(Ergebnis_Test[0] < 50 || Ergebnis_Test[1] < 50 || Ergebnis_Test[2] < 50 || Ergebnis_Übung[1] < 50){ Console.WriteLine("Fail"); } else Console.WriteLine("Win");
- 08.11.11, 20:25 #21
Ah ok, das leuchtet ein

Wusste nur nicht genau, wie ich die einzelnen Arrayteile so direkt anspreche.
Edit:
Eine kleine Sache.
In der Bedingung symbolisiert && und ||ein UND. Wie wird denn das ODER geschrieben?
Denn ich brauche für zB Testblock1 -> Test1 & Test2 & Test3 ODER Übung1 zum bestehen ...Geändert von Terr0rSandmann (08.11.11 um 20:35 Uhr)
PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 21:05 #22Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
&& = und
|| = oder
- 08.11.11, 21:21 #23
Hmm ... und wieso geht das dann nicht

Habe mal eingetippt, dass alle Tests mit 11% geschrieben wurden und die Tests mit 99%, trotzdem meint er, dass die Teilblöcke alle nicht bestanden wurden
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Üb1
{
class Program
{
static void Main(string[] args)
{
// Tests = x
// Übungen = y
int[] Ergebnis_Test = new int[16];
int[] Ergebnis_Übung = new int[10];
#region Tests
for (int x = 1; x < 13; x++)
{
Console.WriteLine("\nBitte Testergebnis " + x + " eingeben:");
try
{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben und Sonderzeichen sind nicht gültig.");
x--;
continue;
}
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Test[x] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Test[x] < 101)
{
Console.WriteLine("Super, dieser Test wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
x--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Test nicht bestanden, da das Ergebnis unter 50% beträgt.");
}
}
Console.WriteLine("\nGesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt der Tests: " + Durchschnitt_Tests);
Console.WriteLine("\n");
#endregion Tests
#region Übung
for (int y = 1; y < 5; y++)
{
Console.WriteLine("\nBitte Testergebnis " + y + " eingeben:");
try
{
Ergebnis_Übung[y] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben und Sonderzeichen sind nicht gültig.");
y--;
continue;
}
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Übung[y] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Übung[y] < 101)
{
Console.WriteLine("Super, diese Übung wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
y--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Übung nicht bestanden, da das Ergebnis unter 50% beträgt.");
}
}
Console.WriteLine("\nGesamtpunktzahl der Übungen: " + Ergebnis_Übung.Sum());
int Durchschnitt_Übung = Ergebnis_Übung.Sum() / 4;
Console.WriteLine("Durchschnitt der Übungen: " + Durchschnitt_Übung);
#endregion Übung
#region Bestanden/Nicht bestanden
if (Ergebnis_Test[0] >= 49 && Ergebnis_Test[1] >= 49 && Ergebnis_Test[2] >= 49 || Ergebnis_Übung[0] >= 49)
{
Console.WriteLine("\nErgebnis der Teilblöcke:");
Console.WriteLine("Glückwunsch, Teilblock 1 bestanden.");
}
else
{
Console.WriteLine("\nErgebnis der Teilblöcke:");
Console.WriteLine("Teilblock 1 leider nicht bestanden.");
}
if (Ergebnis_Test[3] < 50 && Ergebnis_Test[4] < 50 && Ergebnis_Test[5] < 50 || Ergebnis_Übung[1] < 50)
{
Console.WriteLine("Teilblock 2 leider nicht bestanden.");
}
else
{
Console.WriteLine("Glückwunsch, Teilblock 2 bestanden.");
}
if (Ergebnis_Test[6] < 50 && Ergebnis_Test[7] < 50 && Ergebnis_Test[8] < 50 || Ergebnis_Übung[2] < 50)
{
Console.WriteLine("Teilblock 3 leider nicht bestanden.");
}
else
{
Console.WriteLine("Glückwunsch, Teilblock 3 bestanden.");
}
if (Ergebnis_Test[9] < 50 && Ergebnis_Test[10] < 50 && Ergebnis_Test[11] < 50 || Ergebnis_Übung[3] < 50)
{
Console.WriteLine("Teilblock 4 leider nicht bestanden.");
}
else
{
Console.WriteLine("Glückwunsch, Teilblock 4 bestanden.");
}
int Gesamtergebnis = (Durchschnitt_Tests + Durchschnitt_Übung) / 2;
Console.WriteLine("\nGesamtdurchschnitt der Tests und Übungen: " + Gesamtergebnis);
Console.ReadLine();
#endregion Bestanden/Nicht bestanden
}
}
}PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung
- 08.11.11, 21:36 #24Leutnant zur See
- Registriert seit
- 05.11.2007
- Ort
- Neckar-Odenwald Kreis
- Beiträge
- 1.158
du fängst oben mit 1 an zu zählen, also Test 1 = Ergebnis_Test[1] nicht [0], bei den Übungen das selbe. aber das nur am rande, sollte nicht dran liegen.
ich test grad mal dein code. meld mich dann nochmal
---------- Beitrag hinzugefügt um 21:38 ---------- Vorheriger Beitrag war um 21:36 ----------
(Ergebnis_Test[0] >= 49 && Ergebnis_Test[1] >= 49 && Ergebnis_Test[2] >= 49) || Ergebnis_Übung[0] >= 49
---------- Beitrag hinzugefügt um 21:41 ---------- Vorheriger Beitrag war um 21:36 ----------
und die unteren 3 Abfragen bei den Prüfungen müssen größer 50 sein. bzw. sind komplett falsch, bau sie so auf wie den ersten, dann klappts.Geändert von unl34shed (08.11.11 um 21:43 Uhr)
- 08.11.11, 21:57 #25
Sooooo ... bin fertig. Vielen Dank an euch, ihr habt mir noch einmal den Arsch gerettet

So sieht nun das fertige Programm aus, falls es denn wen interessieren sollte.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Üb1
{
class Program
{
static void Main(string[] args)
{
// Tests = x
// Übungen = y
int[] Ergebnis_Test = new int[16];
int[] Ergebnis_Übung = new int[10];
#region Tests
for (int x = 1; x < 13; x++)
{
Console.WriteLine("\nBitte Testergebnis " + x + " eingeben:");
try
{
Ergebnis_Test[x] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben und Sonderzeichen sind nicht gültig.");
x--;
continue;
}
if (Ergebnis_Test[x] < 0 || Ergebnis_Test[x] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Test[x] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Test[x] < 101)
{
Console.WriteLine("Super, dieser Test wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
x--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Test nicht bestanden, da das Ergebnis unter 50% beträgt.");
}
}
Console.WriteLine("\nGesamtpunktzahl Tests: " + Ergebnis_Test.Sum());
int Durchschnitt_Tests = Ergebnis_Test.Sum() / 12;
Console.WriteLine("Durchschnitt der Tests: " + Durchschnitt_Tests);
Console.WriteLine("\n");
#endregion Tests
#region Übung
for (int y = 1; y < 5; y++)
{
Console.WriteLine("\nBitte Testergebnis " + y + " eingeben:");
try
{
Ergebnis_Übung[y] = Convert.ToInt32(Console.ReadLine());
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
}
}
catch
{
Console.WriteLine("Eingabe fehlerhaft, bitte wiederholen.\nBuchstaben und Sonderzeichen sind nicht gültig.");
y--;
continue;
}
if (Ergebnis_Übung[y] < 0 || Ergebnis_Übung[y] > 100)
{
Console.WriteLine("\nFalsche Eingabe, bitte erneut eingeben.");
}
bool hasFailed = false;
if (Ergebnis_Übung[y] < 50)
{
Console.WriteLine("Leider kein gutes Ergebnis.");
hasFailed = true;
}
else if (Ergebnis_Übung[y] < 101)
{
Console.WriteLine("Super, diese Übung wurde bestanden.");
}
else
{
Console.WriteLine("Nur Zahlen von 0 bis 100.");
y--;
continue;
}
if (hasFailed)
{
Console.WriteLine("Übung nicht bestanden, da das Ergebnis unter 50% beträgt.");
}
}
Console.WriteLine("\nGesamtpunktzahl der Übungen: " + Ergebnis_Übung.Sum());
int Durchschnitt_Übung = Ergebnis_Übung.Sum() / 4;
Console.WriteLine("Durchschnitt der Übungen: " + Durchschnitt_Übung);
#endregion Übung
#region Bestanden/Nicht bestanden
if ((Ergebnis_Test[1] >= 49 && Ergebnis_Test[2] >= 49 && Ergebnis_Test[3] >= 49) || Ergebnis_Übung[1] >= 49)
{
Console.WriteLine("\nErgebnis der Teilblöcke:");
Console.WriteLine("Glückwunsch, Teilblock 1 bestanden.");
}
else
{
Console.WriteLine("\nErgebnis der Teilblöcke:");
Console.WriteLine("Teilblock 1 leider nicht bestanden.");
}
if ((Ergebnis_Test[4] >= 49 && Ergebnis_Test[5] >= 49 && Ergebnis_Test[6] >= 49) || Ergebnis_Übung[2] >= 49)
{
Console.WriteLine("Glückwunsch, Teilblock 2 bestanden.");
}
else
{
Console.WriteLine("Teilblock 2 leider nicht bestanden.");
}
if ((Ergebnis_Test[7] >= 49 && Ergebnis_Test[8] >= 49 && Ergebnis_Test[9] >= 49) || Ergebnis_Übung[3] >= 49)
{
Console.WriteLine("Glückwunsch, Teilblock 3 bestanden.");
}
else
{
Console.WriteLine("Teilblock 3 leider nicht bestanden.");
}
if ((Ergebnis_Test[10] >= 49 && Ergebnis_Test[11] >= 49 && Ergebnis_Test[12] >= 49) || Ergebnis_Übung[4] >= 49)
{
Console.WriteLine("Glückwunsch, Teilblock 4 bestanden.");
}
else
{
Console.WriteLine("Teilblock 4 leider nicht bestanden.");
}
int Gesamtergebnis = (Durchschnitt_Tests + Durchschnitt_Übung) / 2;
Console.WriteLine("\nGesamtdurchschnitt der Tests und Übungen: " + Gesamtergebnis);
Console.ReadLine();
#endregion Bestanden/Nicht bestanden
}
}
}PC: Intel Core i3 2100 @ Big Shurriken, MSI H61MU-E35, Sapphire 5770 Vapor-X, 2x4GB 1333MHz TeamGroup, Samsung F1 320GB, Cougar A400, Lian Li PC-A05NB
Audio Equipment: Beyerdynamic T70p, Westone 4, Superlux HD681 @ FiiO E10 / iPhone 4
Heimkino Equipment: Samsung UE32B6000 TV, LG BD550 Blu-ray Player, Onkyo TX SR-605, Klipsch RB-51
Empfehlenswerte HiFi-Kopfhörer in 6 Preisklassen unterteilt - grobe Kaufempfehlung

LinkBack URL
About LinkBacks
Zitieren
