循环以不断询问用户排序的数组C ++

时间:2016-04-07 14:26:19

标签: c++ arrays sorting c++11

这次我必须创建一个程序来询问用户想要使用的搜索类型(二进制或顺序),如果Binary我必须要求用户键入一个已排序的数组,直到它被排序。 / p>

这里是主要的:

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

这是我的验证功能:

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

这是我填充数组的地方

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

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

我做了一些&#34; do-whiles&#34;并尝试用&#34;如果&#34;和很多结构但不能解决问题。如何正确循环,以便Validation函数不断询问排序数组。 我很抱歉没有用西班牙语翻译所有变量或任何东西,但如果你能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:0)

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