Diferencia entre elementos consecutivos de un vector
De Ejercicios
Contenido |
Enunciado
Realizar un subalgoritmo que dado un vector A de n números reales, obtener la diferencia mas grande y la menor diferencia entre dos elementos consecutivos de ese vector.
Soluciones
Diseño en Pseudocódigo
PROCEDIMIENTO Diferencias (A, n, VAR mayor, VAR menor) ENTRADAS: A: ARRAY (0..1000) DE REALES ''(*Array donde buscar la menor y mayor diferencia de elementos*)'' n: ENTERO ''(*Número de elementos útiles del array*)'' SALIDAS: mayor: REAL ''(*Mayor diferencia entre elementos consecutivos*)'' menor: REAL ''(*Menor diferencia entre elementos consecutivos*)'' VARIABLES: dif: REAL pos: ENTERO INICIO ''(*Calcular la primera diferencia*)'' dif <-- A(1) - A(0) SI dif<0 ENTONCES dif <-- -dif FIN_SI mayor <-- dif menor <-- dif ''(*Calcular la diferencia del resto de los elementos*)'' PARA pos <--2 HASTA n-1 HACER dif <-- A(pos)-A(pos-1) SI dif<0 ENTONCES dif<-- -dif FIN_SI ''(*Comprobar si la diferencia es mayor*)'' SI dif>mayor ENTONCES mayor <-- dif FIN_SI ''(*Comprobar si la diferencia es mayor*)'' SI dif<menor ENTONCES menor <-- dif FIN_SI FIN_PARA FIN
Programa en C++
#include <stdio.h> #include <stdlib.h> void Diferencias ( float A[1001], int n, float &mayor, float &menor){ /*------ ENTRADAS: A: Array donde buscar la mayor y menor diferencia de elementos. n: Números de elementos útiles del array. SALIDAS: mayor: Mayor diferencia entre elementos consecutivos menor: Menor diferencia entre elementos consecutivos ------*/ //VARIABLES: float dif; int pos; //Calcular la primera diferencia dif = A[1]-A[0]; if (dif<0){ dif=-dif; } mayor=dif; menor=dif; //Calcular la diferencia del resto de los elementos for (pos=2; pos<=n-1; pos++){ dif=A[pos]-A[pos-1]; if (dif<0){ dif=-dif; } //Comprobar si la diferencia es mayor if (dif>mayor){ mayor=dif; } //Comprobar si la diferencia es menor if (dif<menor){ menor=dif; } } }
Programa en Matlab
Solución con programación básica
function [mayor,menor] = Diferencias( A ) %FUNCIÓN [mayor,menor] = Diferencias( A ) %DESCRIPCIÓN: Dado un vector A de n números reales, obtener la diferencia mas grande y % la menor diferencia entre dos elementos consecutivos de ese vector. %ENTRADAS: % A: ARRAY(n) DE REALES; El vector. %SALIDAS: % mayor: REAL; la mayor diferencia % menor: REAL; la menor diferencia %VARIABLES: % n, pos: ENTEROS; % dif: REAL n = length( A ); %Calcular la primera diferencia dif = A(2)-A(1); if dif<0 dif = -dif; end mayor = dif; menor = dif; %Calcular la diferencia del resto de los elementos for pos=2:n-1 dif = A(pos+1)-A(pos); if dif<0, dif = -dif; end %Comprobar si la diferencia es mayor. if dif>mayor mayor = dif; end %Comprobar si la diferencia es menor. if dif<menor menor = dif; end end
Solución con programación Matlab avanzada
Para realizar esta función se utilizan las siguientes funciones de Matlab:
- length: para calcular la longitud de un array.
- abs: para obtener los valores absolutos de todos los elementos de un array.
- max y min: para encontrar el máximo y el mínimo de array, respectivamente.
function [mayor,menor] = Diferencias( A ) %FUNCIÓN [mayor,menor] = Diferencias( A ) %DESCRIPCIÓN: Dado un vector A de n números reales, obtener la diferencia mas grande y % la menor diferencia entre dos elementos consecutivos de ese vector. %ENTRADAS: % A: ARRAY(n) DE REALES; El vector. %SALIDAS: % mayor: REAL; la mayor diferencia % menor: REAL; la menor diferencia %VARIABLES: % n: ENTERO % dif: ARRAY(n-1) DE REALES n = length( A ); dif = abs( A(1:n-1)-A(2:n) ); mayor = max(dif); menor = min(dif);