Array Positionsfehler bei der Ausgabe



  • Guten Tag,

    wir sollen ein Array erstellen mit vorgegebenen Zahlen. Der Benutzer soll eine beliebige Zahl eingeben und das Programm soll ausspucken, an welcher Position sich die Zahl befindet, ob sie überhaupt vorkommt oder nicht.
    Die Aufgabe ist auch soweit schon gelöst, doch einen kleinen Fehler gibt es.
    Wenn man zum Beispiel die 9 oder 16 eingibt, wirft er als erste Position 33 oder 44 aus... da sollte eigentlich 3 oder 4 anstelle stehen.
    Wo liegt da der Fehler? Könnt ihr uns weiterhelfen?
    Vielen Dank im Voraus!

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i;
        int eingabe;
        int vorkommen[12];
        int zaehler=0;
        int c=0;
        int array[12]={2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};  // Array
    
    
    
        printf("Geben Sie eine Zahl ein: \n");
        scanf("%i", &eingabe);                      // Eingabe der beliebigen Zahl des Benutzers
    
    
        for(i=0; i<12; i++)                             // Auflistung der einzelnen Positionen und Suche nach der eingegebenen Zahl
        {
            printf("array[%d]: %d \n", i, array[i]);
            {
                if(eingabe == array[i])
                {
                    vorkommen[zaehler] = i +1;
                    zaehler += 1;
                    c = 1;
                }
    
            }
        }
            if(c >= 1)                                                                          // Wenn die Zahl vorkommmt, soll die Position angezeigt werden
                {
                    printf("\n\nDie Zahl kommt an diesen Stellen vor: %d", array[i]-1);
                    for(i=0; i<zaehler; i++)
                    {
                        printf("%d  ", vorkommen[i]-1);
                    }
                }
                else                                                                                  // kein Vorkommen
                {
                    printf("\n\nDie Zahl %d ist im Array leider nicht vorhanden!", eingabe);
                }
    
    
    
    
        return 0;
    
    }
    


  • EDIT: Gefunden!!!


  • Mod

    Erklär mal genau die Zeile 34. Was ist i an der Stelle? Was soll dort überhaupt ausgegeben werden und was ist der Unterschied zu Zeile 37? Und zu Zeile 42?

    Wieso speicherst du eigentlich alles +1 ab, bloß um dann hinterher stets wieder 1 abzuziehen?



  • @SeppJ unser fehler war in Zeile 34, da geben wir die Ausgabe zum ersten mal aus, aber nur von der ersten Position. Und in Zeile 37 läuft es ja in der for-Schleife also wird die oben ausgegebene Zahl noch mal ausgegeben.
    In Zeile 42 wird die Zahl, die eingegeben wurde noch einmal ausgegeben, die nicht im Array vorkommt.
    +1 war früher mal irgendwie ein fehler den wir dann mit -1 behoben haben. 😬


  • Mod

    @Luckyingmar sagte in Array Positionsfehler bei der Ausgabe:

    @SeppJ unser fehler war in Zeile 34, da geben wir die Ausgabe zum ersten mal aus, aber nur von der ersten Position. Und in Zeile 37 läuft es ja in der for-Schleife also wird die oben ausgegebene Zahl noch mal ausgegeben.

    Nicht einmal das. Guck genauer hin! Du gibst etwas aus array aus. Das hat aber gar nichts mit deinen Positionen zu tun. Aber du willst hier ja gar keine Position ausgeben, du willst wahrscheinlich eher so etwas wie

    printf("Die Zahl %d wurde an folgenden Positionen gefunden: ", eingabe);
    // dann in die Schleife...
    

    +1 war früher mal irgendwie ein fehler den wir dann mit -1 behoben haben. 😬

    Lass einfach bei den Positionangaben alle plus und minus 1 weg.