Pascal/Turbo Pascal - Funcion que cuente Consonantes

 
Vista:
sin imagen de perfil

Funcion que cuente Consonantes

Publicado por Pato (11 intervenciones) el 17/02/2015 23:05:21
Buenos dias.
Nesesito un programa de Turbo Pascal que utilize una Function que cuente las consonantes de una oracion String [500], y posteriormente las imprima (en un procedimiento diferente).
Asumi que debo hacer un set de vocales, contar las letras con Length y sustraerle la cuenta de vocales. No se como escribir esto en pascal. Alguien me ayuda?
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

Funcion que cuente Consonantes

Publicado por MMan (5 intervenciones) el 18/02/2015 00:07:27
primero.... NO ME acuerdo la sintaxis :)
luego... unas ideas sueltas...

cuantas letras tiene el abecedario ??

tendrias que tener una variable (contador) por cada letra
mas facil.. seria un array numerico

letras: array of integer[0..50] ; <-- 51 letras ?? y no me acuerdo la sintaxis :)

longitud :integer;

longitud:= len (oracion);

y luego recorres la oracion extrayendo letra por letra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
integer x;
string letra;
string laoracion;
 
// conviertes todo a mayusculas, por que sino tendrias que contar las minusculas y aparte las mayusculas
laoracion:=UPCase(oracion);
 
for x:=0 to longitud
begin
   letra := substr( laoracion, x, 1);
   if ( letra = "A") then        letras[0]:=letras[0]+1;
   if ( letra = "B") then        letras[1]:=letras[1]+1;
   if ( letra = "C") then        letras[2]:=letras[2]+1;
    ...
    ...
     //   y asi sucesivamente.. no importa si son vocales o consonantes
end

---------------
una forma MAS FACIL seria usar las funciones ORD/CHR
ord("A") retorna 65 <-- el codigo ascii de A mayuscula
chr(65) retorna la letra A mayuscula

entonces mas o menos seria asi... (otra vez ideas sueltas)

------------
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
program cuenta;
var
  integer x;
  string letra;
  byte  codletra;
  byte indice;
 
  string oracion;
 
  string laoracion;
  cuentaletras: array of integer[0..50] ;  <-- 51 letras ?? y no me acuerdo la sintaxis :)
  longitud :integer;
begin
 
oracion:="hola esta es una oracion";
 
longitud:= len (oracion);
laoracion:=UPCase(oracion);
 
for x:=0 to longitud DO
begin
   letra := substr( laoracion, x, 1);
 
// revisamos que las letras de la oracion este en un rango, por si hay caracteres extraños como ´, #~€¬/.-Ñ
   if letra>='A' and letra <='Z'
   begin
     // y aca usar el ORD
     // si letra fuese una A
     codletra:= ord( letra );          //<<-- codletra seria 65
     indice := codletra - 65;          // <-- para alinearlo con el indice del array que va de 0..50 ?
                                                  // 65 es la letra A.. la primera del abcdario
 
    cuentaletras[indice]:= cuentaletras[indice]+1;
  end;   /// fin del if
end;     // fin del for
 
 
// y finalmente imprimes las cuentas
writeln("en la oracion hay :::");
for x:=0 to high(cuentaletras)  DO
begin
  /// filtras pa q no muestre los resultados de las vocales
   if (chr(x+65)="A") OR (chr(x+65)="E") OR (chr(x+65)="I") ....O, U.  then
           continue;
 
   write(cuentaletras[x]);
   write("   ");
   writeln(chr(x+65) );
end;
 
 
// pausa
write("presione enter pa salir...");
readln();
end.

---------
claro que tendrias que revisar la sintaxis, arreglarlo o adaptarlo
saludos


referencia pascal GNU
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

Funcion que cuente Consonantes

Publicado por ramon (2158 intervenciones) el 18/02/2015 00:10:39
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
{Esto serbia}
 
 program consonante;
   uses
      crt;
   var
     oracion : string;
     cont, conson : integer;
 
   function consonantes : integer;
   begin
       consonantes := 0;
       for cont := 1 to length(oracion) do
       if upcase(oracion[cont]) in['A','E','I','O','U',' '] then
      else
         conson := conson + 1;
      consonantes := conson;
  end;
 
  procedure escrive;
  begin
      writeln;
     for cont := 1 to length(oracion) do
       if upcase(oracion[cont]) in['A','E','I','O','U',' '] then
      else
      write('  ',oracion[cont]);
  end;
 
 
  begin
     clrscr;
     write('  Entre oracion : ');
     readln(oracion);
     writeln('  Las Consonantes Son = ',consonantes);
     writeln;
     escrive;
     readkey;
  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
sin imagen de perfil

Funcion que cuente Consonantes

Publicado por Pato (11 intervenciones) el 18/02/2015 08:07:10
Este no termina de funcionarme. Me cuenta los numeros como consonantes. Estoy pensando en hacer un [A..Z] y un [A, E, I, O, U] y que si esta en el primero, cuentaletras+1, si esta en el segundo, Cuentavocales +1, y al final, Cuentaletras - cuentavocales.
Como lo escribo en pascal?
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

Funcion que cuente Consonantes

Publicado por ramon (2158 intervenciones) el 18/02/2015 11:24:29
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
{Tratamos una linea de texto no con números mira esto }
 
program consonante;
   uses
      crt;
   var
     oracion : string;
     cont, conson : integer;
 
   function consonantes : integer;
   begin
       consonantes := 0;
       for cont := 1 to length(oracion) do
       if upcase(oracion[cont]) in['A','E','I','O','U',' ','0'..'9'] then
      else
         conson := conson + 1;
      consonantes := conson;
  end;
 
  procedure escrive;
  begin
      writeln;
     for cont := 1 to length(oracion) do
       if upcase(oracion[cont]) in['A','E','I','O','U',' '] then
      else
      write('  ',oracion[cont]);
  end;
 
 
  begin
     clrscr;
     write('  Entre oracion : ');
     readln(oracion);
     writeln('  Las Consonantes Son = ',consonantes);
     writeln;
     escrive;
     readkey;
  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