Array Inhalt überprüfen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Unbekannterdude
Beiträge: 1
Registriert: Fr Okt 29, 2021 9:29 pm

Array Inhalt überprüfen

Beitrag von Unbekannterdude » Fr Okt 29, 2021 9:39 pm

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

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Array Inhalt überprüfen

Beitrag von nufan » Sa Okt 30, 2021 10:02 pm

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.

Antworten