2016-04-07 12 views
0

Bu sefer kullanıcının sıralamak istediği arama türünü soran bir program yapmak zorundayım (İkili veya ardışık), İkili Kullanıcı sıralamak için kullanıcı sormak zorundaysa sıralanana kadar sıralayın. İşte Sıralı bir dizi için kullanıcı sormaya devam etmek için döngü C++

ana var: Ben bazı "DO yaptık

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

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

dizi doldurmak nerede

İşte
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.}; 
} 

: İşte

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; 
} 

benim Doğrulama fonksiyonudur whiles "ve" ile "denedim ve bir çok yapı ama çözüm ile alamadım. Doğrulama döngüsünü bu şekilde nasıl doğrulamalıyım? Böylece Doğrulama işlevi sıralı bir dizi için sormaya devam eder. İspanyolca'da tüm değişkenleri veya herhangi bir şeyi tercüme etmediğim için üzgünüm, ancak bana yardımcı olabilseydiniz çok minnettar olurdum.

+0

C++ değilim, ancak dize girdisini sinemadan tamsayıya dönüştürmemelisiniz? –

+0

Kullanıcının diziyi girmek için sıralamasını beklemekten ziyade, kullanıcının herhangi bir sıradaki verileri kabul etmesi ve programın bir ikili arama istendiyse diziyi sıralaması daha az can sıkıcı olur. – Peter

+0

Evet! Bunu düşündüm ama bu benim öğretmen gereksinimim, geri bildiriminiz için teşekkür ederim. –

cevap

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

Lütfen bunun neden iyi bir çözüm olduğunu açıklayın. – djl

+0

Teşekkür ederim, Gerçekten işe yaradı, çünkü program, bool işlevi true'dan başka bir değer döndürene kadar diziyi başlatıyor olacak, sanırım. –

İlgili konular