ejercicios resueltos en turbo pascal

16

Click here to load reader

Upload: mariateresaseco

Post on 02-Dec-2014

71 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Ejercicios Resueltos en Turbo Pascal

1

EJERCICIOS EN PASCAL 1.- Área de un triángulo (Entrada y salida estándar - Pascal)

1.- Escribir un programa (en Pascal) que:

1º) Pida por teclado la base (dato real) de un triángulo. 2º) Pida por teclado la altura (dato real) de un triángulo. 3º) Calcule el área del triángulo. 4º) Muestre por pantalla el resultado (dato real). En pantalla:

PROGRAM Area_triangulo; VAR Altura, Area, Base : Real; BEGIN ClrScr; WRITE( 'Introduzca base: ' ); READLN( Base ); WRITE( 'Introduzca altura: ' ); READLN( Altura ); Area := Base * Altura / 2; WRITE( 'El area del triangulo es: ', Area:0:2 ); END.

Una segunda solución es:

PROGRAM Area_triangulo; USES Crt; VAR Altura, Base : Real; BEGIN ClrScr; WRITE( 'Introduzca base: ' ); READLN( Base ); WRITE( 'Introduzca altura: ' ); READLN( Altura ); WRITE('El area del triangulo es: ', Base * Altura / 2:0:2 ); END.

2.- Escribir un programa en Pascal que admita por t eclado un ángulo en grados, calcule su tangente y la muestre por pantalla en no tación decimal con siete caracteres y dos decimales. Precondición: angGra " 90 + k*180

PROGRAM Tangente; CONST Pi=3.1416; VAR angGra, angRad,tan: real; BEGIN WRITE ('Escribe el ángulo en grados ( ángulo<>90+k*180): '); READLN(angGra); angRad:=angGra * Pi / 180; tan:= sin(angRad) / cos (angRad) WRITE('El valor de la tangente es: '); WRITEln(tan:7:2) END.

Page 2: Ejercicios Resueltos en Turbo Pascal

2

3.- Cambio de signo (Alternativa simple - Pascal) Escribir un programa (en Pascal) que:

1º) Pida por teclado un número (dato real). 2º) Muestre por pantalla el número introducido, pero, cambiado de signo y, sólo en el caso de que el número no sea mayor o igual que cero.

PROGRAM Cambio_de_signo; USES Crt; VAR Numero : Real; BEGIN ClrScr; WRITE( 'Introduzca numero (real): ' ); READLN( Numero ); IF ( Numero < 0 ) then WRITE( -Numero ) END.

4.- División entera (Entrada y salida estándar - Pa scal) Escribir un programa (en Pascal) que: 1º) Pida por teclado dos números (datos enteros). (Divisor y Dividendo) 2º) Muestre por pantalla el resultado de realizar la división entera del primer número introducido por el usuario entre el segundo, y el resto.

PROGRAM Division_entera; USES Crt; VAR Dividendo, Divisor, Cociente, Resto : Integer; BEGIN ClrScr; WRITE( 'Introduzca dividendo (entero): ' ); READLN( Dividendo ); WRITE( 'Introduzca divisor (entero): ' ); READLN( Divisor ); Cociente := Dividendo div Divisor; Resto := Dividendo mod Divisor; WRITE(‘Dividendo, ' div ', Divisor, ' = ', Cociente, ' ( Resto = ', Resto, ' )' ); END.

Una segunda solución es:

PROGRAM Division_entera; USES Crt; VAR Dividendo, Divisor : Integer; BEGIN ClrScr; WRITE( 'Introduzca dividendo (entero): ' ); READLN( Dividendo ); WRITE( 'Introduzca divisor (entero): ' ); READLN( Divisor ); WRITE( ‘Dividendo, ' div ', Divisor, ' = ', Dividendo div Divisor, ' ( Resto = ', Dividendo mod Divisor, ' )' ); END.

Page 3: Ejercicios Resueltos en Turbo Pascal

3

5.- Escribir un programa que convierta un número de segundos en su equivalente en minutos y segundos.

PROGRAM Convertir; 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.

Una segunda solución es:

PROGRAM Convertir; USES Crt; VAR iniseg, segundos, minutos: integer; BEGIN ClrScr; WRITE('Dime un número de segundos:'); READLN(iniseg); minutos := iniseg div 60; segundos := iniseg mod 60; WRITELNn(iniseg,' segundos son ',minutos,' minutos y ',segundos,' segundos.'); READkey END.

