Escribir un programa en Pascal
YELIBETHDVTarea14 de Marzo de 2018
69.628 Palabras (279 Páginas)446 Visitas
Página 1 de 279
									
	- Escribir un programa en Pascal que sume dos números:
 - a = 4 b = 3
 - PROGRAM EJER01;
 - var a,b,c:INTEGER;
 - BEGIN
 - {Empezamos con lo básico, un programa que escribe la suma de 2 numeros
 - en pantalla}
 - a:=4;
 - b:=3;
 - {Se asigna un valor cualquiera a las variables "a" y "b"}
 - c:=a+b;
 - WRITE (c); {Muestra en pantalla el valor de la suma}
 - END.
 - PROGRAM EJER1B;
 - USES CRT;
 - VAR a,b,c:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN ('Este programa suma dos numeros:');
 - WRITELN (' ');
 - WRITE ('Introduzca un numero: '); READLN (a);
 - WRITE ('Introduzca otro numero: ' ); READLN (b);
 - WRITELN (' ');
 - c:=a+b;
 - WRITE ('EL RESULTADO ES: ');
 - WRITE (c);
 - END.
 - Escribir un programa en Pascal que sume, reste, multiplique y divida
 - dos números:
 - x = 10 y = 2
 - PROGRAM EJER02;
 - USES CRT; {Nos va a permitir limpiar la pantalla junto con
 - ClrScr}
 - VAR x,y:INTEGER;
 - VAR suma,rest,mult,divi:INTEGER;
 - BEGIN
 - x:=10;
 - y:=2;
 - suma:=x + y;
 - rest:=x - y;
 - mult:=x * y;
 - divi:=x div y;
 - {Con estas 4 variables realizamos las cuatro operaciones aritméticas
 - fundamentales:
 - suma, resta, multiplicación y división}
 - ClrScr; {Limpia la pantalla}
 - WRITE ('SUMA:'); WRITELN (suma);
 - WRITE ('RESTA:'); WRITELN (rest);
 - WRITE ('MULTIPLICACION:'); WRITELN (mult);
 - WRITE ('DIVISION:'); WRITE (divi);
 - END.
 - PROGRAM EJER2B;
 - USES CRT;
 - VAR x,y:REAL;
 - VAR suma,rest,mult:REAL;
 - VAR divi:REAL;
 - {suma, resta, multiplica y divide 2 numeros reales}
 - BEGIN
 - WRITELN ('Este programa suma,resta,multiplica y divide:');
 - WRITELN ('Escriba dos numeros reales');
 - WRITELN (' ');
 - READ (x);
 - READ (y);
 - suma:=x + y;
 - rest:=x - y;
 - mult:=x * y;
 - divi:=x / y;
 - ClrScr;
 - WRITE ('SUMA:'); WRITELN (suma:3:0);
 - WRITE ('RESTA:'); WRITELN (rest:3:0);
 - WRITE ('MULTIPLICACION:'); WRITELN (mult:3:0);
 - WRITE ('DIVISION:'); WRITE (divi:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área de un
 - rectángulo:
 - lado1 = 3 lado2 = 4
 - área del rectángulo=lado1 * lado2
 - PROGRAM EJER03;
 - USES CRT;
 - VAR lado1,lado2:INTEGER;
 - VAR area:INTEGER;
 - BEGIN
 - {Este programa nos va a servir para calcular el area de un rectángulo}
 - lado1:=3;
 - lado2:=4;
 - {Damos valores para las variables}
 - area:=lado1*lado2; {Calculamos el area}
 - ClrScr;
 - WRITE ('AREA DEL RECTANGULO: '); WRITE (area); {Lo mostramos
 - en pantalla}
 - END.
 - PROGRAM EJER3B;
 - USES CRT;
 - VAR lado1,lado2:REAL;
 - VAR area:REAL;
 - BEGIN
 - {Este programa calcula el area de un rectangulo}
 - ClrScr;
 - WRITELN ('Escriba los lados del rectangulo');
 - READ (lado1);
 - READ (lado2);
 - WRITELN (' ');
 - area:=lado1*lado2;
 - WRITE ('AREA DEL RECTANGULO:'); WRITE (area:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área de un
 - triángulo:
 - base = 7 altura = 4 área del triángulo = (base * altura)/2
 - PROGRAM EJER04;
 - USES CRT;
 - VAR base,altura:REAL;
 - VAR area:REAL;
 - BEGIN
 - base:=7;
 - altura:=4;
 - area:=(base * altura) / 2;
 - ClrScr;
 - WRITE ('AREA DEL TRIANGULO: '); WRITE (area:5:2);
 - {:5:2 sirve para dar el formato de salida al numero, 5
 - posiciones y 2 decimales}
 - END.
 - PROGRAM EJER4B;
 - USES CRT;
 - VAR base,altura:REAL;
 - VAR area:REAL;
 - BEGIN
 - {Este programa sirve para calcular el area de un triangulo}
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL AREA DE UN TRIANGULO:');
 - WRITELN (' ');
 - WRITE ('ESCRIBE LA BASE: '); READLN (base);
 - WRITE ('ESCRIBE LA ALTURA: '); READLN (altura);
 - WRITELN (' ');
 - area:=(base * altura) / 2;
 - WRITE ('EL AREA DEL TRIANGULO ES: '); WRITE (area:5:2);
 - END.
 - Escribir un programa que calcule la longitud y el área de una
 - circunferencia:
 - radio = 4 longitud de la circunferencia = 2 * PI * radio
 - área de la circunferencia = PI * radio2
 - PROGRAM EJER05;
 - USES CRT;
 - VAR radio:REAL;
 - VAR longitud,area:REAL;
 - BEGIN
 - longitud:=2*3.1416*radio;
 - area:=3.1416*radio*radio;
 - ClrScr;
 - WRITE ('LONGITUD DE LA CIRCUNFERENCIA:'); WRITELN
 - (longitud:5:2);
 - WRITE ('AREA DE LA CIRCUNFERENCIA:'); WRITE (area:5:2);
 - END.
 - PROGRAM EJER5B;
 - USES CRT;
 - VAR radio:REAL;
 - VAR longitud,area:REAL;
 - BEGIN
 - {Este programa calcula la longitud y el area de una
 - circunferencia}
 - ClrScr;
 - WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA');
 - WRITELN (' ');
 - WRITE ('Escriba el radio: '); READLN (radio);
 - WRITELN (' ');
 - longitud:=2*3.1416*radio;
 - area:=3.1416*radio*radio;
 - WRITE ('LONGITUD DE LA CIRCUNFERENCIA: '); WRITELN
 - (longitud:5:2);
 - WRITE ('AREA DE LA CIRCUNFERENCIA: '); WRITE (area:5:2);
 - END.
 - Escribir un programa en Pascal que calcule la velocidad de un proyectil
 - que recorre 2 Km en 5 minutos. Expresar el resultado en metros/segundo.
 - Velocidad = espacio/tiempo
 - PROGRAM EJER06;
 - USES CRT;
 - VAR espacio,tiempo:REAL;
 - VAR velocidad:REAL;
 - BEGIN
 - espacio:=2;
 - tiempo:=5;
 - velocidad:=(espacio*1000)/(tiempo*60);
 - ClrScr;
 - WRITE ('VELOCIDAD DEL PROYECTIL:');
 - WRITE (velocidad:5:2); WRITE ('m/s');
 - END.
 - PROGRAM EJER6B;
 - USES CRT;
 - VAR espacio,tiempo,espacio2,tiempo2:REAL;
 - VAR velocidad,velocidad2:REAL;
 - BEGIN
 - {Este programa calcula la velocidad de un cuerpo}
 - ClrScr;
 - WRITE ('Para calcular la velocidad debe escribirlo en
 - unidades ');
 - WRITE ('del sistema internacional');
 - WRITELN (' ');
 - WRITE ('Escriba el espacio recorrido: '); READLN (espacio);
 - WRITE ('Escriba el tiempo transcurrido: '); READLN (tiempo);
 - WRITELN (' ');
 - velocidad:=(espacio)/(tiempo);
 - WRITE ('VELOCIDAD DEL PROYECTIL: ');
 - WRITE (velocidad:5:2); WRITELN (' m/s');
 - WRITELN (' ');
 - WRITELN ('Si lo desea en Km/h introduzca los datos: ');
 - WRITELN (' ');
 - WRITE ('Escriba el espacio recorrido: '); READLN (espacio2);
 - WRITE ('Escriba el tiempo transcurrido: '); READLN (tiempo2);
 - WRITELN (' ');
 - velocidad2:=(espacio2)/(tiempo2);
 - WRITE (velocidad2:5:2); WRITE (' Km/h ');
 - END.
 - Escribir un programa en Pascal que calcule el volumen de una esfera:
 - radio = 3 volumen de la esfera = 4/3 * PI * radio3
 - PROGRAM EJER07;
 - USES CRT;
 - VAR radio:REAL;
 - VAR volumen:REAL;
 - BEGIN
 - radio:=3;
 - volumen:=(4/3)*3.1416*(radio*radio*radio);
 - ClrScr;
 - WRITE ('VOLUMEN DE LA ESFERA:'); WRITE(volumen);
 - END.
 - PROGRAM EJER7B;
 - USES CRT;
 - VAR radio:REAL;
 - VAR volumen:REAL;
 - BEGIN
 - {Este programa calcula el volumen de una esfera}
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL VOLUMEN DE LA ESFERA ESCRIBA EL
 - RADIO: ');
 - READLN (radio);
 - volumen:=(4/3)*3.1416*(radio*radio*radio);
 - WRITE ('VOLUMEN DE LA ESFERA: '); WRITE(volumen:5:2);
 - END.
 - Escribir un programa en Pascal que evalúe la siguiente expresión:
 - (a+7*c)/(b+2-a)+2*b a = 3,b = 6,c = 4
 - PROGRAM EJER08;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - a:=3;
 - b:=6;
 - c:=4;
 - resultado:=(a+7*c)/(b+2-a)+2*b;
 - ClrScr;
 - WRITE ('RESULTADO:'); WRITE (resultado:5);
 - END.
 - PROGRAM EJER8B;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - {Este programa calcula una expresion algebraica}
 - ClrScr;
 - WRITELN ('Este programa sirve para calcular la siguiente
 - expresion:');
 - WRITELN ('(a+7*c)/(b+2-a)+2*b');
 - WRITELN (' ');
 - WRITE ('Introduzca a: '); READLN (a);
 - WRITE ('Introduzca b: '); READLN (b);
 - WRITE ('Introduzca c: '); READLN (c);
 - resultado:=(a+7*c)/(b+2-a)+2*b;
 - WRITELN (' ');
 - WRITE ('RESULTADO: '); WRITE (resultado:5:2);
 - END.
 - Escribir un programa en Pascal que evalúe la siguiente expresión:
 - (a+5) * 3 / 2 * b - b a = 3,b = 6
 - PROGRAM EJER09;
 - USES CRT;
 - VAR a,b:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - a:=3;
 - b:=6;
 - resultado:=((a+5)*3) / (2*b-b);
 - ClrScr;
 - WRITE ('RESULTADO: '); WRITE(resultado:5:2);
 - END.
 - PROGRAM EJER9B;
 - USES CRT;
 - VAR a,b:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - {Este programa calcula el resultado de una expresion algebraica}
 - ClrScr;
 - WRITE ('PARA CALCULAR LA SIGUIENTE EXPRESION: ');
 - WRITELN ('((a+5)*3) / (2*b-b)');
 - WRITELN (' ');
 - WRITE ('Escriba a: '); READ (a);
 - WRITE ('Escriba b: '); READ (b);
 - WRITELN (' ');
 - resultado:=((a+5)*3) / (2*b-b);
 - WRITE ('RESULTADO: '); WRITE(resultado:5:2);
 - END.
 - Escribir un programa en Pascal que evalúe la siguiente expresión:
 - (-b + raízcuadrada(b2-4*a*c)/(2*a)
 - (es la solución positiva de una ecuación de 2º grado)
 - PROGRAM EJER10;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - a:=6;
 - b:=6;
 - c:=1;
 - resultado:=(-b+sqrt(sqr (b) - 4*a*c))/(2*a);
 - ClrScr;
 - WRITE ('RESULTADO:'); WRITE(resultado:5:2);
 - END.
 - PROGRAM EJER10B;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - {Calcula la incognita positiva de una ecuacion de 2º grado}
 - ClrScr;
 - WRITE ('Para calcular la incognita positiva de una ecuacion');
 - WRITE (' de segundo grado escriba todas las variables:');
 - WRITELN (' ');
 - WRITELN (' ');
 - WRITE ('Escriba a: '); READLN (a);
 - WRITE ('Escriba b; '); READLN (b);
 - WRITE ('Escriba c; '); READLN (c);
 - WRITELN (' ');
 - resultado:=(-b +sqrt(sqr (b) - 4*a*c))/(2*a);
 - WRITE ('RESULTADO: '); WRITE(resultado:5:2);
 - END.
 
- Escribir un programa en Pascal que calcule el área y el volumen
 - de un cilindro:
 - A = (2 * (PI * r2)) + ((2 * PI * r) * h)
 - V = (PI * r2) * h
 - PROGRAM EJER11;
 - USES CRT;
 - VAR radio,altura:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - radio:=3;
 - altura:=6;
 - area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *
 - radio) * altura);
 - volumen:= (3.1416 * radio * radio) * altura;
 - {podriamos cambiar "radio*radio" por "sqr(radio)" para hacer el
 - cuadrado del radio}
 - ClrScr;
 - WRITE ('AREA DEL CILINDRO:'); WRITE (area); WRITELN (' m2');
 - WRITE ('VOLUMEN DEL CILINDRO:'); WRITE (volumen); WRITE (' m3');
 - END.
 - PROGRAM EJER11B;
 - USES CRT;
 - VAR radio,altura:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - {Calcula el area y el volumen de un cilindro}
 - ClrScr;
 - WRITELN ('CALCULA EL AREA Y VOLUMEN DE UN CILINDRO');
 - WRITELN (' ');
 - WRITE ('Escriba el radio: '); READLN (radio);
 - WRITE ('Escriba la altura: '); READLN (altura);
 - WRITELN (' ');
 - area:= (2 * (3.1416 * radio * radio)) + ((2 * 3.1416 *
 - radio) * altura);
 - volumen:= (3.1416 * radio * radio) * altura;
 - WRITE ('AREA DEL CILINDRO: '); WRITE (area:5:2); WRITELN
 - (' m2');
 - WRITE ('VOLUMEN DEL CILINDRO: '); WRITE (volumen:5:2); WRITE
 - (' m3');
 - END.
 - PROGRAM EJER11;
 - USES CRT;
 - VAR r,h:REAL;
 - VAR a,v:REAL;
 - BEGIN
 - {AREA Y VOLUMEN DE UN CILINDRO}
 - ClrScr;
 - WRITE('RADIO DEL CILINDRO: '); READLN(r);
 - WRITE('ALTURA DEL CILINDRO: '); READLN(h);
 - a:=(2*(3.1416*sqr(r))) + ((2*3.1416*r)*h);
 - v:=(3.1416*sqr(2))*h;
 - ClrScr;
 - WRITE('AREA DEL CILINDRO: '); WRITELN(a:5:2);
 - WRITE('VOLUMEN DEL CILINDRO: '); WRITELN(v:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen
 - de un hexaedro
 - A = (l*l) * 6
 - V = l3
 - PROGRAM EJER12;
 - USES CRT;
 - VAR lado:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - lado:=4;
 - area:= (lado * lado) * 6;
 - volumen:= sqr(lado) * lado;
 - ClrScr;
 - WRITE ('AREA DEL HEXAEDRO:'); WRITE (area); WRITELN
 - (' m2');
 - WRITE ('VOLUMEN DEL HEXAEDRO:'); WRITE (volumen); WRITE (' m3');
 - END.
 - PROGRAM EJER12B;
 - USES CRT;
 - VAR lado:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('INTRODUCE EL LADO DEL HEXAEDRO: ');
 - READLN (lado);
 - WRITELN (' ');
 - area:= (lado * lado) * 6;
 - volumen:= sqr(lado) * lado;
 - WRITE ('AREA DEL HEXAEDRO: '); WRITE (area:5:2); WRITELN
 - (' m2');
 - WRITE ('VOLUMEN DEL HEXAEDRO: '); WRITE (volumen:5:2); WRITE
 - (' m3');
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen
 - de un prisma
 - A = (2 *(l1 * l2)) + (2 * (l1 * l3)) + (2*(l2 * l3))
 - V = l1 * l2 * l3
 - PROGRAM EJER13;
 - USES CRT;
 - VAR l1,l2,l3:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - l1:=3;
 - l2:=6;
 - l3:=4;
 - area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));
 - volumen:= l1 * l2 * l3;
 - ClrScr;
 - WRITE ('AREA DEL PRISMA:'); WRITELN(area);
 - WRITE ('VOLUMEN DEL PRISMA:'); WRITE (volumen);
 - END.
 - PROGRAM EJER13B;
 - USES CRT;
 - VAR l1,l2,l3:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - {Calcula el area y volumen de un prisma}
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL AREA Y EL VOLUMEN DEL PRISMA,
 - ESCRIBA: ');
 - WRITELN (' ');
 - WRITE ('Lado1: '); READLN (l1);
 - WRITE ('Lado2: '); READLN (l2);
 - WRITE ('Lado3: '); READLN (l3);
 - WRITELN (' ');
 - area:=2 * (l1 * l2)+(2 * (l1 * l3)) + (2* (l2 * l3));
 - volumen:= l1 * l2 * l3;
 - WRITE ('AREA DEL PRISMA: '); WRITELN (area:5:2);
 - WRITE ('VOLUMEN DEL PRISMA: '); WRITE (volumen:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen
 - de un tetraedro
 - A = a2 * raízcuadrada(3)
 - V = (a3/12) * raízcuadrada (2)
 - PROGRAM EJER14;
 - USES CRT;
 - VAR arista:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - arista:=5;
 - area:= sqr(arista) * sqrt(3);
 - volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
 - WRITE ('AREA DEL TETRAEDRO: '); WRITELN (area);
 - WRITE ('VOLUMEN DEL TETRAEDRO: '); WRITE (volumen);
 - END.
 - PROGRAM EJER14B;
 - USES CRT;
 - VAR arista:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - {Calcula el area y el volumen de un octaedro}
 - WRITELN ('SI DESEA CALCULAR EL AREA Y EL VOLUMEN DE UN
 - TETRAEDRO: ');
 - WRITELN (' ');
 - WRITE ('INTRODUZCA EL VALOR DE SU ARISTA: '); READLN (arista);
 - WRITELN (' ');
 - area:= sqr(arista) * sqrt(3);
 - volumen:= ((sqr(arista) * arista) / 12) * sqrt(2);
 - WRITE ('AREA DEL TETRAEDRO: '); WRITELN (area:5:2);
 - WRITE ('VOLUMEN DEL TETRAEDRO: '); WRITE (volumen:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen de
 - un octaedro
 - A = 2 * a2 * raízcuadrada(3)
 - V=(a3/3) * raízcuadrada(2)
 - PROGRAM EJER15;
 - USES CRT;
 - VAR arista:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - arista:=4;
 - area:= 2 * sqr(arista) * sqrt(3);
 - volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);
 - WRITE ('AREA DEL OCTAEDRO: '); WRITELN(area);
 - WRITE ('VOLUMEN DEL OCTAEDRO: '); WRITE(volumen);
 - END.
 - PROGRAM EJER15B;
 - USES CRT;
 - VAR arista:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - {Sirve para calcular el area y el volumen de un tetraedro}
 - WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN TETRAEDRO: ');
 - WRITE ('ESCRIBA EL VALOR DE LA ARISTA: '); READLN (arista);
 - WRITELN (' ');
 - area:= 2 * sqr(arista) * sqrt(3);
 - volumen:= ((sqr(arista) * arista) / 3) * sqrt(2);
 - WRITE ('AREA DEL OCTAEDRO: '); WRITELN (area:5:2);
 - WRITE ('VOLUMEN DEL OCTAEDRO: '); WRITE (volumen:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen
 - de un cono
 - A = (PI * r * l)+ (PI * r2)
 - V = (PI * r2 * h)/3
 - PROGRAM EJER16;
 - USES CRT;
 - VAR radio,lado,altura:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - radio:=6;
 - lado:=3;
 - altura:=8;
 - area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
 - volumen:= (3.1416 * sqr(radio) * altura) / 3;
 - WRITE ('AREA DEL CONO: '); WRITELN (area);
 - WRITE ('VOLUMEN DEL CONO: '); WRITE (volumen);
 - END.
 - PROGRAM EJER16B;
 - USES CRT;
 - VAR radio,lado,altura:REAL;
 - VAR area,volumen:REAL;
 - BEGIN
 - {Se utiliza para calcular el area y volumen de un cono}
 - WRITELN ('Para calcular el area y el volumen de un cono: ');
 - WRITELN (' ');
 - WRITE ('Escriba el valor del radio: '); READLN (radio);
 - WRITE ('Escriba el valor del lado: '); READLN (lado);
 - WRITE ('Escriba el valor de la altura: '); READLN (altura);
 - WRITELN (' ');
 - area:= (3.1416 * radio * lado) + (3.1416 * sqr(radio));
 - volumen:= (3.1416 * sqr(radio) * altura) / 3;
 - WRITE ('AREA DEL CONO: '); WRITELN (area:5:2);
 - WRITE ('VOLUMEN DEL CONO: '); WRITE (volumen:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el volumen de un elipsoide
 - V = (4/3) * PI * a * b *c
 - PROGRAM EJER17;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR volumen:REAL;
 - BEGIN
 - a:=3;
 - b:=5;
 - c:=4;
 - volumen:= (4/3) * 3.1416 * a * b * c;
 - WRITE ('VOLUMEN DEL ELIPSOIDE:'); WRITE (volumen);
 - END.
 - PROGRAM EJER17B;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR volumen:REAL;
 - BEGIN
 - {Calcula el volumen de un elipsoide}
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL VOLUMEN DE UN ELIPSOIDE ESCRIBA: ');
 - WRITELN (' ');
 - WRITE ('A: '); READLN (a);
 - WRITE ('B: '); READLN (b);
 - WRITE ('C: '); READLN (c);
 - volumen:= (4/3) * 3.1416 * a * b * c;
 - WRITE ('VOLUMEN DEL ELIPSOIDE: '); WRITE (volumen:5:2);
 - END.
 - Escribir un programa en Pascal que calcule las raíces de una
 - ecuación de 2º grado
 - PROGRAM EJER18;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR x1,x2:REAL;
 - BEGIN
 - a:=6;
 - b:=6;
 - c:=1;
 - x1:= (-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;
 - x2:= (-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;
 - WRITE ('SOLUCION 1:'); WRITELN (x1);
 - WRITE ('SOLUCION 2:'); WRITE (x2);
 - END.
 - PROGRAM EJER18B;
 - USES CRT;
 - VAR a,b,c:REAL;
 - VAR resultado1,resultado2:REAL;
 - BEGIN
 - {Calcula ecuaciones de segundo grado}
 - ClrScr;
 - WRITE ('ESTE PROGRAMA SIRVE PARA CALCULAR ECUACIONES ');
 - WRITELN ('DE SEGUNDO GRADO');
 - WRITELN (' ');
 - WRITELN ('Introduzca: a, b y c: ');
 - WRITELN (' ');
 - READLN (a);
 - READLN (b);
 - READLN (c);
 - resultado1:=(-b + sqrt(sqr(b) - 4*a*c)) / (2*a);
 - resultado2:=(-b - sqrt(sqr(b) - 4*a*c)) / (2*a);
 - WRITELN ('RESULTADO DE LA EXPRESION: ');
 - WRITE ('VALOR 1: '); WRITELN (resultado1:5:2);
 - WRITE ('VALOR 2; '); WRITE (resultado2:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el área y el volumen
 - de un cilindro:
 - radio = 3
 - altura = 4
 - PROGRAM EJER19;
 - USES CRT;
 - VAR radio, altura:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - radio:=3;
 - altura:=4;
 - area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio)
 - * altura);
 - volumen:= (3.1416 * sqr(radio)) * altura;
 - ClrScr;
 - WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
 - WRITE ('EL VOLUMEN ES: '); WRITE (volumen:6:2);
 - END.
 - PROGRAM EJER19B;
 - USES CRT;
 - VAR radio, altura:REAL;
 - VAR area, volumen:REAL;
 - BEGIN
 - {Con este programa podremos calcular el area y el volumen
 - de un cilindro}
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL AREA Y VOLUMEN DE UN CILINDRO: ');
 - WRITELN (' ');
 - WRITE ('ESCRIBA EL RADIO- '); READLN (radio);
 - WRITE ('ESCRIBA LA ALTURA- '); READLN (altura);
 - WRITELN (' ');
 - area:= 2 * (3.1416 * sqr(radio)) + ((2 * 3.1416 * radio)
 - * altura);
 - volumen:= (3.1416 * sqr(radio)) * altura;
 - WRITE ('EL AREA DEL CILINDRO ES: '); WRITELN (area:6:2);
 - WRITE ('EL VOLUMEN ES: '); WRITE (volumen:6:2);
 - END.
 - Escribir un programa en Pascal que calcule la hipotenusa de un triángulo
 - rectángulo
 - cateto 1 = 5
 - cateto 2 = 5
 - PROGRAM EJER20;
 - USES CRT;
 - VAR cateto1,cateto2:REAL;
 - VAR hipotenusa:REAL;
 - BEGIN
 - cateto1:=5;
 - cateto2:=5;
 - hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
 - ClrScr;
 - WRITE ('HIPOTENUSA DEL TRIANGULO: ');
 - WRITE (hipotenusa:5:2); WRITE (' cm');
 - END.
 - PROGRAM EJER20B;
 - USES CRT;
 - VAR cateto1,cateto2:REAL;
 - VAR hipotenusa:REAL;
 - BEGIN
 - {Con este programa podremos calcular la hipotenusa de un
 - triangulo}
 - ClrScr;
 - WRITE ('PARA CALCULAR LA HIPOTENUSA DEL TRIANGULO ');
 - WRITELN ('ESCRIBA LOS CATETOS: ');
 - WRITELN (' ');
 - WRITE ('Cateto1: '); READLN (cateto1);
 - WRITE ('Cateto2: '); READLN (cateto2);
 - WRITELN (' ');
 - hipotenusa:= sqrt(sqr(cateto1) + sqr(cateto2));
 - WRITE ('HIPOTENUSA DEL TRIANGULO: ');
 - WRITE (hipotenusa:5:2);
 - END.
 - PROGRAM EJER20;
 - USES CRT;
 - VAR c1,c2,h:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca cateto_1: '); READLN (c1);
 - WRITE('Introduzca cateto_2: '); READLN (c2);
 - h:=sqrt(sqr(c1)+sqr(c2));
 - WRITE('Cateto_1 ------> '); WRITELN (c1:5:2);
 - WRITE('Cateto_2 ------> '); WRITELN (c2:5:2);
 - WRITE('Hipotenusa ----> '); WRITELN (h:5:2);
 - END.
 
Escribir un programa en Pascal que calcula el equivalente en grados- Fahrenheit o Celsius de las siguientes temperaturas.
 - Temperatura 1 = 32º Fahrenheit
 - Temperatura 2 = 10 º Celsius
 - {Regla de 3: Celsius / 5 = (Fahrenheit – 32) / 9}
 - PROGRAM EJER21;
 - USES CRT;
 - VAR T1,T2:REAL;
 - VAR T1C,T2F:REAL;
 - BEGIN
 - T1:=32;
 - T2:=10;
 - T1C:=T1 - 32;
 - T2F:=T2 + 32;
 - ClrScr;
 - WRITE ('TEMPERATURA EQUIVALENTE: ');
 - WRITE (T1:3:0); WRITE ('º Fahrenheit - ');
 - WRITE (T1C:3:0); WRITELN ('º Celsius');
 - WRITE ('TEMPERATURA EQUIVALENTE: ');
 - WRITE (T2:3:0); WRITE ('º Celsius - ');
 - WRITE (T2F:3:0); WRITE ('º Fahrenheit');
 - END.
 - PROGRAM EJER21B;
 - USES CRT;
 - VAR Fahrenheit, Celsius:REAL;
 - VAR T1C,T2F:REAL;
 - VAR respuesta:CHAR;
 - BEGIN
 - ClrScr;
 - REPEAT
 - BEGIN
 - WRITE ('¨DESEA PASARLO A FAHRENHEIT O CELSIUS? F/C: ');
 - READLN (respuesta); WRITELN ('');
 - END;
 - UNTIL (respuesta='C') OR (respuesta='F') OR
 - (respuesta='c') OR (respuesta='f');
 - IF UPCASE(respuesta)='F' THEN
 - BEGIN
 - WRITELN ('Introduzca los grados para pasar a Fahrenheit: ');
 - WRITE ('Celsius: '); READLN (Celsius);
 - Fahrenheit:= ((9 * Celsius) / 5) + 32;
 - WRITE (Fahrenheit:5:2,' grados Fahrenheit.');
 - WRITELN (' ');
 - END
 - ELSE IF UPCASE (respuesta)='C' THEN
 - BEGIN
 - WRITELN ('Introduzca los grados para pasar a Celsius: ');
 - WRITE ('Fahrenheit: '); READLN (Fahrenheit);
 - Celsius:= ((Fahrenheit - 32) / 9) * 5;
 - WRITE (Celsius:5:2,' grados Celsius.');
 - END;
 - END.
 - PROGRAM EJER21;
 - USES CRT;
 - VAR t_C,t_F:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca temperatura: (ºCelsius): ');
 - READLN(t_C);
 - t_F:=((t_C*9)/5)+32;
 - ClrScr;
 - WRITE(t_C:5:2); WRITE(' ºCelsius equivalen a ');
 - WRITE(t_F:5:2); WRITE(' ºFahrenheit');
 - END.
 - Escribir un programa en Pascal que calcule el número de
 - horas, minutos y segundos que hay en 3700 segundos.
 - PROGRAM EJER22;
 - USES CRT;
 - VAR horas, minutos, segundos:INTEGER;
 - BEGIN
 - horas:= 3700 div 3600;
 - minutos:= (3700 mod 3600) div 60;
 - segundos:= (3700 mod 3600) - (minutos * 60);
 - ClrScr;
 - WRITELN ('EN 3700 SEGUNDOS HAY: ');
 - WRITE (horas,' hora',' y ',minutos,' minutos ', segundos,
 - ' segundos');
 - END.
 - PROGRAM EJER22B;
 - USES CRT;
 - VAR horas, minutos, segundos:INTEGER;
 - VAR cantidad:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba los segundos para transformarlo a horas,');
 - WRITELN (' minutos y segundos');
 - READLN (cantidad); {Es el numero de segundos que se introducen}
 - WRITELN ('');
 - horas:= cantidad div 3600;
 - minutos:= (cantidad mod 3600) div 60;
 - segundos:= (cantidad mod 3600) - (minutos * 60);
 - {Los segundos son: las horas - los minutos pasados a segundos}
 - WRITELN ('EN ' ,cantidad, ' SEGUNDOS HAY: ');
 - WRITE (horas,' horas ',minutos,' minutos ',segundos,'
 - segundos');
 - END.
 - PROGRAM EJER22;
 - USES CRT;
 - VAR h,m,s1,s2:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca segundos: '); READLN(s1);
 - h:=s1 div 3600;
 - s2:=s1 mod 3600;
 - m:=s2 div 60;
 - s2:=s2 mod 60;
 - ClrScr;
 - WRITE(s1); WRITE(' segundos son -----> ');
 - WRITE(h); WRITE(' horas ');
 - WRITE(m); WRITE(' minutos ');
 - WRITE(s2); WRITE( 'segundos ');
 - END.
 - Escribir un programa en Pascal que calcule el capital producido
 - por un capital de 1.000.000 de pesetas, al cabo de un año depositado a
 - un interés del 2%.
 - PROGRAM EJER23;
 - USES CRT;7
 - VAR capital,tiempo,interes:REAL;
 - VAR capitalproducido:REAL;
 - BEGIN
 - capital:=1000000;
 - tiempo:=1;
 - interes:=2;
 - capitalproducido:= capital * 0.02;
 - ClrScr;
 - WRITE ('En un año se producira un capital de ');
 - WRITE (capitalproducido:5:2); WRITE (' pesetas');
 - END.
 - PROGRAM EJER23B;
 - USES CRT;
 - VAR capital,tiempo,interes:REAL;
 - VAR capitalproducido:REAL;
 - BEGIN
 - ClrScr;
 - WRITELN ('PARA CALCULAR EL CAPITAL PRODUCIDO INTRODUZCA ');
 - WRITELN ('');
 - WRITE ('Capital: '); READLN (capital);
 - WRITE ('Tiempo: '); READLN (tiempo);
 - WRITE ('Interes:'); READLN (interes);
 - WRITELN ('');
 - capitalproducido:= (capital * (interes/100) * tiempo);
 - WRITE ('En estos años se producira un capital de ');
 - WRITE (capitalproducido:5:2); WRITE (' pesetas.');
 - END.
 - PROGRAM EJER23;
 - USES CRT;
 - VAR capital,interes,intereses:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Capital: '); READLN(capital);
 - WRITE('Intefes: '); READLN(interes);
 - intereses:=capital*(interes/100);
 - ClrScr;
 - WRITE('Capital: '); WRITELN(capital:5:2);
 - WRITE('Interes: '); WRITELN(interes:5:2);
 - WRITE('Intereses: '); WRITELN(intereses:5:2);
 - END.
 - Escribir un programa en Pascal que calcula la siguiente
 - expresión trigonométrica para un valor angular de 90º
 - (sen x * cos x)/(tan x)
 - PROGRAM EJER24B;
 - USES CRT;
 - VAR resultado, resultado2, x:REAL;
 - BEGIN
 - WRITE ('PARA CALCULAR LA EXPRESION: (sin(x) * cos(x)) /
 - tan(x)');
 - WRITELN (' INTRODUZCA EL VALOR DE X EN RADIANES: ');
 - READLN (x);
 - WRITELN ('');
 - resultado:=(sin(x) * cos(x)) / (sin(x) / cos(x));
 - bienvenido
 - WRITE ('El resultado de la expresion (sinx * cosx /tgx) es
 - igual a: ');
 - WRITE (resultado:5:2);
 - END.
 - PROGRAM EJER24;
 - USES CRT;
 - VAR angulo:REAL;
 - VAR val_exp:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('introduzca el valor del angulo (grados): ');
 - READLN (angulo);
 - angulo:=angulo*(6.28/360);
 - WRITE('Valor de la expresion: ');
 - WRITE( (sin(angulo)*cos(angulo) )/( (sin(angulo)/cos(angulo)
 - ) ):5:2);
 - END.
 - Escribir un programa en Pascal que calcule el equivalente en
 - pies de una longitud de 10 metros.
 - 1 metro ------------- 39.27 pulgadas
 - 12 pulgadas -------- 1 pie
 - PROGRAM EJER25;
 - USES CRT;
 - VAR metros,pulgadas,pies:REAL;
 - BEGIN
 - metros:=10;
 - pulgadas:=metros * 39.27;
 - pies:=((1 * metros) * pulgadas) / (12 * metros);
 - ClrScr;
 - WRITE ('El equivalente en pies a una distancia de 10m es
 - de: ');
 - WRITE (pies:3:2); WRITE (' pies');
 - END.
 - PROGRAM EJER25B;
 - USES CRT;
 - VAR metros,pies:REAL;
 - BEGIN
 - {Para calcular la equivalencia entre pies y metros}
 - ClrScr;
 - WRITELN ('INTRODUZCA LOS METROS PARA PASARLOS A PIES: ');
 - WRITELN (' ');
 - WRITE ('Metros: '); READLN (metros);
 - pies:= metros / (12/39.27);
 - { 1 pie = 0.3048 metros}
 - { 1 pulgada = 25.4 mm}
 - WRITE ('El equivalente en pies es de: ');
 - WRITE (pies:3:2); WRITE (' pies');
 - END.
 - PROGRAM EJER25;
 - USES CRT;
 - VAR longitud:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Longitud (metros): '); READLN(longitud);
 - WRITE((longitud*39.27)/12:5:2); WRITE( 'pies');
 - END.
 - Escribir un programa en Pascal que calcule el área de un
 - rectángulo a partir de sus coordenadas:
 - x1 = 10 x2 = 20
 - y1 = 10 y2 = 20
 - PROGRAM EJER26;
 - USES CRT;
 - VAR lado1,lado2:REAL;
 - VAR area:REAL;
 - BEGIN
 - lado1:=10;
 - lado2:=10;
 - area:= lado1 * lado2;
 - ClrScr;
 - WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);
 - END.
 - PROGRAM EJER26B;
 - USES CRT;
 - VAR x1,x2,y1,y2:REAL;
 - VAR area:REAL;
 - BEGIN
 - {Sirve para calcular el area de un rectangulo a partir de
 - coordenadas}
 - WRITELN ('Para calcular el area del rectangulo ');
 - WRITELN ('introduzca el valor de las coordenadas');
 - WRITELN (' ');
 - WRITE ('x1: '); READLN (x1);
 - WRITE ('y1: '); READLN (y1);
 - WRITE ('x2: '); READLN (x2);
 - WRITE ('y2: '); READLN (y2);
 - WRITELN (' ');
 - area:= (x2 - x1) * (y2 - y1);
 - {Se restan las coordenadas de X e Y para sacar los lados y
 - luego se multiplican}
 - WRITE ('El area del rectangulo es de: '); WRITE (area:5:2);
 - END.
 - PROGRAM EJER26;
 - USES CRT;
 - VAR x1,y1,x2,y2:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Introduaca coordenada x1: '); READLN(x1);
 - WRITE('Introduzca coordenada y1: '); READLN(y1);
 - WRITE('Introduzca coordenada x2: '); READLN(x2);
 - WRITE('Introduzca coordenada y2: '); READLN(y2);
 - WRITE('Area del resctangulo: '); WRITE((x2-x1)*(y2-y1):5:2);
 - END.
 - Un coche se mueve, partiendo del reposo, con una
 - aceleración constante de 8 m/s2.
 - Escribir un programa en Pascal que calcule:
 - a) La velocidad instantánea al cabo de5 segundos.
 - b) La velocidad media durante los primeros 5 segundos del recorrido.
 - velocidad instantánea = velocidad inicial + aceleración
 - * tiempo velocidad media = (velocidad inicial + velocidad final)/2
 - PROGRAM EJER27;
 - USES CRT;
 - VAR velocidad0,aceleracion,tiempo:REAL;
 - VAR velocidad5,velocmedia5:REAL;
 - BEGIN
 - velocidad0:=0;
 - aceleracion:=8;
 - tiempo:=5;
 - velocidad5:=velocidad0 + (aceleracion * tiempo);
 - velocmedia5:= (velocidad0 + velocidad5) / 2;
 - ClrScr;
 - WRITE ('LA VELOCIDAD AL CABO DE 5 s ES DE: '); WRITE
 - (velocidad5:2:0);
 - WRITELN (' m/s');
 - END.
 - PROGRAM EJER27B;
 - USES CRT;
 - VAR velocidad0,aceleracion,tiempo,velocidadfinal:REAL;
 - VAR vinstantanea,vmedia:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('ESCRIBA EL VALOR DE LA VELOCIDAD INICIAL, LA
 - ACELERACION');
 - WRITE (' Y EL TIEMPO, EN UNIDADES DEL SISTEMA
 - INTERNACIONAL,');
 - WRITE (' PARA CALCULAR LA VELOCIDAD INSTANTANEA');
 - WRITELN (' '); WRITELN (' ');
 - WRITE ('Velocidad inicial: '); READLN (velocidad0);
 - WRITE ('Aceleracion: '); READLN (aceleracion);
 - WRITE ('Tiempo: '); READLN (tiempo);
 - WRITELN ('');
 - vinstantanea:=velocidad0 + (aceleracion * tiempo);
 - IF vinstantanea > 0 THEN
 - WRITE ('LA VELOCIDAD INSTANTANEA ES DE: ',
 - vinstantanea:5:2,' m/s')
 - ELSE
 - WRITE ('EL COCHE ESTA PARADO.');
 - WRITELN ('');
 - IF vinstantanea < 0 THEN
 - WRITE ('NO SE PUEDE HALLAR AL ESTAR PARADO');
 - IF vinstantanea > 0 THEN
 - WRITE ('Si desea saber la velocidad media introduzca la
 - velocidad final: ');
 - READLN (velocidadfinal);
 - WRITE ('');
 - WRITELN ('');
 - vmedia:= (velocidad0 + velocidadfinal) / 2;
 - WRITE ('LA VELOCIDAD MEDIA ES DE: ',vmedia:5:2);
 - WRITELN (' m/s');
 - END.
 - PROGRAM EJE27;
 - USES CRT;
 - VAR v,a,t:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Velocidad inicial (m/s) -> '); READLN(v);
 - WRITE('Aceleracion (m/s2) ------> '); READLN(a);
 - WRITE('Tiempo (s) --------------> '); READLN(t);
 - WRITE('Velocidad instantanea: '); WRITELN(v+a*t:5:2);
 - WRITE('Velocidad media: '); WRITELN
 - ((v+(v+a*t))/2:5:2);
 - END.
 - Un cohete se lanza verticalmente con una velocidad de 500 m/s
 - calcular la velocidad al cabo de 40 segundos mediante un programa en
 - Pascal
 - velocidad instantánea = (velocidad inicial) –
 - (aceleración de la gravedad * tiempo)
 - PROGRAM EJER28;
 - USES CRT;
 - CONST gravedad = 9.81;
 - VAR velocidad0, tiempo, velocidadfinal:REAL;
 - BEGIN
 - velocidad0:=500;
 - tiempo:=40;
 - velocidadfinal:=velocidad0 - (gravedad * 40);
 - ClrScr;
 - WRITE ('La velocidad a los 40 s es de: ');
 - WRITE (velocidadfinal:4:2,' m/s');
 - END.
 - PROGRAM EJER28B;
 - USES CRT;
 - CONST gravedad = 9.81;
 - VAR velocidad0, tiempo, velocidadfinal:REAL;
 - BEGIN
 - {Este programa sirve para calcular la velocidad instantanea
 - de un cohete}
 - ClrScr;
 - WRITE ('PARA CALCULAR LA VELOCIDAD DE UN COHETE EN UN
 - INSTANTE, ');
 - WRITELN ('INTRODUZCA LOS DATOS:');
 - WRITELN (' ');
 - WRITE ('INTRODUZCA LA VELOCIDAD INICIAL: '); READLN
 - (velocidad0);
 - WRITE ('INTRODUZCA EL TIEMPO:'); READLN (tiempo);
 - WRITELN (' ');
 - velocidadfinal:=velocidad0 - (gravedad * tiempo);
 - IF velocidadfinal <= 0 THEN
 - WRITE ('El cohete ya se ha parado.');
 - IF velocidadfinal > 0 THEN
 - WRITE ('La velocidad final es de: ');
 - IF velocidadfinal > 0 THEN
 - WRITE (velocidadfinal:4:2);
 - IF velocidadfinal > 0 THEN
 - WRITE (' m/s.');
 - END.
 - PROGRAM EJER28;
 - USES CRT;
 - VAR v,g,t:REAL;
 - BEGIN
 - ClrScr;
 - g:=9.8;
 - WRITE('Velocidad inicial (m/s) -> '); READLN(v);
 - WRITE('Tiempo (s) --------------> '); READLN(t);
 - WRITE('Velocidad instantanea: '); WRITELN(v-(g*t):5:2);
 - END.
 - Escribir un programa en Pascal que detecte si un número
 - introducido desde le teclado es positivo o negativo.
 - PROGRAM EJER29;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca un numero entero: '); READLN (num);
 - IF num > 0 THEN
 - WRITE ('El numero es positivo')
 - ELSE IF num < 0 THEN
 - WRITE ('El numero es negativo')
 - ELSE
 - WRITE ('El numero no es positivo ni negativo, es 0');
 - END.
 - Escribir un programa en Pascal que detecte si se han introducido en
 - orden creciente tres números introducidos por el usuario.
 - PROGRAM EJER30;
 - USES CRT;
 - VAR num1,num2,num3:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca un numero (1) : '); READLN (num1);
 - WRITE ('Introduzca un numero (2) : '); READLN (num2);
 - WRITE ('Introduzca un numero (3) : '); READLN (num3);
 - IF ((num1 < num2) AND (num2 < num3)) THEN
 - WRITE ('Los numeros se han introducido en orden creciente')
 - ELSE
 - WRITE ('Los numeros no se han introducido en orden
 - creciente');
 - END.
 - PROGRAM EJER30;
 - USES CRT;
 - VAR num1,num2,num3:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero (1) : '); READLN(num1);
 - WRITE('Introduzca un numero (2) : '); READLN(num2);
 - WRITE('Introduzca un numero (3) : '); READLN(num3);
 - IF ((num1 < num2) AND (num2 < num3)) THEN
 - WRITE('Los numeros se han introducido en orden creciente')
 - ELSE
 - WRITE('Los numeros no se han introducido en orden creciente');
 - END.
 
- Escribir un programa que lea dos números enteros A y B, y obtenga
 - los valores A div B, A mod B.
 - PROGRAM EJERDIV;
 - Uses Crt;
 - Var A,B: Integer;
 - Var soluc: Integer;
 - Begin
 - ClrScr;
 - WRITELN('Introduzca dos numeros:');
 - WRITELN;
 - WRITE('A: '); READLN(A);
 - WRITE('B: '); READLN(B);
 - WRITELN;
 - WRITE('A div B = ');
 - soluc := A div B; {div hace la division de 2 numeros
 - enteros}
 - WRITELN(soluc);
 - WRITELN;
 - WRITE('A mod B = ');
 - soluc := A mod B; {mod muestra el resto de una
 - division de 2 numeros enteros}
 - WRITELN(soluc);
 - End.
 - Escribir un programa en Pascal que muestre un mensaje afirmativo si el numero introducido es múltiplo de 5.
 - PROGRAM EJER32;
 - USES CRT;
 - var num:Integer;
 - Begin
 - ClrScr;
 - WRITE('Introduzca un numero : '); READLN(num);
 - IF num mod 5 = 0 THEN
 - WRITE('El numero introducido es múltiplo de 5')
 - ELSE
 - WRITE('El numero introducido no es múltiplo de 5');
 - End.
 - Escribir un programa en Pascal que lea un numero y lo devuelva multiplicado por 5 y dividido por 7.
 - PROGRAM EJER34;
 - USES CRT;
 - var num, soluc:Real;
 - Begin
 - ClrScr;
 - WRITE('Introduzca un numero: ');
 - READLN(num);
 - WRITELN;
 - {multiplicamos y dividimos el numero obtenido}
 - soluc := (num * 5) / 7;
 - WRITE('(',num:5:2,' * 5) / 7) = ',soluc:5:2);
 - {Poniendo ":5:2" le decimos el formato de salida del numero,
 - 5 posiciones y 2 decimales - Prueba a cambiarlo como mas te guste}
 - End.
 - Escribir un programe en Pascal que resuelva una matriz 3 x (sin bucles).
 - PROGRAM DETER3;
 - USES CRT;
 - VAR a11,a12,a13,a21,a22,a23,a31,a32,a33:REAL;
 - VAR M:REAL;
 - BEGIN
 - ClrScr;
 - WRITELN ('Introduzca los valores de la matriz 3x3');
 - WRITELN (' ');
 - WRITE ('a11: '); READLN (a11);
 - WRITE ('a12: '); READLN (a12);
 - WRITE ('a13: '); READLN (a13);
 - WRITE ('a21: '); READLN (a21);
 - WRITE ('a22: '); READLN (a22);
 - WRITE ('a23: '); READLN (a23);
 - WRITE ('a31: '); READLN (a31);
 - WRITE ('a32: '); READLN (a32);
 - WRITE ('a33: '); READLN (a33);
 - WRITELN (' ');
 - M:=(a11*a22*a33)+(a21*a32*a13)+(a31*a12*a23)
 - -(a13*a22*a31)-(a11*a23*a32)-(a12*a21*a33);
 - WRITE ('El resultado es: '); WRITE (M:5:2);
 - END.
 - Escribir un programa que convierta un número de segundos en su equivalente en minutos y segundos.
 - PROGRAM EJERSEG;
 - Uses Crt;
 - var seg0,seg,min: Integer;
 - Begin
 - ClrScr;
 - WRITE('Introduzca los segundos: '); READLN(seg0);
 - WRITELN;
 - min := seg0 div 60;
 - seg := seg0 mod 60;
 - WRITE(seg0,' segundos son ',min,' minutos y ',seg,'
 - segundos.');
 - End.
 - 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.
 - PROGRAM EJEMEDIA;
 - Uses Crt;
 - var sumapar,sumaimp,n_par,n_imp: Integer;
 - var i: Integer;
 - var media_p,media_i: Real;
 - const num=10;
 - var numeros: Array[1..num] of Real;
 - Begin
 - ClrScr;
 - WRITELN('Introduzca los ',num,' numeros');
 - WRITELN;
 - sumapar := 0;
 - sumaimp := 0;
 - n_par := 0;
 - n_imp := 0; {Inicializamos las variables a 0 para evitar
 - sorpresas}
 - For i := 1 to 10 do
 - Begin
 - WRITE('Introduzca el numero ',i,' : '); READLN
 - (numeros[i]);
 - If num mod 2 = 0 then {para que sea par, el
 - resto de una division debe ser 0}
 - Begin
 - n_par := n_par + 1; {tambien se puede
 - hacer con "inc(n_par)"}
 - sumapar := sumapar + num;
 - End
 - Else {si no es par, DEBE ser impar}
 - Begin
 - n_imp := n_imp + 1;
 - sumaimp := sumaimp + num;
 - End;
 - End;
 - {Vamos a hallar la media de los pares y los impares}
 - WRITELN;
 - media_p := sumapar / n_par;
 - media_i := sumaimp / n_imp;
 - WRITELN('La media de los numeros pares es: ',media_p:5:2);
 - WRITELN;
 - WRITELN('La media de los numeros impares es: ',media_i:5:2);
 - End.
 - Escribir un programa que muestre en pantalla VS2 realizado por nosotros (usar PROCEDURE).
 - PROGRAM VS2 (INPUT, OUTPUT);
 - Uses Crt;
 - PROCEDURE letra_V;
 - BEGIN WRITELN('V V');
 - WRITELN(' V V ');
 - WRITELN(' V V ');
 - WRITELN(' V V ');
 - WRITELN(' V ');
 - END;
 - PROCEDURE letra_S;
 - BEGIN
 - WRITELN('SSSSSSS');
 - WRITELN('S ');
 - WRITELN('SSSSSSS');
 - WRITELN(' S');
 - WRITELN('SSSSSSS');
 - END;
 - PROCEDURE num_2;
 - BEGIN
 - WRITELN('2222222');
 - WRITELN(' 2');
 - WRITELN('2222222');
 - WRITELN('2 ');
 - WRITELN('2222222');
 - END;
 - BEGIN {empezamos el programa principal}
 - ClrScr;
 - letra_V; WRITELN;
 - letra_S; WRITELN;
 - num_2;
 - REPEAT Until Keypressed; {mantenemos la pantalla viendo la
 - solución hasta que se pulse una tecla}
 - END.
 - Hacer un programa que incremente un número usando un PROCEDURE.
 - PROGRAM incrementar (INPUT, OUTPUT);
 - Uses Crt;
 - VAR num: INTEGER;
 - PROCEDURE incremento;
 - BEGIN
 - num := num + 1;
 - END;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero para incrementarle: '); READLN(num);
 - WRITELN;
 - incremento;
 - WRITE('El numero, incrementado en una unidad, es: ',num);
 - REPEAT Until Keypressed;
 - END.
 - 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.
 - PROGRAM productos (INPUT, OUTPUT);
 - Uses Crt;
 - CONST
 - Desc = 15; {le haremos un 15% de descuento}
 - VAR
 - Unidades, precio: INTEGER;
 - Total, cantDesc: REAL;
 - PROCEDURE descuento (VAR cantidad, descuento: REAL; porciento: INTEGER);
 - BEGIN
 - Descuento := cantidad * porciento/100; {el descuento es
 - el 15% del total}
 - Cantidad := cantidad - descuento; {la cantidad final
 - es la cantidad - el descuento}
 - END;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca el numero de unidades: ');
 - READLN(unidades);
 - WRITELN;
 - WRITE('Introduzca el precio: ');
 - READLN(precio);
 - WRITELN;
 - Total := precio * unidades; {Calculamos el total}
 - IF (unidades > 5) THEN descuento (total, cantDesc, desc) {aplicamos
 - el descuento}
 - ELSE cantDesc := 0;
 - WRITELN('Total: ',total:5:2,' Descuento: ',cantdesc:5:2); {
 - escribimos en pantalla el total y el descuento}
 - REPEAT Until Keypressed;
 - END.
 - Hacer un programa que calcule el area de un círculo (usar un PROCEDURE).
 - PROGRAM area (INPUT, OUTPUT);
 - Uses Crt;
 - VAR radiocirc, resultado: REAL;
 - PROCEDURE areacirculo (radio: REAL; VAR area: REAL);
 - CONST pi = 3.1415926535;
 - BEGIN
 - area := pi * SQR(radio);
 - END;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca el radio del circulo: '); READLN
 - (radiocirc);
 - WRITELN;
 - IF (radiocirc > 0) THEN
 - BEGIN
 - areacirculo(radiocirc, resultado); {radiocirc se
 - corresponde con radio y resultado con area}
 - GOTOXY(20,5);
 - WRITELN('El area del circulo es: ',resultado:8:2);
 - END
 - ELSE
 - WRITE('No puede introducir un radio negativo.');
 - REPEAT Until Keypressed;
 
END.
- Escribir un programa que lea tres números enteros e indique
 - si están o no, en orden numérico ascendente o descendente.
 - PROGRAM EJER_001;
 - Uses Crt;
 - var num1,num2,num3:Integer;
 - Begin
 - ClrScr;
 - WRITELN('Introduzca tres numeros:');
 - WRITE('Numero 1: '); READLN(num1);
 - WRITE('Numero 2: '); READLN(num2);
 - WRITE('Numero 3: '); READLN(num3);
 - WRITELN;
 - WRITELN;
 - If (num1 > num2) and (num2 > num3) then
 - WRITELN('Ha introducido los numeros en orden decreciente.')
 - Else if (num1 < num2) and (num2 < num3) then
 - WRITELN('Ha introducido los numeros en orden creciente.')
 - Else
 - WRITELN('No ha introducido los numeros en orden.');
 - End.
 - Escribir un programa que lea 5 valores de temperatura, y escriba el
 - número de veces que estuvo bajo 0º.
 - PROGRAM EJER_002;
 - Uses Crt;
 - var temp,i,cont:Integer;
 - Begin
 - WRITELN ('Introduzca 5 valores de temperatura:');
 - WRITELN;
 - cont := 0;
 - For i := 0 to 4 do
 - Begin
 - WRITE('Valor ',i + 1,' : '); {i + 1 mostrará valores
 - del 1 al 5}
 - Readln(temp);
 - If temp < 0 Then
 - inc(cont); {cont = cont + 1}
 - End;
 - WRITELN;
 - WRITE('La temperatura ha estado ',cont);
 - If cont = 1 then
 - WRITE (' vez bajo 0')
 - Else
 - WRITE (' veces bajo 0');
 - End.
 - Se realiza un examen, se piden las notas del número de alumnos
 - introducidos por el usuario, las cuales pueden ser únicamente enteras
 - entre 0 y 10. Debe decirse cuantos 0, 5 y 10 han aparecido. También
 - deben decirse las notas introducidas que no sean 0, 5 o 10.
 - PROGRAM EJER_003;
 - Uses Crt;
 - var cero, cinco, diez: Integer;
 - var nota, i, alumnos: Integer;
 - var notas_no: Array [1..30] of Integer;
 - Begin
 - ClrScr;
 - WRITE('Introduzca el numero de alumnos: '); READLN(alumnos);
 - WRITELN;
 - WRITELN('Introduzca las calificaciones: (en valores enteros) ');
 - WRITELN;
 - For i := 1 to alumnos do
 - Begin
 - WRITE('Alumno: '); READLN(nota);
 - If nota = 0 then inc(cero)
 - else if nota = 5 then inc(cinco)
 - else if nota = 10 then inc(diez)
 - else
 - notas_no[i] := nota;
 - End;
 - WRITELN;
 - WRITE('Ha habido ',cero);
 - If cero = 1 then WRITELN(' cero.') else WRITELN
 - (' ceros.');
 - WRITE('Ha habido ',cinco);
 - If cinco = 1 then WRITELN(' cinco.') else WRITELN
 - (' cincos.');
 - WRITE('Ha habido ',diez);
 - If diez = 1 then WRITELN(' diez.') else WRITELN
 - (' dieces.');
 - WRITELN;
 - WRITELN('Las notas aparecidas que no son 0, 5 o 10 son: ');
 - For i := 1 to i DO
 - IF notas_no[i] <> 0 then WRITE(notas_no[i],', ');
 - END.
 - Decir el numero de vocales que aparecen en una frase introducida por
 - el usuario. Debe acabar con un punto.
 - PROGRAM EJER_004;
 - Uses Crt;
 - Const vocales: Set of Char = (['A','E','I','O','U']);
 - {Poniendolas en mayusculas conseguimos unificar el valor de las vocales
 - y evitamos decir al usuario que las introduzca en mayusculas o
 - minusculas}
 - var cont, i:Integer;
 - var letra: Char;
 - var frase: Array[1..85] of Char;
 - Begin
 - ClrScr;
 - WRITELN('Escriba una frase, acabando con un punto'); WRITELN;
 - i:=0;
 - cont:=0;
 - REPEAT
 - letra := Readkey;{Readkey no mostrará los caracteres
 - en pantalla}
 - WRITE (letra); {Debemos incluirlo para que nos muestre los
 - caracteres}
 - if UPCASE(letra) in vocales then {pregutamos si la letra introducida
 - es una vocal}
 - inc(cont);
 - frase[i]:=letra; {guardamos el valor de la letra en el array frase}
 - UNTIL letra = '.';
 - WRITELN;
 - WRITELN;
 - WRITE ('El numero de vocales introducidas es ',cont);
 - End.
 - PROGRAM EJER_004_2;
 - Uses Crt;
 - Const vocales: Set of Char = (['A','E','I','O','U']);
 - {Poniendolas en mayusculas conseguimos unificar el valor de las vocales
 - y evitamos decir al usuario que las introduzca en mayusculas o
 - minusculas}
 - var cont, i:Integer;
 - var letra: Char;
 - var frase: String;{Es lo unico que cambia con respecto a la otra version}
 - Begin
 - ClrScr;
 - WRITELN('Escriba una frase, acabando con un punto'); WRITELN;
 - i:=0;
 - cont:=0;
 - REPEAT
 - letra := Readkey; {Readkey no mostrara los caracteres en pantalla}
 - WRITE (letra); {Debemos incluirlo para que nos muestre los
 - caracteres}
 - if UPCASE(letra) in vocales then {pregutamos si la letra introducida
 - es una vocal}
 - inc(cont);
 - frase[i]:=letra; {guardamos el valor de la letra en el array frase}
 - UNTIL letra = '.';
 - WRITELN;
 - WRITELN;
 - WRITE ('El numero de vocales introducidas es ',cont);
 - End.
 - Pedir que se introduzca una frase, acabada con un punto en la que se
 - lean las letras del abecedario introducidas y se muestren posteriormente.
 - PROGRAM EJER005;
 - Uses Crt;
 - var caracter : Char;
 - var abc : String;
 - var i, longitud: Integer;
 - Begin
 - ClrScr;
 - WRITELN('Escriba una frase, terminando con un punto');
 - WRITELN;
 - i := 0;
 - longitud := 0;
 - REPEAT
 - caracter := Upcase(Readkey);
 - WRITE(caracter);
 - If caracter in ['A'..'Z'] then
 - Begin
 - abc[i] := caracter;
 - {el array abc quedara con espacios vacios,los
 - que no sean letras del abedecario, si no se pone
 - el incremento de i dentro+ de este begin-end.
 - Prueba a quitar el begin-end si tienes curiosidad
 - en verlo}
 - inc(i);
 - End;
 - UNTIL caracter = '.';
 - longitud := i;
 - WRITELN;
 - WRITELN;
 - WRITELN('Las letras del abecedario introducidas son: ');
 - WRITELN;
 - For i := 0 To longitud Do
 - WRITE(abc[i],' ');
 - End.
 - Escribir un programa en Pascal que lea una frase introducida
 - desde el teclado y la escriba al revés.
 - PROGRAM EJ006;
 - Uses Crt;
 - var frase: String; {Se puede hacer con arrays}
 - var f_inv: String; {Cada uno debe elegir la manera que
 - mejor entida, y controle, eso si, siempre hay que dominar
 - las dos formas.}
 - var i: Integer;
 - Begin
 - ClrScr;
 - i := 0;
 - WRITELN('Escriba una frase:');
 - READLN(frase);
 - WRITELN;
 - WRITELN;
 - For i := 0 to length(frase) do {desde la primera posicion de
 - la frase hasta la ultima almacenamos la frase en una variable}
 - f_inv[i] := frase[i];
 - FOR i := length(frase) downto 0 do
 - WRITE(f_inv[i]);
 - End.
 - PROGRAM EJER006_2;
 - Uses Crt;
 - var frase: String;
 - var i: Integer;
 - Begin
 - ClrScr;
 - i := 0;
 - WRITELN('Escriba una frase:');
 - WRITELN;
 - READLN(frase);
 - WRITELN;
 - FOR i := length(frase) downto 1 do {Si ponemos "downto 0" nos
 - pasariamos en un caracter}
 - WRITE(frase[i]);
 - {Si lo unico que quieres es mostrar la cadena de caracteres a la
 - inversa, en esta version lo hemos hecho unicamente con una
 - variable}
 - End.
 - Escribir un programa que compare dos arrays de caracteres y
 - nos diga si son idénticos o no.
 - PROGRAM EJER007;
 - Uses Crt;
 - var frase1, frase2: String;
 - var index,long1,long2: Integer; {long1 y long2 son la
 - longitud de las cadenas}
 - var letra: Char;
 - var iguales: Boolean;
 - Begin
 - ClrScr;
 - WRITELN ('Introduzca la primera cadena de caracteres,
 - finalizando con un punto');
 - WRITELN;
 - index := 0;
 - long1 := 0;
 - long2 := 0;
 - REPEAT
 - Begin
 - letra := Readkey;
 - write(letra); {Readkey no muestra los caracteres en
 - pantalla, write si}
 - frase1[index] := letra; {vamos almacenando cada letra
 - en la variable}
 - index := index + 1;
 - End;
 - UNTIL letra='.';
 - long1 := index; {medimos la longitud de la cadena}
 - WRITELN;
 - WRITELN;
 - WRITE('Introduzca la segunda cadena de caracteres, finalizando
 - con un punto');
 - WRITELN;
 - WRITELN;
 - letra := ' ';
 - index := 0;
 - REPEAT
 - Begin
 - letra := Readkey;
 - write(letra);
 - frase2[index] := letra; {vamos almacenando cada letra en
 - la variable}
 - index := index + 1;
 - End;
 - UNTIL letra='.';
 - long2 := index; {medidos la longitud de la cadena}
 - WRITELN;
 - WRITELN;
 - If long1 <> long2 then {Si la longitud es distinta, SEGURO que
 - no son iguales}
 - WRITELN ('Las cadenas de caracteres son distintas')
 - {*Pongo dos mensajes distintos para que veamos en que bucle
 - ha entrado en los diferentes casos que se pueden dar}
 - Else
 - Begin
 - For index := 0 to long1 do
 - Begin
 - if frase1[index] <> frase2[index] then
 - Begin
 - WRITE('Las cadenas de caracteres no son iguales');
 - {*Pongo dos mensajes distintos para que veamos
 - en que bucle ha entrado
 - en los diferentes casos que se pueden dar}
 - exit;
 - End
 - else
 - iguales := true; {almacenamos en una variable que
 - las cadenas son iguales}
 - End;
 - End;
 - If iguales = true then WRITELN ('Las cadenas de caracteres
 - son iguales');
 - End.
 - Escribir un programa en Pascal que sume los valores que hay por encima
 - de la diagonal principal. Los valores se pueden asignar como una
 - constante.
 - PROGRAM EJER008;
 - Uses Crt;
 - Const N = 4; {Numero de filas y columnas de la matriz}
 - Const matriz: Array [1..N,1..N] of Integer = ((1, 2, 3, 4),
 - ( 5, 6, 7, 8),
 - ( 9,10,11,12),
 - (13,14,15,16));
 - {Declaramos la matriz}
 - var i, j, suma: Integer;
 - {i se corresponde con las filas y j con las columnas}
 - Begin
 - ClrScr; {limpiamos la pantalla}
 - {los valores de la diagonal principal son (1,1) (2,2)
 - (3,3) (4,4).
 - Como este ejercicio consiste en sumar los valores que hay
 - encima de la diagonal principal, sumares: 2 + 3 + 4 + 7 + 8 + 12}
 - {Escribimos la matriz original y coloreamos los valores que
 - necesitamos}
 - For i := 1 to N Do
 - Begin
 - For j := 1 to N Do
 - Begin
 - If j > i then
 - Textcolor(9) {Cambiando el numero
 - elegiremos el color}
 - Else
 - TextColor(7);
 - WRITE(matriz[i,j]:3);
 - End;
 - WRITELN(' ');
 - End;
 - WRITELN;{Suma de los valores de la primera fila de la matriz}
 - i := 1;
 - FOR j := 2 to N do
 - Begin
 - suma := suma + matriz[i,j];
 - WRITELN(suma); {Lo escribimos para chequear los valores,
 - podriamos escribir un write al final y seria suficiente}
 - End;
 - {Suma de los valores de la segunda fila}
 - i := 2;
 - FOR j := 3 to N do
 - Begin
 - suma := suma + matriz[i,j];
 - WRITELN(suma);
 - End;
 - WRITELN;{Suma de los valores de la tercera fila}
 - i := 3;
 - FOR j := 4 to N do {N ya vale 4, por lo que solo se realiza
 - 1 vez el bucle}
 - Begin
 - suma := suma + matriz[i,j];
 - WRITELN('El resultado final es: ',suma);
 - End;
 - End.
 - Escribir un programa en Pascal que almacene en un array de registros
 - los nombres de los alumnos, sus notas parciales y finales. Hallar la
 - nota media y mostrar un mensaje de APTO si el alumno supera o iguala la
 - calificación de 5 o NO APTO si no lo alcanza. Hacerlo para un
 - número de 5 alumnos.
 - PROGRAM EJER009;
 - Uses Crt;
 - Const numalumnos = 5;
 - Type tnotas = record
 - nombre2 : String;
 - n_parcial2, n_final2: Real; {Nota parcial y final}
 - end;
 - {Hacemos una fila dividida en 4 partes:tnotas, nombre2,
 - n_parcial2, n_final2. Es como una tabla de Word, la cual
 - iremos rellenando con los datos obtenidos}
 - notas = Array[1..numalumnos] of tnotas;
 - {Ahora la copiamos tantas veces como numero de alumnos hay,
 - es decir, obtenemos 5 filas iguales}
 - var clase : notas;
 - var nombre: String;
 - var n_parcial, n_final, n_media: Real;
 - var i: Integer;
 - Begin
 - ClrScr;
 - For i := 1 to numalumnos Do
 - Begin
 - WRITE('Introduzca el nombre del alumno ',i,' : ');
 - READLN(nombre);
 - WRITE('Introduzca su nota parcial: ');
 - READLN(n_parcial);
 - WRITE('Introduzca su nota final: ');
 - READLN(n_final);
 - WRITELN;
 - With clase[i] Do
 - Begin
 - n_parcial2 := n_parcial;
 - n_final2 := n_final;
 - nombre2 := nombre;
 - End;
 - End;
 - ClrScr;
 - WRITELN('NOMBRE':25,'Parcial':8,'Final':8,'Media':8,
 - 'CALIFICACION':15);
 - WRITELN;
 - For i := 1 to numalumnos do
 - With clase[i] do
 - Begin
 - n_media := (n_parcial2 + n_final2) / 2;
 - WRITE(nombre2:25,n_parcial2:8:2,n_final2:8:2);
 - textcolor(14); WRITE(n_media:8:2);
 - If n_media >= 5 then
 - Begin
 - textcolor(11);
 - WRITELN ('APTO :-)':15);
 - End
 - Else
 - Begin
 - textcolor(1);
 - WRITELN ('NO APTO :-(':15);
 - End;
 - textcolor(7);
 - End;
 - End.
 - Escribir un programa en Pascal que almacene en un array de registros
 - las características de cada persona: nombre, sexo, edad, peso, color
 - de pelo, color de piel, color de ojos, nacionalidad y teléfono.
 - PROGRAM EJER_010;
 - Uses Crt;
 - Const numpersonas = 1; {Cambiando este valor lo podremos
 - hacer para
 - el numero de personas que deseemos}
 - Type caracteristicas = record
 - nombre2, nacionalidad2: String;
 - edad2: Integer;
 - sexo2, c_pelo2, c_ojos2: Char;
 - tf2: Longint;
 - {Creamos una fila con diferentes apartados}
 - end;
 - personas = Array[1..numpersonas] of caracteristicas;
 - {La copiamos tantas veces como personas haya}
 - var persons : personas;
 - nombre, nacionalidad: String;
 - edad, i: Integer;
 - sexo, c_pelo, c_ojos: Char;
 - tf: Longint;
 - Begin
 - ClrScr;
 - For i := 1 to numpersonas do
 - Begin
 - WRITELN('Introduzca los datos de la persona numero ',i,
 - ' : ');
 - WRITELN;
 - WRITE('Nombre: '); READLN(nombre);
 - WRITE('Edad: '); READLN(edad);
 - WRITE('Nacionalidad: '); READLN(nacionalidad);
 - Repeat
 - WRITE('Sexo (H, M): '); READLN(sexo);
 - Until (sexo = 'H') or (sexo = 'M');
 - WRITE('Telefono: '); READLN(tf);
 - Repeat
 - WRITE('Color de ojos (A, V, M): '); READLN(c_ojos);
 - Until (c_ojos = 'A') or (c_ojos = 'V') or (c_ojos = 'M');
 - Repeat
 - WRITE('Color de pelo (R, M, C): '); READLN(c_pelo);
 - Until (c_pelo = 'R') or (c_pelo = 'M') or (c_pelo = 'C');
 - WRITELN;
 - With persons[i] do
 - Begin
 - nombre2 := nombre;
 - edad2 := edad;
 - nacionalidad2 := nacionalidad;
 - sexo2 := sexo;
 - tf2 := tf;
 - c_ojos2 := (c_ojos);
 - c_pelo2 := (c_pelo);
 - {Almacenamos los datos dentro del array de registro}
 - End;
 - End;
 - textcolor(11);
 - WRITELN('Nombre':15,'Edad':6,'Nacionalidad':15,'Sexo':6,
 - 'Telefono':12,'Color ojos':12,'Color pelo':12);
 - textcolor(7);
 - For i := 1 to numpersonas do
 - Begin
 - with persons[i] do
 - Begin
 - WRITE(nombre2:15,edad2:6,Nacionalidad2:15,
 - sexo2:6,tf2:12,c_ojos2:12,c_pelo2:12);
 - End;
 - End;
 - {Las caracteristicas que se piden al usuario para obtener
 - informacion de las diferentes personas son simples ejemplos. Si se
 - quieren cambiar, y poner por ejemplo, si esta casado o soltero, sus
 - estudios, etc., unicamente habra que crear nuevas variables o
 - sustituir las existentes.}
 - End.
 
Escribir un programa en Pascal que determine la posición de- la siguiente matriz en la que se encuentra el valor máximo.
 - 23 45 68
 - 34 99 12
 - 25 78 89
 - PROGRAM EJER91B;
 - USES CRT;
 - CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (23,45,68),
 - (34,99,12),
 - (25,78,89) );
 - VAR i,j,val_max,pos_max_i,pos_max_j:INTEGER;
 - BEGIN
 - ClrScr;
 - val_max:=arr_num[1,1];
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - BEGIN
 - IF arr_num[i,j] > val_max THEN
 - BEGIN
 - val_max:=arr_num[i,j];
 - pos_max_i:=i;
 - pos_max_j:=j;
 - END;
 - END;
 - END;
 - WRITELN( 'VALOR MAXIMO: ', val_max:3,
 - ' POSICION: ', pos_max_i:3,pos_max_i:3);
 - END.
 - Escribir un programa en Pascal que sume, independientemente, los
 - elementos positivos y negativos de la siguiente matriz:
 - -12 23 32
 - 45 -56 -10
 - 25 78 89
 - PROGRAM EJER92;
 - USES CRT;
 - CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (-12,23,-32),
 - (45,-56,-10),
 - (25,78,89) );
 - VAR i,j,suma_p,suma_i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:= 1 TO 3 DO
 - BEGIN
 - IF arr_num[i,j] >=0 THEN
 - suma_p:= suma_p + arr_num[i,j]
 - ELSE
 - suma_i:= suma_i + arr_num[i,j];
 - END;
 - END;
 - WRITELN ('La suma de los numeros pares es: ',suma_p);
 - WRITELN ('La suma de los numeros impares es: ',suma_i);
 - END.
 - PROGRAM EJER92;
 - USES CRT;
 - CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (-12,23,-32),
 - (45,-56,-10),
 - (25,78,89));
 - VAR i,j,suma_pos,suma_neg:INTEGER;
 - BEGIN
 - suma_pos:=0;
 - suma_neg:=0;
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - BEGIN
 - IF arr_num[i,j] < 0 THEN
 - suma_neg:=suma_neg+arr_num[i,j]
 - ELSE
 - suma_pos:=suma_pos+arr_num[i,j]
 - END;
 - END;
 - WRITELN('SUMA POSITIVOS: ', suma_pos:5);
 - WRITELN('SUMA NEGATIVOS: ', suma_neg:5);
 - END.
 - Escribir un programa en Pascal que multiplique por dos los
 - elementos de la siguiente matriz:
 - 4 7 8
 - 6 9 1
 - 5 0 3
 - PROGRAM EJER93;
 - USES CRT;
 - CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (4,7,8),
 - (6,9,1),
 - (5,0,3));
 - VAR mult,i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:= 1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - BEGIN
 - mult:=arr_num[i,j] * 2;
 - WRITELN('Elemento (',i,',',j,') multiplicado por 2:
 - ',mult:3);
 - END;
 - END;
 - END.
 - PROGRAM EJER93;
 - USES CRT;
 - CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (4,7,8),
 - (6,9,1),
 - (5,0,3));
 - VAR i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - FOR j:=1 TO 3 DO
 - arr_num[i,j]:=arr_num[i,j]*2;
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - WRITE(arr_num[i,j]:3);
 - WRITELN (' ');
 - END;
 - END.
 - Escribir un programa en Pascal que almacene en la segunda fila
 - de la siguiente matriz los cuadrados de los datos de la primera fila:
 - 3 6 7 8 9
 - 0 0 0 0 0
 - PROGRAM EJER94;
 - USES CRT;
 - CONST arr_num:ARRAY [1..2,1..5] of INTEGER=( (3,6,7,8,9),
 - (0,0,0,0,0));
 - VAR i,j,cuad:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - FOR j:=1 TO 5 DO
 - BEGIN
 - FOR i:=1 TO 1 DO
 - BEGIN
 - cuad:=sqr(arr_num[i,j]);
 - arr_num[2,j]:= cuad;
 - WRITELN (arr_num[2,j]);
 - END;
 - END;
 - END.
 - PROGRAM EJER94;
 - USES CRT;
 - CONST arr_num:ARRAY[1..2,1..5] of INTEGER=( (3,6,7,8,9),
 - (0,0,0,0,0));
 - VAR i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 1 DO
 - FOR j:=1 TO 5 DO
 - arr_num[i+1,j]:=sqr(arr_num[i,j]);
 - FOR i:=1 TO 2 DO
 - BEGIN
 - FOR j:=1 TO 5 DO
 - WRITE(arr_num[i,j]:3);
 - WRITELN(' ');
 - END;
 - END.
 - Escribir un programa en Pascal que sume los datos de cada una
 - de las filas de la siguiente matriz; el resultado se almacenará
 - en la última posición de cada fila:
 - 3 6 7 8 9 0
 - 1 4 3 2 7 0
 - PROGRAM EJER95;
 - USES CRT;
 - CONST arr_num:ARRAY [1..2,1..6] of INTEGER=( (3,6,9,7,8,0),
 - (1,4,3,2,7,0));
 - VAR i,j,suma1, suma2:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 2 DO
 - BEGIN
 - FOR j:=1 TO 6 DO
 - BEGIN
 - IF i=1 THEN suma1:= suma1 + arr_num[1,j];
 - IF i=2 THEN suma2:= suma2 + arr_num[2,j];
 - END;
 - END;
 - WRITELN ('La suma de la fila 1 es: ',suma1);
 - WRITELN ('La suma de la fila 2 es: ',suma2);
 - END.
 - PROGRAM EJER95;
 - USES CRT;
 - CONST arr_num:ARRAY[1..2,1..6] of INTEGER=( (3,6,9,7,8,0),
 - (1,4,3,2,7,0));
 - VAR suma_fila,i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 2 DO
 - BEGIN
 - suma_fila:=0;
 - FOR j:=1 TO 6 DO
 - suma_fila:=suma_fila+arr_num[i,j];
 - arr_num[i,j]:=suma_fila;
 - END;
 - FOR i:=1 TO 2 DO
 - BEGIN
 - FOR j:=1 TO 6 DO
 - WRITE(arr_num[i,j]:3);
 - WRITELN(' ');
 - END;
 - END.
 - Escribir un programa en Pascal que sume los datos de cada una
 - de las columnas de la siguiente matriz; el resultado se almacenará
 - en la última posición de cada columna:
 - 3 2
 - 4 6
 - 8 9
 - 0 0
 - PROGRAM EJER96;
 - USES CRT;
 - CONST arr_num:ARRAY [1..4,1..2] of INTEGER=( (3,2),(4,6),
 - (8,9),(0,0));
 - VAR i,j,suma1,suma2:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR j:=1 TO 2 DO
 - BEGIN
 - FOR i:=1 TO 4 DO
 - BEGIN
 - IF j=1 THEN suma1:= suma1 + arr_num[i,j];
 - IF j=2 THEN suma2:= suma2 + arr_num[i,j];
 - END;
 - END;
 - WRITELN ('El resultado de la suma 1 es: ',suma1);
 - WRITELN ('El resultado de la suma 2 es: ',suma2);
 - END.
 - Escribir un programa en Pascal que sume los elementos de cada
 - una de las filas y de las columnas de la siguiente matriz; el resultado
 - de cada suma se almacenará en la última posición
 - de la fila o columna correspondiente. Además la suma total
 - de todos los elementos de la matriz se almacenará en el
 - elemento de la esquina inferior derecha de la matriz:
 - 1 7 0
 - 5 6 0
 - 6 4 0
 - 7 3 0
 - 0 0 0
 - PROGRAM EJER97;
 - USES CRT;
 - CONST arr_num:ARRAY [1..5,1..3] of INTEGER=( (1,7,0),(5,6,0),
 - (6,4,0),(7,3,0),
 - (0,0,0) );
 - VAR i,j,total:INTEGER;
 - VAR suma_h,suma_v:INTEGER; {Es la suma horizontal y vertical}
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 5 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - BEGIN
 - suma_h:= suma_h + arr_num[i,j];
 - END;
 - WRITELN ('La suma de la fila ',i,' es: ',suma_h:3);
 - total:=total + suma_h;
 - suma_h:=0;
 - END; WRITELN ('');
 - FOR j:=1 TO 2 DO
 - BEGIN
 - FOR i:=1 TO 5 DO
 - BEGIN
 - suma_v:= suma_v + arr_num[i,j];
 - END;
 - WRITELN ('La suma de la columna ',j,' es: ',suma_v:3);
 - suma_v:=0;
 - total:=total + suma_v;
 - END; WRITELN ('');
 - WRITELN ('La suma total es: ',total);
 - END.
 - PROGRAM EJER97;
 - USES CRT;
 - CONST arr_num:ARRAY[1..5,1..3] of INTEGER=( (1,7,0),
 - (5,6,0),
 - (6,4,0),
 - (7,3,0),
 - (0,0,0) );
 - VAR suma_fila,suma_colu,suma_tota,i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 4 DO
 - BEGIN
 - suma_fila:=0;
 - FOR j:=1 TO 2 DO
 - BEGIN
 - suma_fila:=suma_fila+arr_num[i,j];
 - suma_tota:=suma_tota+arr_num[i,j];
 - END;
 - arr_num[i,j+1]:=suma_fila;
 - END;
 - arr_num[i+1,j+1]:=suma_tota;
 - FOR j:=1 TO 2 DO
 - BEGIN
 - suma_colu:=0;
 - FOR i:=1 TO 4 DO
 - BEGIN
 - suma_colu:=suma_colu+arr_num[i,j];
 - END;
 - arr_num[i+1,j]:=suma_colu;
 - END;
 - FOR i:=1 TO 5 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - WRITE(arr_num[i,j]:3);
 - WRITELN(' ');
 - END;
 - END.
 - Escribir un programa en Pascal que divida todos los elementos de
 - una matriz M (3,4) por el elemento situado en la posición 2,2.
 - PROGRAM EJER98;
 - USES CRT;
 - CONST arr_num:ARRAY[1..3,1..4] of INTEGER=( (23,45,-68,99),
 - (45,65,-76,34),
 - (56,-75,34,98));
 - VAR i,j:INTEGER;
 - VAR divi:REAL;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 4 DO
 - BEGIN
 - divi:= arr_num[i,j] / arr_num[2,2];
 - WRITE ('Dividido ',arr_num[i,j]:3,' por el numero ');
 - WRITELN (arr_num[2,2]:3,': ',divi:5:2);
 - END;
 - END;
 - END.
 - PROGRAM EJER98;
 - USES CRT;
 - CONST matriz_m:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
 - (7,9,8,11),
 - (5,6,1,19));
 - VAR i,j:INTEGER;
 - VAR ele_22:REAL;
 - BEGIN
 - ele_22:=matriz_m[2,2];
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 4 DO
 - WRITE(matriz_m[i,j]:5:2,' ');
 - WRITELN(' ');
 - END;
 - FOR i:=1 TO 3 DO
 - FOR j:=1 TO 4 DO
 - matriz_m[i,j]:=matriz_m[i,j]/ele_22;
 - WRITELN(' ');
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 4 DO
 - WRITE(matriz_m[i,j]:5:2,' ');
 - WRITELN(' ');
 - END;
 - END.
 - Escribir un programa en Pascal que almacene en un array los números
 - primos comprendidos entre 1 y 100.
 - PROGRAM EJER99;
 - USES CRT;
 - VAR arr_num:ARRAY [1..100] of INTEGER;
 - VAR flag:INTEGER;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - num:=1;
 - WHILE num < 100 DO
 - BEGIN
 - FOR i:=2 TO (num-1) DO
 - BEGIN
 - IF (num mod i)=0 THEN
 - flag:=1;
 - END;
 - IF flag<>1 THEN
 - WRITELN (num:3,' es un n£mero primo.');
 - num:= num + 1;
 - flag:=0;
 - END;
 - END.
 - PROGRAM EJER99;
 - USES CRT;
 - VAR arra_prim:ARRAY[1..100] OF INTEGER;
 - VAR i,divisor:INTEGER;
 - VAR flag,num:INTEGER;
 - BEGIN
 - i:=1;
 - FOR num:=2 TO 100 DO
 - BEGIN
 - flag:=1;
 - FOR divisor:=2 TO num-1 DO
 - BEGIN
 - IF num MOD divisor = 0 THEN
 - flag:=0;
 - END;
 - IF flag=1 THEN
 - BEGIN
 - arra_prim[i]:=num;
 - i:=i+1;
 - END;
 - END;
 - arra_prim[i]:=0;
 - i:=1;
 - WHILE(arra_prim[i]<>0) DO
 - BEGIN
 - WRITE(arra_prim[i],' ');
 - i:=i+1;
 - END;
 - END.
 - Escribir un programa en Pascal que genera la matriz transpuesta
 - de una matriz de 3 filas y 4 columnas. La matriz transpuesta de una
 - matriz M(m,n) se obtiene intercambiando filas por columnas y viceversa;
 - el resultado se tiene que almacenar en una nueva matriz M_TRANS(n,m).
 - PROGRAM EJERC100;
 - USES CRT;
 - CONST matriz:ARRAY [1..3,1..4] of INTEGER=( (12,67,-23,-45),
 - (45,-34,23,-12),
 - (-34,22,88,-10));
 - VAR m_tra:ARRAY [1..4,1..3] of INTEGER;
 - VAR f,c:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR c:=1 TO 3 DO
 - BEGIN
 - FOR f:=1 TO 4 DO
 - BEGIN
 - m_tra[f,c]:=matriz[c,f];
 - WRITE ('(',f,',',c,') ');
 - WRITELN (m_tra[f,c]:3);
 - END;
 - END;
 - END.
 - PROGRAM EJERC100;
 - USES CRT;
 - CONST m_orig:ARRAY[1..3,1..4] OF REAL = ((2,3,4,12),
 - (7,9,8,11),
 - (5,6,1,19));
 - VAR m_tran:ARRAY[1..4,1..3] OF REAL;
 - VAR i,j:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 3 DO
 - FOR j:=1 TO 4 DO
 - m_tran[j,i]:=m_orig[i,j];
 - FOR i:=1 TO 3 DO
 - BEGIN
 - FOR j:=1 TO 4 DO
 - WRITE(m_orig[i,j]:5:2,' ');
 - WRITELN(' ');
 - END;
 - WRITELN(' ');
 - FOR i:=1 TO 4 DO
 - BEGIN
 - FOR j:=1 TO 3 DO
 - WRITE(m_tran[i,j]:5:2,' ');
 - WRITELN(' ');
 - END;
 - END.
 
- Escribir un programa en Pascal que detecte el carácter
 - introducido por el usuario.
 - PROGRAM EJER31;
 - USES CRT;
 - VAR pato_donald:CHAR;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca un caracter alfanumerico: '); READLN
 - (pato_donald);
 - WRITE ('El caracter introducido es -----> ' + pato_donald)
 - END.
 - Escribir un programa en Pascal que determine si un número
 - leído desde el teclado es par o impar
 - PROGRAM EJER34;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca un numero entero: '); READLN (num);
 - IF num = 0 THEN
 - WRITE ('El numero introducido no es par ni impar, es 0')
 - ELSE IF ((num mod 2 = 0)) THEN
 - WRITE ('El numero introducido es par')
 - ELSE
 - WRITE ('El numero introducido es impar')
 - END.
 - PROGRAM EJER34;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero: ');
 - READLN(num);
 - IF (num mod 2 = 0) THEN
 - WRITE('NUMERO PAR')
 - ELSE
 - WRITE('NUMERO IMPAR');
 - END.
 - Escribir un programa en Pascal que detecte si un número
 - leído desde el teclado es mayor o menor que 100.
 - PROGRAM EJER35;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba un numero entero:'); READLN (num);
 - WRITELN ('');
 - IF num < 100 THEN
 - WRITE ('El numero que ha escrito es menor de 100')
 - ELSE IF num > 100 THEN
 - WRITE ('El numero que ha escrito es mayor de 100')
 - ELSE
 - WRITE ('El numero es 100')
 - END.
 - PROGRAM EJER35;
 - USES CRT;
 - VAR num:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero : '); READLN(num);
 - IF (num <= 100) THEN
 - WRITE('NUMERO MENOR O IGUAL A 100 ')
 - ELSE
 - WRITE('NUMERO MAYOR DE 100')
 - END.
 - Escribir un programa en Pascal que dado un número del 1 a 7
 - escriba el correspondiente nombre del día de la semana.
 - PROGRAM EJER36;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba un numero para ver con que dia corresponde: ');
 - READLN (num);
 - IF num=1 THEN
 - WRITE ('Lunes');
 - IF num=2 THEN
 - WRITE ('Martes');
 - IF num=3 THEN
 - WRITE ('Miercoles');
 - IF num=4 THEN
 - WRITE ('Jueves');
 - IF num=5 THEN
 - WRITE ('Viernes');
 - IF num=6 THEN
 - WRITE ('Sabado');
 - IF num=7 THEN
 - WRITE ('Domingo');
 - END.
 - N
 - PROGRAM EJER36;
 - USES CRT;
 - VAR num_dia_sem:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Dia de la semana (numero) -> '); READLN(num_dia_sem);
 - CASE num_dia_sem OF
 - 1: WRITELN('Lunes');
 - 2: WRITELN('Martes');
 - 3: WRITELN('Miercoles');
 - 4: WRITELN('Jueves');
 - 5: WRITELN('Viernes');
 - 6: WRITELN('Sabado');
 - 7: WRITELN('Domingo');
 - ELSE
 - WRITELN('No es un dia de la semana');
 - END;
 - END.
 - Escribir un programa en Pascal que lea dos números desde el
 - teclado y si el primero es mayor que el segundo intercambie sus valores.
 - PROGRAM EJER37;
 - USES CRT;
 - VAR num1,num2:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN ('Escriba dos numeros: ');
 - READLN (num1); WRITE (''); READLN (num2);
 - WRITELN ('');
 - IF num1 > num2 THEN
 - BEGIN
 - WRITE(num2,' ',num1,'. El primer numero introducido
 - es mayor.');
 - WRITE(' Se cambia el orden.');
 - END
 - ELSE
 - BEGIN
 - WRITE(num1,' ',num2,'. El segundo numero introducido es
 - mayor.');
 - WRITE(' No se cambia el orden.');
 - END;
 - END.
 - PROGRAM EJER37;
 - USES CRT;
 - VAR num1,num2,temp:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Numero 1: '); READLN(num1);
 - WRITE('Numero 2: '); READLN(num2);
 - IF (num1 > num2) THEN
 - BEGIN
 - temp:=num1;
 - num1:=num2;
 - num2:=temp;
 - WRITELN('Numero intercambiados');
 - WRITE('Numero 1: '); WRITELN(num1);
 - WRITE('Numero 2: '); WRITELN(num2);
 - END
 - ELSE
 - BEGIN
 - WRITELN('Numeros sin intercambiar');
 - WRITE('Numero 1: '); WRITELN(num1);
 - WRITE('Numero 2: '); WRITELN(num2);
 - END;
 - END.
 - Escribir un programa en Pascal que dada una calificación en
 - valor alfabético (A,B,C,D ó E) indique su equivalente en
 - valor numérico (4,5,6,7 u 8).
 - PROGRAM EJER38;
 - USES CRT;
 - VAR valor:CHAR;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba una calificacion entre a y e: ');
 - READLN (valor);
 - WRITELN ('');
 - CASE UPCASE(valor) OF
 - 'A': WRITE ('El valor correspondiente es: 4');
 - 'B': WRITE ('El valor correspondiente es: 5');
 - 'C': WRITE ('El valor correspondiente es: 6');
 - 'D': WRITE ('El valor correspondiente es: 7');
 - 'E': WRITE ('El valor correspondiente es: 8')
 - ELSE
 - WRITE ('La calificacion no existe');
 - END;
 - END.
 - PROGRAM EJER38;
 - USES CRT;
 - VAR cal:CHAR;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca una calificacion (A-E):');
 - READLN(cal);
 - CASE cal OF
 - 'A': WriteLn('Calificacion numerica --> 4');
 - 'B': WriteLn('Calificacion numerica --> 5');
 - 'C': WriteLn('Calificacion numerica --> 6');
 - 'D': WriteLn('Calificacion numerica --> 7');
 - 'E': WriteLn('Calificacion numerica --> 8');
 - ELSE
 - WriteLn('Calificacion incorrecta');
 - END;
 - END.
 - Escribir un programa en Pascal que lea desde teclado el importe
 - bruto de una factura y determine el importe neto según los
 - siguientes criterios.
 - · Importe bruto menor de 20.000 -> sin descuento
 - · Importe bruto mayor de 20.000 -> 15% de descuento
 - PROGRAM EJER39;
 - USES CRT;
 - VAR importe_bruto:REAL;
 - VAR descuento, total:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('Indique el importe de su factura para ver ');
 - WRITELN ('si le "descontamos" algo');
 - WRITELN ('');
 - READLN (importe_bruto);
 - WRITELN ('');
 - {calcula el importe bruto con descuento del 15%}
 - descuento:=importe_bruto * 0.15;
 - IF importe_bruto > 20000 THEN
 - BEGIN
 - WRITELN ('SE MERECE UN DESCUENTO DE: ',descuento:5:2,
 - ' PTS');
 - total:=importe_bruto - descuento;
 - WRITELN ('El total es de la factura es de: ',total:5:2,
 - ' pts')
 - END
 - ELSE
 - WRITE ('CON ESE DINERO NO SE MERECE UN DESCUENTO')
 - END.
 - PROGRAM EJER39;
 - USES CRT;
 - VAR imp_bru,imp_net:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Importe Bruto -> '); READLN(imp_bru);
 - IF imp_bru <= 20000 THEN
 - imp_net:=imp_bru
 - ELSE
 - imp_net:=imp_bru-(0.15*imp_bru);
 - WRITE('Importe a pagar: '); WRITE(imp_net:5:2)
 - END.
 - Escribir un programa en Pascal que una vez leída una hora
 - en formato (horas, minutos, segundos) indique cual será el tiempo
 - dentro de un segundo.
 - PROGRAM EJER40;
 - USES CRT;
 - {Las variables son: horas, minutos y segundos}
 - {Son las horas, minutos y segundos introducidos por el
 - usuario}
 - VAR h, m, s:INTEGER;
 - VAR h2,m2,s2:INTEGER;
 - {Son las horas, minutos y seguntos a los que se les sumara}
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba en formato horas, minutos y segundos');
 - WRITELN ('');
 - WRITE ('Horas '); READLN (h);
 - WRITE ('Minutos '); READLN (m);
 - WRITE ('Segundos '); READLN (s);
 - WRITELN ('');
 - WRITELN ('Se le sumara un segundo a la hora actual.');
 - WRITELN ('');
 - s:= s + 1;
 - IF s = 60 THEN
 - s2 := 0
 - ELSE
 - s2 := s;
 - m:= ((m * 60) + s) div 60;
 - IF m = 60 THEN
 - m2 := 0
 - ELSE
 - m2 := m;
 - h2:=((h * 60) + m) div 60;
 - IF h2 = 24 THEN
 - h2 := 0;
 - WRITELN (h2,':',m2,':',s2);
 - END.
 - PROGRAM EJER40;
 - USES CRT;
 - VAR h1,m1,s1:INTEGER;
 - VAR h2,m2,s2:INTEGER;
 - BEGIN
 - Clrscr;
 - WRITE('Horas ------> '); READLN(h1);
 - WRITE('Minutos ----> '); READLN(m1);
 - WRITE('Segundos ---> '); READLN(s1);
 - s2:=s1+1;
 - IF s2=60 THEN
 - BEGIN
 - s2:=0;
 - m2:=m1+1;
 - END;
 - IF m2=60 THEN
 - BEGIN
 - m2:=0;
 - h2:=h1+1;
 - END;
 - IF h2=24 THEN
 - BEGIN
 - s2:=0;
 - m2:=0;
 - h2:=0;
 - END;
 - WRITE(h1); WRITE(' hh ');
 - WRITE(m1); WRITE(' mm ');
 - WRITE(s1); WRITE(' ss ');
 - WRITE(' + 1 segundo son: ');
 - WRITE(h2); WRITE(' hh ');
 - WRITE(m2); WRITE(' mm ');
 - WRITE(s2); WRITE(' ss ');
 - END.
 
- Escribir un programa en Pascal que calcule el salario semanal de un
 - trabajador en base a las horas trabajadas y el pago por hora trabajada.
 - · Horas ordinarias (40 primeras horas de trabajo) – 2.000 Pts/hora
 - · 1.5 veces precio hora ordinaria
 - PROGRAM EJER41;
 - USES CRT;
 - VAR htrab, ptsh:REAL; {Horas trabajadas y pts hora}
 - VAR nhextra, hextra:REAL; {Numero de horas extra y horas extra}
 - VAR salario_semanal:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca las horas trabajadas y las pts/hora que se
 - cobran ');
 - WRITELN ('para calcular el salario semanal.');
 - WRITELN ('');
 - WRITE ('Horas trabajadas: '); READLN (htrab);
 - WRITE ('Pts/hora: '); READLN (ptsh);
 - WRITE ('Horas extra: '); READLN (nhextra);
 - WRITELN ('');
 - hextra:=nhextra * (ptsh * 1.5);
 - Salario_semanal:= (htrab) * (ptsh) + hextra;
 - WRITE ('El salario semanal son ',salario_semanal:5:0,' pts.');
 - END.
 - PROGRAM EJER41;
 - USES CRT;
 - VAR pre_hor,hor_tra,hor_ext,sal_sem:REAL;
 - BEGIN
 - ClrScr;
 - pre_hor:=2000;
 - WRITE('Horas trabajadas '); READLN(hor_tra);
 - IF hor_tra<=40 THEN
 - sal_sem:=hor_tra*pre_hor
 - ELSE
 - BEGIN
 - hor_ext:=hor_tra-40;
 - sal_sem:=(40*pre_hor)+(hor_ext*(pre_hor*1.5));
 - END;
 - WRITE('Salario semanal: '); WRITELN(sal_sem:5:2);
 - END.
 - Escribir un programa en Pascal que realice un bucle con While y muestre
 - en pantalla del 1 al 10.
 - PROGRAM EJER42;
 - USES CRT;
 - VAR x:INTEGER;
 - BEGIN
 - x:=0;
 - ClrScr;
 - WHILE X <= 10 DO
 - BEGIN
 - WRITELN (x);
 - x:=x+1;
 - END;
 - END.
 - Escribir un programa en Pascal que realice un bucle con Repeat y muestre
 - en pantalla del 1 al 10.
 - PROGRAM EJER43;
 - USES CRT;
 - VAR x:INTEGER;
 - BEGIN
 - x:=0;
 - ClrScr;
 - REPEAT
 - WRITELN (x);
 - x:=x+1;
 - UNTIL x=10;
 - END.
 - Escribir un programa en Pascal que realice un bucle con For y muestre en
 - pantalla del 1 al 10.
 - PROGRAM EJER44;
 - USES CRT;
 - VAR x:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR x:=0 TO 10 DO
 - WRITELN (x);
 - END.
 - Escribir un programa en Pascal que visualice en pantalla los números
 - pares entre 1 y 25.
 - PROGRAM EJER45;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - num:=2;
 - ClrScr;
 - REPEAT
 - WRITELN (num);
 - num:= num + 2;
 - UNTIL num= 26;
 - END.
 - PROGRAM EJER45;
 - USES CRT;
 - VAR sem:INTEGER;
 - BEGIN
 - ClrScr;
 - sem:=1;
 - WHILE sem <= 25 DO
 - BEGIN
 - IF sem mod 2=0 THEN
 - WRITELN(sem);
 - sem:=sem + 1;
 - END;
 - END.
 - Escribir un programa en Pascal que visualice en pantalla los números
 - múltiplos de 5 comprendidos entre 1 y 100.
 - PROGRAM EJER46;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - num:= 5;
 - ClrScr;
 - WHILE num <= 100 DO
 - BEGIN
 - WRITELN (num);
 - num:= num + 5;
 - END;
 - END.
 - PROGRAM EJER46;
 - USES CRT;
 - VAR sem:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR sem:= 1 TO 100 DO
 - BEGIN
 - IF sem mod 5=0 THEN
 - WRITELN(sem);
 - END;
 - END.
 - Escribir un programa en Pascal que sume los números comprendidos
 - entre 1 y 10.
 - PROGRAM EJER47;
 - USES CRT;
 - VAR num, x:INTEGER;
 - BEGIN
 - ClrScr;
 - num:=1;
 - x:=1;
 - WHILE num <= 10 DO
 - BEGIN
 - WRITELN (x);
 - num:= num + 1;
 - x:= x + num;
 - END;
 - END.
 - Escribir un programa en Pascal que genere la tabla de multiplicar
 - de un número introducido por el teclado.
 - PROGRAM EJER48;
 - USES CRT;
 - VAR tabla, x, num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca un numero para hacer su tabla de
 - multiplicar: ');
 - READLN (num); WRITELN ('');
 - REPEAT
 - WRITELN (tabla);
 - x:= x + 1;
 - tabla:= num * x;
 - UNTIL x=11;
 - END.
 - PROGRAM EJER48;
 - USES CRT;
 - VAR num,sem:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero entero: '); READLN(num);
 - FOR sem:=1 TO 10 DO
 - BEGIN
 - WRITE(num); WRITE(' * '); WRITE(sem); WRITE(' = ');
 - WRITELN(num*sem);
 - END;
 - END.
 - Escribir un programa en Pascal que realice la pregunta ¿Desea
 - continuar S/N? y que no deje de hacerla hasta que el usuario teclee N.
 - PROGRAM EJER49;
 - USES CRT;
 - VAR respuesta:CHAR;
 - BEGIN
 - ClrScr;
 - REPEAT
 - WRITELN ('DESEA CONTINUAR: S/N '); READLN (respuesta);
 - UNTIL respuesta='N';
 - END.
 - PROGRAM EJER49B;
 - USES CRT;
 - VAR respuesta:STRING;
 - BEGIN
 - ClrScr;
 - REPEAT
 - WRITELN ('DESEA CONTINUAR: SI/NO '); READLN (respuesta);
 - UNTIL respuesta='NO';
 - END.
 - PROGRAM EJER49;
 - USES CRT;
 - VAR resp:CHAR;
 - BEGIN
 - ClrScr;
 - resp:='S';
 - WHILE UPCASE(resp)='S' DO
 - BEGIN
 - WRITE('Desea continuar? '); READLN(resp);
 - END;
 - END.
 - Escribir un programa en Pascal que calcule cuantos años tarda en
 - duplicarse un capital depositado al 5% de interés anual.
 - PROGRAM EJER50;
 - USES CRT;
 - VAR tiempo:REAL;
 - VAR cap_ini,cap_fin:REAL;
 - CONST interes = 0.05;
 - BEGIN
 - ClrScr;
 - WRITE ('Intruduzca el capital para calcular cuanto tardara ');
 - WRITE ('en duplicarse, con un interes del 5%: ');
 - READLN (cap_ini);
 - WRITELN ('');
 - IF cap_ini < 0 THEN
 - BEGIN
 - WRITE ('No se puede incluir un capital negativo');
 - EXIT;
 - END;
 - tiempo:=0;
 - cap_fin:= cap_ini;
 - REPEAT
 - cap_fin:=cap_fin + (cap_fin * interes);
 - tiempo:= tiempo + 1;
 - UNTIL cap_fin > (cap_ini * 2);
 - WRITELN ('Tardara',tiempo:3:0,' años en duplicarse');
 - WRITELN ('Capital final: ',cap_fin:5:2,' pts');
 - END.
 - PROGRAM EJER50;
 - USES CRT;
 - VAR cap_ini,cap_fin:REAL;
 - VAR num_year:INTEGER;
 - const INTERES=0.05;
 - BEGIN
 - ClrScr;
 - num_year:=0;
 - WRITE('Capital inicial -----: '); READLN(cap_ini);
 - cap_fin:=cap_ini;
 - WHILE cap_fin < (cap_ini*2) DO
 - BEGIN
 - cap_fin:=cap_fin+(cap_fin*interes);
 - num_year:=num_year + 1;
 - END;
 - WRITE('Capital inicial -----: '); WRITELN(cap_ini:5:2);
 - WRITE('Capital final -------: '); WRITELN(cap_fin:5:2);
 - WRITE('Capital duplicado en '); WRITE(num_year); WRITE
 - (' años');
 - END.
 
- Escribir un programa que calcule la suma de los números hasta un
 - número dado (introducido por el usuario).
 - PROGRAM EJER51;
 - USES CRT;
 - VAR x, y, num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('Este programa calcula la suma de los numeros
 - hasta uno ');
 - WRITE ('introducido por el usuario: ');
 - READLN (num); WRITELN ('');
 - x:=0;
 - WHILE num >= 0 DO
 - BEGIN
 - WRITELN (x);
 - x:= x + num;
 - num:=num - 1;
 - END;
 - END.
 - PROGRAM EJER51;
 - USES CRT;
 - VAR i,num:INTEGER;
 - VAR suma:LONGINT;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero -> '); READLN(num);
 - FOR i:=0 TO num DO
 - suma:=suma+ i;
 - WRITE('Suma '); WRITE('0-'); WRITE(num);
 - WRITE('---->'); WRITE(suma);
 - END.
 - Escribir un programa que pida un número y si el que se introduce
 - por el teclado es menor de 100 que vuelva a solicitarlo.
 - PROGRAM EJER52;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - {Este programa no finaliza hasta que se escribe un numero mayor a 100}
 - ClrScr;
 - REPEAT
 - WRITELN ('Introduzca un numero: ');
 - READLN (num);
 - UNTIL num > 100;
 - END.
 - PROGRAM EJER52;
 - USES CRT;
 - VAR num:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Introduzca un numero -> '); READLN(num);
 - WHILE num<=100 DO
 - BEGIN
 - WRITE('Introduzca un numero -> '); READLN(num);
 - END;
 - END.
 - Escribir un programa en Pascal que calcule el factorial de un número.
 - PROGRAM EJER53;
 - USES CRT;
 - VAR factorial, x, num, y:REAL;
 - BEGIN
 - {Este programa hace el factorial de un numero}
 - ClrScr;
 - WRITE ('Introduzca un numero para hacer su factorial: ');
 - READLN (num); WRITELN ('');
 - x:=1;
 - WHILE num > 1 DO
 - BEGIN
 - x:=x * num;
 - num:=num - 1;
 - WRITELN (x);
 - END;
 - END.
 - PROGRAM EJER53;
 - USES CRT;
 - VAR temp,num,fac:LONGINT;
 - BEGIN
 - ClrScr;
 - fac:=1;
 - temp:=num;
 - WRITE('Introduzca un numero -> '); READLN(num);
 - temp:=num;
 - WHILE num>=1 DO
 - BEGIN
 - fac:=fac*num;
 - num:=num-1;
 - END;
 - WRITE('El factorial de '); WRITE(temp); WRITE(' es '); WRITE(fac);
 - END.
 - Escribir un programa en Pascal que calcule la media de 5 números
 - introducidos por el teclado.
 - PROGRAM EJER54;
 - USES CRT;
 - VAR n1, n2, n3, n4, n5:REAL;
 - VAR resultado:REAL;
 - BEGIN
 - ClrScr;
 - WRITELN ('Introduzca 5 numeros para hacer su media');
 - WRITELN ('');
 - WRITE ('Nø 1: '); READLN (n1);
 - WRITE ('Nø 2: '); READLN (n2);
 - WRITE ('Nø 3: '); READLN (n3);
 - WRITE ('Nø 4: '); READLN (n4);
 - WRITE ('Nø 5: '); READLN (n5);
 - WRITELN ('');
 - resultado:= (n1 + n2 + n3 + n4 + n5) / 2;
 - WRITE (resultado:5:2);
 - END.
 - PROGRAM EJER54;
 - USES CRT;
 - VAR i:INTEGER;
 - VAR num,suma:REAL;
 - BEGIN
 - ClrScr;
 - i:=0;
 - REPEAT
 - WRITE('Introduzca un numero: '); READLN(num);
 - suma:=suma+num;
 - i:=i+1;
 - UNTIL i=5;
 - WRITE('La media es: '); WRITELN(suma/i:5:2);
 - END.
 - Escribir un programa en Pascal que calcule el salario neto semanal
 - de un trabajador en función del número de horas trabajadas
 - y la tasa de impuestos de acuerdo a las siguientes hipótesis.
 - · Las primeras 35 horas se pagan a tarifa normal
 - · Las horas que pasen de 35 se pagan 1.5 veces la tarifa normal
 - · Las tasas de impuestos son:
 - a: Los primeros 50 dólares son libres de impuestos
 - b: Los siguientes 40 dólares tienen un 25% de impuestos
 - c: Los restantes de 45% de impuestos
 - PROGRAM EJER55;
 - USES CRT;
 - VAR sns:REAL; {salario neto semanal}
 - VAR h_trabajadas, h_extra:REAL;
 - VAR precio_h, precio_h_extra:REAL;
 - VAR total:REAL;
 - VAR impuestos0,impuestos25,impuestos45:REAL;
 - {Impuestos con cada % correspondiente}
 - BEGIN
 - ClrScr;
 - WRITELN ('INTRODUZCA LOS DATOS PARA CALCULAR EL SALARIO
 - NETO SEMANAL');
 - WRITELN ('');
 - WRITE ('Las horas trabajadas semanales son 35, las demas
 - debe ');
 - WRITELN ('considerarlas como horas extra. Escriba en
 - dolares.');
 - WRITELN ('');
 - WRITE ('Horas trabajadas: '); READLN (h_trabajadas);
 - WRITE ('Horas extra: '); READLN (h_extra);
 - WRITE ('Precio por cada hora: '); READLN (precio_h);
 - WRITELN ('');
 - precio_h_extra:=precio_h * 1.5;
 - sns:=(h_trabajadas * precio_h) + (h_extra * precio_h_extra);
 - impuestos0:=0;
 - impuestos25:=sns - ((sns - 50) * 0.25);
 - impuestos45:=sns - ((sns - 90) * 0.45);
 - IF sns <= 50 THEN
 - WRITELN ('El salario neto semanal es: ',sns:5:2)
 - ELSE IF sns < 90 THEN
 - WRITELN ('El salario neto semanal es: ',impuestos25:5:2)
 - ELSE IF sns > 90 THEN
 - WRITELN ('El salario neto semanal es: ',impuestos45:5:2);
 - END.
 - PROGRAM EJER55;
 - USES CRT;
 - VAR hor_tra,sal_bru,tas_imp,sal_net:real;
 - CONST tar_hor=2;
 - CONST tasa_imp1=0.25;
 - CONST tasa_imp2=0.45;
 - BEGIN
 - ClrScr;
 - WRITE('Numero de horas trabajadas: '); READLN(hor_tra);
 - {Calculo del salario bruto}
 - IF hor_tra <= 35 THEN
 - sal_bru:=hor_tra*tar_hor
 - ELSE
 - sal_bru:=(35*tar_hor)+((hor_tra-35)*(1.5*tar_hor));
 - {Calculo de impuestos}
 - IF sal_bru <= 50 THEN
 - tas_imp:=0
 - ELSE IF sal_bru <= 90 THEN
 - tas_imp:=(sal_bru-50)*tasa_imp1
 - ELSE
 - tas_imp:=(40*tasa_imp1)+((sal_bru-90)*tasa_imp2);
 - {Calculo salario neto}
 - sal_net:=sal_bru-tas_imp;
 - WRITE('Horas trabajadas -------> '); WRITELN(hor_tra:5:2);
 - WRITE('Salario bruto-----------> '); WRITELN(sal_bru:5:2);
 - WRITE('Impuestos---------------> '); WRITELN(tas_imp:5:2);
 - WRITE('Salario neto------------> '); WRITELN(sal_net:5:2);
 - END.
 - Escribir un programa en Pascal que detecte si un número es primo o no.
 - Un número es primo si sólo es divisible por sí mismo y por la unidad.
 - Ejemplo: 2,3,4,7,11,17,19 son números primos
 - 9 no es número primo, es divisible por 1, 9, 3
 - El algoritmo para resolver este problema pasa por dividir
 - sucesivamente el número estudiado por 2,3,4, etc., hasta
 - el propio número.
 - {Se puede hacer únicamente dividiento por 2,3 y 5. El 4
 - tambien se hace en el ejercicio, no se quita para no liar el
 - ejercicio, ya que son ejercicios para aprender, ya habra
 - tiempo de perfeccionar nuestro codigo}
 - PROGRAM EJER56;
 - USES CRT;
 - VAR num, x:INTEGER;
 - VAR primo:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN ('Introduzca un numero para comprobar si es primo.');
 - WRITELN ('');
 - x:=1;
 - WRITE ('Introduzca el numero: '); READLN (num);
 - WRITELN ('');
 - REPEAT
 - x:= x + 1;
 - primo:= num mod x;
 - WRITELN (primo);
 - UNTIL x = 5; WRITELN ('');
 - WRITELN ('Si ninguno de los resultados es 0, el numero es primo.');
 - WRITELN ('Si alguno es 0, el numero no es primo.');
 - END.
 - PROGRAM EJER56;
 - USES CRT;
 - VAR i,num,flag:INTEGER;
 - BEGIN
 - ClrScr;
 - flag:=0;
 - WRITE('Introduzca un numero -> '); READLN(num);
 - FOR i:=2 TO (num-1) DO
 - BEGIN
 - IF (num mod i)=0 THEN
 - flag:=1;
 - END;
 - IF flag=1 THEN
 - BEGIN
 - WRITE(num); WRITE(' no es un numero primo');
 - END
 - ELSE
 - BEGIN
 - WRITE(num); WRITE(' es un numero primo');
 - END;
 - END.
 - Escribir un programa en Pascal que calcule la depreciación de un
 - objeto según el métodode la línea recta. Calcular el número
 - de años que tarda en hacerse 0.
 - En este método el valor original del objeto se divide por su vida
 - (número de años).
 - El cociente resultanteserá la cantidad en la que el objeto se deprecia
 - anualmente. Por ejemplo, si un objeto se deprecia 8000 dólares en diez
 - años, entonces la depreciaciónanual será 8000/10=800 dólares.
 - Por tanto, el valor del objeto habrá disminuido en 800 dólares cada
 - año.
 - Nótese que la depreciación anual es la misma cada año cuando se
 - utiliza este método.
 - PROGRAM EJER57;
 - USES CRT;
 - VAR annos, valor:REAL;
 - VAR depreciacionanno:REAL;
 - VAR x:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN ('Escriba los datos para conocer la depreciacion anual');
 - WRITELN ('');
 - WRITE ('Valor original: '); READLN (valor);
 - WRITE ('Numero de años: '); READLN (annos);
 - WRITELN ('');
 - depreciacionanno:= valor / annos;
 - x:=0;
 - WHILE valor > 0.1 DO
 - BEGIN
 - valor:=valor - depreciacionanno;
 - x:= x + 1;
 - WRITELN ('AÑO ',x:2,': ',valor:8:0,' pts.');
 - END;
 - END.
 - PROGRAM EJER57;
 - USES CRT;
 - VAR val_ini,val_dep,tas_dep:REAL;
 - VAR i,anios:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Valor inicial -----> '); READLN(val_ini);
 - WRITE('Numero de años ----> '); READLN(anios);
 - tas_dep:=val_ini/anios;;
 - val_dep:=val_ini-tas_dep;
 - FOR I:=1 TO anios DO
 - BEGIN
 - WRITE('A¤o ');
 - WRITE(i:3);
 - WRITE(' ------ ');
 - WRITELN(val_dep:10:2);
 - val_dep:=val_dep-tas_dep;
 - END;
 - END.
 - Escribir un programa en Pascal que calcule la depreciación de
 - un objeto según el método del balance doblemente declinante.
 - En este método, el valor del objeto disminuye cada año en un
 - porcentaje constante.
 - Por tanto, la verdadera cantidad depreciada, en dólares, variara de
 - un año al siguiente.
 - Para obtener el factor de depreciación, dividimos por dos la vida del
 - objeto. Este factor se multiplica por el valor del objeto al comienzo
 - de cada año (y no el valor del original del objeto) para obtener la
 - depreciación anual. Supongamos, por ejemplo que deseamos
 - depreciar un objeto de 8000 dólares por diez años; el factor
 - de depreciación será 2/10=0.2.Por tanto, la depreciación
 - el primer año será 0,2 X 8000 = 1600 dólares, la
 - depreciación del segundo año será 0,2 X 6400=1280
 - dólares; la depreciación del tercer año será 0,2
 - X 5120 = 1024 dólares, y así sucesivamente.
 - PROGRAM EJER58;
 - USES CRT;
 - VAR fdd:REAL; {Factor de depreciacion}
 - VAR vidaobj:REAL; {Vida del objeto = años}
 - VAR depreciacionanno:REAL;
 - VAR valorobj:REAL; {Valor del objeto}
 - VAR x:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE ('PARA CALCULAR LA DEPRECIACION POR EL METODO DEL
 - BALANCE ');
 - WRITELN ('DOBLEMENTE DECLINANTE ESCRIBA LOS DATOS:');
 - WRITELN ('');
 - WRITE ('VALOR DEL OBJETO: '); READLN (valorobj);
 - WRITE ('AñOS: '); READLN (vidaobj);
 - WRITELN ('');
 - fdd:= 2 / vidaobj;
 - x:=1;
 - REPEAT
 - depreciacionanno:= fdd * valorobj;
 - valorobj:=valorobj - depreciacionanno;
 - WRITELN ('AñO ',x:2,': ',valorobj:8:2,' pts.');
 - x:= x + 1;
 - UNTIL x > vidaobj;
 - WRITELN ('');
 - x:= x - 1;
 - WRITELN ('EL VALOR A LOS ',x,' AñOS SERA DE: ',
 - valorobj:6:2,' pts.');
 - END.
 - PROGRAM EJER58;
 - USES CRT;
 - VAR val_ini,val_dep,coe_dep,tas_dep:REAL;
 - VAR i,anios:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITE('Valor inicial ----->'); READLN(val_ini);
 - WRITE('Numero de años ----> '); READLN(anios);
 - coe_dep:=2/anios;
 - tas_dep:=val_ini*coe_dep;
 - val_dep:=val_ini-tas_dep;
 - FOR i:=1 TO anios DO
 - BEGIN
 - WRITE('A¤o ');
 - WRITE(i:3);
 - WRITE(' ------ ');
 - WRITELN(val_dep:10:2);
 - val_dep:=val_dep-(val_dep*coe_dep);
 - END;
 - END.
 - Escribir un programa que calcule las raíces de la
 - ecuación (ax2 + bx + c = 0) teniendo en cuenta los siguientes casos:
 - a. Si a es igual a 0 y b es igual a 0, imprimiremos un mensaje diciendo
 - que la ecuación es degenerada.
 - b. Si a es igual a 0 y b no es igual a 0, existe una raíz
 - única con valor –c/b.
 - c. En los demás casos, utilizaremos la fórmula siguiente:
 - xi = (-b ± raizcuadrada(b2 – 4ac))/(2a)
 - La expresión d = b2 – 4ac se denomina discriminante.
 - · Si d es mayor o igual que 0 entonces hay dos raíces reales
 - · Si d es menor que 0 entonces hay dos raíces complejas de la
 - forma: x+yi,x-yi.
 - Siendo x el valor –b/2a e y el valor absoluto de
 - raizcuadrada(b2-4ac)/(2a)
 - PROGRAM EJER59;
 - USES CRT;
 - VAR a, b ,c:REAL;
 - VAR sp, sn:REAL; {Solucion positiva y negativa}
 - VAR d:REAL; {Discriminante}
 - BEGIN
 - ClrScr;
 - WRITELN ('Introduzca los valores para calcular la ecuacion de 2º
 - grado');
 - WRITELN ('');
 - WRITE ('a: '); READLN (a);
 - WRITE ('b: '); READLN (b);
 - WRITE ('c: '); READLN (c);
 - WRITELN ('');
 - IF (a=0) and (b=0) THEN
 - WRITELN ('La ecuacion es degenerada.')
 - ELSE IF (a=0) and (b<>0) THEN
 - WRITELN ('Existe una raiz con valor -c/b: ',-c/b:5:2)
 - ELSE
 - BEGIN
 - sp:=(-b + sqrt(sqr(b) - (4 * a * c))) / 2 * a;
 - sn:=(-b - sqrt(sqr(b) - (4 * a * c))) / 2 * a;
 - d:=sqr(b) - (4 * a * c);
 - WRITE ('La solucion positiva es: '); WRITELN (sp:5:2);
 - WRITE ('La solucion negativa es: '); WRITELN (sn:5:2);
 - END;
 - END.
 - PROGRAM EJER59;
 - USES CRT;
 - VAR a,b,c,d,r1,r2,x,y:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Coeficiente a -> '); READLN(a);
 - WRITE('Coeficiente b -> '); READLN(b);
 - WRITE('Coeficiente c -> '); READLN(c);
 - IF (a=0) AND (b=0) THEN
 - BEGIN
 - WRITE('La ecuacion es degenerada');
 - EXIT;
 - END
 - ELSE IF (a=0) AND (b<>0) THEN
 - BEGIN
 - r1:=c/b;
 - WRITE('r1 = '); WRITELN(r1:5:2);
 - EXIT;
 - END
 - ELSE
 - BEGIN
 - d:=sqr(b)-4*a*c;
 - IF (d>=0) THEN
 - BEGIN
 - r1:=(-b+sqrt(sqr(b)-4*a*c))/(2*a);
 - r2:=(-b-sqrt(sqr(b)-4*a*c))/(2*a);
 - WRITE('r1 = '); WRITELN(r1:5:2);
 - WRITE('r2 = '); WRITELN(r2:5:2);
 - END
 - ELSE
 - BEGIN
 - x:=-b/(2*a);
 - y:=-b-sqrt(abs(sqr(b)-4*a*c));
 - WRITE('r1 = '); WRITE(x:5:2); WRITE(' + '); WRITE(y:5:2);
 - WRITELN('i');
 - WRITE('r2 = '); WRITE(x:5:2); WRITE(' - '); WRITE(y:5:2);
 - WRITELN('i');
 - END;
 - END;
 - END.
 - Escribir un programa en Pascal que sume dos cadenas. (los datos vienen en
 - el cuerpo del ejercicio).
 - PROGRAM EJER60;
 - USES CRT;
 - VAR tit_pel1:STRING;
 - VAR tit_pel2:STRING;
 - VAR tit_pel3:STRING;
 - BEGIN
 - tit_pel1:='Alien';
 - tit_pel2:='Blade ';
 - tit_pel3:='Runner';
 - ClrScr;
 - WRITELN ('TITULOS DE PELICULAS');
 - WRITELN (tit_pel1);
 - WRITELN (tit_pel2 + tit_pel3);
 - END.
 - PROGRAM EJER60;
 - USES CRT;
 - VAR tit_pel1:STRING;
 - VAR tit_pel2:STRING;
 - VAR tit_pel3:STRING;
 - BEGIN
 - tit_pel1:='Alien';
 - tit_pel2:='Blade';
 - tit_pel3:='Runner';
 - ClrScr;
 - WRITELN('TITULOS DE PELICULAS');
 - WRITELN(tit_pel1);
 - WRITELN(tit_pel2 + tit_pel3);
 - END.
 
- A partir de las cadenas de caracteres 70809207 y Q, construir y
 - visualizar en la pantalla la cadena 70809207-Q.
 - PROGRAM EJER61;
 - USES CRT;
 - VAR numero:LONGINT;
 - VAR letra:STRING;
 - BEGIN
 - ClrScr;
 - numero:=56789312;
 - letra:='F';
 - WRITE ('EL NUMERO DEL DNI ES: ');
 - WRITE (numero,'-',+ letra);
 - END.
 - PROGRAM EJER61;
 - USES CRT;
 - VAR cad1,cad2:STRING;
 - BEGIN
 - cad1:='56789312';
 - cad2:='X';
 - ClrScr;
 - WRITE('NIF:' + cad1 + '-' + cad2);
 - END.
 - Transformar la cadena "Esto es una prueba", en la cadena "Esto es
 - prueba".
 - Utilizar la función DELETE(S,P,N) que elimina N caracteres de la
 - cadena S, a partir de la posición P.
 - PROGRAM EJER62;
 - USES CRT;
 - VAR frase:STRING;
 - BEGIN
 - ClrScr;
 - {Transforma la cadena "Esto es una prueba" en "Esto es prueba"}
 - WRITELN ('Este programa suprime un numero determinado de
 - letras');
 - WRITELN ('');
 - frase:='Esto es una prueba';
 - WRITELN (frase);
 - DELETE (frase,9,4);
 - WRITELN (frase);
 - END.
 - PROGRAM EJER62;
 - USES CRT;
 - VAR cad1,cad2:STRING;
 - BEGIN
 - cad1:='Esto es una prueba';
 - ClrScr;
 - WRITELN(cad1);
 - DELETE(cad1,9,4);
 - WRITELN(cad1);
 - END.
 - Transformar la cadena Curso de Pascal en la cadena Curso de
 - Programación en Pascal.
 - Utilizar la función INSERT(SO,SD,P) que inserta la cadena SO en
 - la cadena SD a partir de la posición P.
 - PROGRAM EJER63;
 - USES CRT;
 - VAR frase1:STRING;
 - VAR frase2:STRING;
 - BEGIN
 - ClrScr;
 - {Este programa inserta la frase2 en la frase1}
 - WRITELN ('Se introducira la frase2 en la frase1');
 - WRITELN ('');
 - frase1:='Curso de Pascal';
 - frase2:='Programacion en ';
 - WRITE ('Frase1: '); WRITELN (frase1);
 - WRITE ('Frase2: '); WRITELN (frase2);
 - WRITELN ('');
 - insert (frase2,frase1,10);
 - WRITELN (frase1);
 - END.
 - PROGRAM EJER63;
 - USES CRT;
 - VAR cad1,cad2:STRING;
 - BEGIN
 - cad1:='Curso de Pascal';
 - cad2:='Programacion en ';
 - ClrScr;
 - WRITELN(cad1);
 - INSERT(cad2,cad1,10);
 - WRITELN(cad1);
 - END.
 - Transformar los valores 91 y 8631217 almacenados en dos variables
 - de tipo REAL en la cadena 91-8631217. Previamente transformar los dos
 - valores numéricos a variables tipo cadena con la función STR(X,S)
 - que almacena en S, como una cadena alfanumérica, el valor X.
 - PROGRAM EJER64;
 - USES CRT;
 - VAR valor1, valor2:REAL;
 - VAR valor_1, valor_2:STRING;
 - BEGIN
 - ClrScr;
 - valor1:=91;
 - valor2:=5550908;
 - STR(valor1:5:2, valor_1);
 - STR(valor2:10:2, valor_2);
 - WRITELN (valor_1,' - ', + valor_2);
 - END.
 - PROGRAM EJER64;
 - USES CRT;
 - VAR val1,val2:REAL;
 - VAR cad1,cad2:STRING;
 - BEGIN
 - val1:=91;
 - val2:=5550908;
 - STR(val1,cad1);
 - STR(val2,cad2);
 - ClrScr;
 - WRITELN(cad1 + '-' + cad2);
 - END.
 - Concatenar las cadenas El, hombre, invisible en una sola el hombre
 - invisible.
 - Utilizar la función CONCAT (S1,S2,S3...) que retorna la concatenación
 - de todas las cadenas pasadas como parámetros.
 - PROGRAM EJER65;
 - USES CRT;
 - VAR S1, S2, S3:STRING;
 - VAR cadena_final:STRING;
 - BEGIN
 - ClrScr;
 - S1:='El';
 - S2:=' hombre';
 - S3:=' invisible';
 - cadena_final:=CONCAT(S1,S2,S3);
 - WRITE (cadena_final);
 - END.
 - PROGRAM EJER65;
 - USES CRT;
 - VAR cad1,cad2,cad3,cad4,esp:STRING;
 - BEGIN
 - cad1:='el';
 - cad2:='hombre';
 - cad3:='invisible';
 - esp:=' ';
 - cad4:=CONCAT(cad1,esp,cad2,esp,cad3);
 - ClrScr;
 - WRITELN(cad1);
 - WRITELN(cad2);
 - WRITELN(cad3);
 - WRITELN(cad4);
 - END.
 - Extraer la cadena SOFIA de la cadena FILOSOIA. Utilizar la función
 - COPY(S,P,N), que devuelve una subcadena de S, de N caracteres, el
 - primero de los cuales ocupa la posición P de S.
 - PROGRAM EJER66;
 - USES CRT;
 - VAR S1,S2:STRING;
 - BEGIN
 - ClrScr;
 - S1:='FILOSOFIA';
 - S1:=COPY (S1,5,5); {'SOFIA'}
 - WRITE (S1);
 - END.
 - PROGRAM EJER66;
 - USES CRT;
 - VAR cad1,cad2:STRING;
 - BEGIN
 - cad1:='FILOSOFIA';
 - cad2:=COPY(cad1,5,5);
 - ClrScr;
 - WRITELN(cad1);
 - WRITELN(cad2);
 - END.
 - Obtener la longitud de la cadena esternocleidomastoideo, utilizando
 - la función LENGTH(S), que devuelve la longitud de la cadena S.
 - PROGRAM EJER67;
 - USES CRT;
 - VAR cadena:STRING;
 - BEGIN
 - ClrScr;
 - WRITELN ('Introduzca una cadena para saber su longitud:');
 - WRITELN ('');
 - READLN (cadena);
 - WRITELN (''); WRITE ('La longitud de la cadena es de: ');
 - WRITE (LENGTH(cadena),' caracteres');
 - END.
 - Obtener la primera posición en la que comienza la subcadena fragi
 - en la cadena supercalifragilisticoexpialidoso. Utilizar la función
 - POS(SB,S) que devuelve la posición de la primera aparición de
 - la subcadena SB en la cadena S.
 - PROGRAM EJER68;
 - USES CRT;
 - VAR cadena:STRING;
 - VAR subcadena:STRING;
 - VAR posi:INTEGER;
 - BEGIN
 - ClrScr;
 - cadena:='supercalifragilisticoexpialidoso';
 - subcadena:='fragi';
 - posi:=POS(subcadena,cadena);
 - WRITE (posi);
 - END.
 - PROGRAM EJER68;
 - USES CRT;
 - VAR cad1,cad2:STRING;
 - VAR posi:INTEGER;
 - BEGIN
 - cad1:='supercalifragilisticoexpialidoso';
 - cad2:='fragi';
 - posi:=POS(cad2,cad1);
 - ClrScr;
 - WRITE('Posicion: '); WRITELN(posi);
 - END.
 - Transformar la cadena Lenguaje Pascal en la cadena LENGUAJE PASCAL.
 - Utilizar la función UPCASE(C) que transforma un carácter C a
 - mayúscula.
 - PROGRAM EJER69;
 - USES CRT;
 - VAR cadena:STRING;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - cadena:='Lenguaje Pascal';
 - i:=0;
 - FOR i:=1 TO LENGTH(cadena) DO
 - cadena[i]:=UPCASE(cadena[i]);
 - WRITE (cadena);
 - i:= i + 1;
 - END.
 - PROGRAM EJER69;
 - USES CRT;
 - VAR i:INTEGER;
 - VAR cad1:STRING;
 - BEGIN
 - i:=0;
 - cad1:='Lenguaje Pascal';
 - ClrScr;
 - WRITELN(cad1);
 - WHILE i <= LENGTH(cad1) DO
 - BEGIN
 - cad1[i]:=UPCASE(cad1[i]);
 - i:=i+1;
 - END;
 - WRITELN(cad1);
 - END.
 - Transformar la cadena "VACA" en la cadena "vaca".
 - PROGRAM EJER70;
 - USES CRT;
 - VAR cadena:STRING;
 - VAR i, v_ascii:INTEGER;
 - BEGIN
 - ClrScr;
 - cadena:='VACA';
 - FOR i:=1 TO LENGTH (cadena) DO
 - BEGIN
 - v_ascii:=ORD (cadena[i]);
 - cadena[i]:=(CHR(v_ascii+32));
 - END;
 - WRITE (cadena);
 - END.
 - PROGRAM EJER70;
 - USES CRT;
 - VAR i,val_asc:INTEGER;
 - VAR cad1:STRING;
 - BEGIN
 - i:=0;
 - cad1:='VACA';
 - ClrScr;
 - WRITELN(cad1);
 - WHILE i <= LENGTH(cad1) DO
 - BEGIN
 - val_asc:=ORD(cad1[i]);
 - cad1[i]:=(CHR(val_asc+32));
 - i:=i+1;
 - END;
 - WRITELN(cad1);
 - END.
 
- Escribir un programa en Pascal que lea 4 datos, calcule y visualice
 - en pantalla su producto, suma y media aritmética.
 - PROGRAM EJER71;
 - USES CRT;
 - VAR a,b,c,d:REAL;
 - VAR producto,suma,media:REAL;
 - BEGIN
 - ClrScr;
 - WRITELN('Introduzca 4 datos para calcular las soluciones:');
 - WRITELN ('');
 - WRITE ('a: '); READLN (a);
 - WRITE ('b: '); READLN (b);
 - WRITE ('c: '); READLN (c);
 - WRITE ('d: '); READLN (d);
 - WRITELN ('');
 - producto:= a * b * c * d;
 - suma:= a + b + c + d;
 - media:= suma / 2;
 - WRITELN ('El valor del producto de los numeros es: ',
 - producto:10:2);
 - WRITELN ('El valor de la suma de los numeros es: ',
 - suma:10:2);
 - WRITELN ('El valor de la media de los numero ses: ',
 - media:10:2);
 - END.
 - PROGRAM EJER71;
 - USES CRT;
 - VAR i:INTEGER;
 - VAR dato,producto,suma,media:REAL;
 - BEGIN
 - ClrScr;
 - producto:=1;
 - suma:=0;
 - FOR i:=1 TO 4 DO
 - BEGIN
 - WRITE('Dato '); WRITE(i); WRITE('-> ');
 - READLN(dato);
 - producto:=producto*dato;
 - suma:=suma+dato;
 - END;
 - media:=suma/i;
 - WRITE('Producto: '); WRITELN(producto:5:2);
 - WRITE('Suma: '); WRITELN(suma:5:2);
 - WRITE('Media: '); WRITELN(media:5:2);
 - END.
 - Escribir un programa en Pascal que lea un peso en libras y a
 - continuación visualice su equivalente en kilos y en gramos.
 - 1 libra = 0.45 Kg
 - PROGRAM EJER72;
 - USES CRT;
 - VAR libras,kilos,gramos:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca el numero de libras para pasarlo a kilos y
 - gramos: ');
 - READLN (libras);
 - WRITELN ('');
 - kilos:= libras * 0.45;
 - gramos:= kilos * 1000;
 - WRITELN ('Son ',kilos:5:2,' kilos y ',gramos:5:2,' gramos.');
 - END.
 - PROGRAM EJER72;
 - USES CRT;
 - VAR libras:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Libras -> '); READLN(libras);
 - WRITE('Kilogramos -> '); WRITELN(libras*0.45:7:2);
 - WRITE('Gramos -> '); WRITELN((libras*0.45)/1000:7:4);
 - END.
 - Escribir un programa en Pascal que calcule y escriba el cuadrado de
 - 821.
 - PROGRAM EJER73;
 - USES CRT;
 - VAR numero, cuadrado:REAL;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba un numero para hacer su cuadrado: ');
 - READLN (numero);
 - WRITELN ('');
 - cuadrado:= sqr(numero);
 - WRITELN ('El cuadrado es: ',cuadrado:5:2)
 - END.
 - PROGRAM EJER73;
 - USES CRT;
 - VAR numero:LONGINT;
 - BEGIN
 - ClrScr;
 - numero:=821;
 - WRITE('Cuadrado de 821: '); WRITE(sqr(numero));
 - END.
 - Escribir un programa en Pascal que escriba los números comprendidos
 - entre 1 y 1000.
 - El programa escribirá en la pantalla los números en grupos de20,
 - solicitando al usuario si quiere o no continuar visualizando el
 - siguiente grupo de números.
 - PROGRAM EJER74;
 - USES CRT;
 - VAR num, flag, x:INTEGER;
 - VAR resp:CHAR;
 - BEGIN
 - ClrScr;
 - num:=0;
 - x:=1;
 - FOR num:=1 TO 100 DO
 - BEGIN
 - IF (num mod 20)= 0 THEN
 - flag := x;
 - WRITELN (num);
 - IF flag = x THEN
 - BEGIN
 - WRITE('DESEA CONTINUAR: S/N --> '); READLN(resp);
 - IF UPCASE (resp)<>'S' THEN
 - BEGIN
 - WRITE ('Este programa ha finalizado'); EXIT
 - END;
 - END;
 - x:= x + 20;
 - END;
 - END.
 - PROGRAM EJER74;
 - USES CRT;
 - VAR fila,i:INTEGER;
 - VAR resp:CHAR;
 - BEGIN
 - fila:=1;
 - ClrScr;
 - FOR i:=1 TO 1000 DO
 - BEGIN
 - WRITELN(i);
 - fila:=fila+1;
 - IF fila = 21 THEN
 - BEGIN
 - WRITE('Desea continuar (S/N)?');
 - READLN(resp);
 - IF UPCASE(resp)='S' THEN
 - BEGIN
 - ClrScr;
 - fila:=0;
 - CONTINUE;
 - END
 - ELSE
 - EXIT;
 - END;
 - END;
 - END.
 - Escribir un programa en Pascal que calcule, independientemente,
 - la suma y la media de los números pares e impares comprendidos entre
 - 1 y 200.
 - PROGRAM EJER75;
 - USES CRT;
 - VAR media_p, media_i:REAL;
 - VAR suma_p, suma_i:LONGINT;
 - VAR i, total_p, total_i:LONGINT;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 200 DO
 - BEGIN
 - IF (i mod 2)=0 THEN
 - BEGIN
 - suma_p:=suma_p + i;
 - total_p:=total_p + 1;
 - END
 - ELSE
 - BEGIN
 - suma_i:=suma_i + i;
 - total_i:=total_i + 1;
 - END;
 - END;
 - media_i:= suma_i / total_i;
 - media_p:= suma_p / total_p;
 - WRITELN ('La suma de los impares es: ',suma_i);
 - WRITELN ('La suma de los pares es : ',suma_p);
 - WRITELN ('La media de los impares es: ',media_i:5:2);
 - WRITELN ('La media de los pares es: ',media_p:5:2);
 - END.
 - PROGRAM EJER75;
 - USES CRT;
 - VAR i,conpar,conimp,sumapar,sumaimp:INTEGER;
 - BEGIN
 - ClrScr;
 - sumapar:=0; sumaimp:=0; conpar:=0; conimp:=0;
 - FOR i:=1 TO 200 DO
 - BEGIN
 - IF (i mod 2) = 0 THEN
 - BEGIN
 - sumapar:=sumapar+i;
 - conpar:=conpar+1;
 - END
 - ELSE
 - BEGIN
 - sumaimp:=sumaimp+i;
 - conimp:=conimp+1;
 - END;
 - END;
 - WRITE('Suma pares: '); WRITELN(sumapar:7);
 - WRITE('Media pares: '); WRITELN(sumapar div conpar:7);
 - WRITE('Suma impares: '); WRITELN(sumaimp:7);
 - WRITE('Media impares: '); WRITELN(sumaimp div conimp:7);
 - END.
 - Escribir un programa en Pascal que calcule el importe de una factura
 - sabiendo que el IVA a aplicar es del 12% y que si el importe bruto de
 - la factura es superior a 50.000 pts se debe realizar un descuento del 5%.
 - PROGRAM EJER76;
 - USES CRT;
 - VAR i_bruto, i_neto, importe:REAL;
 - CONST IVA=0.12;
 - BEGIN
 - ClrScr;
 - WRITE ('Escriba el importe bruto: '); READLN (i_bruto);
 - WRITELN ('');
 - i_bruto:= i_bruto + (IVA * i_bruto);
 - IF i_bruto > 50000 THEN
 - BEGIN
 - i_neto:= i_bruto - (i_bruto * 0.05);
 - WRITE ('El importe neto con descuento del 5% es de: ',
 - i_neto:5:2,' pts')
 - END
 - ELSE
 - BEGIN
 - i_neto:= i_bruto;
 - WRITE ('El importe bruto sin descuento es de: ',i_neto:5:2,
 - ' pts.');
 - END;
 - END.
 - PROGRAM EJER76;
 - USES CRT;
 - VAR imp_bruto:REAL;
 - BEGIN
 - ClrScr;
 - WRITE('Importe bruto -> '); READLN(imp_bruto);
 - IF imp_bruto <= 50000 THEN
 - BEGIN
 - WRITE('Importe neto: ');
 - WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
 - END
 - ELSE
 - BEGIN
 - WRITE('Importe neto -> ');
 - imp_bruto:=imp_bruto-(imp_bruto*0.05);
 - WRITELN(imp_bruto+(imp_bruto*0.12):9:2);
 - END;
 - END.
 - Escribir un programa en Pascal que calcule la suma de los cuadrados
 - de los 100 primeros números enteros.
 - PROGRAM EJER77;
 - USES CRT;
 - VAR x:INTEGER;
 - VAR suma:REAL;
 - BEGIN
 - ClrScr;
 - FOR x:=1 TO 100 DO
 - BEGIN
 - suma:= suma + (sqr(x));
 - END;
 - WRITE (suma);
 - END.
 - PROGRAM EJER77;
 - USES CRT;
 - VAR i:INTEGER;
 - VAR sumacuad:LONGINT;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 100 DO
 - sumacuad:=sumacuad+sqr(i);
 - WRITE('Suma de Cuadrados (1-100) ---> '); WRITE(sumacuad);
 - END.
 - Escribir un programa en Pascal que visualice una tabla de conversión de
 - kilómetros a millas marinas y millas terrestres:
 - 1 milla marina = 1852 metros
 - 1 milla terrestre = 1609 metros
 - PROGRAM EJER78;
 - USES CRT;
 - VAR m, m_mar, m_terr:REAL; {metros, millas marinas y
 - terrestres}
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca el numero de metros: '); READLN (m);
 - WRITELN ('');
 - m_mar:=m/1852;
 - m_terr:=m/1609;
 - WRITE (m:5:2,' metros son: ',m_mar:5:2,' millas marinas y ');
 - WRITE (m_terr:5:2,' millas terrestres');
 - END.
 - PROGRAM EJER78;
 - USES CRT;
 - VAR milla_marina:REAL;
 - VAR milla_terrestre:REAL;
 - VAR kilometros:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN('Kilometros' + ' ---- ' + 'Millas M.' + ' ---- '
 - + 'Millas T.');
 - FOR kilometros:=1 TO 10 DO
 - BEGIN
 - WRITE(kilometros:6);
 - WRITE(kilometros/1.852:15:2);
 - WRITELN(kilometros/1.609:15:2);
 - END;
 - END.
 - Escribir un programa en Pascal que lea 10 datos desde el teclado y sume
 - sólo aquellos que sean negativos.
 - PROGRAM EJER79;
 - USES CRT;
 - VAR y, suma:REAL;
 - VAR x:INTEGER;
 - BEGIN
 - ClrScr;
 - WRITELN ('Debe introducir 10 datos, se sumaran solo los
 - negativos:');
 - WRITELN ('');
 - FOR x:=1 TO 10 DO
 - BEGIN
 - WRITE('Introduzca el dato ',x:2,': '); READLN (y);
 - IF y < 0 THEN suma := suma + y;
 - END;
 - WRITELN ('');
 - WRITE ('El resultado de la suma de los numeros negativos es: ');
 - WRITELN (suma:5:2);
 - END.
 - PROGRAM EJER79;
 - USES CRT;
 - VAR i:INTEGER;
 - VAR num,sumaneg:REAL;
 - BEGIN
 - ClrScr;
 - sumaneg:=0;
 - FOR i:=1 TO 10 DO
 - BEGIN
 - WRITE('Numero '); WRITE(i); WRITE(' -> '); READLN(num);
 - IF num < 0 THEN
 - sumaneg:=sumaneg+num;
 - END;
 - WRITE('Suma de negativos: '); WRITE(sumaneg);
 - END.
 - Escribir un programa en Pascal que calcule el sueldo semanal de un
 - trabajador a partir del número de horas trabajadas por día y
 - las siguientes tarifas:
 - 600 pts/hora Turno de mañana
 - 800 pts/hora Turno de noche
 - 1000 pts/hora Turno de días festivos
 - PROGRAM EJER80;
 - USES CRT;
 - VAR t_mannana, t_noche, t_festivos:INTEGER;
 - VAR total:LONGINT;
 - BEGIN
 - ClrScr;
 - WRITE ('Introduzca las horas trabajadas por dia, en cada
 - turno, ');
 - WRITELN (' para calcular el sueldo semanal.'); WRITELN ('');
 - WRITE ('Horas del turno de ma¤ana: '); READLN
 - (t_mannana);
 - WRITE ('Horas del turno de noche: '); READLN
 - (t_noche);
 - WRITE ('Horas del turno de dias festivos: '); READLN
 - (t_festivos);
 - WRITELN ('');
 - total:=(600 * t_mannana) + (800 * t_noche) + (1000 * t_festivos);
 - WRITE ('El sueldo semanal es de: ',total);
 - END.
 - PROGRAM EJER80;
 - USES CRT;
 - VAR turno,resp:CHAR;
 - VAR numhoras:REAL;
 - BEGIN
 - ClrScr;
 - resp:='S';
 - WRITE('Turno ? (M/N/F) ---> '); READLN(turno);
 - WRITE('Numero de horas (dia) ---> '); READLN(numhoras);
 - WHILE UPCASE(resp) = 'S' DO
 - BEGIN
 - IF UPCASE(turno) = 'M' THEN
 - BEGIN
 - WRITE('Salario neto: '); WRITELN(numhoras*5*600:7:2);
 - END
 - ELSE IF UPCASE(turno) = 'N' THEN
 - BEGIN
 - WRITE('Salario neto: '); WRITELN(numhoras*5*800:7:2);
 - END
 - ELSE IF UPCASE (turno) = 'F' THEN
 - BEGIN
 - WRITE('Salario neto: '); WRITELN(numhoras*5*1000:7:2);
 - END
 - ELSE
 - WRITELN('Turno incorrecto');
 - WRITE('¨Desea continuar (S/N)? ---> ');
 - READLN(resp);
 - IF UPCASE(resp) = 'S' THEN
 - BEGIN
 - ClrScr;
 - WRITE('Turno ? (M/N/F) --->'); READLN(turno);
 - WRITE('Numero de horas (dia) --->'); READLN(numhoras);
 - END
 - ELSE
 - EXIT;
 - END;
 - END.
 
- Escribir un programa en Pascal que rellene un array con los números
 - enteros comprendidos entre 4 y 14.
 - PROGRAM EJER81;
 - USES CRT;
 - VAR arr_num:ARRAY [4..14] of INTEGER;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=4 TO 14 DO
 - arr_num[i]:=i;
 - FOR i:=4 TO 14 DO
 - BEGIN
 - WRITELN('Numero: ',arr_num[i]);
 - END;
 - END.
 - PROGRAM EJER81;
 - USES CRT;
 - VAR arr_num:ARRAY[1..11] of INTEGER;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - num:=4;
 - FOR i:=1 TO 11 DO
 - BEGIN
 - arr_num[i]:=num;
 - num:=num+1;
 - END;
 - FOR i:=1 TO 11 DO
 - BEGIN
 - WRITE('Posici¢n ',i:2, ': '); WRITELN(arr_num[i]:5);
 - END;
 - END.
 - Escribir un programa en Pascal que rellene un array con los números
 - pares comprendidos entre 1 y 10.
 - PROGRAM EJER82;
 - USES CRT;
 - VAR arr_num:ARRAY [1..10] of INTEGER;
 - VAR i, b:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - WHILE i <= 10 DO
 - BEGIN
 - arr_num[i]:=i;
 - IF (i mod 2)=0 THEN
 - BEGIN
 - WRITELN(arr_num[i]);
 - END;
 - i:= i + 1;
 - END;
 - END.
 - PROGRAM EJER82;
 - USES CRT;
 - VAR arr_num:ARRAY[1..10] of INTEGER;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - num:=1;
 - WHILE num<=10 DO
 - BEGIN
 - IF num mod 2 = 0 THEN
 - BEGIN
 - arr_num[i]:=num;
 - i:=i+1;
 - END;
 - num:=num+1;
 - END;
 - arr_num[i]:=3;
 - i:=1;
 - WHILE arr_num[i] <> 3 DO
 - BEGIN
 - WRITE('Posicion ',i:2,' : '); WRITELN(arr_num[i]:5);
 - i:=i+1;
 - END;
 - END.
 - Escribir un programa en Pascal que rellene un array con los números
 - comprendidos entre 25 y 35 divididos por 3.
 - PROGRAM EJER83;
 - USES CRT;
 - VAR arr_num:ARRAY [1..11] of REAL;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=25 TO 35 DO
 - arr_num[i]:=i;
 - FOR i:=25 TO 35 DO
 - WRITELN(arr_num[i] / 3:5:2);
 - END.
 - PROGRAM EJER83;
 - USES CRT;
 - VAR arr_num:ARRAY[1..11] of REAL;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - num:=025;
 - FOR i:=1 TO 10 DO
 - BEGIN
 - arr_num[i]:=num/3;
 - num:=num+1;
 - END;
 - i:=1;
 - WHILE i <= 10 DO
 - BEGIN
 - WRITE('Posicion ',i:2, ': '); WRITELN(arr_num[i]:5);
 - i:=i+1;
 - END;
 - END.
 - Escribir un programa en Pascal que rellene un array con cinco
 - números enteros consecutivos y haga una copia de ese array en otro.
 - PROGRAM EJER84;
 - USES CRT;
 - VAR arr_num1,arr_num2:ARRAY [5..10] of INTEGER;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=5 TO 10 DO
 - BEGIN
 - arr_num1[i]:=i;
 - arr_num2[i]:=arr_num1[i];
 - END;
 - FOR i:=5 TO 10 DO
 - WRITELN (arr_num2[i]);
 - END.
 - PROGRAM EJER84;
 - USES CRT;
 - VAR arr_num1,arr_num2:ARRAY[1..5] of INTEGER;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - num:=100;
 - FOR i:=1 TO 5 DO
 - BEGIN
 - arr_num1[i]:=num;
 - num:=num+1;
 - END;
 - FOR i:=1 TO 5 DO
 - arr_num2[i]:=arr_num1[i];
 - i:=1;
 - WRITELN('ARRAY 1 ARRAY 2':30);
 - WHILE i <= 5 DO
 - BEGIN
 - WRITE('Posicion ',i:2, ': ');
 - WRITE(arr_num1[i]:5);
 - WRITELN(arr_num2[i]:10);
 - i:=i+1;
 - END;
 - END.
 - Escribir un programa en Pascal que rellene un array de 10 elementos
 - con los números comprendidos entre 23 y 32 y copie en otro array esos
 - números multiplicados por 0.35.
 - PROGRAM EJER85;
 - USES CRT;
 - VAR arr_num1, arr_num2:ARRAY [23..32] of REAL;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=23 TO 32 DO
 - BEGIN
 - arr_num1[i]:=i;
 - arr_num2[i]:=(arr_num1[i] * 0.35);
 - END;
 - FOR i:=23 TO 32 DO
 - WRITELN(arr_num2[i]:5:2);
 - END.
 - PROGRAM EJER85;
 - USES CRT;
 - VAR arr_num1,arr_num2:ARRAY[1..10] of REAL;
 - VAR i,num:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - num:=23;
 - FOR i:=1 TO 10 DO
 - BEGIN
 - arr_num1[i]:=num;
 - num:=num+1;
 - END;
 - FOR i:=1 TO 10 DO
 - arr_num2[i]:=arr_num1[i]*0.35;
 - i:=1;
 - WRITELN('ARRAY 1 ARRAY 2':30);
 - WHILE i <= 10 DO
 - BEGIN
 - WRITE('Posicion ',i:2, ': ');
 - WRITE(arr_num1[i]:5:2);
 - WRITELN(arr_num2[i]:10:2);
 - i:=i+1;
 - END;
 - END.
 - Escribir un programa en Pascal que rellene un array con los veinte
 - primeros números pares y calcule su suma.
 - PROGRAM EJER86;
 - USES CRT;
 - VAR arr_pares:ARRAY [1..40] of INTEGER;
 - VAR i, suma:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - FOR i:= 1 TO 40 DO
 - BEGIN
 - IF (i mod 2) = 0 THEN
 - BEGIN
 - arr_pares[i]:=i;
 - suma:= suma + i;
 - END;
 - END;
 - WRITELN('La suma de los 20 primeros numeros pares es: ',suma);
 - END.
 - PROGRAM EJER86;
 - USES CRT;
 - VAR arr_num:ARRAY[1..25] of INTEGER;
 - VAR i,num,suma_par:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=1;
 - num:=1;
 - suma_par:=0;
 - WHILE i<=20 DO
 - BEGIN
 - IF num mod 2 = 0 THEN
 - BEGIN
 - arr_num[i]:=num;
 - i:=i+1;
 - suma_par:=suma_par+num;
 - END;
 - num:=num+1;
 - END;
 - i:=1;
 - WHILE i <= 20 DO
 - BEGIN
 - WRITE('Posici¢n ',i:2, ': ');
 - WRITELN(arr_num[i]:5);
 - i:=i+1;
 - END;
 - WRITE('SUMA: ', suma_par:12);
 - END.
 - Escribir un programa en Pascal que solicite cinco números, los
 - almacene en un array y luego calcule la media aritmética de esos números.
 - PROGRAM EJER87;
 - USES CRT;
 - VAR arr_num:ARRAY [1..5] of REAL;
 - VAR i, num:INTEGER;
 - VAR media:REAL;
 - BEGIN
 - ClrScr;
 - WRITELN ('Escriba 5 numeros para hacer su media aritmetica: ');
 - FOR i := 1 TO 5 DO
 - BEGIN
 - READLN(num);
 - arr_num[i]:=num;
 - END;
 - FOR i:=1 TO 5 DO
 - media:= media + arr_num[i];
 - media:= media / i;
 - WRITELN ('La media aritmetica es: ',media:5:2);
 - END.
 - PROGRAM EJER87;
 - USES CRT;
 - VAR arr_num:ARRAY[1..10] of REAL;
 - VAR num,suma,media:REAL;
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - i:=0;
 - suma:=0;
 - media:=0;
 - WHILE i<5 DO
 - BEGIN
 - WRITE('Numero ',i+1,'--->'); READLN(num);
 - arr_num[i]:=num;
 - suma:=suma+num;
 - i:=i+1;
 - END;
 - media:=(suma/i);
 - WRITE('Media: ', media:5:2);
 - END.
 - Escribir un programa en Pascal que tras asignar los números,
 - 23, 45, 68, 99, 10, 15 y 4 a un array, determine la posición del array
 - en la que se encuentra el máximo valor.
 - PROGRAM EJER88;
 - USES CRT;
 - CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
 - VAR i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 7 DO
 - BEGIN
 - IF arr_num[i]=99 THEN
 - WRITE ('La posicion del mayor numero (',arr_num[i],') es:
 - ',i);
 - END;
 - END.
 - PROGRAM EJER88;
 - USES CRT;
 - CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
 - VAR i,posi_max,val_max:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 7 DO
 - BEGIN
 - IF arr_num[i] > val_max THEN
 - BEGIN
 - val_max:=arr_num[i];
 - posi_max:=i;
 - END;
 - END;
 - WRITE('VALOR MAXIMO: ', val_max, ' POSICION: ', posi_max);
 - END.
 - Escribir un programa en Pascal que tras asignar los números,
 - -2, 5, 8, -9, 10, 15 y -4 a un array calcule, independientemente, la suma
 - de los elementos positivos y negativos.
 - PROGRAM EJER89;
 - USES CRT;
 - CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
 - VAR i:INTEGER;
 - VAR suma_p, suma_i:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 7 DO
 - BEGIN
 - IF arr_num[i] >= 0 THEN
 - suma_p:= suma_p + arr_num[i]
 - ELSE IF arr_num[i] < 0 THEN
 - suma_i:= suma_i + arr_num[i];
 - END;
 - WRITELN ('La suma de los numeros pares es: ',suma_p);
 - WRITELN ('La suma de los numeros impares es: ',suma_i);
 - END.
 - PROGRAM EJER89;
 - USES CRT;
 - CONST arr_num:ARRAY[1..7] of INTEGER=(-2,5,8,-9,10,15,-4);
 - VAR i,suma_pos,suma_neg:INTEGER;
 - BEGIN
 - ClrScr;
 - FOR i:=1 TO 7 DO
 - BEGIN
 - IF arr_num[i] > 0 THEN
 - suma_pos:=suma_pos+arr_num[i]
 - ELSE
 - suma_neg:=suma_neg+arr_num[i];
 - END;
 - WRITELN('SUMA POSITIVOS: ', suma_pos);
 - WRITELN('SUMA NEGATIVOS: ', suma_neg);
 - END.
 - Escribir un programa en Pascal que tras asignar los números,
 - 23, 45, 68, 99, 10, 15 y 4 a un array, determine las posiciones del array
 - en las que se encuentran el máximo y el mínimo valor.
 - PROGRAM EJER90;
 - USES CRT;
 - CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);
 - VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER;
 - BEGIN
 - ClrScr;
 - mayor:= arr[1];
 - menor:= arr[1];
 - FOR i:=2 TO 7 DO
 - BEGIN
 - IF arr[i] >= mayor THEN
 - BEGIN
 - mayor:= arr[i];
 - posi_mayor:=i;
 - END
 - ELSE
 - CONTINUE;
 - END;
 - WRITELN ('El numero mayor es: ',mayor:3);
 - WRITELN ('Su posicion es: ',posi_mayor:3);
 - WRITELN ('');
 - FOR i:=2 TO 7 DO
 - BEGIN
 - IF arr[i] <= menor THEN
 - BEGIN
 - menor:= arr[i];
 - posi_menor:=i;
 - END
 - ELSE
 - CONTINUE;
 - END;
 - WRITELN ('El numero menor es: ',menor:3);
 - WRITELN ('Su posicion es: ',posi_menor:3);
 - END.
 - PROGRAM EJER90;
 - USES CRT;
 - CONST arr_num:ARRAY[1..7] of INTEGER=(23,45,68,99,10,15,4);
 - VAR i,val_max,val_min,pos_max,pos_min:INTEGER;
 - BEGIN
 - ClrScr;
 - val_min:=arr_num[1];
 - val_max:=arr_num[1];
 - FOR i:=1 TO 7 DO
 - BEGIN
 - IF arr_num[i] > val_max THEN
 - BEGIN
 - val_max:=arr_num[i];
 - pos_max:=i;
 - END;
 - IF arr_num[i] < val_min THEN
 - BEGIN
 - val_min:=arr_num[i];
 - pos_min:=i;
 - END;
 - END;
 - WRITELN('VALOR MAXIMO: ', val_max:3, ' POSICIàN: ', pos_max:3);
 - WRITELN('VALOR MINIMO: ', val_min:3, ' POSICIàN: ', pos_min:3);
 - 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
...
Disponible sólo en Clubensayos.com