maximo Fragestunde



  • i und y stellen beides Positionen (= Indizes) im Array dar.
    Und durch die Schleife und den Vergleich wird jeweils der an Position i stehende Wert mit dem bisher größten Wert (der an Position y steht) verglichen.
    Und nach der Schleife steht dann eben in y die Position des größten Werts des Arrays (Edit: sofern wie SeppJ schon geschrieben hat, nur positive Werte im Array stehen).



  • Du hast entweder das falsche buch oder einfach nichts verstanden.

    Wenn du weißt was a[b] ist und was if(a < b) ist, musst du das nurnoch kombinieren...



  • maximo l schrieb:

    Ja, meine Frage ist eben, was das für eine Bedeutung hat, wenn man einfach ... macht:

    if (array[i] > array[y])
    

    Du vergleichst zwei Elemente von dem Array array.
    Wenn das Element mit dem Index i größer ist als das mit dem Index y, ist die Bedingung für das if wahr.
    i und y sind int-Variablen, die (bei dir) Werte von 0 bis 2 annehmen.

    Th69 schrieb:

    Und nach der Schleife steht dann eben in y die Position des größten Werts des Arrays (sofern wie SeppJ schon geschrieben hat, nur positive Werte im Array stehen).

    Ich glaub ich bin zu blöd dafür. Was hat der Startwert vom Index mit dem Wertebereich des Arrays zu tun?

    tkausl schrieb:

    Wenn du weißt was a[b] ist und was if(a < b) ist, musst du das nurnoch kombinieren...

    Gegenüber einem Anfänger sind die Bezeichner (nur a und b) aber sehr unglücklich gewählt.


  • Mod

    DirkB schrieb:

    Th69 schrieb:

    Und nach der Schleife steht dann eben in y die Position des größten Werts des Arrays (sofern wie SeppJ schon geschrieben hat, nur positive Werte im Array stehen).

    Ich glaub ich bin zu blöd dafür. Was hat der Startwert vom Index mit dem Wertebereich des Arrays zu tun?

    Nein, nicht du bist zu blöd, sondern ich bin auf Autopilot gefahren: Maximumsfrage? Check. Startwert 0? Check. -> Kommentar über Startwert abgeben, ohne Code genau anzugucken.



  • Es war ja auch sehr früh (oder spät).

    Es sind aber noch andere alte Hasen darauf rein gefallen. 😮

    ^Ich hatte das extra nicht zitiert, damit du das ohne Nebenwirkungen löschen kannst.^


  • Mod

    DirkB schrieb:

    ^Ich hatte das extra nicht zitiert, damit du das ohne Nebenwirkungen löschen kannst.^

    Sehr löblich, aber ich stehe zu solchen Dingen (natürlich nur, wenn es schon jemand gesehen hat und ich nicht erwarten kann, mich mit einer schnellen Löschung aus der Affäre ziehen zu können 😃 )



  • Gegenüber einem Anfänger sind die Bezeichner (nur a und b) aber sehr unglücklich gewählt.

    Auch wenn ich ein Anfänger bin, habe ich doch sofort, naja 3 Sekunden danach, gewusst was er meinte.

    Okay, ja, am Anfang habe ich echt übersehen, dass y = 0 ist, trotzdem hat mich das nur ein Stück weiter gebracht, aber nicht annähernd an das Ziel.

    Da habe ich was nicht mitgekriegt? 😋

    Letzte Frage, da ich einfach aufgebe und hoffe, dass ich das irgendwann in Zukunft kapiere diese Sachen zu kombinieren:
    Wieso macht man da das?
    y = i;

    Wenn ihr genauso frustrierend seid, dann habe ich was anderes, ganz leichtes, also für mich.
    In dem Buch ist es manchmal so manchmal so, deshalb hoffe auf eure Hilfe, weil ich mich vom Autor verarscht fühle.

    Ist das eine Definition?
    int var = 10;

    Ist das Initialisierung?
    int var;

    Ansonsten besten Dank für die mühevolle Hilfe!



  • // Ich geb auf. Bin zu blöd.


  • Mod

    Swordfish schrieb:

    maximo schrieb:

    Ist das eine Definition?
    int var = 10;

    Ist das Initialisierung?
    int var;

    Ersteres ist eine Definition (Deklaration mit gleichzeitiger Initialisierung), zweiteres eine reine Deklaration.

    Nein, das sind beides Definitionen. Die Trennung der Begriffe "Deklaration" und "Definition" hat nichts mit Initialisierung zu tun.

    extern int var;
    

    wäre eine Deklaration. Eine Deklaration ist eine reine Bekanntmachung eines Begriffs, ohne genaue Angabe, was genau dahinter steckt (wobei bei dem extern-Beispiel nicht viel fehlt: Das einzige was man nicht über var weiß ist, wo var lebt. Und wenn man mittels int var; das var definiert, dann ist die Antwort, wo es lebt, einfach "hier!"). Andere (bessere) Beispiele für Deklarationen sind:

    struct foo;
    
    void bar(int i);
    

    Definitionen geben hingegen genau die Eigenschaften eines Begriffs an. Beispiele für Definitionen, die zu den obigen Deklarationen passen, sind:

    struct foo
    {
      int i;
      double d;
    };
    
    void bar(int i)
    {
      printf("%i" ,i);
    }
    

    Bessere Erklärung, als ich das aus dem Stand kann:
    http://www.cprogramming.com/declare_vs_define.html

    for( /* init expression */ int i = 0;
         /* cond expression */ i < 10;
         /* loop expression */ ++i )
    {  // ------------------------------+
        std::cout << i << '\n';  //     +->  loop body
    }  // ------------------------------+
    

    C-Forum, nicht C++.



  • SeppJ schrieb:

    Die Trennung der Begriffe "Deklaration" und "Definition" hat nichts mit Initialisierung zu tun.

    Ja, natürlich recht du hast. Spät schon ist.

    SeppJ schrieb:

    C-Forum, nicht C++.

    Fixed.


  • Mod

    Swordfish schrieb:

    SeppJ schrieb:

    C-Forum, nicht C++.

    Fixed.

    Du hast noch mehr von der Art in deinem Beitrag, was nur in C++ geht. Und einiges, was nur in C99 geht.



  • fixed. finally. 😞



  • Hab jetzt nicht alle Antworten studiert, aber
    [code="c"]for (i = 1; i < 3; i++)[/code]tut mir sofort weh.

    EDIT:
    Da hat die Forensoftware wohl wiedermal verkackt. 😉


  • Mod

    Swordfish schrieb:

    fixed. finally. 😞

    Swordfish schrieb:

    // Ich geb auf. Bin zu blöd.

    Das war jetzt eigentlich nicht meine Absicht 😮 . Du hattest doch bloß ein paar couts und ein paar Definitionen im for-Kopf.



  • SeppJ: Danke für den Link, habs mir für später gespeichert, da ich auch noch nicht so richtig englisch kann, so durchmuggeln kann ich mich nur. 🙂

    Gut, danke!
    Und was bedeutet dann die Initialisierung?
    Damit ich das Thema im Kopf abschließen kann, weil das Wort spuckt rum und es will raus. 😉

    Sonst Forensoftware noch nicht fertig gefixt oder wie?

    Ah ja, bitte bleiben wir bei C, sonst wirds etwas schleierhaft.


  • Mod

    EOP schrieb:

    EDIT:
    Da hat die Forensoftware wohl wiedermal verkackt. 😉

    Nicht wirklich. Fett markieren in Codetags ist eben einfach nicht. It's not a bug, it's a missing feature. Und vermutlich auch eines, das meiner Einschätzung nach nicht so schnell kommen wird, da das sicherlich nicht ganz unkompliziert zu parsen ist. Ein Glück kommt die Zeichensequenz "[/" nicht in normalem C-Code vor (wohl aber Dinge wie [b] !). Du kannst es dir ja mal in der Forentechnik wünschen, vielleicht ist es ja weniger kompliziert, als ich vermute.



  • It's not a bug - it's a feature. 🙂



  • EOP schrieb:

    Hab jetzt nicht alle Antworten studiert, aber
    for (i = 1; i < 3; i++) tut mir sofort weh.

    Was stört dich denn an dem i=1 ?



  • SeppJ schrieb:

    Swordfish schrieb:

    // Ich geb auf. Bin zu blöd.

    Das war jetzt eigentlich nicht meine Absicht 😮 . Du hattest doch bloß ein paar couts und ein paar Definitionen im for-Kopf.

    Ja. Aber es war einfach zu spät und ich zu müde. Und bevor ich noch mehr Kacke bau ...



  • DirkB schrieb:

    EOP schrieb:

    Hab jetzt nicht alle Antworten studiert, aber
    for (i = 1; i < 3; i++) tut mir sofort weh.

    Was stört dich denn an dem i=1 ?

    Hmmm, war schön spät. Wenn das als Entschuldigung zählt.

    Bei mir fängt die Welt immer bei 0 an und nicht bei 1. Hab mich, um ehrlich zu sein, mit dem kompletten Code gar nicht beschäftigt.


Anmelden zum Antworten