Pascal/Turbo Pascal - Por que lazarus toma las vocales como consonantes?

 
Vista:
Imágen de perfil de Jean Carlos

Por que lazarus toma las vocales como consonantes?

Publicado por Jean Carlos (13 intervenciones) el 16/12/2016 01:51:23
Saludos para todo, ando haciendo un programa que me cuente el numero de vocales, consonantes, mayúsculas y minúsculas y por ahora esto llevo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program Project1;
 
Var S:String;
    I,Vocal,Cons:cardinal;
 
begin
  Write('Ingrese una cadena de texto: ');
  Readln(s);
    Vocal:=0;
    Cons:=0;
    For i:=1 to Length(s) do
    Begin
     If ((S[i]='A') or (S[i]='E') or (S[i]='i') or (S[i]='O') or (S[i]='U')) then
     Vocal:=Vocal+1
    else
     Cons:=Cons+1;
    end;
    Writeln('El numero de vocales es: ',Vocal);
    Writeln('El numero de consonantes es: ',cons);
  Readln;
end.

cuando lo ejecuto y escribo por ejemplo "Hola" me pone que el numero de vocales es 0 y las consonantes son 4 como que asumiera que las vocales son consonantes y no entiendo el porque, si hay algo que me falte agregar y quería saber si alguien podría explicarme como hacer para validar los datos de entrada de forma de que solo acepte variables de texto y no números, espero puedan ayudarme, saludos.
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

Por que lazarus toma las vocales como consonantes?

Publicado por David (224 intervenciones) el 16/12/2016 21:59:09
// If ((S[i]='A') or (S[i]='E') or (S[i]='i') or (S[i]='O') or (S[i]='U')) then
aquí está el error. al compara caracteres en mayúsculas, salvo la i que la pones en minúsculas, si escribes Hola no va a encontrar ninguna coincidencia y por tanto te dirá que el número de cononante es 4

Para eso deberíao, o bien pasar toda la cadena a mayúsculas o minúsculas y a partir de ahí comparar, o, hacer la comprobación incluyento en el grupo de vocales tanto mayúsculas como minúsculas o acentuadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jean Carlos

Por que lazarus toma las vocales como consonantes?

Publicado por Jean Carlos (13 intervenciones) el 16/12/2016 22:05:49
Si eso me di cuenta ayer y ya lo pude arreglar, lo que me surgió ahora como problema es cuando cuento el numero de mayusculas y consonantes y por lo menos escribo "Hola Como" el espacio que hay entre las palabras me lo cuenta como si fuera una mayuscula y una consonante y en vez de decir 2 mayusculas me dice 3 y las consonantes en vez de 4 me dice 5, asi llevo el codigo:

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
program project1;
Uses CRT;
 
Var I,Vocal,Cons,mayus,minus:cardinal;
    S:string;
 
begin
  Write('Ingrese una cadena de texto: ');
  Readln(s);
    Vocal:=0;
    Cons:=0;
    Mayus:=0;
    Minus:=0;
 
    //Vocales y consonantes
    For i:=1 to Length(s) do
    Begin
      If ((S[i]='a') or (S[i]='e') or (S[i]='i') or (S[i]='o') or (S[i]='u')) or
      ((S[i]='A') or (S[i]='E') or (S[i]='I') or (S[i]='O') or (S[i]='U')) then
      Vocal:=Vocal+1
      Else
      Cons:=Cons+1;
     end;
 
    //Mayusculas y minusculas
    Begin
     For i:=1 to Length(s) do
     If s[i]= upcase(s[i]) then
       mayus:=mayus+1
    else
      minus:=minus+1;
    end;
 
    TextColor(13);
    Writeln('El numero de vocales es: ',Vocal);
    TextColor(11);
    Writeln('El numero de consonantes es: ',cons);
    TextColor(10);
    Writeln('El numero de mayusculas es: ',mayus);
    TextColor(7);
    Writeln('El numero de minusculas es: ',minus);
  Readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar