Pseudocode, größte Zahl ausgeben ohne Array?

7 Antworten

Du benötigst für so einen Algorithmus einen Start- und einen Endwert, um den Zahlenbereich erst einmal einzuschränken. Dann prüfst du, welcher von beiden größer ist und gibst diesen zurück.

Oder du gibst gleich den letzten/höchsten Wert zurück, sofern dieser bekannt ist.

Das kommt absolut auf deinen Algorithmus an.

In welcher Sprache arbeitest du?

Was soll "max6" bzw. "max9" sein? Die max Funktion für 6 bzw. 9 Werte?


user373h383  14.04.2018, 19:06

Steht in der Frage, Pseudocode.

0
969669  14.04.2018, 19:10
@user373h383

Dir ist schon klar, dass es keinen "Pseudocode" gibt oder? Das kann alles bedeuten. Jeder Pseudocode kann anders aussehen - deshalb "Pseudo"

0
GeoPat 
Beitragsersteller
 14.04.2018, 19:10

Also die Sprache ist C, aber im Pseudocode und "max 6/9" soll für den Algorithmus stehen, der für die natürlichen Zahlen 1-6 bzw. 1-9 die größte Zahl zurückgeben soll. Jedoch ohne einen Array zu verwenden.

0

Sprache,


Dann nimm doch eine dynamische Liste. Scherz beiseite:

Wenn es sich um einen von vornherein gegebenen Bereich aufeinander folgender natürlicher Zahlen handelt, ist die Aufgabe müßig. Für diesen Fall hat LeonardM schon die nahezu optimale Antwort gegeben.

Um dem Professor etwas zu schmeicheln, kann man aber auch eine Zählschleife nehmen und hier den Index selbst anstelle des Array-Elements an dieser Stelle vergleichen.

Oder könnte es sein, dass die Zahlen nacheinander eingelesen werden (Benutzereingabe oder Datei)? Dann

solange nicht Eingabestream.Ende
  ... 

Aber das widerspricht schon wieder der von Anfang an bekannten Anzahl der Elemente.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

PWolff  14.04.2018, 19:41

In C# sähe der Code z. B. so aus:

var max6Result = System.Linq.Enumerable.Range(1, 6).Max();

(verwendet kein Array, sondern ein Enumerable und einen impliziten Iterator)

die Max()-Methode kann man auch mal eben selbst implementieren - hierbei muss man allerdings entscheiden, was bei einer leeren Liste rauskommen soll.

Wieder C# - mit "Generics":

public static T Max<T>(this IEnumerable<T> list)
  where T: IComparable<T>;
{
  T retVal = DefaultValue<T>(); // DefaultValue<T>() ist geeignet zu implementieren
  bool listIsEmpty = true;
  foreach (T elem in list) {
    if (listIsEmpty) {
      retVal = elem;
      listIsEmpty = false;
    } else {
      if (retVal.CompareTo(elem) < 0) { retVal = elem; }
    }
  }
  if (!listIsEmpty) {
    return retVal;
  } else {
    throw new ListIsEmptyException(); // ListIsEmptyException : Exception ist geeignet zu implementieren
  }
}
2

Die von dir formulierte Aufgabe ergibt irgendwie keinen Sinn und führt zu so schicken Funktionen, wie denen aus LenoardM's Antwort.

Kann es sein, dass du eher eine Funktion suchst, die das größte von jeweils sechs bzw. neun Argumenten liefert?

Wenn ja, dann in Pseudocode vielleicht so:

function max6(n1, n2, n3, n4, n5, n6) {
  max = n1

  if n2 > max: max = n2
  if n3 > max: max = n3
  if n4 > max: max = n4
  if n5 > max: max = n5
  if n6 > max: max = n6

  return max
}

Wie die Funktion mit neun Argumenten aussieht, kannst du dir ja vermutlich schon denken.

Naja, viel Spaß noch ... was auch immer für eine Antwort du suchst. :)