Pascal/Turbo Pascal - Multiplicar cadena

   
Vista:
Imágen de perfil de rainbow

Multiplicar cadena

Publicado por rainbow (5 intervenciones) el 25/02/2014 21:19:47
Hola,

Tengo que hacer un programa que solicita al usuario X números y éstes sean multiplicados por un número que también introduce el usuario.

Esto es lo que tengo hecho:

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
program multi;
 
var
cadena: string[10];
i: integer;
multiplicador: integer;
 
 
begin
 
writeln('Introduzca una cadena de maximo diez caracteres');
readln(cadena);
writeln('Introduzca un multiplicador');
readln(multiplicador);
for i := 1 to Length(cadena) do
 
 
writeln((cadena[i]),' x:',(multiplicador),' =',((multiplicador * cadena[i]));
readln();
 
 
 
 
 
end.
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

Multiplicar cadena

Publicado por ramon (2072 intervenciones) el 01/03/2014 11:55:17
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
{Mira este programa te realiza loa operación de multiplicar unas entradas de cadenas de 10 dígitos o caracteres espero esto te ayude}
 
program multi10dig;
 uses
   crt;
 type
    string10 = string[10];
 
 var
   suma : array[1..22] of integer;
   coloc, multi : array[1..10,1..22] of integer;
   multiplicando1, multiplicador2 : string10;
   p, t, x, resto, nume : integer;
   ct1, ct2, n1, m2 : integer;
 
  procedure entradatos;
  begin
     write('   Entre El Multiplicando : ');
     readln(multiplicando1);
     write('   Entre El Multiplicador : ');
     readln(multiplicador2);
     n1 := length(multiplicando1);
     m2 := length(multiplicador2);
  end;
 
   procedure presentamultiplicacion;
   begin
       clrscr;
       for ct1 := n1 downto 1 do
       begin
       gotoxy(30 + ct1,2);write(multiplicando1[ct1]);
       end;
       for ct2 := m2 downto 1 do
       begin
          gotoxy(((30 + n1) - m2) + ct2,3);write(multiplicador2[ct2]);
       end;
       gotoxy(((30 + n1) - (m2 + 1)),3);write('X');
       for ct2 := 1 to n1 do
       begin
          gotoxy(30 + ct2,4);write('Ä');
       end;
       gotoxy(30 + n1,5);
   end;
 
  procedure multiplicacion(d, s : string10);
  var
    resul : integer;
    mx, my : integer;
  begin
     x := 0;
     mx := 22;
     my := 1;
     for ct1 := m2 downto 1 do
     begin
       resto := 0;
       for ct2 := n1 downto 1 do
       begin
       resul := (ord(multiplicando1[ct2]) - 48) * (ord(multiplicador2[ct1]) - 48);
       nume := (resul + resto) mod 10;
       resto := (resul + resto) div 10;
       multi[my,mx - x] := nume;
       mx := mx - 1;
       end;
         if resto > 0 then
         multi[my,(mx - x) - 1] := resto;
         mx := 22;
         x := x + 1;
         my := my + 1;
     end;
  end;
 
 
 
  begin
       clrscr;
       entradatos;
       presentamultiplicacion;
       multiplicacion(multiplicando1,multiplicador2);
       x := 0;
       t := 0;
       for ct1 := 1 to m2 do
       begin
        for ct2 := (22 - x) downto ((23 - x) - n1) do
        begin
           gotoxy(((30 - x) + n1) - t,4 + ct1);write(multi[ct1,ct2]);
           t := t + 1;
        end;
          x := x + 1;
          t := 0;
      end;
        for p := 1 to n1 + m2 do
        begin
        gotoxy(((30 + n1) - t) - p,5 + ct1);write('Ä');
        end;
        gotoxy(((30 + n1) - t),6 + ct1);
       x := 0;
       t := 22;
       p := 0;
       resto := 0;
        for ct2 := (22 - x) downto ((23 - x) - (n1 + (m2 - 1))) do
        begin
          nume := 0;
          for ct1 := 1 to m2 do
          begin
           nume := nume + multi[ct1,ct2];
          end;
          nume := nume + resto;
          resto := 0;
          suma[t] := nume mod 10;
          resto := nume div 10;
          x := x + 1;
          t := t - 1;
          p := p + 1;
      end;
         if resto > 0 then
         begin
         suma[t] := resto;
         p := p + 1;
         end;
         t := 1;
         for x := 22 downto (23 - p) do
         begin
         gotoxy((30 + n1) - t,6 + ct1);write(suma[x]);
         t := t + 1;
         end;
         gotoxy(((30 + n1) - t),7 + ct1);
       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