# array element vergleichen



## benni miles (31. März 2007)

Hi,

ich möchte eine Eingabe mit mehreren Zeichen auf deren Richtigkeit  zb (a b c d) überprüfen. Dazu lese ich die Zeile per getline in ein array ein. Wenn nun andere Buchstaben wie a b c d eingegeben wurden soll hier eine Fehlermeldung ausgegeben werden. Ich habe mir gedacht ich lege einen zweites array an mit diesen Werten (a b c d) lasse per for schleife den eingegeben array einzeln durchlaufen und mit dem konstanten vergleichen. Meine Frage wie kann ich einzelne Array Elemente im eingegeben Array mit dem gesamten konstanten array vergleichen? Bsp. wenn a eingeben wurde soll er im konstanten nach einem a suchen wenn er es findet keine Fehlermeldung.

lg


----------



## cesupa (31. März 2007)

Hallo,

also wenn ich das richtig verstanden habe suchst du sowas:


```
char c1="a";
char c2[]="abcd";
bool fehler=true;

for(int i=0;i<strlen(c2);i++)
{
        if(c1==c2[i])
        fehler=false;  //wenn Zeichen gefunden -> kein Fehler 
}

if(fehler)
cout<<"Fehler!"<<endl;
```

Gruß
cesupa


----------



## benni miles (31. März 2007)

Ja genau so etwas mein ich nur das ich array Elemtente miteinander vergleiche ich hab das jetzt so erweitert.


```
char c1[8];
char c2[]="abcd";
bool wrong_insert=true;


cin.getline(c1, 8, '\n');
for (int x=0;x<strlen(c1);x++)
{
    for(int i=0;i<strlen(c2);i++)
    {
       if(c1[x]==c2[i])
       wrong_insert=false; 
    }
    if(wrong_insert)
    cout<<"Fehler!"<<endl;
}
```

Es funktioniert wenn ich jetzt t eingib dann sagt mir das script Fehler. Wenn ich nun at eingib sagt er mir keinen fehler obwohl er beim 2ten durchlauf einen Fehler asugeben müsste. Was mach ich falsch

lg


----------



## Online-Skater (31. März 2007)

Das liegt daran, dass der Fehler beim "a" auf *false* gesetzt wird und beim "t" nicht wieder auf *true*. Bau eine Fallunterscheidung (if else) ein, die im Fehlerfall die Schleife abbrechen sollte, deine Fehlermeldung kommt dann außerhalb der for-schleife.


----------

