/* ************************************************************** MATERIA : INFORMATICA EXAMEN : Especificación de Algoritmos - Noviembre 2018 NOMBRES : MATRICULA : CARRERA : COMISION : ************************************************************** TABLA DE CALIFICACION: -------------------------------------------------------------- /15 Leer vector /5 Mostrar vector /15 Calcular cantidad mayor al promedio /15 Calcular segundo minimo /15 Calcular vector menor a X /20 Calcular matriz /10 Mostrar matriz /05 Comentarios, semántica y presentación -------------------------------------------------------------- /100 Total ************************************************************** Realice un programa en C++ con las siguientes características: El programa debe leer de un archivo llamado "vector.txt" un vector de N números reales. Donde el valor N debe ser determinado durante la lectura del archivo. El archivo contiene una única fila con números separados por espacios. El primer número es el valor del entero N, los siguientes N números son los valores del vector. Ejemplo del contenido del archivo vector.txt: 5 7.25 -2.165 3.25 1.75 4.425 El número 5 no pertenece al vector de datos sino que únicamente indica la cantidad de números del vector. El vector de datos correspondiente al ejemplo del archivo anterior sería: 7.25 -2.165 3.25 1.75 4.425 El tamaño máximo del vector esta indicado por la constante entera MAX=50. La lectura del vector debe realizarse desde el programa principal llamando a la función leer_vector cuyo prototipo es: int leer_vector(double vector[MAX]); Dicha función carga en el vector llamado "vector" los números del archivo excepto el primer número y retorna un entero indicando la cantidad de números en el vector. El programa debe verificar que la cantidad de números no supere a MAX (si lo supera, deberá usar solo los primeros MAX números). Luego de leer el archivo, el programa debe mostrar el vector en pantalla siguiendo el formato de impresión del ejemplo de ejecución del programa llamando a la función void mostrar_vector(double vector[MAX], int N); A continuación, el programa debe calcular: por un lado cantidad de números mayores al promedio y por otro lado el segundo valor mas pequeño que contiene el vector llamando dentro del main a las funciones cuyos prototipos son: int calcular_cantidad_mayor_al_promedio(double vector[MAX], int N); double calcular_segundo_minimo(double vector[MAX], int N); por ejemplo, en el caso del vector 7.25 -2.165 3.25 1.75 4.425, el promedio es: 2.9 por lo que la cantidad de números mayores al promedio es 3. Por otro lado el segundo mínimo es 1.75. Luego de retornar de dichas funciones el programa debe imprimir por pantalla dichos valores según se muestra en el ejemplo que está mas abajo. La impresión por pantalla debe realizarse en el main y no dentro de las funciones. Posteriormente, dentro del main, el programa debe pedirle al usuario que ingrese un número real X. Una vez ingresado el valor de X el programa debe llamar a la función cuyo prototipo es: int calcular_vector_menor_a_x(double vector_menor[MAX], double vector_completo[MAX], int N, double X); la cual guarda en el vector "vector_menor" los números de "vector_completo" que son mayores a X en el mismo orden en que aparecen en el vector original y retorna la cantidad de números que guardo en "vector_menor". Luego en el main se debe imprimir por pantalla el vector resultante según se muestra en el ejemplo de más abajo. Luego el programa llama a la función cuyo prototipo es: void calcular_matriz(double vector[MAX], int N, double matriz[MAX][MAX]); la cual debe calcular los valores de la matriz (de dimensiones NxN) tal que el elemento de la fila 'k' y columna 'n' sea igual a la suma de los elementos del vector que se encuentran entre la posiciones 'k' y 'n' (incluyendo a dichas posiciones). Por ejemplo, si el vector es 7.25 -2.165 3.25 1.75 4.425, el elemento de la fila k=1 y columna n=3 de la matriz deberá temer la suma de -2.165 + 3.25 + 1.75 Finalmente el programa debe imprimir la matriz siguiendo el formato del ejemplo de ejecución del programa. Dicha impresión se debe hacer dentro de la función cuyo prototipo es: void mostrar_matriz(double matriz[MAX][MAX], int N); ------------------------------------------------------------------- Ejemplo de la ejecución del programa: ------------------------------------------------------------------- El vector original es: 7.25e+00 -2.17e+00 3.25e+00 1.75e+00 4.42e+00 La cantidad mayor al promedio es: 3 El segundo minimo es : 1.75e+00 Ingrese el valor de X: 3 El vector menor a X es: -2.17e+00 1.75e+00 La matriz es: 7.25 5.08 8.34 10.09 14.51 0.00 -2.17 1.08 2.83 7.26 0.00 0.00 3.25 5.00 9.43 0.00 0.00 0.00 1.75 6.17 0.00 0.00 0.00 0.00 4.42 ------------------------------------------------------------------- */ // Bibliotecas #include #include #include using namespace std; // Constantes Globales const int MAX = 50; // Prototipos de funciones int leer_vector(double vector[MAX]); void mostrar_vector(double vector[MAX], int N); int calcular_cantidad_mayor_al_promedio(double vector[MAX], int N); double calcular_segundo_minimo(double vector[MAX], int N); int calcular_vector_menor_a_x(double vector_menor[MAX], double vector_completo[MAX], int N, double X); void calcular_matriz(double vector[MAX], int N, double matriz[MAX][MAX]); void mostrar_matriz(double matriz[MAX][MAX], int N); // Programa Principal: No debe ser modificado!!! int main () { double vector[MAX], vector_menor[MAX], matriz[MAX][MAX]; int N, M, cantidad; double X, minimo2; N = leer_vector(vector); cout << "\n El vector original es: \n\n "; mostrar_vector(vector, N); cantidad = calcular_cantidad_mayor_al_promedio(vector, N); cout << "\n La cantidad mayor al promedio es: " << cantidad; minimo2 = calcular_segundo_minimo(vector, N); cout << "\n\n El segundo minimo es : " << minimo2 << "\n"; cout << "\n Ingrese el valor de X: "; cin >> X; M = calcular_vector_menor_a_x(vector_menor, vector, N, X); cout << "\n El vector menor a X es: \n\n "; mostrar_vector(vector_menor, M); calcular_matriz(vector, N, matriz); cout << "\n La matriz es: \n\n "; mostrar_matriz(matriz, N); cout << endl; return 0; } int leer_vector(double vector[MAX]) { // Escriba el codigo aqui } void mostrar_vector(double vector[MAX], int N) { // Escriba el codigo aqui } int calcular_cantidad_mayor_al_promedio(double vector[MAX], int N) { // Escriba el codigo aqui } double calcular_segundo_minimo(double vector[MAX], int N) { // Escriba el codigo aqui } int calcular_vector_menor_a_x(double vector_menor[MAX], double vector_completo[MAX], int N, double X) { // Escriba el codigo aqui } void calcular_matriz(double vector[MAX], int N, double matriz[MAX][MAX]) { // Escriba el codigo aqui } void mostrar_matriz(double matriz[MAX][MAX], int N) { // Escriba el codigo aqui }