Pascal/Turbo Pascal - asignar un valor a cada letra individual de una palabra

   
Vista:

asignar un valor a cada letra individual de una palabra

Publicado por christian (1 intervención) el 28/11/2015 02:49:03
Hola, mi problema es el siguiente:
quiero hacer un programa que al introducirle por ejemplo la palabra "perro" asigne el valor de la siguiente manera:
p=17 e=5 r=19 o=16 notece que se comienza con A=1 hasta Z=27
quedando:
perro
175191916
p-e-r-r-o
17-5-19-19-16
Luego que sume
p+e+r+r+o
17+5+19+19+16
siendo:
perro = 76
luego que se multiplique por un numero introducido cualquiera por ejemplo 1994
76*1994 = 151544
y por ultimo que este numero lo convierta a exadecimal
151544 to $ = 24ff8
entonces:
perro = 24ff8
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

asignar un valor a cada letra individual de una palabra

Publicado por Armando Fuenmayor patusnalgason@hotmail.com (22 intervenciones) el 01/12/2015 21:27:07
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
uses crt;
  const
 alfabeto: array[1..27] of Char = ( 'A', 'B', 'C', 'D', 'E',
 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N','', 'O', 'P',
 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
     max = 30; {this is used for declaring ARRAY}
 type
      hexadecimal = ARRAY[1..max] OF integer;
var
 
     decimal: longint;
    i: integer;
    hexa: hexadecimal;
 
    tecla   : char  ;
    operacion, nn  : longint   ;
    palabra : string[30] ;
 
 
 
(***********************************************)
(* Function convierte un caracter en mayuscula *)
(***********************************************)
function mayuscula(caracter : char ): char;
begin
    if ( char(caracter) =  '' ) then
     begin
       caracter :=  '' ;
     end;
  mayuscula := upcase(caracter);
end;
(*******************************************************)
(* Function retorna un valor dependiendo del caracter  *)
(*******************************************************)
function posicion(caracter : char ): integer;
var
 su, i: Integer;
begin
 su := 0;
 for i := 1 to 27 do
 begin
   if (alfabeto[i] = mayuscula(caracter)) then
   begin
     su := i;
   end ;
 end;
    posicion := su;
end;
 
 
function cantidad(S: string): longint ;
var
 I: Integer;
 suma : longint ;
begin
 suma  := 0;
 for I := 1 to Length(S) do
 begin
   suma :=  suma + posicion(S[I]);
 end;
   cantidad :=  suma ;
end;
 
 
    PROCEDURE convert(decimal: longint; VAR i: integer; VAR hexa: hexadecimal);
    {This procedure works the conversion}
    BEGIN
    i := 1;
    WHILE decimal <> 0 DO
    BEGIN
           hexa[i] := decimal MOD 16;
        decimal := decimal DIV 16;
           i := i + 1;
    END;
    END;
 
   PROCEDURE writetothescreen(i: integer; hexa: hexadecimal);
   VAR j: integer;
   BEGIN
   write( 'Convertido  ',' ', ' en hexadecimal es ');
   {This is how you make a hex number}
   FOR j := (i - 1) DOWNTO 1 DO BEGIN
   IF hexa[j] < 10 THEN
   write(output, hexa[j])
   ELSE BEGIN
   {Here, program checks for number larger than 10 to write a letter instead of number}
   CASE hexa[j] OF
   10: write(output, 'A');
   11: write(output, 'B');
   12: write(output, 'C');
   13: write(output, 'D');
   14: write(output, 'E');
   15: write(output, 'F');
   END; {End of Case}
   END; {End of ELSE}
   END; {End of FOR loop}
   END; {End of Procedure}
 
 
 
(************************)
(* Programa principal   *)
(************************)
begin
 clrscr;
 
   repeat
       clrscr;
 
      writeln;
      writeln;
 
      write('Ingrese una palabra: ');
       ReadLn(palabra);
 
        write(' ',palabra ,' = ',cantidad(palabra) );
        writeln;
        writeln;
 
        write('Ingrese un numero:  ');
        ReadLn(nn);
 
         operacion := cantidad(palabra) * nn;
        writeln;
        writeln;
        write(cantidad(palabra) , ' * ', nn ,' = ',  operacion );
        writeln;
        writeln;
        convert(operacion, i, hexa);
 
        write(operacion , ' '  );
        writetothescreen(i, hexa);
        writeln;
        writeln;
 
       write('Desea introducir otra palabra [S/N]');
       tecla := mayuscula( Readkey);
 until ( tecla <> 'S');
 
 
 
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

asignar un valor a cada letra individual de una palabra

Publicado por Armando José patusnalgason@hotmail.com (22 intervenciones) el 02/12/2015 15:54:49
1
2
3
4
5
6
7
8
9
10
11
12
13
(***********************************************)
(* Function convierte un caracter en mayuscula *)
(***********************************************)
le faltaba la Ñ
 
function mayuscula(caracter : char ): char;
begin
    if ( char(caracter) =  'ñ' ) then
     begin
       caracter :=  'Ñ' ;
     end;
  mayuscula := upcase(caracter);
end;
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

asignar un valor a cada letra individual de una palabra

Publicado por ramon (2072 intervenciones) el 03/12/2015 12:11:01
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
56
57
58
59
60
61
62
63
64
65
66
67
{Mira esto}
 
 program pruevas;
  uses
     crt;
   const
      hexa : Array[0..15] of char = '0123456789ABCDEF';
   type
     string30 = string[30];
     string20 = string[20];
 
   var
     texto : string30;
 
   function astrin(n : byte) : string20;
   begin
      astrin[0] := #2;
      astrin[1] := hexa[n shr  4];
      astrin[2] := hexa[n and 15];
   end;
 
   function wordhex(n : Word) : String20;
  begin
    wordhex := astrin(hi(n)) + astrin(lo(n));
  end;
 
  function longitehex(n : longInt) : string20;
  begin
    longitehex :=  wordhex(n shr 16) +  wordhex(n);
  end;
 
   procedure asignanumero(d : string30);
   var
      valor, t : integer;
      num : string30;
      numero : longint;
    begin
       for t := 1 to length(d) do
       begin
       num[t] := chr(ord(upcase(d[t])) - 64);
       num[0] := chr(t);
       if num[t] > #9 then
       num[t] := chr(ord(num[t]) + 1);
       end;
       valor := 0;
       texto := copy(num,1,length(num));
       for t := 1 to length(texto) do
       valor := valor + ord(texto[t]);
       writeln('   Entre Numero A Multiplicar ');
       write('     Numero : ');
       readln(numero);
       numero := numero * valor;
       writeln('   ',numero);
       num := longitehex(numero);
       write('   ');
       for t := 1 to length(num) do
       if num[t] = '0' then
     else
       write(num[t]);
       readln;
    end;
 
 
    begin
       clrscr;
       asignanumero('perro');
    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