Pascal/Turbo Pascal - Variables en la instruccion CASE

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 2 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Variables en la instruccion CASE

Publicado por tomas (4 intervenciones) el 22/08/2019 23:31:30
Buenas, quería saber si la instrucción CASE soporta el uso de variables y/o operaciones como posibles resultados

Suponer que previamente fueron definidas cierto numero de variables :
var1,var2,var3....

es correcto escribir

case var1 of

var2: hacer algo
var3: hacer otra cosa

o si también es correcto escribir

case var 1 of

expresión aritmética usando variables: hacer algo
.
.
.

por ejemplo, escribí este programa que dado un numero de 4 dígitos y otro de 1 dígito despliega el símbolo + por cuantas veces se repita el numero de un dígito en el de cuatro pero no compila

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program p3ej13 (input,output);
 
var
  4digitos,1digito,uno,diez,cien,mil:integer;
begin
  Writeln('Ingrese primero un numero de 4 digitos y luego 1 de un digito');
  readln(4digitos,1digito);
  mil:= 4digitos div 1000;
  cien:= (4digitos div 100) - (4digitos div 1000) * 10;
  diez:= (4digitos - ((4digitos div 100) * 100) div 10;
  uno:= (4digitos - (4digitos div 10) * 10 );
  Writeln(4digitos);
  case 1digito of
   mil: writeln('+');
   cien: writeln('+');
   diez: writeln('+');
   uno: writeln('+');
  else
   writeln(1digito,' no aparece en ', 4digitos);
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

Variables en la instruccion CASE

Publicado por ramon (2127 intervenciones) el 23/08/2019 11:14:38
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
{Esta seria la forma de tomar el case no las variables directas }
 
program p3ej13 (input,output);
uses
   crt;
var
  n,digitos4,digito1,uno,diez,cien,mil:integer;
begin
  clrscr;
  Writeln('Ingrese primero un numero de 4 digitos y luego 1 de un digito');
  readln(digitos4,digito1);
  mil:= digitos4 div 1000;
  cien:= (digitos4 div 100) - (digitos4 div 1000) * 10;
  diez:= (digitos4 - ((digitos4 div 100) * 100)) div 10;
  uno:= (digitos4 - (digitos4 div 10) * 10);
  writeln;
  Writeln(' Entrada : ',digitos4);
  writeln;
  writeln(' Compara : ',digito1);
  writeln('***** El Resultado Es *****');
  writeln;
  if digito1 = mil then
  n := 1;
  if digito1 = cien then
  n := 2;
  if digito1 = diez then
  n := 3;
  if digito1 = uno then
  n := 4;
  case n of
 1 : writeln(' Mil      : ',mil);
 2 : writeln(' Cien    : ',cien);
 3 : writeln(' Diez    : ',diez);
 4 : writeln(' Uno     : ',uno);
   end;
  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
Val: 7
Ha disminuido su posición en 2 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Variables en la instruccion CASE

Publicado por tomas (4 intervenciones) el 23/08/2019 15:05:03
Muchas gracias!!

Ademas quería saber , hay alguna manera mas eficiente de aislar cada dígito del numero de 4? Alguna que no implique operaciones aritméticas sino mas bien alguna instrucción propia de 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

Variables en la instruccion CASE

Publicado por ramon (2127 intervenciones) el 24/08/2019 12:24:52
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
{Esto te valdría }
 
program numero;
 uses
   crt;
  const
     num : integer = 2345;
 
 
   var
     min,  tex : string;
     i : integer;
 
   function integer_string(n : integer) : string;
   begin
      str(n,tex);
      integer_string := copy(tex,1,length(tex));
   end;
 
   function char_numero(d : char) : integer;
   begin
      char_numero := ord(d) - 49;
   end;
 
   procedure presenta_num(st : string);
   var
      t : integer;
    begin
       for t := 1 to length(st)  do
       writeln(' El Numero Es ',ord(st[t]) - 48);
    end;
 
    function suma(sc : string) : integer;
    var
      pl, r : integer;
      begin
        suma := 0;
        pl := 0;
        for r := 1 to length(sc) do
        pl := pl + ord(sc[r]) - 48;
        suma := pl;
      end;
 
 
   begin
      clrscr;
      min := integer_string(num);
      writeln(' La Cadena Es : ',min);
      presenta_num(min);
 
      writeln(' La Suma Es      : ',suma(min));
      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
Imágen de perfil de Hector Madriz
Val: 10
Ha aumentado su posición en 4 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Variables en la instruccion CASE

Publicado por Hector Madriz (4 intervenciones) el 24/08/2019 16:09:47
Buen día, no puedes iniciar el nombre de una variable con un numero.

Prueba esto:
1
2
3
4
5
6
7
8
9
10
11
Var
I:Integer;
Valor1,Valor2,Mas:String;
Begin
 Write('Valor 1: '); ReadLn(Valor1);
 Write('Valor 2: '); ReadLn(Valor2);
 Mas:='';
 For I:=1 To Length(Valor1) Do If Copy(Valor1,I,1)=Valor2 Then Mas:=Mas+ '+';
 If Mas='' Then WriteLn(Valor2,' no aparece en ',Valor1) Else WriteLn(Mas);
 ReadLn
End.

también puedes usar la función Pos(Valor2,Valor1) si el resultado es 0 no encontró coincidencia .

Saludos
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