ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Escribir un programa en Pascal


Enviado por   •  14 de Marzo de 2018  •  Tareas  •  69.628 Palabras (279 Páginas)  •  356 Visitas

Página 1 de 279
  1. Escribir un programa en Pascal que sume dos números:
  2. a = 4        b = 3
  3. PROGRAM EJER01;
  4.         var a,b,c:INTEGER;
  5. BEGIN
  6. {Empezamos con lo básico, un programa que escribe la suma de 2 numeros
  7. en pantalla}
  8.         a:=4;
  9.         b:=3;
  10. {Se asigna un valor cualquiera a las variables "a" y "b"}
  11.         c:=a+b;
  12.                 WRITE (c); {Muestra en pantalla el valor de la suma}
  13. END.
  14. PROGRAM EJER1B;
  15.         USES CRT;
  16.         VAR a,b,c:INTEGER;
  17. BEGIN
  18.         ClrScr;
  19.         WRITELN ('Este programa suma dos numeros:');
  20.         WRITELN (' ');
  21.         WRITE ('Introduzca un numero: ');       READLN (a);
  22.         WRITE ('Introduzca otro numero: ' );    READLN (b);
  23.         WRITELN (' ');
  24.         c:=a+b;
  25.         WRITE ('EL RESULTADO ES: ');
  26.         WRITE (c);
  27. END.
  28. Escribir un programa en Pascal que sume, reste, multiplique y divida
  29. dos números:
  30. x = 10        y = 2
  31. PROGRAM EJER02;
  32.         USES CRT; {Nos va a permitir limpiar la pantalla junto con
  33.         ClrScr}
  34.         VAR x,y:INTEGER;
  35.         VAR suma,rest,mult,divi:INTEGER;
  36. BEGIN
  37.         x:=10;
  38.         y:=2;
  39.         suma:=x + y;
  40.         rest:=x - y;
  41.         mult:=x * y;
  42.         divi:=x div y;
  43. {Con estas 4 variables realizamos las cuatro operaciones aritméticas
  44. fundamentales:
  45.  suma, resta, multiplicación y división}
  46.         ClrScr; {Limpia la pantalla}
  47.         WRITE ('SUMA:');                WRITELN (suma);
  48.         WRITE ('RESTA:');                WRITELN (rest);
  49.         WRITE ('MULTIPLICACION:');        WRITELN (mult);
  50.         WRITE ('DIVISION:');                WRITE (divi);
  51. END.
  52. PROGRAM EJER2B;
  53.         USES CRT;
  54.         VAR x,y:REAL;
  55.         VAR suma,rest,mult:REAL;
  56.         VAR divi:REAL;
  57.         {suma, resta, multiplica y divide 2 numeros reales}
  58. BEGIN
  59.         WRITELN ('Este programa suma,resta,multiplica y divide:');
  60.         WRITELN ('Escriba dos numeros reales');
  61.         WRITELN (' ');
  62.         READ (x);
  63.         READ (y);
  64.         suma:=x + y;
  65.         rest:=x - y;
  66.         mult:=x * y;
  67.         divi:=x / y;
  68.         ClrScr;
  69.         WRITE ('SUMA:');                WRITELN (suma:3:0);
  70.         WRITE ('RESTA:');               WRITELN (rest:3:0);
  71.         WRITE ('MULTIPLICACION:');      WRITELN (mult:3:0);
  72.         WRITE ('DIVISION:');            WRITE (divi:5:2);
  73. END.
  74. Escribir un programa en Pascal que calcule el área de un
  75. rectángulo:
  76. lado1 = 3         lado2 = 4
  77. área del rectángulo=lado1 * lado2
  78. PROGRAM EJER03;
  79.         USES CRT;
  80.         VAR lado1,lado2:INTEGER;
  81.         VAR area:INTEGER;
  82. BEGIN
  83. {Este programa nos va a servir para calcular el area de un rectángulo}
  84.         lado1:=3;
  85.         lado2:=4;
  86.        {Damos valores para las variables}
  87.         area:=lado1*lado2; {Calculamos el area}
  88.         ClrScr;
  89.         WRITE ('AREA DEL RECTANGULO: ');  WRITE (area); {Lo mostramos
  90.                 en pantalla}
  91. END.
  92. PROGRAM EJER3B;
  93.         USES CRT;
  94.         VAR lado1,lado2:REAL;
  95.         VAR area:REAL;
  96. BEGIN
  97.         {Este programa calcula el area de un rectangulo}
  98.         ClrScr;
  99.         WRITELN ('Escriba los lados del rectangulo');
  100.         READ (lado1);
  101.         READ (lado2);
  102.         WRITELN (' ');
  103.         area:=lado1*lado2;
  104.         WRITE ('AREA DEL RECTANGULO:');  WRITE (area:5:2);
  105. END.
  106. Escribir un programa en Pascal que calcule el área de un
  107. triángulo:
  108. base = 7        altura = 4        área del triángulo = (base * altura)/2
  109. PROGRAM EJER04;
  110.         USES CRT;
  111.         VAR base,altura:REAL;
  112.         VAR area:REAL;
  113. BEGIN
  114.         base:=7;
  115.         altura:=4;
  116.         area:=(base * altura) / 2;
  117.         ClrScr;
  118.         WRITE ('AREA DEL TRIANGULO: ');  WRITE (area:5:2);
  119.        {:5:2 sirve para dar el formato de salida al numero, 5
  120.         posiciones y 2 decimales}
  121. END.
  122. PROGRAM EJER4B;
  123.         USES CRT;
  124.         VAR base,altura:REAL;
  125.         VAR area:REAL;
  126. BEGIN
  127.         {Este programa sirve para calcular el area de un triangulo}
  128.         ClrScr;
  129.         WRITELN ('PARA CALCULAR EL AREA DE UN TRIANGULO:');
  130.         WRITELN (' ');
  131.         WRITE ('ESCRIBE LA BASE: ');            READLN (base);
  132.         WRITE ('ESCRIBE LA ALTURA: ');          READLN (altura);
  133.         WRITELN (' ');
  134.         area:=(base * altura) / 2;
  135.         WRITE ('EL AREA DEL TRIANGULO ES: ');  WRITE (area:5:2);
  136. END.
  137. Escribir un programa que calcule la longitud y el área de una
  138. circunferencia:
  139. radio = 4        longitud de la circunferencia = 2 * PI * radio
  140.                 área de la circunferencia = PI * radio2
  141. PROGRAM EJER05;
  142.         USES CRT;
  143.         VAR radio:REAL;
  144.         VAR longitud,area:REAL;
  145. BEGIN
  146.         longitud:=2*3.1416*radio;
  147.         area:=3.1416*radio*radio;
  148.         ClrScr;
  149.         WRITE ('LONGITUD DE LA CIRCUNFERENCIA:'); WRITELN
  150.         (longitud:5:2);
  151.         WRITE ('AREA DE LA CIRCUNFERENCIA:');          WRITE (area:5:2);
  152. END.
  153. PROGRAM EJER5B;
  154.         USES CRT;
  155.         VAR radio:REAL;
  156.         VAR longitud,area:REAL;
  157. BEGIN
  158.         {Este programa calcula la longitud y el area de una
  159.         circunferencia}
  160.         ClrScr;
  161.         WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA');
  162.         WRITELN (' ');
  163.         WRITE ('Escriba el radio: ');         READLN (radio);
  164.         WRITELN (' ');
  165.         longitud:=2*3.1416*radio;
  166.         area:=3.1416*radio*radio;
  167.         WRITE ('LONGITUD DE LA CIRCUNFERENCIA: '); WRITELN
  168.         (longitud:5:2);
  169.         WRITE ('AREA DE LA CIRCUNFERENCIA: ');     WRITE (area:5:2);
  170. END.
  171. Escribir un programa en Pascal que calcule la velocidad de un proyectil
  172. que recorre 2 Km en 5 minutos. Expresar el resultado en metros/segundo.
  173. Velocidad = espacio/tiempo
  174. PROGRAM EJER06;
  175.         USES CRT;
  176.         VAR espacio,tiempo:REAL;
  177.         VAR velocidad:REAL;
  178. BEGIN
  179.         espacio:=2;
  180.         tiempo:=5;
  181.         velocidad:=(espacio*1000)/(tiempo*60);
  182.         ClrScr;
  183.         WRITE ('VELOCIDAD DEL PROYECTIL:');
  184.         WRITE (velocidad:5:2); WRITE ('m/s');
  185. END.
  186.                
  187. PROGRAM EJER6B;
  188.         USES CRT;
  189.         VAR espacio,tiempo,espacio2,tiempo2:REAL;
  190.         VAR velocidad,velocidad2:REAL;
  191. BEGIN
  192.         {Este programa calcula la velocidad de un cuerpo}
  193.         ClrScr;
  194.         WRITE ('Para calcular la velocidad debe escribirlo en
  195.         unidades ');
  196.         WRITE ('del sistema internacional');
  197.         WRITELN (' ');
  198.         WRITE ('Escriba el espacio recorrido: ');       READLN (espacio);
  199.         WRITE ('Escriba el tiempo transcurrido: ');     READLN (tiempo);
  200.         WRITELN (' ');
  201.         velocidad:=(espacio)/(tiempo);
  202.         WRITE ('VELOCIDAD DEL PROYECTIL: ');
  203.         WRITE (velocidad:5:2); WRITELN (' m/s');
  204.         WRITELN (' ');
  205.         WRITELN ('Si lo desea en Km/h introduzca los datos: ');
  206.         WRITELN (' ');
  207.         WRITE ('Escriba el espacio recorrido: ');     READLN (espacio2);
  208.         WRITE ('Escriba el tiempo transcurrido: ');   READLN (tiempo2);
  209.         WRITELN (' ');
  210.         velocidad2:=(espacio2)/(tiempo2);
  211.         WRITE (velocidad2:5:2); WRITE (' Km/h ');
  212. END.
  213. Escribir un programa en Pascal que calcule el volumen de una esfera:
  214. radio = 3        volumen de la esfera = 4/3 * PI * radio3
  215. PROGRAM EJER07;
  216.         USES CRT;
  217.         VAR radio:REAL;
  218.         VAR volumen:REAL;
  219. BEGIN
  220.         radio:=3;
  221.         volumen:=(4/3)*3.1416*(radio*radio*radio);
  222.         ClrScr;
  223.                                        
  224.         WRITE ('VOLUMEN DE LA ESFERA:');         WRITE(volumen);
  225. END.
  226. PROGRAM EJER7B;
  227.         USES CRT;
  228.         VAR radio:REAL;
  229.         VAR volumen:REAL;
  230. BEGIN
  231.         {Este programa calcula el volumen de una esfera}
  232.         ClrScr;
  233.         WRITELN ('PARA CALCULAR EL VOLUMEN DE LA ESFERA ESCRIBA EL
  234.         RADIO: ');
  235.         READLN (radio);
  236.         volumen:=(4/3)*3.1416*(radio*radio*radio);
  237.         WRITE ('VOLUMEN DE LA ESFERA: ');         WRITE(volumen:5:2);
  238. END.
  239. Escribir un programa en Pascal que evalúe la siguiente expresión:
  240. (a+7*c)/(b+2-a)+2*b                a = 3,b = 6,c = 4
  241. PROGRAM EJER08;
  242.         USES CRT;
  243.         VAR a,b,c:REAL;
  244.         VAR resultado:REAL;
  245. BEGIN
  246.         a:=3;
  247.         b:=6;
  248.         c:=4;
  249.         resultado:=(a+7*c)/(b+2-a)+2*b;
  250.         ClrScr;
  251.         WRITE ('RESULTADO:');   WRITE (resultado:5);
  252. END.        
  253. PROGRAM EJER8B;
  254.         USES CRT;
  255.         VAR a,b,c:REAL;
  256.         VAR resultado:REAL;
  257. BEGIN
  258.         {Este programa calcula una expresion algebraica}
  259.         ClrScr;
  260.         WRITELN ('Este programa sirve para calcular la siguiente
  261.         expresion:');
  262.         WRITELN ('(a+7*c)/(b+2-a)+2*b');
  263.         WRITELN (' ');
  264.         WRITE ('Introduzca a: ');         READLN (a);
  265.         WRITE ('Introduzca b: ');         READLN (b);
  266.         WRITE ('Introduzca c: ');         READLN (c);
  267.         resultado:=(a+7*c)/(b+2-a)+2*b;
  268.         WRITELN (' ');
  269.         WRITE ('RESULTADO: ');   WRITE (resultado:5:2);
  270. END.        
  271. Escribir un programa en  Pascal que evalúe la siguiente expresión:
  272. (a+5) * 3 / 2 * b - b        a = 3,b = 6
  273. PROGRAM EJER09;
  274.         USES CRT;
  275.         VAR a,b:REAL;
  276.         VAR resultado:REAL;
  277. BEGIN
  278.         a:=3;
  279.         b:=6;
  280.         resultado:=((a+5)*3) / (2*b-b);
  281.         ClrScr;
  282.         WRITE ('RESULTADO: ');   WRITE(resultado:5:2);
  283.        
  284. END.
  285. PROGRAM EJER9B;
  286.         USES CRT;
  287.         VAR a,b:REAL;
  288.         VAR resultado:REAL;
  289. BEGIN
  290.         {Este programa calcula el resultado de una expresion algebraica}
  291.         ClrScr;
  292.         WRITE ('PARA CALCULAR LA SIGUIENTE EXPRESION: ');
  293.         WRITELN ('((a+5)*3) / (2*b-b)');
  294.         WRITELN (' ');
  295.         WRITE ('Escriba a: ');  READ (a);
  296.         WRITE ('Escriba b: ');  READ (b);
  297.         WRITELN (' ');
  298.         resultado:=((a+5)*3) / (2*b-b);
  299.         WRITE ('RESULTADO: ');   WRITE(resultado:5:2);
  300.        
  301. END.
  302. Escribir un programa en Pascal que evalúe la siguiente expresión:
  303. (-b + raízcuadrada(b2-4*a*c)/(2*a)
  304. (es la solución positiva de una ecuación de 2º grado)
  305. PROGRAM EJER10;
  306.         USES CRT;
  307.         VAR a,b,c:REAL;
  308.         VAR resultado:REAL;
  309. BEGIN
  310.         a:=6;
  311.         b:=6;
  312.         c:=1;
  313.         resultado:=(-b+sqrt(sqr (b) - 4*a*c))/(2*a);
  314.         ClrScr;
  315.         WRITE ('RESULTADO:');   WRITE(resultado:5:2);
  316. END.
  317. PROGRAM EJER10B;
  318.         USES CRT;
  319.         VAR a,b,c:REAL;
  320.         VAR resultado:REAL;
  321. BEGIN
  322.         {Calcula la incognita positiva de una ecuacion de 2º grado}
  323.         ClrScr;
  324.         WRITE ('Para calcular la incognita positiva de una ecuacion');
  325.         WRITE (' de segundo grado escriba todas las variables:');
  326.         WRITELN (' ');
  327.         WRITELN (' ');
  328.         WRITE ('Escriba a: ');      READLN (a);
  329.         WRITE ('Escriba b; ');      READLN (b);
  330.         WRITE ('Escriba c; ');      READLN (c);
  331.         WRITELN (' ');
  332.         resultado:=(-b +sqrt(sqr (b) - 4*a*c))/(2*a);
  333.         WRITE ('RESULTADO: ');   WRITE(resultado:5:2);
  334. END.
  1. Escribir un programa en Pascal que calcule el área y el volumen
  2. de un cilindro:
  3. A = (2 * (PI * r2)) + ((2 * PI * r) * h)
  4. V = (PI * r2) * h
  5. PROGRAM EJER11;
  6.         USES CRT;
  7.         VAR radio,altura:REAL;
  8.         VAR area,volumen:REAL;
  9. BEGIN
  10.         radio:=3;
  11.         altura:=6;
  12.         area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *
  13.         radio) * altura);
  14.         volumen:= (3.1416 * radio * radio) * altura;
  15. {podriamos cambiar "radio*radio" por "sqr(radio)" para hacer el
  16. cuadrado del radio}
  17.         ClrScr;
  18.         WRITE ('AREA DEL CILINDRO:');         WRITE (area);         WRITELN (' m2');
  19.         WRITE ('VOLUMEN DEL CILINDRO:'); WRITE (volumen); WRITE (' m3');
  20. END.
  21. PROGRAM EJER11B;
  22.         USES CRT;
  23.         VAR radio,altura:REAL;
  24.         VAR area,volumen:REAL;
  25. BEGIN
  26.         {Calcula el area y el volumen de un cilindro}
  27.         ClrScr;
  28.         WRITELN ('CALCULA EL AREA Y VOLUMEN DE UN CILINDRO');
  29.         WRITELN (' ');
  30.         WRITE ('Escriba el radio: ');         READLN (radio);
  31.         WRITE ('Escriba la altura: ');        READLN (altura);
  32.         WRITELN (' ');
  33.         area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *
  34.         radio) * altura);
  35.         volumen:= (3.1416 * radio * radio) * altura;
  36.         WRITE ('AREA DEL CILINDRO: ');          WRITE (area:5:2);    WRITELN
  37.         (' m2');
  38.         WRITE ('VOLUMEN DEL CILINDRO: '); WRITE (volumen:5:2); WRITE
  39.         (' m3');
  40. END.
  41. PROGRAM EJER11;
  42.         USES CRT;
  43.         VAR r,h:REAL;
  44.         VAR a,v:REAL;
  45. BEGIN
  46.      {AREA Y VOLUMEN DE UN CILINDRO}
  47.      ClrScr;
  48.      WRITE('RADIO DEL CILINDRO: ');     READLN(r);
  49.      WRITE('ALTURA DEL CILINDRO: ');    READLN(h);
  50.      a:=(2*(3.1416*sqr(r))) + ((2*3.1416*r)*h);
  51.      v:=(3.1416*sqr(2))*h;
  52.      ClrScr;
  53.      WRITE('AREA DEL CILINDRO: ');        WRITELN(a:5:2);
  54.      WRITE('VOLUMEN DEL CILINDRO: ');         WRITELN(v:5:2);
  55. END.
  56. Escribir un programa en Pascal que calcule el área y el volumen
  57. de un hexaedro
  58. A = (l*l) * 6
  59. V = l3
  60. PROGRAM EJER12;
  61.         USES CRT;
  62.         VAR lado:REAL;
  63.         VAR area,volumen:REAL;
  64. BEGIN
  65.         lado:=4;
  66.         area:= (lado * lado) * 6;
  67.         volumen:= sqr(lado) * lado;
  68.         ClrScr;
  69.         WRITE ('AREA DEL HEXAEDRO:');    WRITE (area);    WRITELN
  70.         (' m2');
  71.         WRITE ('VOLUMEN DEL HEXAEDRO:'); WRITE (volumen); WRITE (' m3');
  72. END.
  73. PROGRAM EJER12B;
  74.         USES CRT;
  75.         VAR lado:REAL;
  76.         VAR area,volumen:REAL;
  77. BEGIN
  78.         ClrScr;
  79.         WRITE ('INTRODUCE EL LADO DEL HEXAEDRO: ');
  80.         READLN (lado);
  81.         WRITELN (' ');
  82.         area:= (lado * lado) * 6;
  83.         volumen:= sqr(lado) * lado;
  84.         WRITE ('AREA DEL HEXAEDRO: ');    WRITE (area:5:2);    WRITELN
  85.         (' m2');
  86.         WRITE ('VOLUMEN DEL HEXAEDRO: '); WRITE (volumen:5:2); WRITE
  87.         (' m3');
  88. END.
  89. Escribir un programa en Pascal que calcule el área y el volumen
  90. de un prisma
  91. A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3))
  92. V = l1 * l2 * l3
  93. PROGRAM EJER13;
  94.         USES CRT;
  95.         VAR l1,l2,l3:REAL;
  96.         VAR area,volumen:REAL;
  97. BEGIN
  98.         l1:=3;
  99.         l2:=6;
  100.         l3:=4;
  101.         area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));
  102.         volumen:= l1 * l2 * l3;
  103.         ClrScr;
  104.         WRITE ('AREA DEL PRISMA:');             WRITELN(area);
  105.         WRITE ('VOLUMEN DEL PRISMA:');          WRITE (volumen);
  106. END.
  107. PROGRAM EJER13B;
  108.         USES CRT;
  109.         VAR l1,l2,l3:REAL;
  110.         VAR area,volumen:REAL;
  111. BEGIN
  112.         {Calcula el area y volumen de un prisma}
  113.         ClrScr;
  114.         WRITELN ('PARA CALCULAR EL AREA Y EL VOLUMEN DEL PRISMA,
  115.         ESCRIBA: ');
  116.         WRITELN (' ');
  117.         WRITE ('Lado1: ');  READLN (l1);
  118.         WRITE ('Lado2: ');  READLN (l2);
  119.         WRITE ('Lado3: ');  READLN (l3);
  120.         WRITELN (' ');
  121.         area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));
  122.         volumen:= l1 * l2 * l3;
  123.         WRITE ('AREA DEL PRISMA: ');             WRITELN (area:5:2);
  124.         WRITE ('VOLUMEN DEL PRISMA: ');          WRITE (volumen:5:2);
  125. END.
  126. Escribir un programa en Pascal que calcule el área y el volumen
  127. de un tetraedro
  128. A = a2 * raízcuadrada(3)
  129. V = (a3/12) * raízcuadrada (2)
  130. PROGRAM EJER14;
  131.         USES CRT;
  132.         VAR arista:REAL;
  133.         VAR area, volumen:REAL;
  134. BEGIN
  135.         arista:=5;
  136.         area:= sqr(arista) * sqrt(3);
  137.         volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
  138.         WRITE ('AREA DEL TETRAEDRO: ');                   WRITELN (area);
  139.         WRITE ('VOLUMEN DEL TETRAEDRO: ');                WRITE (volumen);
  140. END.
  141. PROGRAM EJER14B;
  142.         USES CRT;
  143.         VAR arista:REAL;
  144.         VAR area, volumen:REAL;
  145. BEGIN
  146.         {Calcula el area y el volumen de un octaedro}
  147.         WRITELN ('SI DESEA CALCULAR EL AREA Y EL VOLUMEN DE UN
  148.         TETRAEDRO: ');
  149.         WRITELN (' ');
  150.         WRITE ('INTRODUZCA EL VALOR DE SU ARISTA: ');   READLN (arista);
  151.         WRITELN (' ');
  152.         area:= sqr(arista) * sqrt(3);
  153.         volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
  154.         WRITE ('AREA DEL TETRAEDRO: ');    WRITELN (area:5:2);
  155.         WRITE ('VOLUMEN DEL TETRAEDRO: '); WRITE (volumen:5:2);
  156. END.
  157. Escribir un programa en Pascal que calcule el área y el volumen de
  158. un octaedro
  159. A = 2 * a2 * raízcuadrada(3)
  160. V=(a3/3) * raízcuadrada(2)
  161. PROGRAM EJER15;
  162.         USES CRT;
  163.         VAR arista:REAL;
  164.         VAR area, volumen:REAL;
  165. BEGIN
  166.         arista:=4;
  167.         area:= 2 * sqr(arista) * sqrt(3);
  168.         volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);
  169.         WRITE ('AREA DEL OCTAEDRO: ');                   WRITELN(area);
  170.         WRITE ('VOLUMEN DEL OCTAEDRO: ');                WRITE(volumen);
  171. END.
  172. PROGRAM EJER15B;
  173.         USES CRT;
  174.         VAR arista:REAL;
  175.         VAR area, volumen:REAL;
  176. BEGIN
  177.         {Sirve para calcular el area y el volumen de un tetraedro}
  178.         WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN TETRAEDRO: ');
  179.         WRITE ('ESCRIBA EL VALOR DE LA ARISTA: ');   READLN (arista);
  180.         WRITELN (' ');
  181.         area:= 2 * sqr(arista) * sqrt(3);
  182.         volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);
  183.         WRITE ('AREA DEL OCTAEDRO: ');    WRITELN (area:5:2);
  184.         WRITE ('VOLUMEN DEL OCTAEDRO: '); WRITE (volumen:5:2);
  185. END.
  186. Escribir un programa en Pascal que calcule el área y el volumen
  187. de un cono
  188. A = (PI * r * l)+ (PI * r2)
  189. V = (PI * r2 * h)/3
  190. PROGRAM EJER16;
  191.         USES CRT;
  192.         VAR radio,lado,altura:REAL;
  193.         VAR area,volumen:REAL;
  194. BEGIN
  195.         radio:=6;
  196.         lado:=3;
  197.         altura:=8;
  198.         area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
  199.         volumen:= (3.1416 * sqr(radio) * altura) / 3;
  200.         WRITE ('AREA DEL CONO: ');               WRITELN (area);
  201.         WRITE ('VOLUMEN DEL CONO: ');               WRITE (volumen);
  202. END.
  203. PROGRAM EJER16B;
  204.         USES CRT;
  205.         VAR radio,lado,altura:REAL;
  206.         VAR area,volumen:REAL;
  207. BEGIN
  208.         {Se utiliza para calcular el area y volumen de un cono}
  209.         WRITELN ('Para calcular el area y el volumen de un cono: ');
  210.         WRITELN (' ');
  211.         WRITE ('Escriba el valor del radio: ');        READLN (radio);
  212.         WRITE ('Escriba el valor del lado: ');         READLN (lado);
  213.         WRITE ('Escriba el valor de la altura: ');     READLN (altura);
  214.         WRITELN (' ');
  215.         area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
  216.         volumen:= (3.1416 * sqr(radio) * altura) / 3;
  217.         WRITE ('AREA DEL CONO: ');               WRITELN (area:5:2);
  218.         WRITE ('VOLUMEN DEL CONO: ');               WRITE (volumen:5:2);
  219. END.
  220. Escribir un programa en Pascal que calcule el volumen de un elipsoide
  221. V = (4/3) * PI * a * b *c
  222. PROGRAM EJER17;
  223.         USES CRT;
  224.         VAR a,b,c:REAL;
  225.         VAR volumen:REAL;
  226. BEGIN
  227.         a:=3;
  228.         b:=5;
  229.         c:=4;
  230.         volumen:= (4/3) * 3.1416 * a * b * c;
  231.         WRITE ('VOLUMEN DEL ELIPSOIDE:');      WRITE (volumen);
  232. END.        
  233. PROGRAM EJER17B;
  234.         USES CRT;
  235.         VAR a,b,c:REAL;
  236.         VAR volumen:REAL;
  237. BEGIN
  238.         {Calcula el volumen de un elipsoide}
  239.         ClrScr;
  240.         WRITELN ('PARA CALCULAR EL VOLUMEN DE UN ELIPSOIDE ESCRIBA: ');
  241.         WRITELN (' ');
  242.         WRITE ('A: ');  READLN (a);
  243.         WRITE ('B: ');  READLN (b);
  244.         WRITE ('C: ');  READLN (c);
  245.         volumen:= (4/3) * 3.1416 * a * b * c;
  246.         WRITE ('VOLUMEN DEL ELIPSOIDE: ');      WRITE (volumen:5:2);
  247. END.        
  248. Escribir un programa en Pascal que calcule las raíces de una
  249. ecuación de 2º grado
  250. PROGRAM EJER18;
  251.         USES CRT;
  252.         VAR a,b,c:REAL;
  253.         VAR x1,x2:REAL;
  254. BEGIN
  255.         a:=6;
  256.         b:=6;
  257.         c:=1;
  258.         x1:= (-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;
  259.         x2:= (-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;
  260.         WRITE ('SOLUCION 1:');  WRITELN (x1);
  261.         WRITE ('SOLUCION 2:');  WRITE (x2);
  262. END.
  263. PROGRAM EJER18B;
  264.         USES CRT;
  265.         VAR a,b,c:REAL;
  266.         VAR resultado1,resultado2:REAL;
  267. BEGIN
  268.         {Calcula ecuaciones de segundo grado}
  269.         ClrScr;
  270.         WRITE ('ESTE PROGRAMA SIRVE PARA CALCULAR ECUACIONES ');
  271.         WRITELN ('DE SEGUNDO GRADO');
  272.         WRITELN (' ');
  273.         WRITELN ('Introduzca: a, b y c: ');
  274.         WRITELN (' ');
  275.         READLN (a);
  276.         READLN (b);
  277.         READLN (c);
  278.         resultado1:=(-b + sqrt(sqr(b) - 4*a*c)) / (2*a);
  279.         resultado2:=(-b - sqrt(sqr(b) - 4*a*c)) / (2*a);
  280.         WRITELN ('RESULTADO DE LA EXPRESION: ');
  281.         WRITE ('VALOR 1: ');   WRITELN (resultado1:5:2);
  282.         WRITE ('VALOR 2; ');   WRITE (resultado2:5:2);
  283. END.
  284. Escribir un programa en Pascal que calcule el área y el volumen
  285. de un cilindro:
  286. radio = 3
  287. altura = 4
  288. PROGRAM EJER19;
  289.         USES CRT;
  290.         VAR radio, altura:REAL;
  291.         VAR area, volumen:REAL;
  292. BEGIN
  293.         radio:=3;
  294.         altura:=4;
  295.         area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio)
  296.         * altura);
  297.         volumen:= (3.1416 * sqr(radio)) * altura;
  298.         ClrScr;
  299.         WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
  300.         WRITE ('EL VOLUMEN ES: ');           WRITE (volumen:6:2);
  301. END.
  302. PROGRAM EJER19B;
  303.         USES CRT;
  304.         VAR radio, altura:REAL;
  305.         VAR area, volumen:REAL;
  306. BEGIN
  307.         {Con este programa podremos calcular el area y el volumen
  308.         de un cilindro}
  309.         ClrScr;
  310.         WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN CILINDRO: ');
  311.         WRITELN (' ');
  312.         WRITE ('ESCRIBA EL RADIO- ');     READLN (radio);
  313.         WRITE ('ESCRIBA LA ALTURA- ');    READLN (altura);
  314.         WRITELN (' ');
  315.         area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio)
  316.         * altura);
  317.         volumen:= (3.1416 * sqr(radio)) * altura;
  318.         WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
  319.         WRITE ('EL VOLUMEN ES: ');           WRITE (volumen:6:2);
  320. END.
  321. Escribir un programa en Pascal que calcule la hipotenusa de un triángulo
  322. rectángulo
  323. cateto 1 = 5
  324. cateto 2 = 5
  325. PROGRAM EJER20;
  326.         USES CRT;
  327.         VAR cateto1,cateto2:REAL;
  328.         VAR hipotenusa:REAL;
  329. BEGIN
  330.         cateto1:=5;
  331.         cateto2:=5;
  332.         hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
  333.         ClrScr;
  334.         WRITE ('HIPOTENUSA DEL TRIANGULO: ');
  335.         WRITE (hipotenusa:5:2); WRITE (' cm');
  336. END.
  337. PROGRAM EJER20B;
  338.         USES CRT;
  339.         VAR cateto1,cateto2:REAL;
  340.         VAR hipotenusa:REAL;
  341. BEGIN
  342.         {Con este programa podremos calcular la hipotenusa de un
  343.         triangulo}
  344.         ClrScr;
  345.         WRITE ('PARA CALCULAR LA HIPOTENUSA DEL TRIANGULO ');
  346.         WRITELN ('ESCRIBA LOS CATETOS: ');
  347.         WRITELN (' ');
  348.         WRITE ('Cateto1: ');    READLN (cateto1);
  349.         WRITE ('Cateto2: ');    READLN (cateto2);
  350.         WRITELN (' ');
  351.         hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
  352.         WRITE ('HIPOTENUSA DEL TRIANGULO: ');
  353.         WRITE (hipotenusa:5:2);
  354. END.
  355. PROGRAM EJER20;
  356.         USES CRT;
  357.         VAR c1,c2,h:REAL;
  358. BEGIN
  359.      ClrScr;
  360.      WRITE('Introduzca cateto_1: ');    READLN (c1);
  361.      WRITE('Introduzca cateto_2: ');    READLN (c2);
  362.      h:=sqrt(sqr(c1)+sqr(c2));
  363.      WRITE('Cateto_1 ------> ');        WRITELN (c1:5:2);
  364.      WRITE('Cateto_2 ------> ');        WRITELN (c2:5:2);
  365.      WRITE('Hipotenusa ----> ');        WRITELN (h:5:2);
  366. END.

  1. Escribir un programa en Pascal que calcula el equivalente en grados
  2. Fahrenheit o Celsius de las siguientes temperaturas.
  3. Temperatura 1 = 32º Fahrenheit
  4. Temperatura 2 = 10 º Celsius
  5. {Regla de 3:  Celsius / 5 = (Fahrenheit – 32) / 9}
  6. PROGRAM EJER21;
  7.         USES CRT;
  8.         VAR T1,T2:REAL;
  9.         VAR T1C,T2F:REAL;
  10. BEGIN
  11.         T1:=32;
  12.         T2:=10;
  13.         T1C:=T1 - 32;
  14.         T2F:=T2 + 32;
  15.         ClrScr;
  16.         WRITE ('TEMPERATURA EQUIVALENTE: ');
  17.         WRITE (T1:3:0);  WRITE ('º Fahrenheit - ');
  18.         WRITE (T1C:3:0); WRITELN ('º Celsius');
  19.         WRITE ('TEMPERATURA EQUIVALENTE: ');
  20.         WRITE (T2:3:0);  WRITE ('º Celsius - ');
  21.         WRITE (T2F:3:0); WRITE ('º Fahrenheit');
  22. END.
  23. PROGRAM EJER21B;
  24.         USES CRT;
  25.         VAR Fahrenheit, Celsius:REAL;
  26.         VAR T1C,T2F:REAL;
  27.         VAR respuesta:CHAR;
  28. BEGIN
  29.         ClrScr;
  30.         REPEAT
  31.         BEGIN
  32.         WRITE ('¨DESEA PASARLO A FAHRENHEIT O CELSIUS? F/C: ');
  33.         READLN (respuesta);    WRITELN ('');
  34.         END;
  35.         UNTIL (respuesta='C') OR (respuesta='F') OR
  36.               (respuesta='c') OR (respuesta='f');
  37.         IF UPCASE(respuesta)='F' THEN
  38.         BEGIN
  39.         WRITELN ('Introduzca los grados para pasar a Fahrenheit: ');
  40.         WRITE ('Celsius: ');     READLN (Celsius);
  41.         Fahrenheit:= ((9 * Celsius) / 5) + 32;
  42.         WRITE (Fahrenheit:5:2,' grados Fahrenheit.');
  43.         WRITELN (' ');
  44.         END
  45.         ELSE IF UPCASE (respuesta)='C' THEN
  46.         BEGIN
  47.         WRITELN ('Introduzca los grados para pasar a Celsius: ');
  48.         WRITE ('Fahrenheit: ');  READLN (Fahrenheit);
  49.         Celsius:= ((Fahrenheit - 32) / 9) * 5;
  50.         WRITE (Celsius:5:2,' grados Celsius.');
  51.         END;
  52. END.
  53. PROGRAM EJER21;
  54.         USES CRT;
  55.         VAR t_C,t_F:REAL;
  56. BEGIN
  57.      ClrScr;
  58.      WRITE('Introduzca temperatura: (ºCelsius): ');
  59.      READLN(t_C);
  60.      t_F:=((t_C*9)/5)+32;
  61.      ClrScr;
  62.      WRITE(t_C:5:2);    WRITE(' ºCelsius equivalen a ');
  63.      WRITE(t_F:5:2);    WRITE(' ºFahrenheit');
  64. END.
  65. Escribir un programa en Pascal que calcule el número de
  66. horas, minutos y segundos que hay en 3700 segundos.
  67. PROGRAM EJER22;
  68.         USES CRT;
  69.         VAR horas, minutos, segundos:INTEGER;
  70. BEGIN
  71.         horas:= 3700 div 3600;
  72.         minutos:= (3700 mod 3600) div 60;
  73.         segundos:= (3700 mod 3600) - (minutos * 60);
  74.         ClrScr;
  75.         WRITELN ('EN 3700 SEGUNDOS HAY: ');
  76.         WRITE (horas,' hora',' y ',minutos,' minutos ', segundos,
  77.         ' segundos');
  78. END.
  79. PROGRAM EJER22B;
  80.         USES CRT;
  81.         VAR horas, minutos, segundos:INTEGER;
  82.         VAR cantidad:INTEGER;
  83. BEGIN
  84.         ClrScr;
  85.         WRITE ('Escriba los segundos para transformarlo a horas,');
  86.         WRITELN (' minutos y segundos');
  87.         READLN (cantidad); {Es el numero de segundos que se introducen}
  88.         WRITELN ('');
  89.         horas:= cantidad div 3600;
  90.         minutos:= (cantidad mod 3600) div 60;
  91.         segundos:= (cantidad mod 3600) - (minutos * 60);
  92.         {Los segundos son: las horas - los minutos pasados a segundos}
  93.         WRITELN ('EN ' ,cantidad, ' SEGUNDOS HAY: ');
  94.         WRITE (horas,' horas ',minutos,' minutos ',segundos,'
  95.         segundos');
  96. END.
  97. PROGRAM EJER22;
  98.         USES CRT;
  99.         VAR h,m,s1,s2:INTEGER;
  100. BEGIN
  101.      ClrScr;
  102.      WRITE('Introduzca segundos: ');    READLN(s1);
  103.      h:=s1 div 3600;
  104.      s2:=s1 mod 3600;
  105.      m:=s2 div 60;
  106.      s2:=s2 mod 60;
  107.      ClrScr;
  108.      WRITE(s1); WRITE(' segundos son -----> ');
  109.      WRITE(h);  WRITE(' horas ');
  110.      WRITE(m);  WRITE(' minutos ');
  111.      WRITE(s2); WRITE( 'segundos ');
  112. END.
  113. Escribir un programa en Pascal que calcule el capital producido
  114. por un capital de 1.000.000 de pesetas, al cabo de un año depositado a
  115. un interés del 2%.
  116. PROGRAM EJER23;
  117.         USES CRT;7
  118.         VAR capital,tiempo,interes:REAL;
  119.         VAR capitalproducido:REAL;
  120. BEGIN
  121.         capital:=1000000;
  122.         tiempo:=1;
  123.         interes:=2;
  124.         capitalproducido:= capital * 0.02;
  125.         ClrScr;
  126.         WRITE ('En un año se producira un capital de ');
  127.         WRITE (capitalproducido:5:2);     WRITE (' pesetas');
  128. END.
  129. PROGRAM EJER23B;
  130.         USES CRT;
  131.         VAR capital,tiempo,interes:REAL;
  132.         VAR capitalproducido:REAL;
  133. BEGIN
  134.         ClrScr;
  135.         WRITELN ('PARA CALCULAR EL CAPITAL PRODUCIDO INTRODUZCA ');
  136.         WRITELN ('');
  137.         WRITE ('Capital: ');    READLN (capital);
  138.         WRITE ('Tiempo: ');   READLN (tiempo);
  139.         WRITE ('Interes:');     READLN (interes);
  140.         WRITELN ('');
  141.         capitalproducido:= (capital * (interes/100) * tiempo);
  142.        
  143.         WRITE ('En estos años se producira un capital de ');
  144.         WRITE (capitalproducido:5:2);     WRITE (' pesetas.');
  145. END.
  146. PROGRAM EJER23;
  147.        USES CRT;
  148.        VAR capital,interes,intereses:REAL;
  149. BEGIN
  150.      ClrScr;
  151.      WRITE('Capital: ');        READLN(capital);
  152.      WRITE('Intefes: ');        READLN(interes);
  153.      intereses:=capital*(interes/100);
  154.      ClrScr;
  155.      WRITE('Capital: ');        WRITELN(capital:5:2);
  156.      WRITE('Interes: ');        WRITELN(interes:5:2);
  157.      WRITE('Intereses: ');      WRITELN(intereses:5:2);
  158. END.
  159. Escribir un programa en Pascal que calcula la siguiente
  160. expresión trigonométrica para un valor angular de 90º
  161. (sen x * cos x)/(tan x)
  162. PROGRAM EJER24B;
  163.         USES CRT;
  164.         VAR resultado, resultado2, x:REAL;
  165. BEGIN
  166.         WRITE ('PARA CALCULAR LA EXPRESION: (sin(x) * cos(x)) /
  167.         tan(x)');
  168.         WRITELN (' INTRODUZCA EL VALOR DE X EN RADIANES: ');
  169.         READLN (x);
  170.         WRITELN ('');
  171.         resultado:=(sin(x) * cos(x)) / (sin(x) / cos(x));
  172. bienvenido
  173.         WRITE ('El resultado de la expresion (sinx * cosx /tgx) es
  174.         igual a: ');
  175.         WRITE (resultado:5:2);
  176. END.
  177. PROGRAM EJER24;
  178.         USES CRT;
  179.         VAR angulo:REAL;
  180.         VAR val_exp:REAL;
  181. BEGIN
  182.      ClrScr;
  183.      WRITE('introduzca el valor del angulo (grados): ');
  184.      READLN (angulo);
  185.      angulo:=angulo*(6.28/360);
  186.      WRITE('Valor de la expresion: ');
  187.      WRITE( (sin(angulo)*cos(angulo) )/( (sin(angulo)/cos(angulo)
  188.         ) ):5:2);
  189. END.
  190. Escribir un programa en Pascal que calcule el equivalente en
  191. pies de una longitud de 10 metros.
  192. 1 metro -------------        39.27 pulgadas
  193. 12 pulgadas --------        1 pie
  194. PROGRAM EJER25;
  195.         USES CRT;
  196.         VAR metros,pulgadas,pies:REAL;
  197. BEGIN
  198.         metros:=10;
  199.         pulgadas:=metros * 39.27;
  200.         pies:=((1 * metros) * pulgadas) / (12 * metros);
  201.         ClrScr;
  202.         WRITE ('El equivalente en pies a una distancia de 10m es
  203.         de: ');
  204.         WRITE (pies:3:2); WRITE (' pies');
  205. END.
  206. PROGRAM EJER25B;
  207.         USES CRT;
  208.         VAR metros,pies:REAL;
  209. BEGIN
  210.         {Para calcular la equivalencia entre pies y metros}
  211.         ClrScr;
  212.         WRITELN ('INTRODUZCA LOS METROS PARA PASARLOS A PIES: ');
  213.         WRITELN (' ');
  214.         WRITE ('Metros: ');     READLN (metros);
  215.         pies:= metros / (12/39.27);
  216.         { 1 pie = 0.3048 metros}
  217.         { 1 pulgada = 25.4 mm}
  218.         WRITE ('El equivalente en pies es de: ');
  219.         WRITE (pies:3:2); WRITE (' pies');
  220. END.
  221. PROGRAM EJER25;
  222.         USES CRT;
  223.         VAR longitud:REAL;
  224. BEGIN
  225.      ClrScr;
  226.      WRITE('Longitud (metros): ');      READLN(longitud);
  227.      WRITE((longitud*39.27)/12:5:2);    WRITE( 'pies');
  228. END.
  229. Escribir un programa en Pascal que calcule el área de un
  230. rectángulo a partir de sus coordenadas:
  231. x1 = 10        x2 = 20
  232. y1 = 10        y2 = 20
  233. PROGRAM EJER26;
  234.         USES CRT;
  235.         VAR lado1,lado2:REAL;
  236.         VAR area:REAL;
  237. BEGIN
  238.         lado1:=10;
  239.         lado2:=10;
  240.         area:= lado1 * lado2;
  241.         ClrScr;
  242.         WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);
  243. END.
  244. PROGRAM EJER26B;
  245.         USES CRT;
  246.         VAR x1,x2,y1,y2:REAL;
  247.         VAR area:REAL;
  248. BEGIN
  249.         {Sirve para calcular el area de un rectangulo a partir de
  250.          coordenadas}
  251.         WRITELN ('Para calcular el area del rectangulo ');
  252.         WRITELN ('introduzca el valor de las coordenadas');
  253.         WRITELN (' ');
  254.         WRITE ('x1: ');       READLN (x1);
  255.         WRITE ('y1: ');       READLN (y1);
  256.         WRITE ('x2: ');       READLN (x2);
  257.         WRITE ('y2: ');       READLN (y2);
  258.         WRITELN (' ');
  259.         area:= (x2 - x1) * (y2 - y1);
  260.         {Se restan las coordenadas de X e Y para sacar los lados y
  261.          luego se multiplican}
  262.         WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);
  263. END.
  264. PROGRAM EJER26;
  265.         USES CRT;
  266.         VAR x1,y1,x2,y2:REAL;
  267. BEGIN
  268.      ClrScr;
  269.      WRITE('Introduaca coordenada x1: ');       READLN(x1);
  270.      WRITE('Introduzca coordenada y1: ');       READLN(y1);
  271.      WRITE('Introduzca coordenada x2: ');       READLN(x2);
  272.      WRITE('Introduzca coordenada y2: ');       READLN(y2);
  273.      WRITE('Area del resctangulo: '); WRITE((x2-x1)*(y2-y1):5:2);
  274. END.
  275. Un coche se mueve, partiendo del reposo, con una
  276. aceleración constante de 8 m/s2.
  277. Escribir un programa en Pascal que calcule:
  278. a) La velocidad instantánea al cabo de5 segundos.
  279. b) La velocidad media durante los primeros 5 segundos del recorrido.
  280. velocidad instantánea = velocidad inicial + aceleración
  281. * tiempo velocidad media = (velocidad inicial + velocidad final)/2
  282. PROGRAM EJER27;
  283.         USES CRT;
  284.         VAR velocidad0,aceleracion,tiempo:REAL;
  285.         VAR velocidad5,velocmedia5:REAL;
  286. BEGIN
  287.         velocidad0:=0;
  288.         aceleracion:=8;
  289.         tiempo:=5;
  290.         velocidad5:=velocidad0 + (aceleracion * tiempo);
  291.         velocmedia5:= (velocidad0 + velocidad5) / 2;
  292.         ClrScr;
  293.         WRITE ('LA VELOCIDAD AL CABO DE 5 s ES DE: '); WRITE
  294.         (velocidad5:2:0);
  295.         WRITELN (' m/s');
  296. END.
  297. PROGRAM EJER27B;
  298.         USES CRT;
  299.         VAR velocidad0,aceleracion,tiempo,velocidadfinal:REAL;
  300.         VAR vinstantanea,vmedia:REAL;
  301. BEGIN
  302.         ClrScr;
  303.         WRITE ('ESCRIBA EL VALOR DE LA VELOCIDAD INICIAL, LA
  304.         ACELERACION');
  305.         WRITE (' Y EL TIEMPO, EN UNIDADES DEL SISTEMA
  306.         INTERNACIONAL,');
  307.         WRITE (' PARA CALCULAR LA VELOCIDAD INSTANTANEA');
  308.         WRITELN (' '); WRITELN (' ');
  309.         WRITE ('Velocidad inicial: ');         READLN (velocidad0);
  310.         WRITE ('Aceleracion: ');        READLN (aceleracion);
  311.         WRITE ('Tiempo: ');                      READLN (tiempo);
  312.         WRITELN ('');
  313.         vinstantanea:=velocidad0 + (aceleracion * tiempo);
  314.         IF vinstantanea > 0 THEN
  315.            WRITE ('LA VELOCIDAD INSTANTANEA ES DE: ',
  316.         vinstantanea:5:2,' m/s')
  317.         ELSE
  318.            WRITE ('EL COCHE ESTA PARADO.');
  319.         WRITELN ('');
  320.         IF vinstantanea < 0 THEN
  321.         WRITE ('NO SE PUEDE HALLAR AL ESTAR PARADO');
  322.         IF vinstantanea > 0 THEN
  323.         WRITE ('Si desea saber la velocidad media introduzca la
  324. velocidad final: ');
  325.         READLN (velocidadfinal);
  326.         WRITE ('');
  327.         WRITELN ('');
  328.         vmedia:= (velocidad0 + velocidadfinal) / 2;
  329.         WRITE ('LA VELOCIDAD MEDIA ES DE: ',vmedia:5:2);
  330.         WRITELN (' m/s');
  331. END.
  332. PROGRAM EJE27;
  333.         USES CRT;
  334.         VAR v,a,t:REAL;
  335. BEGIN
  336.      ClrScr;
  337.      WRITE('Velocidad inicial (m/s) -> '); READLN(v);
  338.      WRITE('Aceleracion (m/s2) ------> '); READLN(a);
  339.      WRITE('Tiempo (s) --------------> '); READLN(t);
  340.      WRITE('Velocidad instantanea: ');     WRITELN(v+a*t:5:2);
  341.      WRITE('Velocidad media: ');           WRITELN
  342.         ((v+(v+a*t))/2:5:2);
  343. END.
  344. Un cohete se lanza verticalmente con una velocidad de 500 m/s
  345. calcular la velocidad al cabo de 40 segundos mediante un programa en
  346. Pascal
  347. velocidad instantánea = (velocidad inicial) –
  348. (aceleración de la gravedad * tiempo)
  349. PROGRAM EJER28;
  350.         USES CRT;
  351.         CONST gravedad = 9.81;
  352.         VAR velocidad0, tiempo, velocidadfinal:REAL;
  353. BEGIN
  354.         velocidad0:=500;
  355.         tiempo:=40;
  356.         velocidadfinal:=velocidad0 - (gravedad * 40);
  357.         ClrScr;
  358.         WRITE ('La velocidad a los 40 s es de: ');
  359.         WRITE (velocidadfinal:4:2,' m/s');
  360. END.
  361. PROGRAM EJER28B;
  362.         USES CRT;
  363.         CONST gravedad = 9.81;
  364.         VAR velocidad0, tiempo, velocidadfinal:REAL;
  365. BEGIN
  366.         {Este programa sirve para calcular la velocidad instantanea
  367.         de un cohete}
  368.         ClrScr;
  369.         WRITE ('PARA CALCULAR LA VELOCIDAD DE UN COHETE EN UN
  370.         INSTANTE, ');
  371.         WRITELN ('INTRODUZCA LOS DATOS:');
  372.         WRITELN (' ');
  373.         WRITE ('INTRODUZCA LA VELOCIDAD INICIAL: '); READLN
  374.         (velocidad0);
  375.         WRITE ('INTRODUZCA EL TIEMPO:');             READLN (tiempo);
  376.         WRITELN (' ');
  377.         velocidadfinal:=velocidad0 - (gravedad * tiempo);
  378.         IF velocidadfinal <= 0 THEN
  379.            WRITE ('El cohete ya se ha parado.');
  380.         IF velocidadfinal > 0 THEN
  381.     WRITE ('La velocidad final es de: ');
  382.         IF velocidadfinal > 0 THEN
  383.     WRITE (velocidadfinal:4:2);
  384.         IF velocidadfinal > 0 THEN
  385.     WRITE (' m/s.');
  386. END.
  387. PROGRAM EJER28;
  388.         USES CRT;
  389.         VAR v,g,t:REAL;
  390. BEGIN
  391.      ClrScr;
  392.      g:=9.8;
  393.      WRITE('Velocidad inicial (m/s) -> '); READLN(v);
  394.      WRITE('Tiempo (s) --------------> '); READLN(t);
  395.      WRITE('Velocidad instantanea: ');     WRITELN(v-(g*t):5:2);
  396. END.
  397. Escribir un programa en Pascal que detecte si un número
  398. introducido desde le teclado es positivo o negativo.
  399. PROGRAM EJER29;
  400.         USES CRT;
  401.         VAR num:INTEGER;
  402. BEGIN
  403.         ClrScr;
  404.         WRITE ('Introduzca un numero entero: ');        READLN (num);
  405.         IF num > 0 THEN
  406.            WRITE ('El numero es positivo')
  407.         ELSE IF num < 0 THEN
  408.            WRITE ('El numero es negativo')
  409.         ELSE
  410.            WRITE ('El numero no es positivo ni negativo, es 0');
  411. END.
  412. Escribir un programa en Pascal que detecte si se han introducido en
  413. orden creciente tres números introducidos por el usuario.
  414. PROGRAM EJER30;
  415.         USES CRT;
  416.         VAR num1,num2,num3:INTEGER;
  417. BEGIN
  418.         ClrScr;
  419.         WRITE ('Introduzca un numero (1) : ');  READLN (num1);
  420.         WRITE ('Introduzca un numero (2) : ');  READLN (num2);
  421.         WRITE ('Introduzca un numero (3) : ');  READLN (num3);
  422.         IF ((num1 < num2) AND (num2 < num3)) THEN
  423.            WRITE ('Los numeros se han introducido en orden creciente')
  424.         ELSE
  425.            WRITE ('Los numeros no se han introducido en orden
  426.                 creciente');
  427. END.
  428. PROGRAM EJER30;
  429.         USES CRT;
  430.         VAR num1,num2,num3:INTEGER;
  431. BEGIN
  432.      ClrScr;
  433.      WRITE('Introduzca un numero (1) : ');      READLN(num1);
  434.      WRITE('Introduzca un numero (2) : ');      READLN(num2);
  435.      WRITE('Introduzca un numero (3) : ');      READLN(num3);
  436.      IF ((num1 < num2) AND (num2 < num3)) THEN
  437.         WRITE('Los numeros se han introducido en orden creciente')
  438.      ELSE
  439.         WRITE('Los numeros no se han introducido en orden creciente');
  440. END.
  1. Escribir un programa que lea dos números enteros A y B, y obtenga
  2. los valores A div B, A mod B.
  3. PROGRAM EJERDIV;
  4.         Uses Crt;
  5.              Var A,B: Integer;
  6.              Var soluc: Integer;
  7. Begin
  8.      ClrScr;
  9.      WRITELN('Introduzca dos numeros:');
  10.      WRITELN;
  11.      WRITE('A: '); READLN(A);
  12.      WRITE('B: '); READLN(B);
  13.      WRITELN;
  14.      WRITE('A div B = ');
  15.               soluc := A div B; {div hace la division de 2 numeros
  16.                 enteros}
  17.      WRITELN(soluc);
  18.      WRITELN;
  19.      WRITE('A mod B = ');
  20.               soluc := A mod B; {mod muestra el resto de una
  21.                 division de 2 numeros enteros}
  22.      WRITELN(soluc);
  23. End.
  24. Escribir un programa en Pascal que muestre un mensaje afirmativo si el numero introducido es múltiplo de 5.
  25. PROGRAM EJER32;
  26.         USES CRT;
  27.         var num:Integer;
  28. Begin
  29.         ClrScr;
  30.         WRITE('Introduzca un numero : ');         READLN(num);
  31.         IF num mod 5 = 0 THEN
  32.                 WRITE('El numero introducido es múltiplo de 5')
  33.         ELSE
  34.                 WRITE('El numero introducido no es múltiplo de 5');
  35. End.
  36. Escribir un programa en Pascal que lea un numero y lo devuelva multiplicado por 5 y dividido por 7.
  37. PROGRAM EJER34;
  38.         USES CRT;
  39.         var num, soluc:Real;
  40. Begin
  41.         ClrScr;
  42.         WRITE('Introduzca un numero: ');
  43.         READLN(num);
  44.         WRITELN;
  45.         
  46. {multiplicamos y dividimos el numero obtenido}
  47. soluc := (num * 5) / 7;
  48. WRITE('(',num:5:2,' * 5) / 7) = ',soluc:5:2);
  49. {Poniendo ":5:2" le decimos el formato de salida del numero,
  50. 5 posiciones y 2 decimales - Prueba a cambiarlo como mas te guste}
  51. End.
  52. Escribir un programe en Pascal que resuelva una matriz 3 x (sin bucles).
  53. PROGRAM DETER3;
  54.         USES CRT;
  55.         VAR a11,a12,a13,a21,a22,a23,a31,a32,a33:REAL;
  56.         VAR M:REAL;
  57. BEGIN
  58.      ClrScr;
  59.      WRITELN ('Introduzca los valores de la matriz 3x3');
  60.      WRITELN (' ');
  61.      WRITE ('a11: ');   READLN (a11);
  62.      WRITE ('a12: ');   READLN (a12);
  63.      WRITE ('a13: ');   READLN (a13);
  64.      WRITE ('a21: ');   READLN (a21);
  65.      WRITE ('a22: ');   READLN (a22);
  66.      WRITE ('a23: ');   READLN (a23);
  67.      WRITE ('a31: ');   READLN (a31);
  68.      WRITE ('a32: ');   READLN (a32);
  69.      WRITE ('a33: ');   READLN (a33);
  70.      WRITELN (' ');
  71.      M:=(a11*a22*a33)+(a21*a32*a13)+(a31*a12*a23)
  72.        -(a13*a22*a31)-(a11*a23*a32)-(a12*a21*a33);
  73.      WRITE ('El resultado es: ');        WRITE (M:5:2);
  74. END.
  75. Escribir un programa que convierta un número de segundos en su equivalente en minutos y segundos.
  76. PROGRAM EJERSEG;
  77.         Uses Crt;
  78.              var seg0,seg,min: Integer;
  79. Begin
  80.      ClrScr;
  81.             WRITE('Introduzca los segundos: '); READLN(seg0);
  82.             WRITELN;
  83.             min := seg0 div 60;
  84.             seg := seg0 mod 60;
  85.             WRITE(seg0,' segundos son ',min,' minutos y ',seg,'
  86.                 segundos.');
  87. End.
  88. Imprimir la media de los elementos que se encuentran en las posiciones pares y la media de los elementos que se encuentran en las posiciones impares de un vector numérica.
  89. PROGRAM EJEMEDIA;
  90.         Uses Crt;
  91.              var sumapar,sumaimp,n_par,n_imp: Integer;
  92.              var i: Integer;
  93.              var media_p,media_i: Real;
  94.              const num=10;
  95.              var numeros: Array[1..num] of Real;
  96. Begin
  97.      ClrScr;
  98.             WRITELN('Introduzca los ',num,' numeros');
  99.             WRITELN;
  100.             sumapar := 0;
  101.             sumaimp := 0;
  102.             n_par   := 0;
  103.             n_imp   := 0; {Inicializamos las variables a 0 para evitar
  104.                 sorpresas}
  105.             For i := 1 to 10 do
  106.                 Begin
  107.                      WRITE('Introduzca el numero ',i,' : '); READLN
  108.                         (numeros[i]);
  109.                      If num mod 2 = 0 then  {para que sea par, el
  110.                         resto de una division debe ser 0}
  111.                         Begin
  112.                              n_par := n_par + 1; {tambien se puede
  113.                         hacer con "inc(n_par)"}
  114.                              sumapar := sumapar + num;
  115.                         End
  116.                      Else {si no es par, DEBE ser impar}
  117.                         Begin
  118.                              n_imp := n_imp + 1;
  119.                              sumaimp := sumaimp + num;
  120.                         End;
  121.                 End;
  122.             {Vamos a hallar la media de los pares y los impares}
  123.             WRITELN;
  124.             media_p := sumapar / n_par;
  125.             media_i := sumaimp / n_imp;
  126.             WRITELN('La media de los numeros pares es: ',media_p:5:2);
  127.             WRITELN;
  128.             WRITELN('La media de los numeros impares es: ',media_i:5:2);
  129. End.
  130. Escribir un programa que muestre en pantalla VS2 realizado por nosotros (usar PROCEDURE).
  131. PROGRAM VS2 (INPUT, OUTPUT);
  132.         Uses Crt;
  133.         PROCEDURE letra_V;
  134.                 BEGIN        WRITELN('V       V');                
  135.                         WRITELN(' V     V ');
  136.                         WRITELN('  V   V  ');
  137.                         WRITELN('   V V   ');
  138.                         WRITELN('    V    ');
  139.                 END;
  140.         PROCEDURE letra_S;
  141.                 BEGIN
  142.                         WRITELN('SSSSSSS');
  143.                         WRITELN('S        ');
  144.                         WRITELN('SSSSSSS');
  145.                         WRITELN('      S');
  146.                         WRITELN('SSSSSSS');        
  147.                 END;
  148.         PROCEDURE num_2;
  149.                 BEGIN
  150.                         WRITELN('2222222');
  151.                         WRITELN('      2');
  152.                         WRITELN('2222222');
  153.                         WRITELN('2        ');
  154.                         WRITELN('2222222');
  155.                 END;
  156. BEGIN {empezamos el programa principal}
  157.         ClrScr;
  158.         letra_V; WRITELN;
  159.         letra_S; WRITELN;
  160.         num_2;
  161.         REPEAT Until Keypressed; {mantenemos la pantalla viendo la
  162.         solución hasta que se pulse una tecla}
  163. END.
  164. Hacer un programa que incremente un número usando un PROCEDURE.
  165. PROGRAM incrementar (INPUT, OUTPUT);
  166.         Uses Crt;
  167.              VAR num: INTEGER;
  168.              PROCEDURE incremento;
  169.                   BEGIN
  170.                        num := num + 1;
  171.                   END;
  172. BEGIN
  173.      ClrScr;
  174.      WRITE('Introduzca un numero para incrementarle: '); READLN(num);
  175.      WRITELN;
  176.      incremento;
  177.      WRITE('El numero, incrementado en una unidad, es: ',num);
  178.      REPEAT Until Keypressed;
  179. END.
  180. Escribir un programa que, utilizando procedimientos con parámetros, lea desde el teclado las unidades y el precio que quiere comprar, y en funcion de las unidades introducidas le haga un descuento o no.
  181. PROGRAM productos (INPUT, OUTPUT);
  182. Uses Crt;
  183. CONST
  184.      Desc = 15; {le haremos un 15% de descuento}
  185. VAR
  186.    Unidades, precio: INTEGER;
  187.    Total, cantDesc: REAL;
  188. PROCEDURE descuento (VAR cantidad, descuento: REAL; porciento: INTEGER);
  189.           BEGIN
  190.                Descuento := cantidad * porciento/100; {el descuento es
  191.                 el 15% del total}
  192.                Cantidad := cantidad - descuento;      {la cantidad final
  193.                 es la cantidad - el descuento}
  194.           END;
  195. BEGIN
  196.      ClrScr;
  197.      WRITE('Introduzca el numero de unidades: ');
  198.      READLN(unidades);
  199.      WRITELN;
  200.      WRITE('Introduzca el precio: ');
  201.      READLN(precio);
  202.      WRITELN;
  203.      Total := precio * unidades; {Calculamos el total}
  204.      IF (unidades > 5) THEN descuento (total, cantDesc, desc) {aplicamos
  205. el descuento}
  206.         ELSE cantDesc := 0;
  207.      WRITELN('Total: ',total:5:2,' Descuento: ',cantdesc:5:2); {
  208. escribimos en pantalla el total y el descuento}
  209.      REPEAT Until Keypressed;
  210. END.
  211. Hacer un programa que calcule el area de un círculo (usar un PROCEDURE).
  212. PROGRAM area (INPUT, OUTPUT);
  213.         Uses Crt;
  214.              VAR radiocirc, resultado: REAL;
  215.         PROCEDURE areacirculo (radio: REAL; VAR area: REAL);
  216.              CONST pi = 3.1415926535;
  217.              BEGIN
  218.                   area := pi * SQR(radio);
  219.              END;
  220. BEGIN
  221.      ClrScr;
  222.             WRITE('Introduzca el radio del circulo: '); READLN
  223.                 (radiocirc);
  224.             WRITELN;
  225.             IF (radiocirc > 0) THEN
  226.                BEGIN
  227.                     areacirculo(radiocirc, resultado); {radiocirc se
  228.                         corresponde con radio y resultado con area}
  229.                     GOTOXY(20,5);
  230.                     WRITELN('El area del circulo es: ',resultado:8:2);
  231.                END
  232.             ELSE
  233.                 WRITE('No puede introducir un radio negativo.');
  234.      REPEAT Until Keypressed;

END.

  1. Escribir un programa que lea tres números enteros e indique
  2. si están o no, en orden numérico ascendente o descendente.
  3. PROGRAM EJER_001;
  4. Uses Crt;
  5.          var num1,num2,num3:Integer;
  6. Begin
  7.      ClrScr;
  8.      WRITELN('Introduzca tres numeros:');
  9.      WRITE('Numero 1: '); READLN(num1);
  10.      WRITE('Numero 2: '); READLN(num2);
  11.      WRITE('Numero 3: '); READLN(num3);
  12.      WRITELN;
  13.      WRITELN;
  14.      If (num1 > num2) and (num2 > num3) then
  15.         WRITELN('Ha introducido los numeros en orden decreciente.')
  16.      Else if (num1 < num2) and (num2 < num3) then
  17.         WRITELN('Ha introducido los numeros en orden creciente.')
  18.      Else
  19.         WRITELN('No ha introducido los numeros en orden.');
  20. End.
  21. Escribir un programa que lea 5 valores de temperatura, y escriba el
  22. número de veces que estuvo bajo 0º.
  23. PROGRAM EJER_002;
  24. Uses Crt;
  25.          var temp,i,cont:Integer;
  26. Begin
  27.      WRITELN ('Introduzca 5 valores de temperatura:');
  28.      WRITELN;
  29.      cont := 0;
  30.      For i := 0 to 4 do
  31.          Begin
  32.               WRITE('Valor ',i + 1,' : '); {i + 1 mostrará valores
  33.         del 1 al 5}
  34.               Readln(temp);
  35.               If temp < 0 Then
  36.                  inc(cont); {cont = cont + 1}
  37.          End;
  38.      WRITELN;
  39.      WRITE('La temperatura ha estado ',cont);
  40.      If cont = 1 then
  41.          WRITE (' vez bajo 0')
  42.      Else
  43.          WRITE (' veces bajo 0');
  44. End.
  45. Se realiza un examen, se piden las notas del número de alumnos
  46. introducidos por el usuario, las cuales pueden ser únicamente enteras
  47. entre 0 y 10. Debe decirse cuantos 0, 5 y 10 han aparecido. También
  48. deben decirse las notas introducidas que no sean 0, 5 o 10.
  49. PROGRAM EJER_003;
  50. Uses Crt;
  51.          var cero, cinco, diez: Integer;
  52.          var nota, i, alumnos: Integer;
  53.          var notas_no: Array [1..30] of Integer;
  54. Begin
  55.      ClrScr;
  56.      WRITE('Introduzca el numero de alumnos: '); READLN(alumnos);
  57.      WRITELN;
  58.      WRITELN('Introduzca las calificaciones: (en valores enteros) ');
  59.      WRITELN;
  60.      For i := 1 to alumnos do
  61.          Begin
  62.               WRITE('Alumno: '); READLN(nota);
  63.               If       nota = 0  then inc(cero)
  64.               else if  nota = 5  then inc(cinco)
  65.               else if  nota = 10 then inc(diez)
  66.               else
  67.                    notas_no[i] := nota;
  68.          End;
  69.      WRITELN;
  70.      WRITE('Ha habido ',cero);
  71.                If cero = 1 then  WRITELN(' cero.')  else WRITELN
  72.                 (' ceros.');
  73.      WRITE('Ha habido ',cinco);
  74.                If cinco = 1 then WRITELN(' cinco.') else WRITELN
  75.                 (' cincos.');
  76.      WRITE('Ha habido ',diez);
  77.                If diez = 1 then  WRITELN(' diez.')  else WRITELN
  78.                 (' dieces.');
  79.      WRITELN;
  80.      WRITELN('Las notas aparecidas que no son 0, 5 o 10 son: ');
  81.                   For i := 1 to i DO
  82.                       IF notas_no[i] <> 0 then WRITE(notas_no[i],', ');
  83. END.
  84. Decir el numero de vocales que aparecen en una frase introducida por
  85. el usuario. Debe acabar con un punto.
  86. PROGRAM EJER_004;
  87. Uses Crt;
  88. Const vocales: Set of Char = (['A','E','I','O','U']);
  89. {Poniendolas en mayusculas conseguimos unificar el valor de las vocales
  90. y evitamos decir al usuario que las introduzca en mayusculas o
  91. minusculas}
  92. var cont, i:Integer;
  93. var letra: Char;
  94. var frase: Array[1..85] of Char;
  95. Begin
  96.      ClrScr;
  97.      WRITELN('Escriba una frase, acabando con un punto'); WRITELN;
  98.      i:=0;
  99.      cont:=0;
  100.      REPEAT
  101.      letra := Readkey;{Readkey no mostrará los caracteres
  102. en pantalla}
  103.      WRITE (letra); {Debemos incluirlo para que nos muestre los
  104. caracteres}
  105.      if UPCASE(letra) in vocales then {pregutamos si la letra introducida
  106. es una vocal}
  107.         inc(cont);
  108.      frase[i]:=letra; {guardamos el valor de la letra en el array frase}
  109.      UNTIL letra = '.';
  110.      WRITELN;
  111.      WRITELN;
  112.      WRITE ('El numero de vocales introducidas es ',cont);
  113. End.
  114. PROGRAM EJER_004_2;
  115. Uses Crt;
  116. Const vocales: Set of Char = (['A','E','I','O','U']);
  117. {Poniendolas en mayusculas conseguimos unificar el valor de las vocales
  118. y evitamos decir al usuario que las introduzca en mayusculas o
  119. minusculas}
  120. var cont, i:Integer;
  121. var letra: Char;
  122. var frase: String;{Es lo unico que cambia con respecto a la otra version}
  123. Begin
  124.      ClrScr;
  125.      WRITELN('Escriba una frase, acabando con un punto'); WRITELN;
  126.      i:=0;
  127.      cont:=0;
  128.      REPEAT
  129.      letra := Readkey; {Readkey no mostrara los caracteres en pantalla}
  130.      WRITE (letra); {Debemos incluirlo para que nos muestre los
  131.         caracteres}
  132.      if UPCASE(letra) in vocales then {pregutamos si la letra introducida
  133. es una vocal}
  134.         inc(cont);
  135.      frase[i]:=letra; {guardamos el valor de la letra en el array frase}
  136.      UNTIL letra = '.';
  137.      WRITELN;
  138.      WRITELN;
  139.      WRITE ('El numero de vocales introducidas es ',cont);
  140. End.
  141. Pedir que se introduzca una frase, acabada con un punto en la que se
  142. lean las letras del abecedario introducidas y se muestren posteriormente.
  143. PROGRAM EJER005;
  144. Uses Crt;
  145.          var caracter : Char;
  146.          var abc : String;
  147.          var i, longitud: Integer;
  148. Begin
  149.      ClrScr;
  150.      WRITELN('Escriba una frase, terminando con un punto');
  151.      WRITELN;
  152.      i := 0;
  153.      longitud := 0;
  154.      REPEAT
  155.            caracter := Upcase(Readkey);
  156.            WRITE(caracter);
  157.            If caracter in ['A'..'Z'] then
  158.               Begin
  159.                    abc[i] := caracter;
  160.                    {el array abc quedara con espacios vacios,los
  161.                         que no sean letras del abedecario, si no se pone
  162.                         el incremento de i dentro+ de este begin-end.
  163.                         Prueba a quitar el begin-end si tienes curiosidad
  164.                         en verlo}
  165.                    inc(i);
  166.               End;
  167.      UNTIL caracter = '.';
  168.      longitud := i;
  169.      WRITELN;
  170.      WRITELN;
  171.      WRITELN('Las letras del abecedario introducidas son: ');
  172.      WRITELN;
  173.      For i := 0 To longitud Do
  174.          WRITE(abc[i],' ');
  175. End.
  176. Escribir un programa en Pascal que lea una frase introducida
  177. desde el teclado y la escriba al revés.
  178. PROGRAM EJ006;
  179. Uses Crt;
  180.          var frase: String; {Se puede hacer con arrays}
  181.          var f_inv: String; {Cada uno debe elegir la manera que
  182.                 mejor entida, y controle, eso si, siempre hay que dominar
  183.                 las dos formas.}
  184.          var i: Integer;
  185. Begin
  186.      ClrScr;
  187.      i := 0;
  188.      WRITELN('Escriba una frase:');
  189.      READLN(frase);
  190.      WRITELN;
  191.      WRITELN;
  192.      For i := 0 to length(frase) do {desde la primera posicion de
  193.         la frase hasta la ultima almacenamos la frase en una variable}
  194.          f_inv[i] := frase[i];
  195.      FOR i := length(frase) downto 0 do
  196.            WRITE(f_inv[i]);
  197. End.
  198. PROGRAM EJER006_2;
  199. Uses Crt;
  200.          var frase: String;
  201.          var i: Integer;
  202. Begin
  203.      ClrScr;
  204.      i := 0;
  205.      WRITELN('Escriba una frase:');
  206.      WRITELN;
  207.      READLN(frase);
  208.      WRITELN;
  209.      FOR i := length(frase) downto 1 do {Si ponemos "downto 0" nos
  210.         pasariamos en un caracter}
  211.            WRITE(frase[i]);
  212.      {Si lo unico que quieres es mostrar la cadena de caracteres a la
  213.         inversa, en esta version lo hemos hecho unicamente con una
  214.         variable}
  215. End.
  216. Escribir un programa que compare dos arrays de caracteres y
  217. nos diga si son idénticos o no.
  218. PROGRAM EJER007;
  219.         Uses Crt;
  220.         var frase1, frase2: String;
  221.         var index,long1,long2: Integer; {long1 y long2 son la
  222.         longitud de las cadenas}
  223.         var letra: Char;
  224.         var iguales: Boolean;
  225. Begin
  226.      ClrScr;
  227.      WRITELN ('Introduzca la primera cadena de caracteres,
  228. finalizando con un punto');
  229.      WRITELN;
  230.      index := 0;
  231.      long1 := 0;
  232.      long2 := 0;
  233.      REPEAT
  234.      Begin
  235.           letra := Readkey;
  236.           write(letra); {Readkey no muestra los caracteres en
  237.         pantalla, write si}
  238.           frase1[index] := letra; {vamos almacenando cada letra
  239.         en la variable}
  240.           index := index + 1;
  241.      End;
  242.      UNTIL letra='.';
  243.      long1 := index; {medimos la longitud de la cadena}
  244.      WRITELN;
  245.      WRITELN;
  246.      WRITE('Introduzca la segunda cadena de caracteres, finalizando
  247. con un punto');
  248.      WRITELN;
  249.      WRITELN;
  250.      letra := ' ';
  251.      index := 0;
  252.      REPEAT
  253.      Begin
  254.           letra := Readkey;
  255.           write(letra);
  256.           frase2[index] := letra; {vamos almacenando cada letra en
  257.                 la variable}
  258.           index := index + 1;
  259.      End;
  260.      UNTIL letra='.';
  261.      long2 := index; {medidos la longitud de la cadena}
  262.      WRITELN;
  263.      WRITELN;
  264.      If long1 <> long2 then {Si la longitud es distinta, SEGURO que
  265.         no son iguales}
  266.          WRITELN ('Las cadenas de caracteres son distintas')
  267.          {*Pongo dos mensajes distintos para que veamos en que bucle
  268.                 ha entrado en los diferentes casos que se pueden dar}
  269.      Else
  270.          Begin
  271.            For index := 0 to long1 do
  272.            Begin
  273.                 if frase1[index] <> frase2[index] then
  274.                    Begin
  275.                     WRITE('Las cadenas de caracteres no son iguales');
  276.                     {*Pongo dos mensajes distintos para que veamos
  277.                         en que bucle ha entrado
  278.                       en los diferentes casos que se pueden dar}
  279.                     exit;
  280.                    End
  281.                 else
  282.                     iguales := true; {almacenamos en una variable que
  283.                         las cadenas son iguales}
  284.            End;
  285.          End;
  286.          If iguales = true then WRITELN ('Las cadenas de caracteres
  287.         son iguales');
  288. End.
  289. Escribir un programa en Pascal que sume los valores que hay por encima
  290. de la diagonal principal. Los valores se pueden asignar como una
  291. constante.
  292. PROGRAM EJER008;
  293. Uses Crt;
  294.          Const N = 4; {Numero de filas y columnas de la matriz}
  295.          Const matriz: Array [1..N,1..N] of Integer = ((1, 2, 3, 4),
  296.                                                       ( 5, 6, 7, 8),
  297.                                                       ( 9,10,11,12),
  298.                                                       (13,14,15,16));
  299.          {Declaramos la matriz}
  300.          var i, j, suma: Integer;
  301.          {i se corresponde con las filas y j con las columnas}
  302. Begin
  303.      ClrScr; {limpiamos la pantalla}
  304.      {los valores de la diagonal principal son (1,1) (2,2)
  305.         (3,3) (4,4).
  306.       Como este ejercicio consiste en sumar los valores que hay
  307.         encima de la diagonal principal, sumares: 2 + 3 + 4 + 7 + 8 + 12}
  308.      {Escribimos la matriz original y coloreamos los valores que
  309. necesitamos}
  310.      For i := 1 to N Do
  311.          Begin
  312.               For j := 1 to N Do
  313.                   Begin
  314.                        If j > i then
  315.                            Textcolor(9) {Cambiando el numero
  316.                                 elegiremos el color}
  317.                        Else
  318.                            TextColor(7);
  319.                        WRITE(matriz[i,j]:3);
  320.                   End;
  321.               WRITELN(' ');
  322.          End;
  323.      WRITELN;{Suma de los valores de la primera fila de la matriz}
  324.      i := 1;
  325.      FOR j := 2 to N do
  326.          Begin
  327.               suma := suma + matriz[i,j];
  328.               WRITELN(suma); {Lo escribimos para chequear los valores,
  329.                 podriamos escribir un write al final y seria suficiente}
  330.          End;
  331.      {Suma de los valores de la segunda fila}
  332.      i := 2;
  333.      FOR j := 3 to N do
  334.          Begin
  335.               suma := suma + matriz[i,j];
  336.               WRITELN(suma);
  337.          End;
  338.      WRITELN;{Suma de los valores de la tercera fila}
  339.      i := 3;
  340.      FOR j := 4 to N do {N ya vale 4, por lo que solo se realiza
  341.         1 vez el bucle}
  342.          Begin
  343.               suma := suma + matriz[i,j];
  344.               WRITELN('El resultado final es: ',suma);
  345.          End;
  346. End.
  347. Escribir un programa en Pascal que almacene en un array de registros
  348. los nombres de los alumnos, sus notas parciales y finales. Hallar la
  349. nota media y mostrar un mensaje de APTO si el alumno supera o iguala la
  350. calificación de 5 o NO APTO si no lo alcanza. Hacerlo para un
  351. número de 5 alumnos.
  352. PROGRAM EJER009;
  353. Uses Crt;
  354.          Const numalumnos = 5;
  355.          Type tnotas = record
  356.               nombre2 : String;
  357.               n_parcial2, n_final2: Real; {Nota parcial y final}
  358.               end;
  359.          {Hacemos una fila dividida en 4 partes:tnotas, nombre2,
  360.           n_parcial2, n_final2. Es como una tabla de Word, la cual
  361.           iremos rellenando con los datos obtenidos}
  362.          notas = Array[1..numalumnos] of tnotas;
  363.          {Ahora la copiamos tantas veces como numero de alumnos hay,
  364.           es decir, obtenemos 5 filas iguales}
  365.          var clase : notas;
  366.          var nombre: String;
  367.          var n_parcial, n_final, n_media: Real;
  368.          var i: Integer;
  369. Begin
  370.      ClrScr;
  371.      For i := 1 to numalumnos Do
  372.          Begin
  373.                WRITE('Introduzca el nombre del alumno ',i,' : ');
  374.                READLN(nombre);
  375.                WRITE('Introduzca su nota parcial: ');
  376.                READLN(n_parcial);
  377.                WRITE('Introduzca su nota final: ');
  378.                READLN(n_final);
  379.                WRITELN;
  380.                With clase[i] Do
  381.                     Begin
  382.                          n_parcial2 := n_parcial;
  383.                          n_final2 := n_final;
  384.                          nombre2 := nombre;
  385.                     End;
  386.          End;
  387.          ClrScr;
  388.          WRITELN('NOMBRE':25,'Parcial':8,'Final':8,'Media':8,
  389.         'CALIFICACION':15);
  390.          WRITELN;
  391.          For i := 1 to numalumnos do
  392.              With clase[i] do
  393.                   Begin
  394.                        n_media := (n_parcial2 + n_final2) / 2;
  395.                        WRITE(nombre2:25,n_parcial2:8:2,n_final2:8:2);
  396.                        textcolor(14); WRITE(n_media:8:2);
  397.                        If n_media >= 5 then
  398.                          Begin
  399.                              textcolor(11);
  400.                              WRITELN ('APTO  :-)':15);
  401.                          End
  402.                        Else
  403.                          Begin
  404.                              textcolor(1);
  405.                              WRITELN ('NO APTO :-(':15);
  406.                          End;
  407.                        textcolor(7);
  408.                   End;
  409. End.
  410. Escribir un programa en Pascal que almacene en un array de registros
  411. las características de cada persona: nombre, sexo, edad, peso, color
  412. de pelo, color de piel, color de ojos, nacionalidad y teléfono.
  413. PROGRAM EJER_010;
  414. Uses Crt;
  415.           Const numpersonas = 1; {Cambiando este valor lo podremos
  416.                 hacer para
  417.                                el numero de personas que deseemos}
  418.           Type caracteristicas = record
  419.                nombre2, nacionalidad2: String;
  420.                edad2: Integer;
  421.                sexo2, c_pelo2, c_ojos2: Char;
  422.                tf2: Longint;
  423.           {Creamos una fila con diferentes apartados}
  424.                end;
  425.                personas = Array[1..numpersonas] of caracteristicas;
  426.           {La copiamos tantas veces como personas haya}
  427.           var persons : personas;
  428.               nombre, nacionalidad: String;
  429.               edad, i: Integer;
  430.               sexo, c_pelo, c_ojos: Char;
  431.               tf: Longint;
  432. Begin
  433.      ClrScr;
  434.      For i := 1 to numpersonas do
  435.      Begin
  436.           WRITELN('Introduzca los datos de la persona numero ',i,
  437.                 ' : ');
  438.           WRITELN;
  439.           WRITE('Nombre:       '); READLN(nombre);
  440.           WRITE('Edad:         '); READLN(edad);
  441.           WRITE('Nacionalidad: '); READLN(nacionalidad);
  442.           Repeat
  443.                 WRITE('Sexo (H, M):  '); READLN(sexo);
  444.           Until (sexo = 'H') or (sexo = 'M');
  445.           WRITE('Telefono:     '); READLN(tf);
  446.           Repeat
  447.           WRITE('Color de ojos (A, V, M):  '); READLN(c_ojos);
  448.           Until (c_ojos = 'A') or (c_ojos = 'V') or (c_ojos = 'M');
  449.           Repeat
  450.           WRITE('Color de pelo (R, M, C):  '); READLN(c_pelo);
  451.           Until (c_pelo = 'R') or (c_pelo = 'M') or (c_pelo = 'C');
  452.           WRITELN;
  453.           With persons[i] do
  454.             Begin
  455.                nombre2 := nombre;
  456.                edad2 := edad;
  457.                nacionalidad2 := nacionalidad;
  458.                sexo2 := sexo;
  459.                tf2 := tf;
  460.                c_ojos2 := (c_ojos);
  461.                c_pelo2 := (c_pelo);
  462.                {Almacenamos los datos dentro del array de registro}
  463.             End;
  464.      End;
  465.      textcolor(11);
  466.      WRITELN('Nombre':15,'Edad':6,'Nacionalidad':15,'Sexo':6,
  467. 'Telefono':12,'Color ojos':12,'Color pelo':12);
  468.      textcolor(7);
  469.      For i := 1 to numpersonas do
  470.          Begin
  471.               with persons[i] do
  472.                    Begin
  473.                         WRITE(nombre2:15,edad2:6,Nacionalidad2:15,
  474.                         sexo2:6,tf2:12,c_ojos2:12,c_pelo2:12);
  475.                    End;
  476.          End;
  477.      {Las caracteristicas que se piden al usuario para obtener
  478. informacion de las diferentes personas son simples ejemplos. Si se
  479. quieren cambiar, y poner por ejemplo, si esta casado o soltero, sus
  480. estudios, etc., unicamente habra que crear nuevas variables o
  481. sustituir las existentes.}
  482. End.

  1. Escribir un programa en Pascal que determine la posición de
  2. la siguiente matriz en la que se encuentra el valor máximo.
  3. 23        45        68
  4. 34        99        12
  5. 25        78        89
  6. PROGRAM EJER91B;
  7.         USES CRT;
  8.         CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (23,45,68),
  9.                                                     (34,99,12),
  10.                                                     (25,78,89) );
  11.         VAR i,j,val_max,pos_max_i,pos_max_j:INTEGER;
  12. BEGIN
  13.      ClrScr;
  14.      val_max:=arr_num[1,1];
  15.      FOR i:=1 TO 3 DO
  16.      BEGIN
  17.           FOR j:=1 TO 3 DO
  18.           BEGIN
  19.                 IF arr_num[i,j] > val_max THEN
  20.                 BEGIN
  21.                      val_max:=arr_num[i,j];
  22.                      pos_max_i:=i;
  23.                      pos_max_j:=j;
  24.                 END;
  25.           END;
  26.      END;
  27.      WRITELN(    'VALOR MAXIMO: ', val_max:3,
  28.                  ' POSICION: ',    pos_max_i:3,pos_max_i:3);
  29. END.
  30. Escribir un programa en Pascal que sume, independientemente, los
  31. elementos positivos y negativos de la siguiente matriz:
  32. -12        23        32
  33. 45        -56        -10
  34. 25        78        89
  35. PROGRAM EJER92;
  36.         USES CRT;
  37.         CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (-12,23,-32),
  38.                                                      (45,-56,-10),
  39.                                                      (25,78,89) );
  40.         VAR i,j,suma_p,suma_i:INTEGER;
  41. BEGIN
  42.      ClrScr;
  43.      FOR i:=1 TO 3 DO
  44.      BEGIN
  45.           FOR j:= 1 TO 3 DO
  46.           BEGIN
  47.                IF arr_num[i,j] >=0 THEN
  48.                   suma_p:= suma_p + arr_num[i,j]
  49.                ELSE
  50.                   suma_i:= suma_i + arr_num[i,j];
  51.           END;
  52.      END;
  53.      WRITELN ('La suma de los numeros pares es:   ',suma_p);
  54.      WRITELN ('La suma de los numeros impares es: ',suma_i);
  55. END.
  56. PROGRAM EJER92;
  57.         USES CRT;
  58.         CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (-12,23,-32),
  59.                                                     (45,-56,-10),
  60.                                                     (25,78,89));
  61.         VAR i,j,suma_pos,suma_neg:INTEGER;
  62. BEGIN
  63.      suma_pos:=0;
  64.      suma_neg:=0;
  65.      ClrScr;
  66.      FOR i:=1 TO 3 DO
  67.      BEGIN
  68.           FOR j:=1 TO 3 DO
  69.           BEGIN
  70.                IF arr_num[i,j] < 0 THEN
  71.                    suma_neg:=suma_neg+arr_num[i,j]
  72.                ELSE
  73.                    suma_pos:=suma_pos+arr_num[i,j]
  74.           END;
  75.      END;
  76.      WRITELN('SUMA POSITIVOS: ', suma_pos:5);
  77.      WRITELN('SUMA NEGATIVOS: ', suma_neg:5);
  78. END.
  79. Escribir un programa en Pascal que multiplique por dos los
  80. elementos de la siguiente matriz:
  81.         4        7        8
  82.         6        9        1
  83.         5        0        3
  84. PROGRAM EJER93;
  85.         USES CRT;
  86.         CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (4,7,8),
  87.                                                      (6,9,1),
  88.                                                      (5,0,3));
  89.         VAR mult,i,j:INTEGER;
  90. BEGIN
  91.      ClrScr;
  92.      FOR i:= 1 TO 3 DO
  93.      BEGIN
  94.           FOR j:=1 TO 3 DO
  95.           BEGIN
  96.                mult:=arr_num[i,j] * 2;
  97.                WRITELN('Elemento (',i,',',j,') multiplicado por 2:
  98.                         ',mult:3);
  99.           END;
  100.      END;
  101. END.
  102. PROGRAM EJER93;
  103.         USES CRT;
  104.         CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (4,7,8),
  105.                                                     (6,9,1),
  106.                                                     (5,0,3));
  107.         VAR i,j:INTEGER;
  108. BEGIN
  109.      ClrScr;
  110.      FOR i:=1 TO 3 DO
  111.          FOR j:=1 TO 3 DO
  112.              arr_num[i,j]:=arr_num[i,j]*2;
  113.      FOR i:=1 TO 3 DO
  114.      BEGIN
  115.           FOR j:=1 TO 3 DO
  116.               WRITE(arr_num[i,j]:3);
  117.           WRITELN (' ');
  118.      END;
  119. END.
  120. Escribir un programa en Pascal que almacene en la segunda fila
  121. de la siguiente matriz los cuadrados de los datos de la primera fila:
  122. 3        6        7        8        9
  123. 0        0        0        0        0
  124. PROGRAM EJER94;
  125.         USES CRT;
  126.         CONST arr_num:ARRAY [1..2,1..5] of INTEGER=( (3,6,7,8,9),
  127.                                                      (0,0,0,0,0));
  128.         VAR i,j,cuad:INTEGER;
  129. BEGIN
  130.      ClrScr;
  131.      i:=1;
  132.      FOR j:=1 TO 5 DO
  133.      BEGIN
  134.           FOR i:=1 TO 1 DO
  135.           BEGIN
  136.               cuad:=sqr(arr_num[i,j]);
  137.               arr_num[2,j]:= cuad;
  138.               WRITELN (arr_num[2,j]);
  139.           END;
  140.      END;
  141. END.
  142. PROGRAM EJER94;
  143.         USES CRT;
  144.         CONST arr_num:ARRAY[1..2,1..5] of INTEGER=( (3,6,7,8,9),
  145.                                                     (0,0,0,0,0));
  146.         VAR i,j:INTEGER;
  147. BEGIN
  148.      ClrScr;
  149.      FOR i:=1 TO 1 DO
  150.          FOR j:=1 TO 5 DO
  151.              arr_num[i+1,j]:=sqr(arr_num[i,j]);
  152.      FOR i:=1 TO 2 DO
  153.      BEGIN
  154.           FOR j:=1 TO 5 DO
  155.               WRITE(arr_num[i,j]:3);
  156.           WRITELN(' ');
  157.      END;
  158. END.
  159. Escribir un programa en Pascal que sume los datos de cada una
  160. de las filas de la siguiente matriz; el resultado se almacenará
  161. en la última posición de cada fila:
  162. 3        6        7        8        9        0
  163. 1        4        3        2        7        0
  164. PROGRAM EJER95;
  165.         USES CRT;
  166.         CONST arr_num:ARRAY [1..2,1..6] of INTEGER=( (3,6,9,7,8,0),
  167.                                                      (1,4,3,2,7,0));
  168.         VAR i,j,suma1, suma2:INTEGER;
  169. BEGIN
  170.      ClrScr;
  171.      FOR i:=1 TO 2 DO
  172.      BEGIN
  173.           FOR j:=1 TO 6 DO
  174.           BEGIN
  175.                IF i=1 THEN suma1:= suma1 + arr_num[1,j];
  176.                IF i=2 THEN suma2:= suma2 + arr_num[2,j];
  177.           END;
  178.      END;
  179.           WRITELN ('La suma de la fila 1 es: ',suma1);
  180.           WRITELN ('La suma de la fila 2 es: ',suma2);
  181. END.
  182. PROGRAM EJER95;
  183.         USES CRT;
  184.         CONST arr_num:ARRAY[1..2,1..6] of INTEGER=( (3,6,9,7,8,0),
  185.                                                     (1,4,3,2,7,0));
  186.         VAR suma_fila,i,j:INTEGER;
  187. BEGIN
  188.      ClrScr;
  189.      FOR i:=1 TO 2 DO
  190.      BEGIN
  191.           suma_fila:=0;
  192.           FOR j:=1 TO 6 DO
  193.               suma_fila:=suma_fila+arr_num[i,j];
  194.           arr_num[i,j]:=suma_fila;
  195.      END;
  196.      FOR i:=1 TO 2 DO
  197.      BEGIN
  198.           FOR j:=1 TO 6 DO
  199.               WRITE(arr_num[i,j]:3);
  200.           WRITELN(' ');
  201.      END;
  202. END.
  203. Escribir un programa en Pascal que sume los datos de cada una
  204. de las columnas de la siguiente matriz; el resultado se almacenará
  205. en la última posición de cada columna:
  206. 3        2
  207. 4        6
  208. 8        9
  209. 0        0
  210. PROGRAM EJER96;
  211.         USES CRT;
  212.         CONST arr_num:ARRAY [1..4,1..2] of INTEGER=( (3,2),(4,6),
  213.                                                      (8,9),(0,0));
  214.         VAR i,j,suma1,suma2:INTEGER;
  215. BEGIN
  216.      ClrScr;
  217.      FOR j:=1 TO 2 DO
  218.      BEGIN
  219.           FOR i:=1 TO 4 DO
  220.           BEGIN
  221.                IF j=1 THEN suma1:= suma1 + arr_num[i,j];
  222.                IF j=2 THEN suma2:= suma2 + arr_num[i,j];
  223.           END;
  224.      END;
  225.      WRITELN ('El resultado de la suma 1 es: ',suma1);
  226.      WRITELN ('El resultado de la suma 2 es: ',suma2);
  227. END.
  228. Escribir un programa en Pascal que sume los elementos de cada
  229. una de las filas y de las columnas de la siguiente matriz; el resultado
  230. de cada suma se almacenará en la última posición
  231. de la fila o columna correspondiente. Además la suma total
  232. de todos los elementos de la matriz se almacenará en el
  233. elemento de la esquina inferior derecha de la matriz:
  234. 1        7        0
  235. 5        6        0
  236. 6        4        0
  237. 7        3        0
  238. 0        0        0
  239. PROGRAM EJER97;
  240.         USES CRT;
  241.         CONST arr_num:ARRAY [1..5,1..3] of INTEGER=( (1,7,0),(5,6,0),
  242.                                                      (6,4,0),(7,3,0),
  243.                                                      (0,0,0) );
  244.         VAR i,j,total:INTEGER;
  245.         VAR suma_h,suma_v:INTEGER; {Es la suma horizontal y vertical}
  246. BEGIN
  247.      ClrScr;
  248.      FOR i:=1 TO 5 DO
  249.      BEGIN
  250.           FOR j:=1 TO 3 DO
  251.           BEGIN
  252.                suma_h:= suma_h + arr_num[i,j];
  253.           END;
  254.           WRITELN ('La suma de la fila ',i,' es: ',suma_h:3);
  255.           total:=total + suma_h;
  256.           suma_h:=0;
  257.      END; WRITELN ('');
  258.      FOR j:=1 TO 2 DO
  259.      BEGIN
  260.           FOR i:=1 TO 5 DO
  261.           BEGIN
  262.                suma_v:= suma_v + arr_num[i,j];
  263.           END;
  264.           WRITELN ('La suma de la columna ',j,' es: ',suma_v:3);
  265.           suma_v:=0;
  266.           total:=total + suma_v;
  267.      END; WRITELN ('');
  268.      WRITELN ('La suma total es: ',total);
  269. END.
  270. PROGRAM EJER97;
  271.         USES CRT;
  272.         CONST arr_num:ARRAY[1..5,1..3] of INTEGER=( (1,7,0),
  273.                                                   (5,6,0),
  274.                                                   (6,4,0),
  275.                                                   (7,3,0),
  276.                                                   (0,0,0) );
  277.         VAR suma_fila,suma_colu,suma_tota,i,j:INTEGER;
  278. BEGIN
  279.      ClrScr;
  280.      FOR i:=1 TO 4 DO
  281.      BEGIN
  282.           suma_fila:=0;
  283.           FOR j:=1 TO 2 DO
  284.           BEGIN
  285.                suma_fila:=suma_fila+arr_num[i,j];
  286.                suma_tota:=suma_tota+arr_num[i,j];
  287.           END;
  288.           arr_num[i,j+1]:=suma_fila;
  289.      END;
  290.           arr_num[i+1,j+1]:=suma_tota;
  291.      FOR j:=1 TO 2 DO
  292.      BEGIN
  293.           suma_colu:=0;
  294.           FOR i:=1 TO 4 DO
  295.           BEGIN
  296.                suma_colu:=suma_colu+arr_num[i,j];
  297.           END;
  298.           arr_num[i+1,j]:=suma_colu;
  299.      END;
  300.      FOR i:=1 TO 5 DO
  301.      BEGIN
  302.           FOR j:=1 TO 3 DO
  303.               WRITE(arr_num[i,j]:3);
  304.           WRITELN(' ');
  305.      END;
  306. END.
  307. Escribir un programa en Pascal que divida todos los elementos de
  308. una matriz M (3,4) por el elemento situado en la posición 2,2.
  309. PROGRAM EJER98;
  310.         USES CRT;
  311.         CONST arr_num:ARRAY[1..3,1..4] of INTEGER=( (23,45,-68,99),
  312.                                                     (45,65,-76,34),
  313.                                                     (56,-75,34,98));
  314.         VAR i,j:INTEGER;
  315.         VAR divi:REAL;
  316. BEGIN
  317.      ClrScr;
  318.      FOR i:=1 TO 3 DO
  319.      BEGIN
  320.           FOR j:=1 TO 4 DO
  321.           BEGIN
  322.                divi:= arr_num[i,j] / arr_num[2,2];
  323.                WRITE   ('Dividido ',arr_num[i,j]:3,' por el numero ');
  324.                WRITELN (arr_num[2,2]:3,': ',divi:5:2);
  325.           END;
  326.      END;
  327. END.
  328. PROGRAM EJER98;
  329.         USES CRT;
  330.         CONST matriz_m:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
  331.                                                    (7,9,8,11),
  332.                                                    (5,6,1,19));
  333.         VAR i,j:INTEGER;
  334.         VAR ele_22:REAL;
  335. BEGIN
  336.      ele_22:=matriz_m[2,2];
  337.      ClrScr;
  338.      FOR i:=1 TO 3 DO
  339.      BEGIN
  340.           FOR j:=1 TO 4 DO
  341.               WRITE(matriz_m[i,j]:5:2,' ');
  342.           WRITELN(' ');
  343.      END;
  344.      FOR i:=1 TO 3 DO
  345.          FOR j:=1 TO 4 DO
  346.              matriz_m[i,j]:=matriz_m[i,j]/ele_22;
  347.      WRITELN(' ');
  348.      FOR i:=1 TO 3 DO
  349.      BEGIN
  350.           FOR j:=1 TO 4 DO
  351.               WRITE(matriz_m[i,j]:5:2,' ');
  352.           WRITELN(' ');
  353.      END;
  354. END.
  355. Escribir un programa en Pascal que almacene en un array los números
  356. primos comprendidos entre 1 y 100.
  357. PROGRAM EJER99;
  358.         USES CRT;
  359.         VAR arr_num:ARRAY [1..100] of INTEGER;
  360.         VAR flag:INTEGER;
  361.         VAR i,num:INTEGER;
  362. BEGIN
  363.      ClrScr;
  364.      num:=1;
  365.      WHILE num < 100 DO
  366.      BEGIN
  367.           FOR i:=2 TO (num-1) DO
  368.           BEGIN
  369.                IF (num mod i)=0 THEN
  370.                   flag:=1;
  371.           END;
  372.           IF flag<>1 THEN
  373.              WRITELN (num:3,' es un n£mero primo.');
  374.           num:= num + 1;
  375.           flag:=0;
  376.      END;
  377. END.
  378. PROGRAM EJER99;
  379.         USES CRT;
  380.         VAR arra_prim:ARRAY[1..100] OF INTEGER;
  381.         VAR i,divisor:INTEGER;
  382.         VAR flag,num:INTEGER;
  383. BEGIN
  384.      i:=1;
  385.      FOR num:=2 TO 100 DO
  386.      BEGIN
  387.           flag:=1;
  388.           FOR divisor:=2 TO num-1 DO
  389.           BEGIN
  390.                IF num MOD divisor = 0 THEN
  391.                   flag:=0;
  392.           END;
  393.           IF flag=1 THEN
  394.           BEGIN
  395.                arra_prim[i]:=num;
  396.                i:=i+1;
  397.           END;
  398.      END;
  399.      arra_prim[i]:=0;
  400.      i:=1;
  401.      WHILE(arra_prim[i]<>0) DO
  402.      BEGIN
  403.           WRITE(arra_prim[i],' ');
  404.           i:=i+1;
  405.      END;
  406. END.
  407. Escribir un programa en Pascal que genera la matriz transpuesta
  408. de una matriz de 3 filas y 4 columnas. La matriz transpuesta de una
  409. matriz M(m,n) se obtiene intercambiando filas por columnas y viceversa;
  410. el resultado se tiene que almacenar en una nueva matriz M_TRANS(n,m).
  411. PROGRAM EJERC100;
  412.         USES CRT;
  413.         CONST matriz:ARRAY [1..3,1..4] of INTEGER=( (12,67,-23,-45),
  414.                                                     (45,-34,23,-12),
  415.                                                     (-34,22,88,-10));
  416.         VAR m_tra:ARRAY [1..4,1..3] of INTEGER;
  417.         VAR f,c:INTEGER;
  418. BEGIN
  419.      ClrScr;
  420.      FOR c:=1 TO 3 DO
  421.      BEGIN
  422.           FOR f:=1 TO 4 DO
  423.           BEGIN
  424.                m_tra[f,c]:=matriz[c,f];
  425.                WRITE ('(',f,',',c,') ');
  426.                WRITELN (m_tra[f,c]:3);
  427.           END;
  428.      END;
  429. END.
  430. PROGRAM EJERC100;
  431.         USES CRT;
  432.         CONST m_orig:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
  433.                                                  (7,9,8,11),
  434.                                                  (5,6,1,19));
  435.         VAR m_tran:ARRAY[1..4,1..3] OF REAL;
  436.         VAR i,j:INTEGER;
  437. BEGIN
  438.      ClrScr;
  439.      FOR i:=1 TO 3 DO
  440.          FOR j:=1 TO 4 DO
  441.              m_tran[j,i]:=m_orig[i,j];
  442.      FOR i:=1 TO 3 DO
  443.      BEGIN
  444.           FOR j:=1 TO 4 DO
  445.               WRITE(m_orig[i,j]:5:2,' ');
  446.           WRITELN(' ');
  447.      END;
  448.      WRITELN(' ');
  449.      FOR i:=1 TO 4 DO
  450.      BEGIN
  451.           FOR j:=1 TO 3 DO
  452.               WRITE(m_tran[i,j]:5:2,' ');
  453.           WRITELN(' ');
  454.      END;
  455. END.
  1. Escribir un programa en Pascal que detecte el carácter
  2. introducido por el usuario.
  3. PROGRAM EJER31;
  4.         USES CRT;
  5.         VAR pato_donald:CHAR;
  6. BEGIN
  7.      ClrScr;
  8.      WRITE ('Introduzca un caracter alfanumerico: ');   READLN
  9. (pato_donald);
  10.      WRITE ('El caracter introducido es -----> ' + pato_donald)
  11. END.
  12. Escribir un programa en Pascal que determine si un número
  13. leído desde el teclado es par o impar
  14. PROGRAM EJER34;
  15.         USES CRT;
  16.         VAR num:INTEGER;
  17. BEGIN
  18.         ClrScr;
  19.         WRITE ('Introduzca un numero entero: ');       READLN (num);
  20.         IF num = 0 THEN
  21.            WRITE ('El numero introducido no es par ni impar, es 0')
  22.         ELSE IF ((num mod 2 = 0)) THEN
  23.            WRITE ('El numero introducido es par')
  24.         ELSE
  25.             WRITE ('El numero introducido es impar')
  26. END.
  27. PROGRAM EJER34;
  28.         USES CRT;
  29.         VAR num:INTEGER;
  30. BEGIN
  31.      ClrScr;
  32.      WRITE('Introduzca un numero: ');
  33.      READLN(num);
  34.      IF (num mod 2 = 0) THEN
  35.         WRITE('NUMERO PAR')
  36.      ELSE
  37.         WRITE('NUMERO IMPAR');
  38. END.
  39. Escribir un programa en Pascal que detecte si un número
  40. leído desde el teclado es mayor o menor que 100.
  41. PROGRAM EJER35;
  42.         USES CRT;
  43.         VAR num:INTEGER;
  44. BEGIN
  45.         ClrScr;
  46.         WRITE ('Escriba un numero entero:');    READLN (num);
  47.         WRITELN ('');
  48.         IF num < 100 THEN
  49.         WRITE ('El numero que ha escrito es menor de 100')
  50.         ELSE IF num > 100 THEN
  51.         WRITE ('El numero que ha escrito es mayor de 100')
  52.         ELSE
  53.         WRITE ('El numero es 100')
  54. END.
  55. PROGRAM EJER35;
  56.         USES CRT;
  57.         VAR num:REAL;
  58. BEGIN
  59.      ClrScr;
  60.      WRITE('Introduzca un numero : ');  READLN(num);
  61.      IF (num <= 100) THEN
  62.          WRITE('NUMERO MENOR O IGUAL A 100 ')
  63.      ELSE
  64.          WRITE('NUMERO MAYOR DE 100')
  65. END.
  66. Escribir un programa en Pascal que dado un número del 1 a 7
  67. escriba el correspondiente nombre del día de la semana.
  68. PROGRAM EJER36;
  69.         USES CRT;
  70.         VAR num:INTEGER;
  71. BEGIN
  72.      ClrScr;
  73.      WRITE ('Escriba un numero para ver con que dia corresponde: ');
  74.      READLN (num);
  75.      IF num=1 THEN
  76.      WRITE ('Lunes');
  77.      IF num=2 THEN
  78.      WRITE ('Martes');
  79.      IF num=3 THEN
  80.      WRITE ('Miercoles');
  81.      IF num=4 THEN
  82.      WRITE ('Jueves');
  83.      IF num=5 THEN
  84.      WRITE ('Viernes');
  85.      IF num=6 THEN
  86.      WRITE ('Sabado');
  87.      IF num=7 THEN
  88.      WRITE ('Domingo');
  89. END.
  90. N
  91. PROGRAM EJER36;
  92.         USES CRT;
  93.         VAR num_dia_sem:INTEGER;
  94. BEGIN
  95.      ClrScr;
  96.      WRITE('Dia de la semana (numero) -> ');    READLN(num_dia_sem);
  97.      CASE num_dia_sem OF
  98.           1: WRITELN('Lunes');
  99.           2: WRITELN('Martes');
  100.           3: WRITELN('Miercoles');
  101.           4: WRITELN('Jueves');
  102.           5: WRITELN('Viernes');
  103.           6: WRITELN('Sabado');
  104.           7: WRITELN('Domingo');
  105.      ELSE
  106.          WRITELN('No es un dia de la semana');
  107.      END;
  108. END.
  109. Escribir un programa en Pascal que lea dos números desde el
  110. teclado y si el primero es mayor que el segundo intercambie sus valores.
  111. PROGRAM EJER37;
  112.         USES CRT;
  113.         VAR num1,num2:INTEGER;
  114. BEGIN
  115.         ClrScr;
  116.         WRITELN ('Escriba dos numeros: ');
  117.         READLN (num1);  WRITE ('');    READLN (num2);
  118.         WRITELN ('');
  119.         IF num1 > num2 THEN
  120.         BEGIN
  121.              WRITE(num2,' ',num1,'. El primer numero introducido
  122.                 es mayor.');
  123.              WRITE(' Se cambia el orden.');
  124.         END
  125.         ELSE
  126.         BEGIN
  127.              WRITE(num1,' ',num2,'. El segundo numero introducido es
  128.                 mayor.');
  129.              WRITE(' No se cambia el orden.');
  130.         END;
  131. END.
  132. PROGRAM EJER37;
  133.         USES CRT;
  134.         VAR num1,num2,temp:INTEGER;
  135. BEGIN
  136.      ClrScr;
  137.      WRITE('Numero 1: ');       READLN(num1);
  138.      WRITE('Numero 2: ');       READLN(num2);
  139.      IF (num1 > num2) THEN
  140.         BEGIN
  141.              temp:=num1;
  142.              num1:=num2;
  143.              num2:=temp;
  144.              WRITELN('Numero intercambiados');
  145.              WRITE('Numero 1: '); WRITELN(num1);
  146.              WRITE('Numero 2: '); WRITELN(num2);
  147.         END
  148.      ELSE
  149.         BEGIN
  150.              WRITELN('Numeros sin intercambiar');
  151.              WRITE('Numero 1: '); WRITELN(num1);
  152.              WRITE('Numero 2: '); WRITELN(num2);
  153.         END;
  154. END.
  155. Escribir un programa en Pascal que dada una calificación en
  156. valor alfabético (A,B,C,D ó E) indique su equivalente en
  157. valor numérico (4,5,6,7 u 8).
  158. PROGRAM EJER38;
  159.         USES CRT;
  160.         VAR valor:CHAR;
  161. BEGIN
  162.         ClrScr;
  163.         WRITE ('Escriba una calificacion entre a y e: ');
  164.         READLN (valor);
  165.         WRITELN ('');
  166.      CASE UPCASE(valor) OF
  167.         'A': WRITE ('El valor correspondiente es: 4');
  168.                'B': WRITE ('El valor correspondiente es: 5');
  169.         'C': WRITE ('El valor correspondiente es: 6');
  170.                'D': WRITE ('El valor correspondiente es: 7');
  171.         'E': WRITE ('El valor correspondiente es: 8')
  172.      ELSE
  173.                         WRITE ('La calificacion no existe');
  174.      END;
  175. END.
  176. PROGRAM EJER38;
  177.         USES CRT;
  178.         VAR cal:CHAR;
  179. BEGIN
  180.      ClrScr;
  181.      WRITE('Introduzca una calificacion (A-E):');
  182.      READLN(cal);
  183.      CASE cal OF
  184.           'A': WriteLn('Calificacion numerica --> 4');
  185.           'B': WriteLn('Calificacion numerica --> 5');
  186.           'C': WriteLn('Calificacion numerica --> 6');
  187.           'D': WriteLn('Calificacion numerica --> 7');
  188.           'E': WriteLn('Calificacion numerica --> 8');
  189.      ELSE
  190.          WriteLn('Calificacion incorrecta');
  191.      END;
  192. END.
  193. Escribir un programa en Pascal que lea desde teclado el importe
  194. bruto de una factura y determine el importe neto según los
  195. siguientes criterios.
  196. · Importe bruto menor de 20.000 ->                sin descuento
  197. · Importe bruto mayor de 20.000 ->                 15% de descuento
  198. PROGRAM EJER39;
  199.         USES CRT;
  200.         VAR importe_bruto:REAL;
  201.         VAR descuento, total:REAL;
  202. BEGIN
  203.         ClrScr;
  204.         WRITE ('Indique el importe de su factura para ver ');
  205.         WRITELN ('si le "descontamos" algo');
  206.         WRITELN ('');
  207.         READLN (importe_bruto);
  208.         WRITELN ('');
  209.         {calcula el importe bruto con descuento del 15%}
  210.         descuento:=importe_bruto * 0.15;
  211.         IF importe_bruto > 20000 THEN
  212.         BEGIN
  213.              WRITELN ('SE MERECE UN DESCUENTO DE: ',descuento:5:2,
  214.                 ' PTS');
  215.              total:=importe_bruto - descuento;
  216.              WRITELN ('El total es de la factura es de: ',total:5:2,
  217.                 ' pts')
  218.         END
  219.         ELSE
  220.              WRITE ('CON ESE DINERO NO SE MERECE UN DESCUENTO')
  221. END.
  222. PROGRAM EJER39;
  223.         USES CRT;
  224.         VAR imp_bru,imp_net:REAL;
  225. BEGIN
  226.      ClrScr;
  227.      WRITE('Importe Bruto -> ');        READLN(imp_bru);
  228.      IF imp_bru <= 20000 THEN
  229.         imp_net:=imp_bru
  230.      ELSE
  231.         imp_net:=imp_bru-(0.15*imp_bru);
  232.      WRITE('Importe a pagar: ');        WRITE(imp_net:5:2)
  233. END.
  234. Escribir un programa en Pascal que una vez leída una hora
  235. en formato (horas, minutos, segundos) indique cual será el tiempo
  236. dentro de un segundo.
  237. PROGRAM EJER40;
  238.         USES CRT;
  239.         {Las variables son: horas, minutos y segundos}
  240.         {Son las horas, minutos y segundos introducidos por el
  241.         usuario}
  242.         VAR h, m, s:INTEGER;
  243.         VAR h2,m2,s2:INTEGER;
  244.         {Son las horas, minutos y seguntos a los que se les sumara}
  245. BEGIN
  246.      ClrScr;
  247.      WRITE ('Escriba en formato horas, minutos y segundos');
  248.      WRITELN ('');
  249.      WRITE ('Horas ');                 READLN (h);
  250.      WRITE ('Minutos ');               READLN (m);
  251.      WRITE ('Segundos ');            READLN (s);
  252.      WRITELN ('');
  253.      WRITELN ('Se le sumara un segundo a la hora actual.');
  254.      WRITELN ('');
  255.      s:= s + 1;
  256.      IF s = 60 THEN
  257.         s2 := 0
  258.      ELSE
  259.         s2 := s;
  260.      m:= ((m * 60) + s) div 60;
  261.      IF m = 60 THEN
  262.         m2 := 0
  263.      ELSE
  264.         m2 := m;
  265.      h2:=((h * 60) + m) div 60;
  266.      IF h2 = 24 THEN
  267.         h2 := 0;
  268.      WRITELN (h2,':',m2,':',s2);
  269. END.
  270. PROGRAM EJER40;
  271.         USES CRT;
  272.         VAR h1,m1,s1:INTEGER;
  273.         VAR h2,m2,s2:INTEGER;
  274. BEGIN
  275.      Clrscr;
  276.      WRITE('Horas ------> ');   READLN(h1);
  277.      WRITE('Minutos ----> ');   READLN(m1);
  278.      WRITE('Segundos ---> ');   READLN(s1);
  279.      s2:=s1+1;
  280.      IF s2=60 THEN
  281.      BEGIN
  282.           s2:=0;
  283.           m2:=m1+1;
  284.      END;
  285.      IF m2=60 THEN
  286.      BEGIN
  287.           m2:=0;
  288.           h2:=h1+1;
  289.      END;
  290.      IF h2=24 THEN
  291.      BEGIN
  292.           s2:=0;
  293.           m2:=0;
  294.           h2:=0;
  295.      END;
  296.      WRITE(h1); WRITE(' hh ');
  297.      WRITE(m1); WRITE(' mm ');
  298.      WRITE(s1); WRITE(' ss ');
  299.      WRITE(' + 1 segundo son: ');
  300.      WRITE(h2); WRITE(' hh ');
  301.      WRITE(m2); WRITE(' mm ');
  302.      WRITE(s2); WRITE(' ss ');
  303. END.
  1. Escribir un programa en Pascal que calcule el salario semanal de un
  2. trabajador en base a las horas trabajadas y el pago por hora trabajada.
  3. · Horas ordinarias (40 primeras horas de trabajo) – 2.000 Pts/hora
  4. · 1.5 veces precio hora ordinaria
  5. PROGRAM EJER41;
  6.         USES CRT;
  7.         VAR htrab, ptsh:REAL; {Horas trabajadas y pts hora}
  8.         VAR nhextra, hextra:REAL; {Numero de horas extra y horas extra}
  9.         VAR salario_semanal:REAL;
  10. BEGIN
  11.      ClrScr;
  12.      WRITE ('Introduzca las horas trabajadas y las pts/hora que se
  13. cobran ');
  14.      WRITELN ('para calcular el salario semanal.');
  15.      WRITELN ('');
  16.      WRITE ('Horas trabajadas: ');           READLN (htrab);
  17.      WRITE ('Pts/hora: ');                   READLN (ptsh);
  18.      WRITE ('Horas extra: ');                READLN (nhextra);
  19.      WRITELN ('');
  20.      hextra:=nhextra * (ptsh * 1.5);
  21.      Salario_semanal:= (htrab) * (ptsh) + hextra;
  22.      WRITE ('El salario semanal son ',salario_semanal:5:0,' pts.');
  23. END.
  24. PROGRAM EJER41;
  25.         USES CRT;
  26.         VAR pre_hor,hor_tra,hor_ext,sal_sem:REAL;
  27. BEGIN
  28.      ClrScr;
  29.      pre_hor:=2000;
  30.      WRITE('Horas trabajadas '); READLN(hor_tra);
  31.      IF hor_tra<=40 THEN
  32.         sal_sem:=hor_tra*pre_hor
  33.      ELSE
  34.      BEGIN
  35.           hor_ext:=hor_tra-40;
  36.           sal_sem:=(40*pre_hor)+(hor_ext*(pre_hor*1.5));
  37.      END;
  38.      WRITE('Salario semanal: '); WRITELN(sal_sem:5:2);
  39. END.
  40. Escribir un programa en Pascal que realice un bucle con While y muestre
  41. en pantalla del 1 al 10.
  42. PROGRAM EJER42;
  43.         USES CRT;
  44.         VAR x:INTEGER;
  45. BEGIN
  46.      x:=0;
  47.      ClrScr;
  48.      WHILE X <= 10 DO
  49.      BEGIN
  50.           WRITELN (x);
  51.           x:=x+1;
  52.      END;
  53. END.
  54. Escribir un programa en Pascal que realice un bucle con Repeat y muestre
  55. en pantalla del 1 al 10.
  56. PROGRAM EJER43;
  57.         USES CRT;
  58.         VAR x:INTEGER;
  59. BEGIN
  60.      x:=0;
  61.      ClrScr;
  62.      REPEAT
  63.            WRITELN (x);
  64.            x:=x+1;
  65.      UNTIL x=10;
  66. END.
  67. Escribir un programa en Pascal que realice un bucle con For y muestre en
  68. pantalla del 1 al 10.
  69. PROGRAM EJER44;
  70.         USES CRT;
  71.         VAR x:INTEGER;
  72. BEGIN
  73.      ClrScr;
  74.      FOR x:=0 TO 10 DO
  75.               WRITELN (x);
  76. END.
  77. Escribir un programa en Pascal que visualice en pantalla los números
  78. pares entre 1 y 25.
  79. PROGRAM EJER45;
  80.         USES CRT;
  81.         VAR num:INTEGER;
  82. BEGIN
  83.      num:=2;
  84.      ClrScr;
  85.      REPEAT
  86.            WRITELN (num);
  87.            num:= num + 2;
  88.      UNTIL num= 26;
  89. END.
  90. PROGRAM EJER45;
  91.         USES CRT;
  92.         VAR sem:INTEGER;
  93. BEGIN
  94.      ClrScr;
  95.      sem:=1;
  96.      WHILE sem <= 25 DO
  97.      BEGIN
  98.           IF sem mod 2=0 THEN
  99.              WRITELN(sem);
  100.              sem:=sem + 1;
  101.           END;
  102. END.
  103. Escribir un programa en Pascal que visualice en pantalla los números
  104. múltiplos de 5 comprendidos entre 1 y 100.
  105. PROGRAM EJER46;
  106.         USES CRT;
  107.         VAR num:INTEGER;
  108. BEGIN
  109.      num:= 5;
  110.      ClrScr;
  111.      WHILE num <= 100 DO
  112.      BEGIN
  113.           WRITELN (num);
  114.           num:= num + 5;
  115.      END;
  116. END.
  117. PROGRAM EJER46;
  118.         USES CRT;
  119.         VAR sem:INTEGER;
  120. BEGIN
  121.      ClrScr;
  122.      FOR sem:= 1 TO 100 DO
  123.      BEGIN
  124.           IF sem mod 5=0 THEN
  125.              WRITELN(sem);
  126.      END;
  127. END.
  128. Escribir un programa en Pascal que sume los números comprendidos
  129. entre 1 y 10.
  130. PROGRAM EJER47;
  131.         USES CRT;
  132.         VAR num, x:INTEGER;
  133. BEGIN
  134.      ClrScr;
  135.      num:=1;
  136.      x:=1;
  137.      WHILE num <= 10 DO
  138.      BEGIN
  139.           WRITELN (x);
  140.           num:= num + 1;
  141.           x:= x + num;
  142.      END;
  143. END.
  144. Escribir un programa en Pascal que genere la tabla de multiplicar
  145. de un número introducido por el teclado.
  146. PROGRAM EJER48;
  147.         USES CRT;
  148.         VAR tabla, x, num:INTEGER;
  149. BEGIN
  150.      ClrScr;
  151.      WRITE ('Introduzca un numero para hacer su tabla de
  152. multiplicar: ');
  153.      READLN (num);      WRITELN ('');
  154.      REPEAT
  155.            WRITELN (tabla);
  156.            x:= x + 1;
  157.            tabla:= num * x;
  158.      UNTIL x=11;
  159. END.
  160. PROGRAM EJER48;
  161.         USES CRT;
  162.         VAR num,sem:INTEGER;
  163. BEGIN
  164.      ClrScr;
  165.      WRITE('Introduzca un numero entero: ');    READLN(num);
  166.      FOR sem:=1 TO 10 DO
  167.      BEGIN
  168.           WRITE(num); WRITE(' * '); WRITE(sem); WRITE(' = ');
  169.           WRITELN(num*sem);
  170.      END;
  171. END.
  172. Escribir un programa en Pascal que realice la pregunta ¿Desea
  173. continuar S/N? y que no deje de hacerla hasta que el usuario teclee N.
  174. PROGRAM EJER49;
  175.         USES CRT;
  176.         VAR respuesta:CHAR;
  177. BEGIN
  178.      ClrScr;
  179.      REPEAT
  180.          WRITELN ('DESEA CONTINUAR: S/N '); READLN (respuesta);
  181.      UNTIL respuesta='N';
  182. END.
  183. PROGRAM EJER49B;
  184.         USES CRT;
  185.         VAR respuesta:STRING;
  186. BEGIN
  187.      ClrScr;
  188.      REPEAT
  189.          WRITELN ('DESEA CONTINUAR: SI/NO '); READLN (respuesta);
  190.      UNTIL respuesta='NO';
  191. END.
  192. PROGRAM EJER49;
  193.         USES CRT;
  194.         VAR resp:CHAR;
  195. BEGIN
  196.      ClrScr;
  197.      resp:='S';
  198.      WHILE UPCASE(resp)='S' DO
  199.      BEGIN
  200.           WRITE('Desea continuar? '); READLN(resp);
  201.      END;
  202. END.
  203. Escribir un programa en Pascal que calcule cuantos años tarda en
  204. duplicarse un capital depositado al 5% de interés anual.
  205. PROGRAM EJER50;
  206.         USES CRT;
  207.         VAR tiempo:REAL;
  208.         VAR cap_ini,cap_fin:REAL;
  209.         CONST interes = 0.05;
  210. BEGIN
  211.      ClrScr;
  212.      WRITE ('Intruduzca el capital para calcular cuanto tardara ');
  213.      WRITE ('en duplicarse, con un interes del 5%: ');
  214.      READLN (cap_ini);
  215.      WRITELN ('');
  216.      IF cap_ini < 0 THEN
  217.      BEGIN
  218.         WRITE ('No se puede incluir un capital negativo');
  219.         EXIT;
  220.      END;
  221.      tiempo:=0;
  222.      cap_fin:= cap_ini;
  223.      REPEAT
  224.      cap_fin:=cap_fin + (cap_fin * interes);
  225.      tiempo:= tiempo + 1;
  226.      UNTIL cap_fin > (cap_ini * 2);
  227.      WRITELN ('Tardara',tiempo:3:0,' años en duplicarse');
  228.      WRITELN ('Capital final: ',cap_fin:5:2,' pts');
  229. END.
  230. PROGRAM EJER50;
  231.         USES CRT;
  232.         VAR cap_ini,cap_fin:REAL;
  233.         VAR num_year:INTEGER;
  234.         const INTERES=0.05;
  235. BEGIN
  236.      ClrScr;
  237.      num_year:=0;
  238.      WRITE('Capital inicial -----: ');  READLN(cap_ini);
  239.      cap_fin:=cap_ini;
  240.      WHILE cap_fin < (cap_ini*2) DO
  241.      BEGIN
  242.           cap_fin:=cap_fin+(cap_fin*interes);
  243.           num_year:=num_year + 1;
  244.      END;
  245.      WRITE('Capital inicial -----: ');  WRITELN(cap_ini:5:2);
  246.      WRITE('Capital final -------: ');  WRITELN(cap_fin:5:2);
  247.      WRITE('Capital duplicado en ');     WRITE(num_year);  WRITE
  248. (' años');
  249. END.
  1. Escribir un programa que calcule la suma de los números hasta un
  2. número dado (introducido por el usuario).
  3. PROGRAM EJER51;
  4.         USES CRT;
  5.         VAR x, y, num:INTEGER;
  6. BEGIN
  7.      ClrScr;
  8.      WRITE ('Este programa calcula la suma de los numeros
  9. hasta uno ');
  10.      WRITE ('introducido por el usuario: ');
  11.      READLN (num);       WRITELN ('');
  12.      x:=0;
  13.      WHILE num >= 0 DO
  14.      BEGIN
  15.           WRITELN (x);
  16.           x:= x + num;
  17.           num:=num - 1;
  18.      END;
  19. END.
  20. PROGRAM EJER51;
  21.         USES CRT;
  22.         VAR i,num:INTEGER;
  23.         VAR suma:LONGINT;
  24. BEGIN
  25.      ClrScr;
  26.      WRITE('Introduzca un numero -> '); READLN(num);
  27.      FOR i:=0 TO num DO
  28.          suma:=suma+ i;
  29.      WRITE('Suma '); WRITE('0-'); WRITE(num);
  30. WRITE('---->'); WRITE(suma);
  31. END.
  32. Escribir un programa que pida un número y si el que se introduce
  33. por el teclado es menor de 100 que vuelva a solicitarlo.
  34. PROGRAM EJER52;
  35.         USES CRT;
  36.         VAR num:INTEGER;
  37. BEGIN
  38. {Este programa no finaliza hasta que se escribe un numero mayor a 100}
  39.      ClrScr;
  40.      REPEAT
  41.            WRITELN ('Introduzca un numero: ');
  42.            READLN (num);
  43.      UNTIL num > 100;
  44. END.
  45. PROGRAM EJER52;
  46.         USES CRT;
  47.         VAR num:INTEGER;
  48. BEGIN
  49.      ClrScr;
  50.      WRITE('Introduzca un numero -> '); READLN(num);
  51.      WHILE num<=100 DO
  52.      BEGIN
  53.           WRITE('Introduzca un numero -> '); READLN(num);
  54.      END;
  55. END.
  56. Escribir un programa en Pascal que calcule el factorial de un número.
  57. PROGRAM EJER53;
  58.         USES CRT;
  59.         VAR factorial, x, num, y:REAL;
  60. BEGIN
  61.      {Este programa hace el factorial de un numero}
  62.      ClrScr;
  63.      WRITE ('Introduzca un numero para hacer su factorial: ');
  64.      READLN (num);      WRITELN ('');
  65.      x:=1;
  66.      WHILE num > 1 DO
  67.      BEGIN
  68.            x:=x * num;
  69.            num:=num - 1;
  70.            WRITELN (x);
  71.      END;
  72. END.
  73. PROGRAM EJER53;
  74.         USES CRT;
  75.         VAR temp,num,fac:LONGINT;
  76. BEGIN
  77.      ClrScr;
  78.      fac:=1;
  79.      temp:=num;
  80.      WRITE('Introduzca un numero -> '); READLN(num);
  81.      temp:=num;
  82.      WHILE num>=1 DO
  83.      BEGIN
  84.           fac:=fac*num;
  85.           num:=num-1;
  86.      END;
  87.      WRITE('El factorial de '); WRITE(temp); WRITE(' es '); WRITE(fac);
  88. END.
  89. Escribir un programa en Pascal que calcule la media de 5 números
  90. introducidos por el teclado.
  91. PROGRAM EJER54;
  92.         USES CRT;
  93.         VAR n1, n2, n3, n4, n5:REAL;
  94.         VAR resultado:REAL;
  95. BEGIN
  96.      ClrScr;
  97.      WRITELN ('Introduzca 5 numeros para hacer su media');
  98.      WRITELN ('');
  99.      WRITE ('Nø 1: ');  READLN (n1);
  100.      WRITE ('Nø 2: ');  READLN (n2);
  101.      WRITE ('Nø 3: ');  READLN (n3);
  102.      WRITE ('Nø 4: ');  READLN (n4);
  103.      WRITE ('Nø 5: ');  READLN (n5);
  104.      WRITELN ('');
  105.      resultado:= (n1 + n2 + n3 + n4 + n5) / 2;
  106.      WRITE (resultado:5:2);
  107. END.
  108. PROGRAM EJER54;
  109.         USES CRT;
  110.         VAR i:INTEGER;
  111.         VAR num,suma:REAL;
  112. BEGIN
  113.      ClrScr;
  114.      i:=0;
  115.      REPEAT
  116.            WRITE('Introduzca un numero: ');     READLN(num);
  117.            suma:=suma+num;
  118.            i:=i+1;
  119.      UNTIL i=5;
  120.      WRITE('La media es: ');    WRITELN(suma/i:5:2);
  121. END.
  122. Escribir un programa en Pascal que calcule el salario neto semanal
  123. de un trabajador en función del número de horas trabajadas
  124. y la tasa de impuestos de acuerdo a las siguientes hipótesis.
  125. · Las primeras 35 horas se pagan a tarifa normal
  126. · Las horas que pasen de 35 se pagan 1.5 veces la tarifa normal
  127. · Las tasas de impuestos son:
  128.         a: Los primeros 50 dólares son libres de impuestos
  129.         b: Los siguientes 40 dólares tienen un 25% de impuestos
  130.         c: Los restantes de 45% de impuestos
  131. PROGRAM EJER55;
  132.         USES CRT;
  133.         VAR sns:REAL; {salario neto semanal}
  134.         VAR h_trabajadas, h_extra:REAL;
  135.         VAR precio_h, precio_h_extra:REAL;
  136.         VAR total:REAL;
  137.         VAR impuestos0,impuestos25,impuestos45:REAL;
  138.         {Impuestos con cada % correspondiente}
  139. BEGIN
  140.      ClrScr;
  141.      WRITELN ('INTRODUZCA LOS DATOS PARA CALCULAR EL SALARIO
  142. NETO SEMANAL');
  143.      WRITELN ('');
  144.      WRITE ('Las horas trabajadas semanales son 35, las demas
  145. debe ');
  146.      WRITELN ('considerarlas como horas extra. Escriba en
  147. dolares.');
  148.      WRITELN ('');
  149.      WRITE ('Horas trabajadas: ');     READLN (h_trabajadas);
  150.      WRITE ('Horas extra: ');          READLN (h_extra);
  151.      WRITE ('Precio por cada hora: '); READLN (precio_h);
  152.      WRITELN ('');
  153.      precio_h_extra:=precio_h * 1.5;
  154.      sns:=(h_trabajadas * precio_h) + (h_extra * precio_h_extra);
  155.      impuestos0:=0;
  156.      impuestos25:=sns - ((sns - 50) * 0.25);
  157.      impuestos45:=sns - ((sns - 90) * 0.45);
  158.      IF sns <= 50 THEN
  159.      WRITELN ('El salario neto semanal es: ',sns:5:2)
  160.      ELSE IF sns < 90 THEN
  161.      WRITELN ('El salario neto semanal es: ',impuestos25:5:2)
  162.      ELSE IF sns > 90 THEN
  163.      WRITELN ('El salario neto semanal es: ',impuestos45:5:2);
  164. END.
  165. PROGRAM EJER55;
  166.         USES CRT;
  167.         VAR hor_tra,sal_bru,tas_imp,sal_net:real;
  168.         CONST tar_hor=2;
  169.         CONST tasa_imp1=0.25;
  170.         CONST tasa_imp2=0.45;
  171. BEGIN
  172.      ClrScr;
  173.      WRITE('Numero de horas trabajadas: ');     READLN(hor_tra);
  174.      {Calculo del salario bruto}
  175.      IF hor_tra <= 35 THEN
  176.         sal_bru:=hor_tra*tar_hor
  177.      ELSE
  178.         sal_bru:=(35*tar_hor)+((hor_tra-35)*(1.5*tar_hor));
  179.      {Calculo de impuestos}
  180.      IF sal_bru <= 50 THEN
  181.         tas_imp:=0
  182.      ELSE IF sal_bru <= 90 THEN
  183.         tas_imp:=(sal_bru-50)*tasa_imp1
  184.      ELSE
  185.         tas_imp:=(40*tasa_imp1)+((sal_bru-90)*tasa_imp2);
  186.      {Calculo salario neto}
  187.      sal_net:=sal_bru-tas_imp;
  188.      WRITE('Horas trabajadas -------> ');  WRITELN(hor_tra:5:2);
  189.      WRITE('Salario bruto-----------> ');  WRITELN(sal_bru:5:2);
  190.      WRITE('Impuestos---------------> ');  WRITELN(tas_imp:5:2);
  191.      WRITE('Salario neto------------> ');  WRITELN(sal_net:5:2);
  192. END.
  193. Escribir un programa en Pascal que detecte si un número es primo o no.
  194. Un número es primo si sólo es divisible por sí mismo y por la unidad.
  195. Ejemplo:         2,3,4,7,11,17,19 son números primos
  196.                 9 no es número primo, es divisible por 1, 9, 3
  197. El algoritmo para resolver este problema pasa por dividir
  198. sucesivamente el número estudiado por 2,3,4, etc., hasta
  199. el propio número.
  200. {Se puede hacer únicamente dividiento por 2,3 y 5. El 4
  201. tambien se hace en el ejercicio, no se quita para no liar el
  202. ejercicio, ya que son ejercicios para aprender, ya habra
  203. tiempo de perfeccionar nuestro codigo}
  204. PROGRAM EJER56;
  205.         USES CRT;
  206.         VAR num, x:INTEGER;
  207.         VAR primo:INTEGER;
  208. BEGIN
  209.      ClrScr;
  210.      WRITELN ('Introduzca un numero para comprobar si es primo.');
  211.      WRITELN ('');
  212.      x:=1;
  213.      WRITE ('Introduzca el numero: ');        READLN (num);
  214.      WRITELN ('');
  215.      REPEAT
  216.      x:= x + 1;
  217.      primo:= num mod x;
  218.      WRITELN (primo);
  219.      UNTIL x = 5;   WRITELN ('');
  220.      WRITELN ('Si ninguno de los resultados es 0, el numero es primo.');
  221.      WRITELN ('Si alguno es 0, el numero no es primo.');
  222. END.
  223. PROGRAM EJER56;
  224.         USES CRT;
  225.         VAR i,num,flag:INTEGER;
  226. BEGIN
  227.      ClrScr;
  228.      flag:=0;
  229.      WRITE('Introduzca un numero -> '); READLN(num);
  230.      FOR i:=2 TO (num-1) DO
  231.      BEGIN
  232.           IF (num mod i)=0 THEN
  233.           flag:=1;
  234.      END;
  235.      IF flag=1 THEN
  236.      BEGIN
  237.           WRITE(num);   WRITE(' no es un numero primo');
  238.      END
  239.      ELSE
  240.      BEGIN
  241.           WRITE(num);   WRITE(' es un numero primo');
  242.      END;
  243. END.
  244. Escribir un programa en Pascal que calcule la depreciación de un
  245. objeto según el métodode la línea recta. Calcular el número
  246. de años que tarda en hacerse 0.
  247. En este método el valor original del objeto se divide por su vida
  248. (número de años).
  249. El cociente resultanteserá la cantidad en la que el objeto se deprecia
  250. anualmente. Por ejemplo, si un objeto se deprecia 8000 dólares en diez
  251. años, entonces la depreciaciónanual será 8000/10=800 dólares.
  252. Por tanto, el valor del objeto habrá disminuido en 800 dólares cada
  253. año.
  254. Nótese que la depreciación anual es la misma cada año cuando se
  255. utiliza este método.
  256. PROGRAM EJER57;
  257.         USES CRT;
  258.         VAR annos, valor:REAL;
  259.         VAR depreciacionanno:REAL;
  260.         VAR x:INTEGER;
  261. BEGIN
  262.      ClrScr;
  263.      WRITELN ('Escriba los datos para conocer la depreciacion anual');
  264.      WRITELN ('');
  265.      WRITE ('Valor original: ');        READLN (valor);
  266.      WRITE ('Numero de años: ');            READLN (annos);
  267.      WRITELN ('');
  268.      depreciacionanno:= valor / annos;
  269.      x:=0;
  270.      WHILE valor > 0.1 DO
  271.      BEGIN
  272.      valor:=valor - depreciacionanno;
  273.      x:= x + 1;
  274.      WRITELN ('AÑO ',x:2,': ',valor:8:0,' pts.');
  275.      END;
  276. END.
  277. PROGRAM EJER57;
  278.         USES CRT;
  279.         VAR val_ini,val_dep,tas_dep:REAL;
  280.         VAR i,anios:INTEGER;
  281. BEGIN
  282.      ClrScr;
  283.      WRITE('Valor inicial -----> ');    READLN(val_ini);
  284.      WRITE('Numero de años ----> ');    READLN(anios);
  285.      tas_dep:=val_ini/anios;;
  286.      val_dep:=val_ini-tas_dep;
  287.      FOR I:=1 TO anios DO
  288.      BEGIN
  289.           WRITE('A¤o ');
  290.           WRITE(i:3);
  291.           WRITE(' ------ ');
  292.           WRITELN(val_dep:10:2);
  293.           val_dep:=val_dep-tas_dep;
  294.      END;
  295. END.
  296. Escribir un programa en Pascal que calcule la depreciación de
  297. un objeto según el método del balance doblemente declinante.
  298. En este método, el valor del objeto disminuye cada año en un
  299. porcentaje constante.
  300. Por tanto, la verdadera cantidad depreciada, en dólares, variara de
  301. un año al siguiente.
  302. Para obtener el factor de depreciación, dividimos por dos la vida del
  303. objeto. Este factor se multiplica por el valor del objeto al comienzo
  304. de cada año (y no el valor del original del objeto) para obtener la
  305. depreciación anual. Supongamos, por ejemplo que deseamos
  306. depreciar un objeto de 8000 dólares por diez años; el factor
  307. de depreciación será 2/10=0.2.Por tanto, la depreciación
  308. el primer año será 0,2 X 8000 = 1600 dólares, la
  309. depreciación del segundo año será 0,2 X 6400=1280
  310. dólares; la depreciación del tercer año será 0,2
  311. X 5120 = 1024 dólares, y así sucesivamente.
  312. PROGRAM EJER58;
  313.         USES CRT;
  314.         VAR fdd:REAL; {Factor de depreciacion}
  315.         VAR vidaobj:REAL; {Vida del objeto = años}
  316.         VAR depreciacionanno:REAL;
  317.         VAR valorobj:REAL; {Valor del objeto}
  318.         VAR x:INTEGER;
  319. BEGIN
  320.      ClrScr;
  321.      WRITE ('PARA CALCULAR LA DEPRECIACION POR EL METODO DEL
  322. BALANCE ');
  323.      WRITELN ('DOBLEMENTE DECLINANTE ESCRIBA LOS DATOS:');
  324.      WRITELN ('');
  325.      WRITE ('VALOR DEL OBJETO: ');      READLN (valorobj);
  326.      WRITE ('AñOS: ');           READLN (vidaobj);
  327.      WRITELN ('');
  328.      fdd:= 2 / vidaobj;
  329.      x:=1;
  330.      REPEAT
  331.           depreciacionanno:= fdd * valorobj;
  332.           valorobj:=valorobj - depreciacionanno;
  333.           WRITELN ('AñO ',x:2,': ',valorobj:8:2,' pts.');
  334.           x:= x + 1;
  335.      UNTIL x > vidaobj;
  336.      WRITELN ('');
  337.      x:= x - 1;
  338.      WRITELN ('EL VALOR A LOS ',x,' AñOS SERA DE: ',
  339. valorobj:6:2,' pts.');
  340. END.
  341. PROGRAM EJER58;
  342.         USES CRT;
  343.         VAR val_ini,val_dep,coe_dep,tas_dep:REAL;
  344.         VAR i,anios:INTEGER;
  345. BEGIN
  346.      ClrScr;
  347.      WRITE('Valor inicial ----->');         READLN(val_ini);
  348.      WRITE('Numero de años ----> '); READLN(anios);
  349.      coe_dep:=2/anios;
  350.      tas_dep:=val_ini*coe_dep;
  351.      val_dep:=val_ini-tas_dep;
  352.      FOR i:=1 TO anios DO
  353.      BEGIN
  354.           WRITE('A¤o ');
  355.           WRITE(i:3);
  356.           WRITE(' ------ ');
  357.           WRITELN(val_dep:10:2);
  358.           val_dep:=val_dep-(val_dep*coe_dep);
  359.      END;
  360. END.
  361. Escribir un programa que calcule las raíces de la
  362. ecuación (ax2 + bx + c = 0) teniendo en cuenta los siguientes casos:
  363. a. Si a es igual a 0 y b es igual a 0, imprimiremos un mensaje diciendo
  364. que la ecuación es degenerada.
  365. b. Si a es igual a 0 y b no es igual a 0, existe una raíz
  366. única con valor –c/b.
  367. c. En los demás casos, utilizaremos la fórmula siguiente:
  368. xi = (-b ± raizcuadrada(b2 – 4ac))/(2a)
  369. La expresión d = b2 – 4ac se denomina discriminante.
  370. · Si d es mayor o igual que 0 entonces hay dos raíces reales
  371. · Si d es menor que 0 entonces hay dos raíces complejas de la
  372. forma: x+yi,x-yi.
  373. Siendo x el valor –b/2a e y el valor absoluto de
  374. raizcuadrada(b2-4ac)/(2a)
  375. PROGRAM EJER59;
  376.         USES CRT;
  377.         VAR a, b ,c:REAL;
  378.         VAR sp, sn:REAL; {Solucion positiva y negativa}
  379.         VAR d:REAL; {Discriminante}
  380. BEGIN
  381.      ClrScr;
  382.      WRITELN ('Introduzca los valores para calcular la ecuacion de 2º
  383. grado');
  384.      WRITELN ('');
  385.      WRITE ('a: ');     READLN (a);
  386.      WRITE ('b: ');     READLN (b);
  387.      WRITE ('c: ');     READLN (c);
  388.      WRITELN ('');
  389.      IF (a=0) and (b=0)  THEN
  390.      WRITELN ('La ecuacion es degenerada.')
  391.      ELSE IF (a=0) and (b<>0) THEN
  392.      WRITELN ('Existe una raiz con valor -c/b: ',-c/b:5:2)
  393.   ELSE
  394.   BEGIN
  395.      sp:=(-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;
  396.      sn:=(-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;
  397.      d:=sqr(b) - (4 * a * c);
  398.      WRITE ('La solucion positiva es: ');     WRITELN (sp:5:2);
  399.      WRITE ('La solucion negativa es: ');     WRITELN (sn:5:2);
  400.   END;
  401. END.
  402. PROGRAM EJER59;
  403.         USES CRT;
  404.         VAR a,b,c,d,r1,r2,x,y:REAL;
  405. BEGIN
  406.      ClrScr;
  407.      WRITE('Coeficiente a -> ');        READLN(a);
  408.      WRITE('Coeficiente b -> ');        READLN(b);
  409.      WRITE('Coeficiente c -> ');        READLN(c);
  410.      IF (a=0) AND (b=0) THEN
  411.      BEGIN
  412.           WRITE('La ecuacion es degenerada');
  413.           EXIT;
  414.      END
  415.      ELSE IF (a=0) AND (b<>0) THEN
  416.      BEGIN
  417.           r1:=c/b;
  418.           WRITE('r1 = '); WRITELN(r1:5:2);
  419.           EXIT;
  420.      END
  421.      ELSE
  422.      BEGIN
  423.           d:=sqr(b)-4*a*c;
  424.           IF (d>=0) THEN
  425.           BEGIN
  426.                r1:=(-b+sqrt(sqr(b)-4*a*c))/(2*a);
  427.                r2:=(-b-sqrt(sqr(b)-4*a*c))/(2*a);
  428.                WRITE('r1 = ');      WRITELN(r1:5:2);
  429.                WRITE('r2 = ');      WRITELN(r2:5:2);
  430.           END
  431.           ELSE
  432.           BEGIN
  433.                x:=-b/(2*a);
  434.                y:=-b-sqrt(abs(sqr(b)-4*a*c));
  435.                WRITE('r1 = '); WRITE(x:5:2); WRITE(' + '); WRITE(y:5:2);
  436.                WRITELN('i');
  437.                WRITE('r2 = '); WRITE(x:5:2); WRITE(' - '); WRITE(y:5:2);
  438.                WRITELN('i');
  439.           END;
  440.      END;
  441. END.
  442. Escribir un programa en Pascal que sume dos cadenas. (los datos vienen en
  443. el cuerpo del ejercicio).
  444. PROGRAM EJER60;
  445.         USES CRT;
  446.         VAR tit_pel1:STRING;
  447.         VAR tit_pel2:STRING;
  448.         VAR tit_pel3:STRING;
  449. BEGIN
  450.      tit_pel1:='Alien';
  451.      tit_pel2:='Blade ';
  452.      tit_pel3:='Runner';
  453.      ClrScr;
  454.      WRITELN ('TITULOS DE PELICULAS');
  455.      WRITELN (tit_pel1);
  456.      WRITELN (tit_pel2 + tit_pel3);
  457. END.
  458. PROGRAM EJER60;
  459.         USES CRT;
  460.         VAR tit_pel1:STRING;
  461.         VAR tit_pel2:STRING;
  462.         VAR tit_pel3:STRING;
  463. BEGIN
  464.      tit_pel1:='Alien';
  465.      tit_pel2:='Blade';
  466.      tit_pel3:='Runner';
  467.      ClrScr;
  468.      WRITELN('TITULOS DE PELICULAS');
  469.      WRITELN(tit_pel1);
  470.      WRITELN(tit_pel2 + tit_pel3);
  471. END.
  1. A partir de las cadenas de caracteres 70809207 y Q, construir y
  2. visualizar en la pantalla la cadena 70809207-Q.
  3. PROGRAM EJER61;
  4.         USES CRT;
  5.         VAR numero:LONGINT;
  6.         VAR letra:STRING;
  7. BEGIN
  8.      ClrScr;
  9.      numero:=56789312;
  10.      letra:='F';
  11.      WRITE ('EL NUMERO DEL DNI ES: ');
  12.      WRITE (numero,'-',+ letra);
  13. END.
  14. PROGRAM EJER61;
  15.         USES CRT;
  16.         VAR cad1,cad2:STRING;
  17. BEGIN
  18.      cad1:='56789312';
  19.      cad2:='X';
  20.      ClrScr;
  21.      WRITE('NIF:' + cad1 + '-' + cad2);
  22. END.
  23. Transformar la cadena "Esto es una prueba", en la cadena "Esto es
  24. prueba".
  25. Utilizar la función DELETE(S,P,N) que elimina N caracteres de la
  26. cadena S, a partir de la posición P.
  27. PROGRAM EJER62;
  28.         USES CRT;
  29.         VAR frase:STRING;
  30. BEGIN
  31.      ClrScr;
  32.      {Transforma la cadena "Esto es una prueba" en "Esto es prueba"}
  33.      WRITELN ('Este programa suprime un numero determinado de
  34. letras');
  35.      WRITELN ('');
  36.      frase:='Esto es una prueba';
  37.      WRITELN (frase);
  38.      DELETE (frase,9,4);
  39.      WRITELN (frase);
  40. END.
  41. PROGRAM EJER62;
  42.         USES CRT;
  43.         VAR cad1,cad2:STRING;
  44. BEGIN
  45.      cad1:='Esto es una prueba';
  46.      ClrScr;
  47.      WRITELN(cad1);
  48.      DELETE(cad1,9,4);
  49.      WRITELN(cad1);
  50. END.
  51. Transformar la cadena Curso de Pascal en la cadena Curso de
  52. Programación en Pascal.
  53. Utilizar la función INSERT(SO,SD,P) que inserta la cadena SO en
  54. la cadena SD a partir de la posición P.
  55. PROGRAM EJER63;
  56.         USES CRT;
  57.         VAR frase1:STRING;
  58.         VAR frase2:STRING;
  59. BEGIN
  60.      ClrScr;
  61.      {Este programa inserta la frase2 en la frase1}
  62.      WRITELN ('Se introducira la frase2 en la frase1');
  63.      WRITELN ('');
  64.      frase1:='Curso de Pascal';
  65.      frase2:='Programacion en ';
  66.      WRITE ('Frase1: ');      WRITELN (frase1);
  67.      WRITE ('Frase2: ');      WRITELN (frase2);
  68.      WRITELN ('');
  69.      insert (frase2,frase1,10);
  70.      WRITELN (frase1);
  71. END.
  72. PROGRAM EJER63;
  73.         USES CRT;
  74.         VAR cad1,cad2:STRING;
  75. BEGIN
  76.      cad1:='Curso de Pascal';
  77.      cad2:='Programacion en ';
  78.      ClrScr;
  79.      WRITELN(cad1);
  80.      INSERT(cad2,cad1,10);
  81.      WRITELN(cad1);
  82. END.
  83. Transformar los valores 91 y 8631217 almacenados en dos variables
  84. de tipo REAL en la cadena 91-8631217. Previamente transformar los dos
  85. valores numéricos a variables tipo cadena con la función STR(X,S)
  86. que almacena en S, como una cadena alfanumérica, el valor X.
  87. PROGRAM EJER64;
  88.         USES CRT;
  89.         VAR valor1, valor2:REAL;
  90.         VAR valor_1, valor_2:STRING;
  91. BEGIN
  92.      ClrScr;
  93.      valor1:=91;
  94.      valor2:=5550908;
  95.      STR(valor1:5:2, valor_1);
  96.      STR(valor2:10:2, valor_2);
  97.      WRITELN (valor_1,' - ', + valor_2);
  98. END.
  99. PROGRAM EJER64;
  100.         USES CRT;
  101.         VAR val1,val2:REAL;
  102.         VAR cad1,cad2:STRING;
  103. BEGIN
  104.      val1:=91;
  105.      val2:=5550908;
  106.      STR(val1,cad1);
  107.      STR(val2,cad2);
  108.      ClrScr;
  109.      WRITELN(cad1 + '-' + cad2);
  110. END.
  111. Concatenar las cadenas El, hombre, invisible en una sola el hombre
  112. invisible.
  113. Utilizar la función CONCAT (S1,S2,S3...) que retorna la concatenación
  114. de todas las cadenas pasadas como parámetros.
  115. PROGRAM EJER65;
  116.         USES CRT;
  117.         VAR S1, S2, S3:STRING;
  118.         VAR cadena_final:STRING;
  119. BEGIN
  120.      ClrScr;
  121.      S1:='El';
  122.      S2:=' hombre';
  123.      S3:=' invisible';
  124.      cadena_final:=CONCAT(S1,S2,S3);
  125.      WRITE (cadena_final);
  126. END.
  127. PROGRAM EJER65;
  128.         USES CRT;
  129.         VAR cad1,cad2,cad3,cad4,esp:STRING;
  130. BEGIN
  131.      cad1:='el';
  132.      cad2:='hombre';
  133.      cad3:='invisible';
  134.      esp:=' ';
  135.      cad4:=CONCAT(cad1,esp,cad2,esp,cad3);
  136.      ClrScr;
  137.      WRITELN(cad1);
  138.      WRITELN(cad2);
  139.      WRITELN(cad3);
  140.      WRITELN(cad4);
  141. END.
  142. Extraer la cadena SOFIA de la cadena FILOSOIA. Utilizar la función
  143. COPY(S,P,N), que devuelve una subcadena de S, de N caracteres, el
  144. primero de los cuales ocupa la posición P de S.
  145. PROGRAM EJER66;
  146.         USES CRT;
  147.         VAR S1,S2:STRING;
  148. BEGIN
  149.      ClrScr;
  150.      S1:='FILOSOFIA';
  151.      S1:=COPY (S1,5,5); {'SOFIA'}
  152.      WRITE (S1);
  153. END.
  154. PROGRAM EJER66;
  155.         USES CRT;
  156.         VAR cad1,cad2:STRING;
  157. BEGIN
  158.      cad1:='FILOSOFIA';
  159.      cad2:=COPY(cad1,5,5);
  160.      ClrScr;
  161.      WRITELN(cad1);
  162.      WRITELN(cad2);
  163. END.
  164. Obtener la longitud de la cadena esternocleidomastoideo, utilizando
  165. la función LENGTH(S), que devuelve la longitud de la cadena S.
  166. PROGRAM EJER67;
  167.         USES CRT;
  168.         VAR cadena:STRING;
  169. BEGIN
  170.      ClrScr;
  171.      WRITELN ('Introduzca una cadena para saber su longitud:');
  172.      WRITELN ('');
  173.      READLN (cadena);
  174.      WRITELN ('');   WRITE ('La longitud de la cadena es de: ');
  175.      WRITE (LENGTH(cadena),' caracteres');
  176. END.
  177. Obtener la primera posición en la que comienza la subcadena fragi
  178. en la cadena supercalifragilisticoexpialidoso. Utilizar la función
  179. POS(SB,S) que devuelve la posición de la primera aparición de
  180. la subcadena SB en la cadena S.
  181. PROGRAM EJER68;
  182.         USES CRT;
  183.         VAR cadena:STRING;
  184.         VAR subcadena:STRING;
  185.         VAR posi:INTEGER;
  186. BEGIN
  187.      ClrScr;
  188.      cadena:='supercalifragilisticoexpialidoso';
  189.      subcadena:='fragi';
  190.      posi:=POS(subcadena,cadena);
  191.      WRITE (posi);
  192. END.
  193. PROGRAM EJER68;
  194.         USES CRT;
  195.         VAR cad1,cad2:STRING;
  196.         VAR posi:INTEGER;
  197. BEGIN
  198.      cad1:='supercalifragilisticoexpialidoso';
  199.      cad2:='fragi';
  200.      posi:=POS(cad2,cad1);
  201.      ClrScr;
  202.      WRITE('Posicion: ');       WRITELN(posi);
  203. END.
  204. Transformar la cadena Lenguaje Pascal en la cadena LENGUAJE PASCAL.
  205. Utilizar la función UPCASE(C) que transforma un carácter C a
  206. mayúscula.
  207. PROGRAM EJER69;
  208.         USES CRT;
  209.         VAR cadena:STRING;
  210.         VAR i:INTEGER;
  211. BEGIN
  212.      ClrScr;
  213.      cadena:='Lenguaje Pascal';
  214.      i:=0;
  215.      FOR i:=1 TO LENGTH(cadena) DO
  216.      cadena[i]:=UPCASE(cadena[i]);
  217.      WRITE (cadena);
  218.      i:= i + 1;
  219. END.
  220. PROGRAM EJER69;
  221.         USES CRT;
  222.         VAR i:INTEGER;
  223.         VAR cad1:STRING;
  224. BEGIN
  225.      i:=0;
  226.      cad1:='Lenguaje Pascal';
  227.      ClrScr;
  228.      WRITELN(cad1);
  229.      WHILE i <= LENGTH(cad1) DO
  230.      BEGIN
  231.           cad1[i]:=UPCASE(cad1[i]);
  232.           i:=i+1;
  233.      END;
  234.      WRITELN(cad1);
  235. END.
  236. Transformar la cadena "VACA" en la cadena "vaca".
  237. PROGRAM EJER70;
  238.         USES CRT;
  239.         VAR cadena:STRING;
  240.         VAR i, v_ascii:INTEGER;
  241. BEGIN
  242.      ClrScr;
  243.      cadena:='VACA';
  244.      FOR i:=1 TO LENGTH (cadena) DO
  245.      BEGIN
  246.           v_ascii:=ORD (cadena[i]);
  247.           cadena[i]:=(CHR(v_ascii+32));
  248.      END;
  249.      WRITE (cadena);
  250. END.
  251. PROGRAM EJER70;
  252.         USES CRT;
  253.         VAR i,val_asc:INTEGER;
  254.         VAR cad1:STRING;
  255. BEGIN
  256.      i:=0;
  257.      cad1:='VACA';
  258.      ClrScr;
  259.      WRITELN(cad1);
  260.      WHILE i <= LENGTH(cad1) DO
  261.      BEGIN
  262.           val_asc:=ORD(cad1[i]);
  263.           cad1[i]:=(CHR(val_asc+32));
  264.           i:=i+1;
  265.      END;
  266.      WRITELN(cad1);
  267. END.
  1. Escribir un programa en Pascal que lea 4 datos, calcule y visualice
  2. en pantalla su producto, suma y media aritmética.
  3. PROGRAM EJER71;
  4.         USES CRT;
  5.         VAR a,b,c,d:REAL;
  6.         VAR producto,suma,media:REAL;
  7. BEGIN
  8.      ClrScr;
  9.      WRITELN('Introduzca 4 datos para calcular las soluciones:');
  10.      WRITELN ('');
  11.      WRITE ('a: ');     READLN (a);
  12.      WRITE ('b: ');     READLN (b);
  13.      WRITE ('c: ');     READLN (c);
  14.      WRITE ('d: ');     READLN (d);
  15.      WRITELN ('');
  16.      producto:= a * b * c * d;
  17.      suma:= a + b + c + d;
  18.      media:= suma / 2;
  19.      WRITELN ('El valor del producto de los numeros es: ',
  20. producto:10:2);
  21.      WRITELN ('El valor de la suma de los numeros es:   ',
  22. suma:10:2);
  23.      WRITELN ('El valor de la media de los numero ses:  ',
  24. media:10:2);
  25. END.
  26. PROGRAM EJER71;
  27.         USES CRT;
  28.         VAR i:INTEGER;
  29.         VAR dato,producto,suma,media:REAL;
  30. BEGIN
  31.      ClrScr;
  32.      producto:=1;
  33.      suma:=0;
  34.      FOR i:=1 TO 4 DO
  35.      BEGIN
  36.           WRITE('Dato ');  WRITE(i);  WRITE('-> ');
  37.           READLN(dato);
  38.           producto:=producto*dato;
  39.           suma:=suma+dato;
  40.      END;
  41.      media:=suma/i;
  42.      WRITE('Producto:   '); WRITELN(producto:5:2);
  43.      WRITE('Suma:       '); WRITELN(suma:5:2);
  44.      WRITE('Media:      '); WRITELN(media:5:2);
  45. END.
  46. Escribir un programa en Pascal que lea un peso en libras y a
  47. continuación visualice su equivalente en kilos y en gramos.
  48. 1 libra = 0.45 Kg
  49. PROGRAM EJER72;
  50.         USES CRT;
  51.         VAR libras,kilos,gramos:REAL;
  52. BEGIN
  53.      ClrScr;
  54.      WRITE ('Introduzca el numero de libras para pasarlo a kilos y
  55. gramos: ');
  56.      READLN (libras);
  57.      WRITELN ('');
  58.      kilos:= libras * 0.45;
  59.      gramos:= kilos * 1000;
  60.      WRITELN ('Son ',kilos:5:2,' kilos y ',gramos:5:2,' gramos.');
  61. END.
  62. PROGRAM EJER72;
  63.         USES CRT;
  64.         VAR libras:REAL;
  65. BEGIN
  66.      ClrScr;
  67.      WRITE('Libras     ->   '); READLN(libras);
  68.      WRITE('Kilogramos ->   '); WRITELN(libras*0.45:7:2);
  69.      WRITE('Gramos     ->   '); WRITELN((libras*0.45)/1000:7:4);
  70. END.
  71. Escribir un programa en Pascal que calcule y escriba el cuadrado de
  72. 821.
  73. PROGRAM EJER73;
  74.         USES CRT;
  75.         VAR numero, cuadrado:REAL;
  76. BEGIN
  77.      ClrScr;
  78.      WRITE ('Escriba un numero para hacer su cuadrado: ');
  79.      READLN (numero);
  80.      WRITELN ('');
  81.      cuadrado:= sqr(numero);
  82.      WRITELN ('El cuadrado es: ',cuadrado:5:2)
  83. END.
  84. PROGRAM EJER73;
  85.         USES CRT;
  86.         VAR numero:LONGINT;
  87. BEGIN
  88.      ClrScr;
  89.      numero:=821;
  90.      WRITE('Cuadrado de 821: ');   WRITE(sqr(numero));
  91. END.
  92. Escribir un programa en Pascal que escriba los números comprendidos
  93. entre 1 y 1000.
  94. El programa escribirá en la pantalla los números en grupos de20,
  95. solicitando al usuario si quiere o no continuar visualizando el
  96. siguiente grupo de números.
  97. PROGRAM EJER74;
  98.         USES CRT;
  99.         VAR num, flag, x:INTEGER;
  100.         VAR resp:CHAR;
  101. BEGIN
  102.      ClrScr;
  103.      num:=0;
  104.      x:=1;
  105.      FOR num:=1 TO 100 DO
  106.      BEGIN
  107.           IF (num mod 20)= 0 THEN
  108.           flag := x;
  109.           WRITELN (num);
  110.             IF flag = x THEN
  111.             BEGIN
  112.                  WRITE('DESEA CONTINUAR: S/N --> '); READLN(resp);
  113.                  IF UPCASE (resp)<>'S' THEN
  114.                  BEGIN
  115.                  WRITE ('Este programa ha finalizado'); EXIT
  116.                  END;
  117.             END;
  118.           x:= x + 20;
  119.      END;
  120. END.
  121. PROGRAM EJER74;
  122.         USES CRT;
  123.         VAR fila,i:INTEGER;
  124.         VAR resp:CHAR;
  125. BEGIN
  126.      fila:=1;
  127.      ClrScr;
  128.      FOR i:=1 TO 1000 DO
  129.      BEGIN
  130.           WRITELN(i);
  131.           fila:=fila+1;
  132.           IF fila = 21 THEN
  133.           BEGIN
  134.                WRITE('Desea continuar (S/N)?');
  135.                READLN(resp);
  136.                IF UPCASE(resp)='S' THEN
  137.                BEGIN
  138.                     ClrScr;
  139.                     fila:=0;
  140.                     CONTINUE;
  141.                END
  142.                ELSE
  143.                    EXIT;
  144.           END;
  145.      END;
  146. END.
  147. Escribir un programa en Pascal que calcule, independientemente,
  148. la suma y la media de los números pares e impares comprendidos entre
  149. 1 y 200.
  150. PROGRAM EJER75;
  151.         USES CRT;
  152.         VAR media_p, media_i:REAL;
  153.         VAR suma_p, suma_i:LONGINT;
  154.         VAR i, total_p, total_i:LONGINT;
  155. BEGIN
  156.      ClrScr;
  157.      FOR i:=1 TO 200 DO
  158.      BEGIN
  159.           IF (i mod 2)=0 THEN
  160.                 BEGIN
  161.                 suma_p:=suma_p + i;
  162.                 total_p:=total_p + 1;
  163.                 END
  164.           ELSE
  165.                 BEGIN
  166.                 suma_i:=suma_i + i;
  167.                 total_i:=total_i + 1;
  168.                 END;
  169.      END;
  170.          media_i:= suma_i / total_i;
  171.          media_p:= suma_p / total_p;
  172.               WRITELN ('La suma de los impares es:  ',suma_i);
  173.               WRITELN ('La suma de los pares es  :  ',suma_p);
  174.               WRITELN ('La media de los impares es: ',media_i:5:2);
  175.               WRITELN ('La media de los pares es:   ',media_p:5:2);
  176. END.
  177. PROGRAM EJER75;
  178.         USES CRT;
  179.         VAR i,conpar,conimp,sumapar,sumaimp:INTEGER;
  180. BEGIN
  181.      ClrScr;
  182.      sumapar:=0;   sumaimp:=0;   conpar:=0;   conimp:=0;
  183.      FOR i:=1 TO 200 DO
  184.      BEGIN
  185.           IF (i mod 2) = 0 THEN
  186.           BEGIN
  187.                sumapar:=sumapar+i;
  188.                conpar:=conpar+1;
  189.           END
  190.           ELSE
  191.           BEGIN
  192.                sumaimp:=sumaimp+i;
  193.                conimp:=conimp+1;
  194.           END;
  195.      END;
  196.      WRITE('Suma pares:     '); WRITELN(sumapar:7);
  197.      WRITE('Media pares:    '); WRITELN(sumapar div conpar:7);
  198.      WRITE('Suma impares:   '); WRITELN(sumaimp:7);
  199.      WRITE('Media impares:  '); WRITELN(sumaimp div conimp:7);
  200. END.
  201. Escribir un programa en Pascal que calcule el importe de una factura
  202. sabiendo que el IVA a aplicar es del 12% y que si el importe bruto de
  203. la factura es superior a 50.000 pts se debe realizar un descuento del 5%.
  204. PROGRAM EJER76;
  205.         USES CRT;
  206.         VAR i_bruto, i_neto, importe:REAL;
  207.         CONST IVA=0.12;
  208. BEGIN
  209.      ClrScr;
  210.      WRITE ('Escriba el importe bruto: ');   READLN (i_bruto);
  211.      WRITELN ('');
  212.      i_bruto:= i_bruto + (IVA * i_bruto);
  213.      IF i_bruto > 50000 THEN
  214.      BEGIN
  215.      i_neto:= i_bruto - (i_bruto * 0.05);
  216.      WRITE ('El importe neto con descuento del 5% es de: ',
  217. i_neto:5:2,' pts')
  218.      END
  219.      ELSE
  220.      BEGIN
  221.      i_neto:= i_bruto;
  222.      WRITE ('El importe bruto sin descuento es de: ',i_neto:5:2,
  223. ' pts.');
  224.      END;
  225. END.
  226. PROGRAM EJER76;
  227.         USES CRT;
  228.         VAR imp_bruto:REAL;
  229. BEGIN
  230.      ClrScr;
  231.      WRITE('Importe bruto ->  '); READLN(imp_bruto);
  232.      IF imp_bruto <= 50000 THEN
  233.      BEGIN
  234.           WRITE('Importe neto:     ');
  235.           WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
  236.      END
  237.      ELSE
  238.      BEGIN
  239.           WRITE('Importe neto ->  ');
  240.           imp_bruto:=imp_bruto-(imp_bruto*0.05);
  241.           WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
  242.      END;
  243. END.
  244. Escribir un programa en Pascal que calcule la suma de los cuadrados
  245. de los 100 primeros números enteros.
  246. PROGRAM EJER77;
  247.         USES CRT;
  248.         VAR x:INTEGER;
  249.         VAR suma:REAL;
  250. BEGIN
  251.      ClrScr;
  252.      FOR x:=1 TO 100 DO
  253.      BEGIN
  254.      suma:= suma + (sqr(x));
  255.      END;
  256.      WRITE (suma);
  257. END.
  258. PROGRAM EJER77;
  259.         USES CRT;
  260.         VAR i:INTEGER;
  261.         VAR sumacuad:LONGINT;
  262. BEGIN
  263.      ClrScr;
  264.      FOR i:=1 TO 100 DO
  265.          sumacuad:=sumacuad+sqr(i);
  266.      WRITE('Suma de Cuadrados (1-100) ---> ');  WRITE(sumacuad);
  267. END.
  268. Escribir un programa en Pascal que visualice una tabla de conversión de
  269. kilómetros a millas marinas y millas terrestres:
  270. 1 milla marina   =  1852 metros
  271. 1 milla terrestre =  1609 metros
  272. PROGRAM EJER78;
  273.         USES CRT;
  274.         VAR m, m_mar, m_terr:REAL; {metros, millas marinas y
  275.         terrestres}
  276. BEGIN
  277.      ClrScr;
  278.      WRITE ('Introduzca el numero de metros: ');        READLN (m);
  279.      WRITELN ('');
  280.      m_mar:=m/1852;
  281.      m_terr:=m/1609;
  282.      WRITE (m:5:2,' metros son: ',m_mar:5:2,' millas marinas y ');
  283.      WRITE (m_terr:5:2,' millas terrestres');
  284. END.
  285. PROGRAM EJER78;
  286.         USES CRT;
  287.         VAR milla_marina:REAL;
  288.         VAR milla_terrestre:REAL;
  289.         VAR kilometros:INTEGER;
  290. BEGIN
  291.      ClrScr;
  292.      WRITELN('Kilometros' + ' ---- ' + 'Millas M.' + ' ---- '
  293. + 'Millas T.');
  294.      FOR kilometros:=1 TO 10 DO
  295.      BEGIN
  296.           WRITE(kilometros:6);
  297.           WRITE(kilometros/1.852:15:2);
  298.           WRITELN(kilometros/1.609:15:2);
  299.      END;
  300. END.
  301. Escribir un programa en Pascal que lea 10 datos desde el teclado y sume
  302. sólo aquellos que sean negativos.
  303. PROGRAM EJER79;
  304.         USES CRT;
  305.         VAR y, suma:REAL;
  306.         VAR x:INTEGER;
  307. BEGIN
  308.      ClrScr;
  309.      WRITELN ('Debe introducir 10 datos, se sumaran solo los
  310. negativos:');
  311.      WRITELN ('');
  312.      FOR x:=1 TO 10 DO
  313.      BEGIN
  314.           WRITE('Introduzca el dato ',x:2,': ');  READLN (y);
  315.           IF y < 0 THEN suma := suma + y;
  316.      END;
  317.      WRITELN ('');
  318.      WRITE ('El resultado de la suma de los numeros negativos es: ');
  319.      WRITELN (suma:5:2);
  320. END.
  321. PROGRAM EJER79;
  322.         USES CRT;
  323.         VAR i:INTEGER;
  324.         VAR num,sumaneg:REAL;
  325. BEGIN
  326.      ClrScr;
  327.      sumaneg:=0;
  328.      FOR i:=1 TO 10 DO
  329.      BEGIN
  330.           WRITE('Numero '); WRITE(i); WRITE(' -> '); READLN(num);
  331.           IF num < 0 THEN
  332.              sumaneg:=sumaneg+num;
  333.      END;
  334.      WRITE('Suma de negativos:       ');        WRITE(sumaneg);
  335. END.
  336. Escribir un programa en Pascal que calcule el sueldo semanal de un
  337. trabajador a partir del número de horas trabajadas por día y
  338. las siguientes tarifas:
  339. 600 pts/hora Turno de mañana
  340. 800 pts/hora Turno de noche
  341. 1000 pts/hora Turno de días festivos
  342. PROGRAM EJER80;
  343.         USES CRT;
  344.         VAR t_mannana, t_noche, t_festivos:INTEGER;
  345.         VAR total:LONGINT;
  346. BEGIN
  347.      ClrScr;
  348.      WRITE ('Introduzca las horas trabajadas por dia, en cada
  349. turno, ');
  350.      WRITELN (' para calcular el sueldo semanal.');   WRITELN ('');
  351.      WRITE ('Horas del turno de ma¤ana:        ');  READLN
  352. (t_mannana);
  353.      WRITE ('Horas del turno de noche:         ');    READLN
  354. (t_noche);
  355.      WRITE ('Horas del turno de dias festivos: ');   READLN
  356. (t_festivos);
  357.      WRITELN ('');
  358.      total:=(600 * t_mannana) + (800 * t_noche) + (1000 * t_festivos);
  359.      WRITE ('El sueldo semanal es de: ',total);
  360. END.
  361. PROGRAM EJER80;
  362.         USES CRT;
  363.         VAR turno,resp:CHAR;
  364.         VAR numhoras:REAL;
  365. BEGIN
  366.      ClrScr;
  367.      resp:='S';
  368.      WRITE('Turno ? (M/N/F)       ---> ');     READLN(turno);
  369.      WRITE('Numero de horas (dia) ---> ');     READLN(numhoras);
  370.      WHILE UPCASE(resp) = 'S' DO
  371.      BEGIN
  372.           IF UPCASE(turno) = 'M' THEN
  373.           BEGIN
  374.                WRITE('Salario neto: '); WRITELN(numhoras*5*600:7:2);
  375.           END
  376.           ELSE IF UPCASE(turno) = 'N' THEN
  377.           BEGIN
  378.                WRITE('Salario neto: '); WRITELN(numhoras*5*800:7:2);
  379.           END
  380.           ELSE IF UPCASE (turno) = 'F' THEN
  381.           BEGIN
  382.                WRITE('Salario neto: '); WRITELN(numhoras*5*1000:7:2);
  383.           END
  384.           ELSE
  385.               WRITELN('Turno incorrecto');
  386.           WRITE('¨Desea continuar (S/N)? ---> ');
  387.           READLN(resp);
  388.           IF UPCASE(resp) = 'S' THEN
  389.           BEGIN
  390.                ClrScr;
  391.                WRITE('Turno ? (M/N/F)       --->'); READLN(turno);
  392.                WRITE('Numero de horas (dia) --->'); READLN(numhoras);
  393.           END
  394.           ELSE
  395.               EXIT;
  396.      END;
  397. END.
  1. Escribir un programa en Pascal que rellene un array con los números
  2. enteros comprendidos entre 4 y 14.
  3. PROGRAM EJER81;
  4.         USES CRT;
  5.         VAR arr_num:ARRAY [4..14] of INTEGER;
  6.         VAR i:INTEGER;
  7. BEGIN
  8.      ClrScr;
  9.      FOR i:=4 TO 14 DO
  10.          arr_num[i]:=i;
  11.      FOR i:=4 TO 14 DO
  12.      BEGIN
  13.           WRITELN('Numero: ',arr_num[i]);
  14.      END;
  15. END.
  16. PROGRAM EJER81;
  17.         USES CRT;
  18.         VAR arr_num:ARRAY[1..11] of INTEGER;
  19.         VAR i,num:INTEGER;
  20. BEGIN
  21.      ClrScr;
  22.      num:=4;
  23.      FOR i:=1 TO 11 DO
  24.      BEGIN
  25.           arr_num[i]:=num;
  26.           num:=num+1;
  27.      END;
  28.      FOR i:=1 TO 11 DO
  29.      BEGIN
  30.           WRITE('Posici¢n ',i:2, ': '); WRITELN(arr_num[i]:5);
  31.      END;
  32. END.
  33. Escribir un programa en Pascal que rellene un array con los números
  34. pares comprendidos entre 1 y 10.
  35. PROGRAM EJER82;
  36.         USES CRT;
  37.         VAR arr_num:ARRAY [1..10] of INTEGER;
  38.         VAR i, b:INTEGER;
  39. BEGIN
  40.      ClrScr;
  41.      i:=1;
  42.      WHILE i <= 10 DO
  43.      BEGIN
  44.           arr_num[i]:=i;
  45.           IF (i mod 2)=0 THEN
  46.           BEGIN
  47.              WRITELN(arr_num[i]);
  48.           END;
  49.           i:= i + 1;
  50.      END;
  51. END.
  52. PROGRAM EJER82;
  53.         USES CRT;
  54.         VAR arr_num:ARRAY[1..10] of INTEGER;
  55.         VAR i,num:INTEGER;
  56. BEGIN
  57.      ClrScr;
  58.      i:=1;
  59.      num:=1;
  60.      WHILE num<=10 DO
  61.      BEGIN
  62.           IF num mod 2 = 0 THEN
  63.           BEGIN
  64.                arr_num[i]:=num;
  65.                i:=i+1;
  66.           END;
  67.           num:=num+1;
  68.      END;
  69.      arr_num[i]:=3;
  70.      i:=1;
  71.      WHILE arr_num[i] <> 3 DO
  72.      BEGIN
  73.           WRITE('Posicion ',i:2,' : '); WRITELN(arr_num[i]:5);
  74.           i:=i+1;
  75.      END;
  76. END.
  77. Escribir un programa en Pascal que rellene un array con los números
  78. comprendidos entre 25 y 35 divididos por 3.
  79. PROGRAM EJER83;
  80.         USES CRT;
  81.         VAR arr_num:ARRAY [1..11] of REAL;
  82.         VAR i:INTEGER;
  83. BEGIN
  84.      ClrScr;
  85.      FOR i:=25 TO 35 DO
  86.          arr_num[i]:=i;
  87.      FOR i:=25 TO 35 DO
  88.          WRITELN(arr_num[i] / 3:5:2);
  89. END.
  90. PROGRAM EJER83;
  91.         USES CRT;
  92.         VAR arr_num:ARRAY[1..11] of REAL;
  93.         VAR i,num:INTEGER;
  94. BEGIN
  95.      ClrScr;
  96.      i:=1;
  97.      num:=025;
  98.      FOR i:=1 TO 10 DO
  99.      BEGIN
  100.           arr_num[i]:=num/3;
  101.           num:=num+1;
  102.      END;
  103.      i:=1;
  104.      WHILE i <= 10 DO
  105.      BEGIN
  106.           WRITE('Posicion ',i:2, ': '); WRITELN(arr_num[i]:5);
  107.           i:=i+1;
  108.      END;
  109. END.
  110. Escribir un programa en Pascal que rellene un array con cinco
  111. números enteros consecutivos y haga una copia de ese array en otro.
  112. PROGRAM EJER84;
  113.         USES CRT;
  114.         VAR arr_num1,arr_num2:ARRAY [5..10] of INTEGER;
  115.         VAR i:INTEGER;
  116. BEGIN
  117.      ClrScr;
  118.      FOR i:=5 TO 10 DO
  119.      BEGIN
  120.          arr_num1[i]:=i;
  121.          arr_num2[i]:=arr_num1[i];
  122.      END;
  123.      FOR i:=5 TO 10 DO
  124.          WRITELN (arr_num2[i]);
  125. END.
  126. PROGRAM EJER84;
  127.         USES CRT;
  128.         VAR arr_num1,arr_num2:ARRAY[1..5] of INTEGER;
  129.         VAR i,num:INTEGER;
  130. BEGIN
  131.      ClrScr;
  132.      i:=1;
  133.      num:=100;
  134.      FOR i:=1 TO 5 DO
  135.      BEGIN
  136.           arr_num1[i]:=num;
  137.           num:=num+1;
  138.      END;
  139.      FOR i:=1 TO 5 DO
  140.           arr_num2[i]:=arr_num1[i];
  141.      i:=1;
  142.      WRITELN('ARRAY 1   ARRAY 2':30);
  143.      WHILE i <= 5 DO
  144.      BEGIN
  145.           WRITE('Posicion ',i:2, ': ');
  146.           WRITE(arr_num1[i]:5);
  147.           WRITELN(arr_num2[i]:10);
  148.           i:=i+1;
  149.      END;
  150. END.
  151. Escribir un programa en Pascal que rellene un array de 10 elementos
  152. con los números comprendidos entre 23 y 32 y copie en otro array esos
  153. números multiplicados por 0.35.
  154. PROGRAM EJER85;
  155.         USES CRT;
  156.         VAR arr_num1, arr_num2:ARRAY [23..32] of REAL;
  157.         VAR i:INTEGER;
  158. BEGIN
  159.      ClrScr;
  160.      FOR i:=23 TO 32 DO
  161.      BEGIN
  162.           arr_num1[i]:=i;
  163.           arr_num2[i]:=(arr_num1[i] * 0.35);
  164.      END;
  165.      FOR i:=23 TO 32 DO
  166.          WRITELN(arr_num2[i]:5:2);
  167. END.
  168. PROGRAM EJER85;
  169.         USES CRT;
  170.         VAR arr_num1,arr_num2:ARRAY[1..10] of REAL;
  171.         VAR i,num:INTEGER;
  172. BEGIN
  173.      ClrScr;
  174.      i:=1;
  175.      num:=23;
  176.      FOR i:=1 TO 10 DO
  177.      BEGIN
  178.           arr_num1[i]:=num;
  179.           num:=num+1;
  180.      END;
  181.      FOR i:=1 TO 10 DO
  182.          arr_num2[i]:=arr_num1[i]*0.35;
  183.      i:=1;
  184.      WRITELN('ARRAY 1   ARRAY 2':30);
  185.      WHILE i <= 10 DO
  186.      BEGIN
  187.           WRITE('Posicion ',i:2, ': ');
  188.           WRITE(arr_num1[i]:5:2);
  189.           WRITELN(arr_num2[i]:10:2);
  190.           i:=i+1;
  191.      END;
  192. END.
  193. Escribir un programa en Pascal que rellene un array con los veinte
  194. primeros números pares y calcule su suma.
  195. PROGRAM EJER86;
  196.         USES CRT;
  197.         VAR arr_pares:ARRAY [1..40] of INTEGER;
  198.         VAR i, suma:INTEGER;
  199. BEGIN
  200.      ClrScr;
  201.      i:=1;
  202.      FOR i:= 1 TO 40 DO
  203.      BEGIN
  204.           IF (i mod 2) = 0 THEN
  205.           BEGIN
  206.                arr_pares[i]:=i;
  207.                suma:= suma + i;
  208.           END;
  209.      END;
  210.      WRITELN('La suma de los 20 primeros numeros pares es: ',suma);
  211. END.
  212. PROGRAM EJER86;
  213.         USES CRT;
  214.         VAR arr_num:ARRAY[1..25] of INTEGER;
  215.         VAR i,num,suma_par:INTEGER;
  216. BEGIN
  217.      ClrScr;
  218.      i:=1;
  219.      num:=1;
  220.      suma_par:=0;
  221.      WHILE i<=20 DO
  222.      BEGIN
  223.           IF num mod 2 = 0 THEN
  224.           BEGIN
  225.                arr_num[i]:=num;
  226.                i:=i+1;
  227.                suma_par:=suma_par+num;
  228.           END;
  229.           num:=num+1;
  230.      END;
  231.      i:=1;
  232.      WHILE i <= 20 DO
  233.      BEGIN
  234.           WRITE('Posici¢n ',i:2, ': ');
  235.           WRITELN(arr_num[i]:5);
  236.           i:=i+1;
  237.      END;
  238.      WRITE('SUMA: ', suma_par:12);
  239. END.
  240. Escribir un programa en Pascal que solicite cinco números, los
  241. almacene en un array y luego calcule la media aritmética de esos números.
  242. PROGRAM EJER87;
  243.         USES CRT;
  244.         VAR arr_num:ARRAY [1..5] of REAL;
  245.         VAR i, num:INTEGER;
  246.         VAR media:REAL;
  247. BEGIN
  248.      ClrScr;
  249.      WRITELN ('Escriba 5 numeros para hacer su media aritmetica: ');
  250.      FOR i := 1 TO 5 DO
  251.      BEGIN
  252.          READLN(num);
  253.          arr_num[i]:=num;
  254.      END;
  255.      FOR i:=1 TO 5 DO
  256.      media:= media + arr_num[i];
  257.      media:= media / i;
  258.      WRITELN ('La media aritmetica es: ',media:5:2);
  259. END.
  260. PROGRAM EJER87;
  261.         USES CRT;
  262.         VAR arr_num:ARRAY[1..10] of REAL;
  263.         VAR num,suma,media:REAL;
  264.         VAR i:INTEGER;
  265. BEGIN
  266.      ClrScr;
  267.      i:=0;
  268.      suma:=0;
  269.      media:=0;
  270.      WHILE i<5 DO
  271.      BEGIN
  272.           WRITE('Numero ',i+1,'--->');  READLN(num);
  273.           arr_num[i]:=num;
  274.           suma:=suma+num;
  275.           i:=i+1;
  276.      END;
  277.      media:=(suma/i);
  278.      WRITE('Media: ', media:5:2);
  279. END.
  280. Escribir un programa en Pascal que tras asignar los números,
  281. 23, 45, 68, 99, 10, 15 y 4 a un array, determine la posición del array
  282. en la que se encuentra el máximo valor.
  283. PROGRAM EJER88;
  284.         USES CRT;
  285.         CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
  286.         VAR i:INTEGER;
  287. BEGIN
  288.      ClrScr;
  289.      FOR i:=1 TO 7 DO
  290.      BEGIN
  291.      IF arr_num[i]=99 THEN
  292.         WRITE ('La posicion del mayor numero (',arr_num[i],') es:
  293.         ',i);
  294.      END;
  295. END.
  296. PROGRAM EJER88;
  297.         USES CRT;
  298.         CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
  299.         VAR i,posi_max,val_max:INTEGER;
  300. BEGIN
  301.      ClrScr;
  302.      FOR i:=1 TO 7 DO
  303.      BEGIN
  304.           IF arr_num[i] > val_max THEN
  305.           BEGIN
  306.                val_max:=arr_num[i];
  307.                posi_max:=i;
  308.           END;
  309.      END;
  310.      WRITE('VALOR MAXIMO: ', val_max, ' POSICION: ', posi_max);
  311. END.
  312. Escribir un programa en Pascal que tras asignar los números,
  313. -2, 5, 8, -9, 10, 15 y -4 a un array calcule, independientemente, la suma
  314. de los elementos positivos y negativos.
  315. PROGRAM EJER89;
  316.         USES CRT;
  317.         CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
  318.         VAR i:INTEGER;
  319.         VAR suma_p, suma_i:INTEGER;
  320. BEGIN
  321.      ClrScr;
  322.      FOR i:=1 TO 7 DO
  323.      BEGIN
  324.           IF arr_num[i] >= 0 THEN
  325.              suma_p:= suma_p + arr_num[i]
  326.           ELSE IF arr_num[i] < 0 THEN
  327.              suma_i:= suma_i + arr_num[i];
  328.      END;
  329.      WRITELN ('La suma de los numeros pares es:    ',suma_p);
  330.      WRITELN ('La suma de los numeros impares es: ',suma_i);
  331. END.
  332. PROGRAM EJER89;
  333.         USES CRT;
  334.         CONST arr_num:ARRAY[1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
  335.         VAR i,suma_pos,suma_neg:INTEGER;
  336. BEGIN
  337.      ClrScr;
  338.      FOR i:=1 TO 7 DO
  339.      BEGIN
  340.           IF arr_num[i] > 0 THEN
  341.               suma_pos:=suma_pos+arr_num[i]
  342.           ELSE
  343.               suma_neg:=suma_neg+arr_num[i];
  344.      END;
  345.      WRITELN('SUMA POSITIVOS: ', suma_pos);
  346.      WRITELN('SUMA NEGATIVOS: ', suma_neg);
  347. END.
  348. Escribir un programa en Pascal que tras asignar los números,
  349. 23, 45, 68, 99, 10, 15 y 4 a un array, determine las posiciones del array
  350. en las que se encuentran el máximo y el mínimo valor.
  351. PROGRAM EJER90;
  352.         USES CRT;
  353.         CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
  354.         VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER;
  355. BEGIN
  356.      ClrScr;
  357.      mayor:= arr[1];
  358.      menor:= arr[1];
  359.      FOR i:=2 TO 7 DO
  360.      BEGIN
  361.           IF arr[i] >= mayor THEN
  362.           BEGIN
  363.               mayor:= arr[i];
  364.               posi_mayor:=i;
  365.           END
  366.           ELSE
  367.               CONTINUE;
  368.      END;
  369.      WRITELN ('El numero mayor es: ',mayor:3);
  370.      WRITELN ('Su posicion es:     ',posi_mayor:3);
  371.      WRITELN ('');
  372.      FOR i:=2 TO 7 DO
  373.      BEGIN
  374.           IF arr[i] <= menor THEN
  375.           BEGIN
  376.               menor:= arr[i];
  377.               posi_menor:=i;
  378.           END
  379.           ELSE
  380.               CONTINUE;
  381.      END;
  382.      WRITELN ('El numero menor es: ',menor:3);
  383.      WRITELN ('Su posicion es:     ',posi_menor:3);
  384. END.
  385. PROGRAM EJER90;
  386.         USES CRT;
  387.         CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
  388.         VAR i,val_max,val_min,pos_max,pos_min:INTEGER;
  389. BEGIN
  390.      ClrScr;
  391.      val_min:=arr_num[1];
  392.      val_max:=arr_num[1];
  393.      FOR i:=1 TO 7 DO
  394.      BEGIN
  395.           IF arr_num[i] > val_max THEN
  396.           BEGIN
  397.                val_max:=arr_num[i];
  398.                pos_max:=i;
  399.           END;
  400.           IF arr_num[i] < val_min THEN
  401.           BEGIN
  402.                val_min:=arr_num[i];
  403.                pos_min:=i;
  404.           END;
  405.      END;
  406.      WRITELN('VALOR MAXIMO: ', val_max:3, ' POSICIàN: ', pos_max:3);
  407.      WRITELN('VALOR MINIMO: ', val_min:3, ' POSICIàN: ', pos_min:3);
  408. END.

Cajero Automático en Pascal


PROGRAM CAJERO;
USES wincrt;
var
     can,a,b,c,d,e,f,g,h,i,j,k:integer;

begin
writeln('Que cantidad deseas retirar');
readln(can);
a:=can div 100;
b:=can mod 100;
c:=b div 50;
d:=b mod 50;
e:=d div 20;
f:=d mod 20;
g:=f div 10;
h:=f mod 10;
i:=h div 5;
j:=h mod 5;
k:=j div 2;
writeln('La Cantidad en Bs es ');
writeln(a,' de 100');
writeln(c,' de 50');
writeln(e,' de 20');
writeln(g,' de 10');
writeln(i,' de 5');
writeln(k,' de 2');
readln;
end.

PUBLICADO POR RAFA

ETIQUETAS: PASCAL LOGICADEPROGRAMACION

...

Descargar como (para miembros actualizados)  txt (188 Kb)   pdf (561.2 Kb)   docx (138.9 Kb)  
Leer 278 páginas más »
Disponible sólo en Clubensayos.com