Contar vocales

De Ejercicios

Contenido

Enunciado

Dado un vector de caracteres llamado cadena como el que se indica a continuación, que contiene una frase que termina cuando encuentra un punto (Nota: el tamaño del vector está determinado por el punto). Haz un algoritmo que obtenga en otro vector, denominado resultado, el número de vocales de cada tipo que hay en un vector. Por ejemplo:

cadena: El saber no ocupa lugar.
           a e i o u
resultado: 3 2 0 2 2

El vector resultado significa que en la cadena hay: 3 aes, 2 es, 0 ies, 2 oes, y 2 ues.

Es importante la eficiencia y claridad a la hora de resolver el algoritmo y fundamentalmente la utilización de las estructuras de control más adecuadas.

Soluciones

Diseño en pseudocódigo

ALGORITMO cuentaVocales
ENTRADAS:
   cadena: ARRAY(1..100) DE CARACTERES  (* contiene la frase para contar vocales *)
SALIDAS:
   res: ARRAY(1..5) DE ENTEROS    (* contiene el número de vocales que contiene el array cadena *)
VARIABLES:
   i, n: ENTEROS
INICIO
   (* Leer el array de con la frase *)
   i <-- 0
   REPETIR
     i=i+1;
     ESCRIBIR "Introduce una letra (. para finalizar): "
     LEER cadena(i)
   HASTA cadena(i)='.'
   n <-- i-1
 
   (* Inicializar array con los 5 contadores de las vocales *)
   PARA i=1 HASTA 5 HACER
      res(i) <-- 0
   FIN_PARA
 
   (* Contar las vocales que aparecen en la variable cadena *)
   PARA i=1 HASTA n HACER
       EN CASO DE QUE cadena(i) VALGA
          'a','A': res(1) <-- res(1)+1
          'e','E': res(2) <-- res(2)+1
          'i','I': res(3) <-- res(3)+1
          'o','O': res(4) <-- res(4)+1
          'u','U': res(5) <-- res(5)+1
       FIN_CASO
   FIN_PARA
 
   (* Mostrar resultados *)
   ESCRIBIR res(1), " aes"
   ESCRIBIR res(2), " es"
   ESCRIBIR res(3), " ies"
   ESCRIBIR res(4), " oes"
   ESCRIBIR res(5), " ues"
FIN

Programa en Matlab

%PROGRAMA CuentaVocales
%DESCRIPCIÓN: Dado un vector de caracteres, se obtiene en otro vector el número de vocales de cada tipo que hay en el primer vector. 
%ENTRADAS: vector de cadena de caracteres.
%SALIDAS: vector resultado.
%VARIABLES:
%   pos: ENTERO
%   texto, vocales, mensa: ARRAY (o CADENA) DE CARACTERES
%   res: ARRAY(5) DE ENTEROS
 
%Pedir el texto al usuario
texto = input('Introduzca un texto: ','s');
disp('El texto a contar es:');
 
%Contar cuantas vocales de cada tipo hay
res=zeros(1,5);
for pos=2:length(texto)
    switch texto(pos)
        case {'A','a'}
            res(1)=res(1)+1;
        case {'E','e'}
            res(2)=res(2)+1;
        case {'I','i'}
            res(3)=res(3)+1; 
        case {'O','o'}
            res(4)=res(4)+1;  
        case {'U','u'}
            res(5)=res(5)+1; 
    end
end
 
%Mostrar los resultados
vocales='AEIOU';
for pos=1:5,
    mensa=;
    disp( ['Hay ', num2str(res(pos)), ' de la vocal ', vocales(pos)] );
end
Tipos de soluciones
Navegación
Tipos de soluciones
Herramientas