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.
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.
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:
was bisher die am häufigsten wiederholte Zahl war
wie oft sie wiederholt wurde
was die vorherige Zahl war
wie oft sie wiederholt wurde
Und bei jeder eingelesenen Zahl diese Informationen updaten.
Hallo,
vielen Dank erstmal für die schnelle Antwort
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
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
gruß
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.
dass passt schon ,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
Danke
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.