[ Foro de C++ ]

Introducir vectores de forma ordenada

06-Dec-2020 13:30
Invitado (Eliot)
0 Respuestas

Necesito leer datos de un vector y si son superiores a una referencia dada, meterlos en otro vector de forma ordenada de menor a mayor. Este vector es de dimension maxima dada, es decir acabaré de leer datos del vector primero cuando la dimension del segundo llegue al limite o cuando se acabe el primer vector.

Tengo esto, pero no está bien y no se seguir:

/*Ejercicio 3*/

#include <iostream>
using namespace std;

int main(){

  const int TERMINADOR=-1;
  double dato, referencia;
  const int TAMANIO=1e5;
  double vector[TAMANIO], mayores_que[TAMANIO];
  int utilizados_vector, k;

  cout << "k valores mayores que."
       << "\nIntroduzca reales con terminador "
       << TERMINADOR << "\n";
       
  utilizados_vector=0;
 
  cout << "\nIntroduzca un número real: ";
  cin >> dato;

  while ( (dato!=TERMINADOR)&&(utilizados_vector<TAMANIO)) {
 
     vector[utilizados_vector]=dato;
     utilizados_vector++;
     cout << "\nIntroduzca un número real (ó -1 para terminar): ";
     cin >> dato;
     
  }

cout << "\nIntroduzca el valor de referencia: ";
  cin >> referencia;
  cout << "\nIntroduzca la dimensión máxima del vector a mostrar: ";
  cin >> k;

  int cont=1;
  int i=1;
  double a_insertar, aux;

while ((i<utilizados_vector)&&(cont<=k)) {
 
  if (vector[i]>=referencia) {
 
  a_insertar=vector[i];
 
  if (cont!=1) {
 
  for (int j=1; j<=cont; j++) {

      if (mayores_que[j]>a_insertar) {
     
        aux=mayores_que[j];
        mayores_que[j]=a_insertar;
        mayores_que[j++]=aux;
       
        }

  }
 
  }
 
  else {
 
  mayores_que[cont]=a_insertar;
 
  }
     
      cont++;
     
     }
     
     i++;
     
  }

  for (int i=1; i<=cont; i++) {
 
     cout << mayores_que[i] << " ";
     
  }
 
  return 0;
     
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)