Wie heißt die passende Algorithmusidee?

hallo zusammen,

also ich hab Probleme bei folgender Aufgabe:

gegeben ist diese Spezifikation:

Eingabe: - Folge von ganzen Zahlen(z.B.2662224):folge

  • Anzahl der Elemente (im Bsp.7): anzahl >= 1

Ausgabe:

  • die Zahl, die in der Folge am längsten ununterbrochen weiderholt wurde (im Bsp.2): zahl
  • die Anzahl dieser Wiederholungen(im Bsp.3): wdh

jetzt soll ich eine Algorithmusidee formulieren.

Ich hab mir folgendes überlegt:
man packt die Zahlen in einen Vektor un vergleicht jede Stelle mit der nächsten, immer wenn es eine Übereinstimmung gibt wird „wdh“ eins hoch gezählt. Aber wie mach ich das wenn es, wie oben eine Übereinstimmung gibt (66), danach kommt wieder eine Übereinstimmung (222) aber mit anderen zahlen.Ich komm da echt nicht weiter. Ich leider nicht viel ahnung von Informatik, deswegen wäre es echt klasse wenn mir vll jm helfen könnte.

Vielen Dank im Vorraus. gruß

Hallo,

wie wäre es, wenn Du die Zahlen vorher sortierst? Dann brauchst Du nur noch einen Zähler, der schaut, wie oft eine Zahl wiederholt wird, bevor die nächste kommt.

Gruß

Fritze

Hallo,

wie wäre es, wenn Du die Zahlen vorher sortierst? Dann
brauchst Du nur noch einen Zähler, der schaut, wie oft eine
Zahl wiederholt wird, bevor die nächste kommt.

… und bekommst die falsche Antwort. Es geht ja um ununterbrochene Wiederholungen, also in 2662224 ist die Antwort 3. Wenn du sortieren würdest, hättest du 2222466 und die Antwort wäre 4.

Stattdessen einfach die Zahlen einmal durchlaufen, und sich merken:

  1. was bisher die am häufigsten wiederholte Zahl war
  2. wie oft sie wiederholt wurde
  3. was die vorherige Zahl war
  4. wie oft sie wiederholt wurde

Und bei jeder eingelesenen Zahl diese Informationen updaten.

Grüße,
Moritz

Hallo,
vielen Dank erstmal für die schnelle Antwort :smile:
Deine idee hört sich logisch an.

Aber jetzt komm ich gleich zu meinem nächsten Problem, dem teil b der Aufgabe:
Erstellen sie ein Strucktogramm und schreiben sie den Alg. als funktionsdefinition in C :frowning:

Meine Anfang wäre, ich lasse die folfe (2662224)mit na schleife durchlaufen. Dabei komm ich an die Stelle 66. Da gibts dann ne variable die sich „6“ merkt und eine variable, die sich die Häufigkeit merkt (2). dann komm ich an die Stelle 222. wie gehts da weiter? ich mein ich kann da doch nicht nochmal 2 variablen erzeugen die sich das gleiche wie bei der Zahl 6 merken. Also das wird schwierig, wenn die folge mal keine 7 zahlen lang ist, sondern 50.
Also da häng ich.
Also Moritz wenn du mir na nochmal weiterhelfen könntest, das wäre wirklich super lieb von dir. Natürlich bin ich auch über jede andre Anwort sehr dankbar :smile:
gruß

Hallo,

sorry wg. der falsch verstandenen Aufgabe.

Meine Anfang wäre, ich lasse die folfe (2662224)mit na
schleife durchlaufen. Dabei komm ich an die Stelle 66. Da
gibts dann ne variable die sich „6“ merkt und eine variable,
die sich die Häufigkeit merkt (2).

Und vorher gab es schon eine Variable, die sich 2 gemerkt hat und die Häufigkeit 1. Da die 6 mit Häufigkeit 2 vorkommt, wird das die neue erste Zahl (die zwei kannste vergessen) mit der Häufigkeit 2. Und so weiter.

Du sollst ja nicht die Längen aller Zahlenfolgen angeben, sondern nur die längste finden. Die zweitlängste ist schon egal.

Gruß

Fritze

Hallo Fritze,

dass passt schon :smile:,vielen dank für deine Antwort, aber was ich immer noch nich versteh:
Also nehmen wir an die folge heißt nicht (2662224)sondern (2666224)
dann merkt sich das programm erst die 2 die einmal vorkommt, dann die 6 die drei mal vorkommt, dann geht er weiter zur 2 die zweimal vorkommt. wenn die variablen nun immer wieder neu überschrieben werden wie kann das programm vergleichen und sagen vor den zwei 2ern kamen drei 6en. das is mir nich ganz kla.
Könntest du mir das vll erklären…oder denk ich da falsch?
Wäre super nett :smile:
Danke

Hallo,

ich immer noch nich versteh:
Also nehmen wir an die folge heißt nicht (2662224)sondern
(2666224)
dann merkt sich das programm erst die 2 die einmal vorkommt,
dann die 6 die drei mal vorkommt, dann geht er weiter zur 2
die zweimal vorkommt. wenn die variablen nun immer wieder neu
überschrieben werden wie kann das programm vergleichen und
sagen vor den zwei 2ern kamen drei 6en. das is mir nich ganz
kla.

Das Programm soll sich nur die bisher längste Folge merken. Nur wenn eine längere kommt, wird überschrieben. Daher brauchst Du ja auch zwei Variablen zum verlgeichen.

Gruß

Fritze

Ah…ich glaub ich weiß wie ichs jetzt mach …

Danke dir :smile: