Dev - C++ - Ayuda ejercicio vectores

 
Vista:
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda ejercicio vectores

Publicado por Federico (11 intervenciones) el 28/11/2017 00:37:43
Se dispone de un conjunto de reales positivos y se quiere construir otro vector mayores_que que contenga los k primeros valores que son mayores o iguales que otro valor de referencia. Los valores que se obtengan como resultado deben estar ordenados de menor a mayor. Por ejemplo, si el vector original es {5.2 2.5 7.3 4.2 3.1 4.9}
y el valor de referencia es 4.3, el vector mayores_que debe quedar así: {4.9 5.2 7.3} Construya un programa que vaya leyendo datos desde teclado e introdúzcalos en un vector. La entrada de datos termina con el -1. A continuación lea el real de referencia y el entero k Calcule el vector mayores_que e imprímalo en pantalla.
Realicelo con este algoritmo:

Recorrer las componentes del vector original
Si es mayor que la referencia, insertar dicho valor de forma ordenada en el vector "mayores_que"
El vector "mayores_que" siempre tendrá, como mucho, k componentes

Lo he intentado con haciendo este código pero creo que hay errores con utilizados_mayores_que.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#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 << endl;
 
 
   utilizados_vector = 0;
   cin >> dato;
 
   while (dato != TERMINADOR && utilizados_vector < TAMANIO){
      vector[utilizados_vector] = dato;
      utilizados_vector++;
      cin >> dato;
   }
   cout << "Introduzca el valor de referencia y k: " << endl;
   cin >> referencia;
   cin >> k;
 
   ////////////////////////////////////////////
 
   int utilizados_mayores_que=0;
   double a_insertar;
   double aux;
   bool maximo = true;
 
   while (utilizados_mayores_que <= k){
	   //Recorremos los valores del vector
	   for (int i =0; i < utilizados_vector; i++ ){
	   		//Si es mayor que la referencia
	   		if (vector [i] > referencia){
	   			//Insertamos dicho valor de forma ordenada en el otro vector
	   			a_insertar = vector [i];
 
	   			for (int j =0; j < utilizados_mayores_que; j++){
	   				if (mayores_que[j] > a_insertar){
	   					aux = a_insertar;
	   					a_insertar = mayores_que[j];
	   					mayores_que[j] = aux;
	   					maximo = false;
					}
	   			}
	   			if (maximo)
	   				mayores_que[utilizados_mayores_que] = a_insertar;
	   			utilizados_mayores_que++;
			}
	   }
 
	}
 
   for (int i= 1; i <utilizados_mayores_que ; i++)
		cout << mayores_que[i] << " , ";
 
 
}


Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder