2017-08-22 1 views
1

Ich brauche Hilfe. Ich habe eine Zuweisung, die besagt:C++ überprüfen, ob die ganze Zahl im Array ist

Fordert den Benutzer auf 10 Ganzzahlen eines Arrays und einer Ganzzahl v. Das Programm muss suchen, wenn v in dem Array von 10 ganzen Zahlen ist. Das Programm schreibt "v ist im Array", wenn die Ganzzahl v im Array ist oder "v ist nicht im Array", wenn dies nicht der Fall ist.

Mein Code scheint gut, aber es funktioniert nicht richtig. Bitte helfen Sie.

Hier ist mein Code:

#include <iostream> 
#include <conio.h> 
#include <stdlib.h> 
using namespace std; 

int main() { 
    const int size = 10; 
    int vars[size],temp = 0,v = 0; 
    int boolean = 0,choice; 
    string check = ""; 
    for(int x = 0; x<10; x++){ 
     cout<<"Enter 10 Numbers: "; 
     cin>>vars[x]; 
    } 

    do{ 
     cout<<"Enter V variable :"; 
     cin>>v; 

     for(int x = 0; x <10; x++) 
     { 
      temp = vars[x]; 
      if(temp == v){ 
       check = "v is in the array"; 
      } 
      else{ 
       check = "v is not in the array"; 
      } 
     } 
     cout<<check; 
     cout<<"\nContinue ?"<<endl<<"[1]yes"<<endl<<"[2]no"<<endl; 
     cin>>choice; 
     system("cls"); 
     for(int x = 0; x<10;x++){ 
      cout<<"index" <<x<<" = "<<vars[x]<<endl; 
     } 
    } while(choice != 2); 
    return 0; 
} 
+5

Willkommen bei Stack Overflow! Es klingt, als müssten Sie lernen, wie Sie mit einem Debugger Ihren Code durchgehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – NathanOliver

+0

und https://stackoverflow.com/questions/2069367/ how-to-debug-using-gdb – Yunnosch

+0

'{check =" v ist im Array "; Unterbrechung; } ' –

Antwort

0

Sie führen die Schleife 10-mal. Auch wenn die erste Zahl die Antwort ist, nach der Sie suchen, überschreibt die zweite Iteration der Schleife Ihre "Prüf" -Variable.

Entweder die if unterbrechen, um die Schleife zu verlassen oder die Logik zu ändern.

Sie sehen wie ein Anfänger aus, also beziehen Sie sich auf this, um mehr über Bruchanweisungen zu lesen.

2

Trotz fehlender IO-Fehlerprüfung sollten Sie Ihren Messaging-Wert check basierend auf der abgeschlossenen Iteration festlegen, nicht auf jeder Iteration basierend. Diese

:

for(int x = 0; x <10; x++) 
    { 
     temp = vars[x]; 
     if(temp == v){ 
      check = "v is in the array"; 
     } 
     else{ 
      check = "v is not in the array"; 
     } 
    } 

    cout << check; 

wird die Schleife Iteration size mal ausführen, egal was, das Zurücksetzen check mit jeder Iteration und nur das Drucken der letzten Iterationsergebnisse. Was Sie wollen, so etwas wie diese:

int x = 0; 
    for(; x <size && vars[x] != v; ++x); 

    if (x == size) 
     std::cout << v << " is NOT in the array"; 
    else 
     std::cout << v << " is in the array"; 

Oder noch besser, verwenden Sie die Standard-Bibliothek und stoppt das Rad neu zu erfinden:

auto it = std::find(std::begin(vars), std::end(vars), v); 
    if (it == std::end(vars)) 
     std::cout << v << " is NOT in the array"; 
    else 
     std::cout << v << " is in the array"; 
0

Ihr Programm ist korrekt, außer das Wichtigste in der Schleife ist, wenn Die Bedingung ist erfolgreich, dh die Nummer V wird gefunden. Sie müssen break n eingeben, um die nächste Iteration nicht zu ändern. So schnell wie es gefunden wird, fahre nicht fort, über alle Elemente des Array-Breaks zu iterieren.

for(int x = 0; x <10; x++){ 
    if(vars[x] == v){ 
     check = "v is in the array"; 
     break;// You must add break to get out of the loop with `check = "v is in the array"`. 
    } 
    else{ 
      check = "v is not in the array"; 
     } 
    } 
+0

Vielen Dank für Ihre Hilfe. Ich habe wirklich vergessen zu brechen. Ich brauche eine Pause :) – arteezy

Verwandte Themen