Programmierung frage?

4 Antworten

Die Frage sollte anfangen mit: " Entschuldigt bitte dass ihr auf ein Foto eines Bildschirms gucken müsst und kein Screenshot, aber .... *Grund* "

Es kann ja nicht dein dass jemand der sich für Informatik entschieden hat unfähig ist einen Screenshot zu machen. Idealerweise hätte man den Code einfach hier reinkopieren können damit wir es einfacher haben deinen Fehler nachzuvollziehen. Dazu gibt es ein extra Code-Feld.

int main() {
   return 0;
}

Erstmal: In Zeile 16 fängst du einen neuen Scope mit { an, fehlt da nicht schon was? Eventuell ein "else if"?

Wie schon erwähnt steht for deinem else {} eine for-Schleife und keine if Bedingung. Ohne if kein else.

In deinem Code fehlt auch jegliches Kommentar. Das heißt ich weiß nicht was du versuchst zu tun. Wenn ich nicht weiß was du versuchst zu tun dann ist es umso schwerer dir zu helfen.

Gewöhn dir also direkt an Code wie ein Refarat aufzubauen. Tue so als wolltest du jemandem zeigen wie das geht und erklär es Schritt für Schritt. In Zukunft wirst du vielleicht in Teams arbeiten wollen und wenn jemand so einen Code-Brocken dran baut hagelt das Bechwerden.

Fang am besten nochmal komplett von vorne an.

# Dieses Programm dient dazu die Minima und Maxima der
# übergebenden Parameter zu finden

# Ansatz: 

# (0) Es wird überprüft ob mindestens 2 Paramter übergeben
# werden. 

# (1) Die erste Zahl wird als Minima und Maxima gesetzt.

# (2) Es wird eine Schleife durchlaufen die nun jede 
# folgende Zahl sowohl mit Minima als auch Maxima
# vergleicht. 

# (3) Ist die folgende Zahl kleiner als Minima wird Minima 
# damit ersetzt. 

# (4) Ist die folgende Zahl größer als Maxima wird Maxima
# damit ersetzt 

Die Zahlen (0)..(4) setzt du jetzt als Kommentar in den Code an die passenden Stellen.

Du erkennst ziemlich schnell dass das else und die 2 Nullstellen da überhaupt keinen Sinn ergebn da sie nichts mir der Aufgabe zu tun haben. Es wird nicht nach Nullstellen gesucht.

Hast du die Lösung vielleicht irgendwoher kopiert und etwas stehen lassen was da nicht reingehört? So sieht das für mich aus.

Ordnung ist das aller aller wichtigste beim Programmieren. Ein Programm hat oft Tausende von Zeilen Code. Da einen Fehler zu finden wird ohne Ordnung teuer. Und teuer mögen Chefs gar nicht.

Tipp: Übersichtlicher wird ein Programm wenn du sowas in Funktionen auslagerst.

// Hier werden zwei Zahlen verglichen und die kleinere
// von Beiden zurückgegeben.
// Wenn beide gleich groß sind dann wird a zurückgegeben
// da es in dem Fall keine Rolle spielt.

int smallerInteger(int a, int b) {
   if (a < b) {
      return a;
   } 
   else if (a > b) {
      return b;
   }
   else {
      printf("a und b sind gleich groß");
      return a;
   }
}

int main() {
   int k = 5;
   int l = 10;
   int m = smallerInteger(k,l);
   // m ist 5
   return 0;
}

So weiß jeder sofort was Sache ist wenn man durch main() schaut. Da sollten keine Schleifen oder so drin sein. Das verwirrt nur!

Optimal ist also wenn der Code sich selbst dokumentiert.

Dein Else ist außerhalb der For-Schleife du schließt die For-Schleife, aber Else gehört zu deinem IF, das folgt immer nach einem IF.

Also

If(...){

...

{

else{

}

}

Woher ich das weiß:eigene Erfahrung – Interesse an Computern,Handys.

Das Else hat kein zugehöriges if.

Miriamb8 
Fragesteller
 31.10.2021, 16:26

Was müsste ich da denn hinzufügen ? Irgendwie klappt nichts :(

0
Destranix  31.10.2021, 16:28
@Miriamb8

Nun, ein if wirst du hinzufügen müssen. Oder das Else verschieben. Je nachdem, was du denn machen willst.

Wann soll der Else-Block denn auslösen?

0
Destranix  31.10.2021, 16:29
@Miriamb8

Ah und by the way, prüfst du oben, ob die Argumentenzahl != 2 ist, du willst aber testen, ob diese < 2 ist soweit cihd as sehe.

0
Destranix  31.10.2021, 16:31
@Miriamb8

Zudem wäre es schlau, Integer.parseInt nur einmal im Loop aufzurufen und das Ergebnis in eine Variable zu speichern, welche du dann weiter verwendest. Aber sollte so auch funktionieren.

Und du solltest mal deine Klammern zählen, ich glaube, da hast du ein paar zu viel oder zu wenig.

Und ausgeben willst du vermutlich Max und Min und nicht 0 und 1.

0

Warum hast das else außerhalb vom for loop?

entweder du packst das direkt an die if Anweisung oder else ist fûr die katz