Seite 1 von 1

Array Inhalt überprüfen

Verfasst: Fr Okt 29, 2021 9:39 pm
von Unbekannterdude
Hallo,
ich habe vor kurzem angefangen mir die Sprache C beizubringen, doch ich komme mit einer Übungsaufgabe nicht weiter und weiß auch nicht ob das so richtig ist.
Also zu der Aufgabe. Es geht darum einen Array mit der Größe 10 zu initialisieren und diese mit 10 Zufallszahlen (zw. 1-100) zu befüllen. Soweit so gut, jedoch muss ich jetzt eine Zahl
einlesen und diese mit dem Array-Zahlen überprüfen, ob eine Übereinstimmung gibt. Falls nicht, soll ein Fehler ausgegeben werden. Ich weiß jetzt genau, ob meine for schleife so sinnvoll ist.
Ich hoffe ihr könnt mir da weiterempfehlen :oops:

Mein Programm sieht so aus:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()
{
    int arr[10];

    srand(time(NULL));

    for (int i=0;i<10;i++)
    {
        arr[i] = rand() %101;
        printf ("Die Zufallszahlen lauten: %d \n",arr[i]);  //Zufallszahlen zw. 1-100 generieren
    }

    int a;
    printf("Bitte geben Sie eine ganze Zahl ein: ");  //Zahl eingeben die überprüft werden soll
    scanf("%d",&a);

    //Hier wird die Zahl a mit den Zufallszahlen überprüft
    
    for (int j=0; j<10;j++){

        if (arr[j] != a)
        {
            printf("Kontrolle\n");

        }
        else if (arr[j] == a)
        {
            printf("Die eigegebene Zahl befindet sich im Array!\n");
            break;
        }
        else
        {
            printf("Fehler"); //Leider wird hier nichts angegeben.
        }
    }


    return 0;
}
EDIT nufan: Code-Tags

Re: Array Inhalt überprüfen

Verfasst: Sa Okt 30, 2021 10:02 pm
von nufan
Hallo!

Du hast folgende Bedingungen in deiner Schleife:
Unbekannterdude hat geschrieben:
Fr Okt 29, 2021 9:39 pm

Code: Alles auswählen

        if (arr[j] != a)
        {
            printf("Kontrolle\n");

        }
        else if (arr[j] == a)
        {
            printf("Die eigegebene Zahl befindet sich im Array!\n");
            break;
        }
        else
        {
            printf("Fehler"); //Leider wird hier nichts angegeben.
        }
Die erste Abfrage überprüft, ob die geratene Zahl sich vom aktuellen Element im Array unterscheidet. Die zweite Abfrage überprüft, ob die geratene Zahl den gleichen Wert wie das aktuelle Element im Array hat. Diese beiden Abfragen widersprechen sich: Eine von beiden wird immer wahr sein, die andere immer falsch. Das "else" wird also nie erreicht.

Um festzustellen, dass deine Zahl nicht im Array vorkommt, musst du alle Elemente des Arrays überprüfen. Erst dann kannst du eine sichere Aussage treffen.

Eine Möglichkeit wäre es, eine Hilfsvariable zu verwenden. Du initialisierst sie vor der Schleife mit 0 und setzt sie innerhalb der Schleife auf 1, sobald das aktuelle Element im Array den gesuchten Wert hat. Nach der Schleife kannst du dann je nach Wert deiner Hilfsvariable den entsprechenden Text ausgeben.

Übrigens erzeugst du Zufallszahlen zwischen 0 und 100, nicht zwischen 1 und 100.