2016-04-07 12 views
0

Dieses Mal habe ich ein Programm machen, die die Art der Suche der Benutzer (Binary oder sequentiell) verwenden möchte, fragt, ob Binary Ich habe den Benutzer zu fragen, ein sortiert eingeben Array, bis es sortiert ist.Schleife zu halten Benutzer für ein sortiertes Array C fragen ++

Hier ist der Haupt:

int main(int argc, char** argv) { 

    int n, decide, inicio, fin, key; 

    cout << " ¿De que tamaño será tu Arreglo?: ";//What size your array will be? 
    cin >> n; 
    int arreglo[n]; // Create the array 

    cout << " ¿Qué tipo de Busqueda realizaremos hoy?\n\n";//What kind of search we will use? 
    cout << "\n 1. Busqueda Secuencial.\n 2. Busqueda Binaria.\n\n"; 
    cin >> decide; 

    cout << "\t\n- - Tu arreglo sera de " << n << " elementos. - -\n";//Your arry will be of "n" elements 

    switch (decide) { 
    case 1: 
     inicializaLista(n, arreglo); // Fill the array. 

     cout << "\n¿Que numero buscas?"; // Ask for the number we want to search. 
     cin >> key; 

     busquedaSecuencial(arreglo, n, key); 
     break; 

    case 2: 
     inicio = 0; 
     fin = n - 1; 

     cout << "\nIngrese valores en orden\n";//Type sorted values 
     inicializaLista(n, arreglo); // fill the array 

     validarLista(n, arreglo); //validate List 



     cout << "\n¿Que numero buscas?"; // Ask for the number we want to search. 
     cin >> key; 
     busquedaBinaria(arreglo, n, inicio, fin); 

     break; 
    } 

    return 0; 
} 

Hier Funktion meine Validierung:

bool validarLista(int n, int arreglo[]) { 

    cout << "Validando Lista ... "; 

    for (int i = 0; i < n - 1; i++) { 
    if (arreglo[i] > arreglo[i + 1]) { 
     return false; // It is proven that the array is not sorted. 
    } 
    } 
    return true; // If this part has been reached, the array must be sorted.}; 
} 

Hier ist, wo ich das Array

int inicializaLista(int n, int arreglo[]) { 
    cout << "\n"; 

    for (int i = 0; i < n; i++) { 
    cout << "Ingrese dato " << i + 1 << ": "; 
    cin >> arreglo[i]; 
    } 
}; 

ich getan habe einige „do- füllen while "und versucht mit" wenn "und vielen Strukturen, aber nicht mit der Lösung kommen. Wie führe ich das richtig durch, so fragt die Validierungsfunktion nach einem sortierten Array. Es tut mir leid übersetzen nicht alle Variablen oder etwas auf Spanisch, aber wenn Sie mir dabei helfen könnte, würde ich so dankbar sein.

+0

Ich bin nicht C++, aber sollten Sie nicht die Eingabe der Zeichenfolge von Cin in Ganzzahl konvertieren? –

+0

Anstatt die Benutzer erwarten, dass die Anordnung, um die Eingabe zu sortieren, wäre es weniger frustrierend für den Benutzer in einem beliebigen Reihenfolge Daten zu übernehmen und für das Programm des Array zu sortieren, wenn eine binäre Suche angefordert wurde. – Peter

+0

Ja! Ich dachte, aber das ist meine Lehrer-Anforderung, danke für dein Feedback. –

Antwort

0
do { 
    cout << "\nIngrese valores en orden\n";//Type sorted values 
    inicializaLista(n, arreglo); // fill the array 
} while (!validarLista(n, arreglo)); 
+3

Bitte erklären, warum dies eine gute Lösung ist. – djl

+0

Danke, es hat wirklich funktioniert, es funktioniert, weil das Programm die Array wird initialisiert, bis die Bool Funktion anderen Wert als true zurück, denke ich. –

Verwandte Themen