6.- Media aritmética (Alternativa simple - Pascal) Escribir un programa (en Pascal) que:

1º) Pida por teclado dos números (datos enteros). (Numero 1 y Numero 2) 2º) Muestre por pantalla la media aritmética de los números introducidos, pero, sólo en el caso de que ambos números sean mayores que cero.

PROGRAM Media; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A > 0 ) and ( B > 0 ) then WRITE( ( A + B ) / 2 ) END.

Page 4: Ejercicios Resueltos en Turbo Pascal

4

7.- Escribir un programa en Pascal que calcule el i mporte de una factura sabiendo que el IVA a aplicar es del 12% y que si el importe bru to de la factura es superior a 50.000 pts se debe realizar un descuento del 5%.

PROGRAM Impuesto; 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.

Una segunda solución es:

PROGRAM Impuesto; 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.

Page 5: Ejercicios Resueltos en Turbo Pascal

5

8.- Escribir un programa en Pascal que calcule el á rea y el volumen de un cilindro:

PROGRAM Area_cilindro; USES CRT; VAR radio, altura:REAL; VAR area, volumen:REAL; BEGIN ClrScr; radio:=3; altura:=4; 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.

Una segunda solución es:

PROGRAM Area_cilindro; USES CRT; VAR radio, altura:REAL; VAR area, volumen:REAL; BEGIN 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.

9.- Cubos de números pares (Repetitiva para - Pasca l) (FOR) Escribir un programa (en Pascal) que muestre por pantalla los cinco primeros números naturales pares elevados al cubo.

PROGRAM Cubos; USES Crt; VAR Numero, Resultado : Integer; BEGIN ClrScr; for Numero := 1 to 5 do BEGIN Resultado := Numero * 2; WRITE( Resultado * Resultado * Resultado, ' ' ) END END.

Page 6: Ejercicios Resueltos en Turbo Pascal

6

10.- Escribir un programa en Pascal que lea desde t eclado el importe bruto de una factura y determine el importe neto según los sigui entes criterios.

Importe bruto menor de 20.000 -> sin descuento Importe bruto mayor de 20.000 -> 15% de descuento

PROGRAM Factura; 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 (''); descuento:=importe_bruto * 0.15; IF importe_bruto > 20000 THEN 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') ELSE WRITE ('CON ESE DINERO NO SE MERECE UN DESCUENTO') END.

Una segunda solución es:

PROGRAM Factura; 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.

Page 7: Ejercicios Resueltos en Turbo Pascal

7

11.- Suma de dos números (Alternativa doble - Pasca l) Escribir un programa (en Pascal) que:

1º) Pida por teclado dos números (datos enteros). (Numero 1 y Numero 2) 2º) Calcule la suma de los números introducidos por el usuario. 3º) Muestre por pantalla:

• "LA SUMA SÍ ES MAYOR QUE CERO.", en el caso de que sí lo sea. • "LA SUMA NO ES MAYOR QUE CERO.", en el caso de que no lo sea.

PROGRAM Suma; USES Crt; VAR A, B, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); Suma := A + B; IF ( Suma > 0 ) then WRITE( 'LA SUMA SI ES MAYOR QUE CERO.' ) ELSE WRITE( 'LA SUMA NO ES MAYOR QUE CERO.' ); END.

Una segunda solución es:

PROGRAM Suma; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A + B > 0 ) then WRITE( 'LA SUMA SI ES MAYOR QUE CERO.' ) ELSE WRITE( 'LA SUMA NO ES MAYOR QUE CERO.' ); END.

Page 8: Ejercicios Resueltos en Turbo Pascal

8

12.- Número intermedio (Alternativa doble - Pascal) Escribir un programa (en Pascal) que: 1º) Pida por teclado tres números (datos enteros): <numero1>, <numero2> y <numero3>. 2º) Muestre por pantalla:

