problem mit feldern



  • danke für deine hilfe aber das geht so nicht da kommt dann immer speicher zugriffs fehler

    und du hast gerade und ungerade vertauscht ....



  • hans-sonny schrieb:

    und du hast gerade und ungerade vertauscht ....

    Dafür habe ich das " == 0 " weggelassen.



  • /* Gerade und ungerade Zahlen den entsprechenden Feldern zuordnen */
      for (i = 0; i < anIntArraySize; ++i)
      {
        if (Array[i] % 2) 
        {
          UngeradesArray[ungeradez++] = Array[i];
        } else {
          GeradesArray[geradez++] = Array[i];
        }
      }
    
      /*Ausgabe gerade und ungerade Zahlen*/
    
      printf("Ungerade Zahlen: \n");
      for (i = 0; i < ungeradez; i++) 
      {
        printf("%d, ", UngeradesArray[i]);
      }
      printf("\n\n");
    
      printf("Gerade Zahlen: \n");
      for (i = 0; i < geradez; i++)
      {
        printf("%d, ", GeradesArray[i]);
      }
      printf("\n\n");
    

    so hab ichs jetzt gemacht

    dann kommt aber immer speicherzugriffsfehler bei der ausgabe der geraden und ungeraden



  • Hast du die beteiligten Variablen überhaupt initialisiert, bevor du sie benutzt hast? Die Anweisung "int x;" belegt zwar genug Speicher, aber du kannst dich nicht darauf verlassen, was dort drinsteht.



  • Kann es sein, dass ungeradez/geradez nicht mit 0 initialisiert sind (genau wie ungerade/gerade übrigens auch)?



  • Poste mal bitte den gesamten Code, der mit deinem Problem zutun hat.



  • _Falke schrieb:

    Kann es sein, dass ungeradez/geradez nicht mit 0 initialisiert sind (genau wie ungerade/gerade übrigens auch)?

    Ging mir auch durch den Kopf. Oder wie gross sind die beiden Arrays?



  • ich habs sie gar nicht initialisiert sondern nur deklariert.

    die felder sollen so groß angelegt werden wie nötig (wird mit der modulo funktion gemacht

    ist oben im ersten beitrag im code auch kommentiert

    EDIT: okay jetzt geht es hab die variablen mit 0 initialisiert.

    vielen dank an alle



  • hans-sonny schrieb:

    EDIT: okay jetzt geht es hab die variablen mit 0 initialisiert.

    vielen dank an alle

    Das ist es, worauf wir dich da gemeinschaflich hinweisen wollen: Mit der reinen Deklaration hast du einen undefinierten Wert in der Variable - und damit zu rechnen ergibt nur unsinnige Ergebnisse.



  • CStoll schrieb:

    Mit der reinen Deklaration hast du einen undefinierten Wert in der Variable - und damit zu rechnen ergibt nur unsinnige Ergebnisse.

    Mit Deklarationen habe ich überhaupt keinen Wert einer Variable, den ich initialisieren könnte, denn ich habe noch keinen Speicherplatz.
    Du meinst Definitionen.
    Und dafür gilt dann auch: alle globalen statisch definierten Variablen sind immer implizit 0 initialisiert.



  • Wutz schrieb:

    Und dafür gilt dann auch: alle globalen statisch definierten Variablen sind immer implizit 0 initialisiert.

    Ok, Punkt für dich. Aber hans-sonny arbeitet glücklicherweise mit lokalen Variablen - und die werden nunmal nicht automatisch initialisiert.


Anmelden zum Antworten