We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

S05B.1 Ist Eintrag zweimal in Array

00:00

Formal Metadata

Title
S05B.1 Ist Eintrag zweimal in Array
Title of Series
Number of Parts
36
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language
Producer

Content Metadata

Subject Area
Genre
InformationZahlString (computer science)Variable (mathematics)Grand Unified TheoryComputer animation
InformationVariable (mathematics)DebuggerSequenceComputer animation
Variable (mathematics)Computer animation
While-SchleifeComputer animation
Transcript: German(auto-generated)
Wir geben dieses Array, Schweifklammern, wir geben dieses Array, wüsste ich gerne, ob da drin zweimal die 13 ist, genau zweimal die 13 oder nicht.
Da ist 13 genau zweimal drin. Natürlich möchte ich es so tun, als ob das Array unbekannt ist, als ob das Messwerte wären oder sowas, was wir jetzt noch nicht können. Also sie nehmen dieses Array und gucken, ob die 13 genau zweimal drin ist.
Das ist ja jetzt keine Zeichenkette, bei der ich gucken könnte, ob ich bei der Null angelangt bin. Das heißt, irgendwo muss die Zahl 5 herkommen, es sind 5 Stück. Und ich gebe mit einer Vorschleife durch.
In den runden Klammern steht, wie die Laufvariable läuft, bei der Vorschleife typischerweise. Man könnte auch andere Geschichten veranstalten, aber um das einfach zu halten, in den runden Klammern nur, was die Laufvariable da tut. Wir starten bei Null, wir hören bei 4 auf, kleiner 5, und wir gehen in einer Schritte.
Irgendwie muss ja auch sowas vorkommen, dass ich gucke, wie in der letzten Veranstaltung, dass ich gucke, ob der Inhalt von dem Array gleich 13 ist. Auch das muss irgendwo vorkommen.
Da muss dann irgendwas passieren, wenn es gleich 13 ist. Dann muss ich wohl irgendwas merken und ähnliches. Und basteln Sie da nochmal weiter. Okay, die Idee, die die meisten jetzt hatten, und ich denke, die ist auch
relativ sinnvoll, ist, dass man einfach mitzählt, wie oft denn die 13 drin ist. Vielleicht nenne ich die Variable mal ein bisschen besser. Anzahl 13, so was. Wie oft ist die 13 drinnen, wenn ich die 13 gefunden habe? Es ist ja einmal mehr drin.
Und dann gucke ich am Ende, ob diese Anzahl denn 2 ist oder nicht. Und immer schön gleichgleich in C und seinen Nachfolgesprachen. Wenn Sie vergleichen, ein Gleichgleich. Wenn Sie zuweisen, initialisieren, zuweisen, was auch immer, dann nehmen Sie ein einfaches Gleich.
Und hier könnte man jetzt irgendwie was veranstalten. Was könnte man veranstalten? Irgendeine gute Variable auf wahr setzen, muss ich nicht hinschreiben. So könnte das funktionieren. Das wäre eine Möglichkeit. Ich zähle mit, wie viel 13 ich gefunden habe.
Und reagiere dann drauf, wenn es genau 2 waren oder nicht. Vielleicht noch eine Art, wie man es machen kann, auf etwas unübersichtliche Weise. Aber eigentlich logisch genauso gut.
Man könnte gucken, ist die 13 einmal drinnen? F, A von E, vielleicht 13. Ist sie einmal drinnen? Das merke ich mir. Nicht hier eine Anzahl 13, sondern mindestens eine 13 drinnen.
So etwas. Merke ich mir in der Boolshen-Variable. Wozu ich Standard-Bool brauche in C.
Hier ist mindestens ein 13 drinnen. Merke ich mir das. Ich könnte jetzt vorgehen, um festzustellen, ob ich eine zweite 13 gefunden habe.
In der Tat ein IF im IF. Spannend sind nur die Einträge, die 13 sind. Wenn ich irgendeinen gefunden habe, der 13 ist, merke ich mir, es gibt schon mal einen, der 13 ist. Und jetzt könnte ich hier ganz dreist sagen, wenn ich einen gefunden habe, der 13 ist, aber auch schon zu dem Zeitpunkt die erste 13 gefunden worden ist,
könnte ich mir ja merken, dass ich also da schon einen zweiten habe. Da haben wir mindestens zwei 13 drinnen.
Wie gesagt, das wird etwas unübersichtlicher, als das eben, wenn man einfach nachzählt. Wenn ich die erste 13 gefunden habe, ist der hier noch falsch. Merke mir das.
Wenn ich dann die zweite 13 finde, ist der hier wahr. Ich merke mir hier, dass ich die zweite 13 gefunden habe. Und dann setze ich noch mal auf wahr, dass ich die erste 13 gefunden habe. Das war ja sowieso vorher schon auf wahr. Das macht nichts kaputt. Jetzt habe ich aber noch nicht die Information, ob es genau zwei 13 sind.
Ich habe nur die Information, dass es mindestens zwei 13 sind. Wie kriege ich das jetzt noch rein, dass es genau zweimal die 13 ist? Ja, dasselbe noch mal. Ich setze hier den noch mal rein.
Wir müssen es wahrscheinlich nicht in voller Gänze dann haben. Da gucken, oder? Doch, in voller Gänze. Also hier kommt dann jetzt als Nächster mindestens drei 13 drinnen. Und hier steht dann mindestens drei 13 drinnen.
Das ist gleich true. Wie gesagt, das ist eher unübersichtlich. Beim ersten Mal, wie ich eine 13 finde, gehe ich hier rein in das if. Die Variable ist noch false. Ich setze sie auf wahr.
Beim nächsten Mal, dass ich eine 13 finde, gehe ich hier rein in das if. Diese Variable ist noch false, aber hier das mit der 2 setze ich auf wahr. Und beim dritten Mal, dass ich eine 13 finde, ist das wahr und das ist das wahr. Und da habe ich einen Fehler drin, das muss mindestens zwei heißen.
Ich habe einmal die 13 gefunden, ich habe sie zweimal gefunden. Ich gehe hier rein und setze dies mindestens dreimal auf wahr. Das ist heftig, aber es geht dann eben ohne zählen. Das stört, dass man zählt, obwohl man ja eigentlich nur die Information ja nein braucht. Und dann müsste ich jetzt hier zum Schluss das noch ein bisschen auswerten.
Hier möchte ich nur reingehen in dieses if da unten, wenn genau 2 mal die 13 waren. Was wäre die Bedingung da unten für das if?
Ich komme hier aus der Vorschleife heraus und hier möchte ich jetzt die Bedingung für das if haben. Irgendeine Bedingung, die man sagt, es ist genau 2 mal die 13 drin. Ja, also mit einer logischen Verknüpfung von 2. Mindestens 3 drinnen muss falsch sein, mindestens 2 drinnen muss wahr sein.
Der hier und nicht der Dreier. Das wäre die Bedingung. So sieht das dann aus. Muss man sich dran gewöhnen. Sorry. 2 mal drin soll wahr sein und nicht 3 mal drin.
Es soll ja 2 mal drin sein, aber nicht 3 mal drin. Das könnt ihr sogar so lesen. 2 mal drin, aber. Aber ist ja auch eine Art und. Aber nicht 3 mal drin.
Mal sehen, was hier passiert. Sollte ich hier noch irgendeine Variable anlegen oder irgendwas tun, damit ich hier reinspringen kann? Ich schreibe hier mal instami-42, dass ich da was habe, das vom Debugger angesprungen werden kann. Wie sieht das aus? Das array kennen wir schon.
Die butschen Variablen. So, jetzt gehe ich hier durch. Ist der nullte Eintrag, ist der nullte Eintrag gleich 13? Ja, er ist. Ich gehe hier rein. Ist diese Variable mindestens eine 13 drin?
Nein, sie ist nicht wahr. Ich gehe nicht in dieses if rein. Es trägt deshalb nicht in das if da drinnen. Ich springe bis zu dieser Schweifklammer. Mindestens eine 13 drin. Mindestens eine 13 drin ist falsch.
Ich überspringe diese gesamte if-Geschichte. Jetzt gibt es nicht. Deshalb gucke ich gar nicht weiter nach. Ich überspringe die gesamte if-Geschichte und mache hier unten weiter. Setze diese eine 13 Variable auf wahr. Da sind wir drüber gesprungen. Und jetzt ist die hier wahr. Nächster Schleifendurchlauf.
Nächster im array ist 42. Es ist schon hier dieses nicht wahr. Wir sind komplett drüber gesprungen. Nächster Schleifendurchlauf. Die nächste i gleich 2. Die nächste im array ist wieder 13.
Mindestens eine 13 ist wahr. Ich gehe in das if rein. Mindestens zwei 13 drin ist falsch. Ich überspringe dieses if. Merke mir, dass hier zwei 13 drin sind.
Das setze ich nochmal. Macht nichts kaputt, denn das ist schon der Wert gewesen. Wäre vielleicht hübscher, das hier in den else reinzupacken, dass er nicht immer wieder den Wert setzt. Aber es macht nichts kaputt. Nächster Schleifendurchlauf und so weiter. Ich setze hier mal einen Prägpunkt.
Was haben wir jetzt? Mindestens einmal ist wahr. Mindestens zweimal ist wahr. Mindestens dreimal ist falsch. Das heißt, er geht jetzt hoffentlich hier in dieses if rein. Also er sollte genau dann in das letzte if rein gehen. In dem Fall, in dem es genau zweimal die 13 gibt. Jetzt habe ich es mit zweimal 13 ausprobiert. Ich sollte natürlich auch mal gucken, ob es mit dreimal 13 dann fehlschlägt.
Man weiß ja nie. Ich gehe mal direkt unten hin. Sie sehen, alle drei gesetzt. Und ich gehe hoffentlich jetzt nicht in das if rein.
Wunderbar. Ich springe direkt zum return, wie sich das gehört. Das wäre eine Alternative, wo man eben jetzt nicht zählt, sondern sich das Ganze in Butchenbar ja bemerkt. Wird etwas unübersichtlicher zugegebenermaßen. Aber so sehen Sie hier nochmal if verschachtelt. Warum nicht? Auch in einem for, weil die Frage eben aufkam.
Warum nicht? Dreimal if in einem for. Das ist durchaus möglich. Oder vielleicht außen drum noch eine for-Schleife und eine while-Schleife. Das lässt sich bediebig schachteln.