• EL NÚMERO MAYOR ES: PROGRAM Num_intermedio; USES Crt; VAR N1, N2, N3 : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( N1 ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( N2 ); WRITE( 'Introduzca tercer numero (entero): ' ); READLN( N3 ); IF ( N2 < N3 ) and ( N2 > N1 ) then WRITE( N2, ' SI ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ) ELSE WRITE( N2, ' NO ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ); END.

Una segunda solución es:

PROGRAM Num_intermedio; USES Crt; VAR N1, N2, N3 : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( N1 ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( N2 ); WRITE( 'Introduzca tercer numero (entero): ' ); READLN( N3 ); WRITE( N2 ); IF ( N2 < N3 ) and ( N2 > N1 ) then WRITE( ' SI ' ) ELSE WRITE( ' NO ' ); WRITE( 'ES MENOR QUE ', N3, ' Y MAYOR QUE ', N1 ); END.

Page 9: Ejercicios Resueltos en Turbo Pascal

9

13.- Suma o multiplicación de dos números (Anidamie nto de alternativas - Pascal) Escribir un programa (en Pascal) que: 1º) Pida por teclado dos números (datos enteros). 2º) Calcule la suma y multiplicación de ambos números. 3º) Muestre por pantalla: • "La suma es mayor.", en caso de que sea mayor que la multiplicación de ambos

números. • "La multiplicación es mayor.", en caso de que sea mayor que la suma de ambos

números. • "La suma y multiplicación son iguales.", en caso de que así sea.

PROGRAM Suma_multiplicacion; USES Crt; VAR A, B, Suma, Multiplicación : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); Suma := A + B; Multiplicacion := A * B; IF ( Suma > Multiplicacion ) then WRITE( 'LA SUMA ES MAYOR.' ) ELSE { Inicio del anidamiento } IF ( Multiplicacion > Suma ) then WRITE( 'LA MULTIPLICACION ES MAYOR.' ) ELSE WRITE( 'LA SUMA Y MULTIPLICACION SON IGUALES.' ); { Fin del anidamiento } END.

Una segunda solución es:

PROGRAM Suma_multiplicacion; USES Crt; VAR A, B : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero (entero): ' ); READLN( A ); WRITE( 'Introduzca segundo numero (entero): ' ); READLN( B ); IF ( A + B > A * B ) then WRITE( 'LA SUMA ES MAYOR.' ) ELSE { Inicio del anidamiento } IF ( A * B > A + B ) then WRITE( 'LA MULTIPLICACION ES MAYOR.' ) ELSE WRITE( 'LA SUMA Y MULTIPLICACION SON IGUALES.' ); { Fin del anidamiento } END.

Page 10: Ejercicios Resueltos en Turbo Pascal

10

ESTRUCTURA WHILE 1.- Cantidad y suma de números enteros (Anidamiento de repetitivas y alternativas - Pascal). (WHILE) Escribir un programa (en Pascal) que: 1º) Pida por teclado un número (dato entero). 2º) Repita el paso 1º, mientras que, el número introducido sea distinto de cero. En caso de ser cero MENSAJE: “EL NUMERO DEBE SER DI FERENTE DE CERO”) 3º) Muestre cuántos números mayores que cero han sido introducidos por el usuario, así como, la suma de todos ellos.

PROGRAM Suma_de_enteros; USES Crt; VAR Numero, Contador, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca un numero entero: ' ); READLN( Numero ); Contador := 0; Suma := 0; while ( Numero <> 0 ) do BEGIN IF ( Numero > 0 ) then BEGIN Contador := Contador + 1; Suma := Suma + Numero END; WRITE( 'Introduzca un numero entero: ' ); READLN( Numero ) END; WRITELn( 'Ha introducido ', Contador, ' numero(s) mayor(es) que cero.' ); WRITE( 'La suma es ', Suma ); END.

Page 11: Ejercicios Resueltos en Turbo Pascal

11

2.- Sean 10 alumnos de la sección 3N6IS y dadas 5 n otas por alumno de la materia

programación. Calcular y mostrar:

· El promedio de la materia por alumno.

· El promedio de la sección.

PROGRAM NOTAS1; USES crt; VAR alumnos,materia,notas: integer; promedioalumno,promedioseccion,sumaseccion,suma,nota: Real; nombre:string[30]; BEGIN alumnos:=1; sumaseccion:=0; WHILE alumnos <=10 do writeln('Introduzca el nombre del alumno: '); readln(nombre); suma:=0; notas:=1; WHILE notas <=5 do writeln('Introduzca las 5 notas: '); readln(nota); suma:=suma+nota; notas:=notas+1; END; promedioalumno:=suma/5; sumaseccion:=sumaseccion+promedioalumno; alumnos:=alumnos+1; WRITELN('El nombre del alumnos es:', nombre); WRITELN('El promedio del alumno es:', promedioalumno:2:2); WRITELN; promedioseccion:=sumaseccion/2; WRITELN('El Promedio de la seccion es: ',promedioseccion:2:2); READKEY END.

