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.
Gracias
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
0