3.- Escribir un programa en Pascal que calcule el f actorial de un número.

PROGRAM Factorial; USES CRT; VAR factorial, x, num, y:REAL; BEGIN ClrScr; WRITE ('Introduzca un numero para hacer su factorial: '); READLN (num); WRITELN; x:=1; WHILE num > 1 DO x:=x * num; num:=num - 1; WRITELN (x); END.

Page 12: Ejercicios Resueltos en Turbo Pascal

12

ESTRUCTURA REPEAT

1.- Mostrar y sumar números enteros (Anidamiento de repetitivas y alternativas - Pascal)

Escribir un programa (en Pascal) que:

1º) Pida por teclado dos números (datos enteros). 2º) En el caso de que el primer número introducido por el usuario, no sea mayor que cero y el segundo menor que cero, muestre por pantalla el mensaje:

• "ERROR: El primer número debe ser mayor que cero y el segundo menor que cero."

En caso contrario, muestre por pantalla los números que hay entre los dos números introducidos por el usuario, ambos inclusive, así como, la suma de todos ellos.

PROGRAM Suma_de_enteros; USES Crt; VAR Mayor, Menor, Suma : Integer; BEGIN ClrScr; WRITE( 'Introduzca primer numero entero: ' ); READLN( Mayor ); WRITE( 'Introduzca segundo numero entero: ' ); READLN( Menor ); Suma := 0; IF ( Mayor > 0 ) and ( Menor < 0 ) then BEGIN repeat WRITE( Menor, ' ' ); Suma := Suma + Menor; Menor := Menor + 1 until Menor > Mayor; WRITELn; WRITE( 'La suma es ', Suma ); END ELSE WRITE( 'ERROR: El primer numero debe ser mayor que cero y el segundo menor que cero.' ); END.

Page 13: Ejercicios Resueltos en Turbo Pascal

13

2.- Escribir un programa en Pascal que genere la ta bla de multiplicar de un número introducido por el teclado.

PROGRAM TABLA_MULTIPLICAR; 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.

3.- Escribir un programa en Pascal que calcule la m edia de 5 números introducidos por el teclado.

PROGRAM Media; USES CRT; VAR i:INTEGER; VAR num,suma,media:REAL; BEGIN ClrScr; i:=0; REPEAT WRITE('Introduzca un numero: '); READLN(num); suma:=suma+num; i:=i+1; UNTIL i=5; media:= suma/i WRITE('La media es: ',media:5:2); END.

Page 14: Ejercicios Resueltos en Turbo Pascal

14

ESTRUCTURA FOR 1.- Escribir un programa en Pascal que calcule la s uma de los cuadrados de los 100 primeros números enteros. (FOR)

PROGRAM Suma_de_cuadrados; USES CRT; VAR i:INTEGER; VAR sumacuad:Real; BEGIN ClrScr; FOR i:=1 TO 100 DO sumacuad:=sumacuad+sqr(i); WRITE('Suma de Cuadrados (1-100) ---> '); WRITE(sumacuad); END.

Una segunda solución es:

PROGRAM Suma_de_cuadrados; USES CRT; VAR x:INTEGER; VAR suma:REAL; BEGIN ClrScr; FOR x:=1 TO 100 DO suma:= suma + (sqr(x)); WRITE (suma); END.

Page 15: Ejercicios Resueltos en Turbo Pascal

15

2.- Escribir un programa en Pascal que lea 4 datos, calcule y visualice en pantalla su producto, suma y media aritmética. (FOR)

PROGRAM producto_suma; 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.

Una segunda solución es:

PROGRAM producto_suma; 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.

Page 16: Ejercicios Resueltos en Turbo Pascal

16

3.- Escribir un programa en Pascal que calcule, ind ependientemente, la suma y la media de los números pares e impares comprendidos e ntre 1 y 200.

PROGRAM Par_impar; 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 IF (i mod 2)=0 THEN suma_p:=suma_p + i; total_p:=total_p + 1; ELSE 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.

Una segunda solución es:

PROGRAM Par_impar; 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 sumapar:=sumapar+i; conpar:=conpar+1; ELSE 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.