TURBO PASCAL SOLUCIONES LABORATORIOS Curso 02/03 1
3 LABORATORIO program l3a1; a,c:real; b:integer; writeln( Este programa realiza la suma dos números. ); writeln; write( Introduce uno de los números a sumar: ); read(a); write( Introduce el otro número: ); read(b); c:=a+b; writeln( Resultado: ',a:8:2,' + ',b:8,' = ', c:8:2); program l3a2; a,b,c:integer; write( Introduce un número entero: '); read(a); write( Introduce otro número entero: '); read(b); c:=a+b; writeln(a:5, ' + ', b:5, ' = ', c:5); program l3a3; C:integer; F: real; write( Introduce los grados Celsius: '); readln(c); F:=C* (9/5)+32; writeln( Su equivalente en grados Farenheit: ', F:4:1); program l3a4; A,B,C,Lag:integer; write( Introduce tres número enteros: '); read( A,B,C ); Lag:=A; A:=B; B:=C; C:=Lag; writeln( El intercambio de valores es: ',A,' ',B,' ',C); 2
program l3a5; r,h: Integer; zb: real; write ( Introduce el radio y la altura del cilindro'); read(r,h); zb:= pi * sqr(r) * h; write ( El volumen del cilindro es: ',zb:5:2); program l3a6; znbk:integer; zbir:integer; write('introduce un numero: ');read (znbk); zbir:=round(znbk/100) * 100; write('el número redondeado a las centenas es:',zbir); program l3a7; DK, itzuli:integer; write('cantidad de dinero:');read(dk); itzuli:= DK div 50; writeln('billetes de 50 euros: ', itzuli); DK:=DK mod 50; itzuli:= DK div 20; writeln('billetes de 20 euros: ', itzuli); DK:= DK mod 20; itzuli:= DK div 10; writeln('billetes de 10 euros: ', itzuli); DK:= DK mod 10; itzuli:= DK div 5; writeln('billetes de 5 euros: ', itzuli); DK:= DK mod 5; itzuli:= DK div 2; writeln('monedas de 2 euros: ', itzuli); writeln('monedas de 1 euro: ', DK mod 2); 3
4 LABORATORIO program l4a1; p,dirua,dist,milako: integer; write('introduce el peso del paquete en gramos: '); read (p); if p>45 then write ('nº de kilómetros que tiene el viaje: '); read (dist); milako:= dist div 1000; if p <= 15 then dirua:=60 else if p<= 30 then dirua:= 110 else if p<= 45 then dirua:= 155 else if p<= 60 then dirua:= 180+(10*milako) else if p<= 75 then dirua:= 200+(15*milako); write('hay que pagar: ', dirua); program l4a2; x,y: integer; write ('Dame un nnúmero entero: '); read (x); case x of -4..-2 : y:=-6; -1..4 : y:= sqr(x) + 20 * x; 4..10 : y:=2 *x else y:=0; writeln ('la y vale: ',y); 4
program l4a3; x,y,z: integer; kar: Char; write('introduce dos números enteros: '); readln(x,y); writeln('puedes elegir una de estas opciones: '); writeln('a) Suma'); writeln('b) Resta'); writeln('c) Multiplicación'); writeln('d) División'); write('introduce el caracter correspondiente a tu opción: '); read(kar); case kar of 'a': z:= x+y; writeln ('Suma: ',z); 'b': z:= x-y; writeln ('Resta: ',z); 'c': z:= x*y; writeln ('Multiplicación: ',z); 'd': z:= x div y; writeln ('División: ',z); 5
5 LABORATORIO program l5a1; b,e,z:integer; writeln('escribe un número entero:'); readln(z); for b:=1 to 10 do e:= z*b; writeln(z, ' x ', b, ' = ', e); Program l5a2; const l=5; z=10; k:char; m,n: integer; write('escribe un caracter:'); readln(k); for n:=1 to l do for m:=1 to z do write(k); writeln; program l5a3; const n=20; batura,z,zenbat: integer; bb: real; write('introduce una secuencia de 20 números:'); batura:=0; for zenbat:=1 to n do read(z); batura:=batura+z; bb:=batura/n; write ('Media: ', round(bb)); 6
program l5a4; voc,cons,resto:integer; letra:char; writeln('escribe una secuencia de caracteres terminada en punto'); read(letra); voc:=0; cons:=0; resto:=0; while letra <> '.' do case letra of 'A'..'Z','a'..'z': case letra of 'a','e','i','o','u','a','e','i','o','u': voc:=voc+1; else cons:=cons+1; else resto:=resto+1; read(letra); writeln(voc,' vocales, ', cons,' consonantes y el número de resto de caracteres es ',resto); program l5a5; sum,a,x,max, min,num:integer; writeln('dime cuantos numeros vas a introducir'); read(num); writeln('escribe la secuencia de numeros'); sum:=0; max:=- MAXINT; min:=maxint; for x:=1 to num do read(a); sum:=sum+a; if a<min then min:=a; if a>max then max:=a; writeln('la media es:',sum/num:6:1); writeln('el máximo es:',max); writeln('el mínimo es:',min); 7
6 LABORATORIO program lab6ej1; num:integer; divisor:integer; writeln('introduce un número'); read(num); divisor:=num-1; while (divisor>1) and (num mod divisor <>0) do divisor:=divisor-1; if (divisor=1)or (divisor=0) then writeln('el número es primo') else writeln('el número NO es primo'); program lab6ej2; num,i:integer; divisor:integer; writeln('introduce un número'); read(num); Write('Los números primos menores que ',num,'son:'); for i:=1 to num do divisor:=i-1; while (divisor>1) and (i mod divisor <>0) do divisor:=divisor-1; if (divisor=1)or (divisor=0) then write(i); write(' '); 8
program lab6ej3; num,i,cont,pos:integer; writeln('introduce el numero que quieres localizar'); read(i); writeln('introduce una secuencia de números terminada en 0'); read(num); cont:=0; pos:=0; while num<>0 do cont:=cont+1; if num=i then pos:=cont; read(num); if pos<>0 then writeln('el número ',i,' se encuentra en la posición ',pos) else writeln('el número ',i, ' no está en la secuencia'); program lab6ej4; car,i:char; cont,flag:integer; writeln('introduce una secuencia de caracteres terminada en.'); read(car); cont:=0; flag:=0; while car<>'.' do if car='t' then flag:=1 else if (car='a') and (flag=1) then cont:=cont+1; flag:=0; end else flag:=0; read(car); writeln('la subsecuencia ta está ',cont, ' veces en la secuencia'); 9
program lab6ej5; num,contant:integer; cont,ant:integer; writeln('introduce una secuencia de números terminada en 0'); read(num); ant:=num; cont:=0; contant:=0; while num<>0 do if num=ant then cont:=cont+1 else if cont>contant then contant:=cont; cont:=1; ant:=num; read(num); if cont>contant then contant:=cont; writeln('la subsecuencia más larga es ',contant); 10
7 LABORATORIO program l7a1; b,e,z:integer; write('introduce un numero entero: '); readln(z); while Z<>0 do for b:=1 to 10 do e:= z*b; writeln(z, ' x ', b, ' = ', e); write('introduce un numero entero: '); readln(z); writeln ('Se ha terminado el programa!!'); program l7a2; k:char; z,n,m: integer; write('introduce la longitud del lado: '); readln(z); write('simbolo: '); readln(k); for n:=1 to z do for m:=n to z do write(k); writeln; {otra opcion: for m:=1 to (z-n+1) do write(k)} program l7a3; H,E,znbk,zati:integer; write ('Introduce el numero a descomponer: '); readln(znbk); writeln(' ',znbk); writeln(' '); zati:=2; while znbk<>1 do H:=znbk mod zati; E:=znbk div zati; if H=0 then writeln(zati:6,' ',E); znbk:=e; end else zati:=zati+1; 11
program l7a4; H,E,znbk,zati,garrena,kont:integer; writeln (1:3,' --> 1'); for garrena:=2 to 20 do write(garrena:3,' --> '); zati:=2; znbk:=garrena; kont:=0; while znbk<>1 do H:=znbk mod zati; E:=znbk div zati; writeln; if H=0 then kont:=kont+1; if kont=1 then write(zati) else write('*',zati); znbk:=e; end else zati:=zati+1; 12
8 LABORATORIO program l8a1; const N=10; type OsokoTau_M = array [1..N] of integer; Ind:integer; OsokoakT:OsokoTau_M; for Ind:= 1 to N do write('escribe el ', Ind, '. numero entero: '); readln (OsokoakT[Ind]); writeln('los número en el orden inverso son:'); for Ind:=N downto 1 do writeln(ind, '. zenbaki osokoa: ', OsokoakT[Ind]); program l8a2; const N=10; type OsokoTau_M = array [1..N] of integer; Ind, Batura:integer; OsokoakT :OsokoTau_M; for Ind:= 1 to N do write('escribe el ', Ind, '. numero entero: '); readln (OsokoakT[Ind]); Batura:=0; for Ind:= 1 to N do Batura:= Batura+ OsokoakT[Ind]; write ('La media es: '); write ( (Batura/N):6:2); 13
program l8a3; const N=10; type OsokoTau_M = array [1..N] of integer; Ind,Posizioa, Elementua:integer; OsokoakT :OsokoTau_M; for Ind:= 1 to N do write('escribe el ', Ind, '. numero entero: '); readln (OsokoakT[Ind]); write ('Introduce el numero a buscar: '); readln(elementua); Posizioa:=0; for Ind:= N downto 1 do if OsokoakT[Ind]=Elementua then Posizioa:=Ind; if Posizioa=0 then write (0) else write ('El número', Elementua, 'está en la posición',posizioa); program l8a4; const N=10; type OsokoTau_M = array [1..N] of integer; Ind,MaxPos:integer; OsokoakT :OsokoTau_M; for Ind:= 1 to N do write('escribe el ', Ind, '. numero entero: '); readln (OsokoakT[Ind]); MaxPos:=1; for Ind:=2 to N do if OsokoakT[MaxPos]<OsokoakT[Ind] then MaxPos:=Ind; write('el máximo es ', OsokoakT[MaxPos],' y está en la posición '); write(maxpos); 14
9 LABORATORIO program l9a1; const Astea=7; type TAstea= array [1..Astea] of Real; TenpMax,TenpMin,TenpMediak,TenpDiferentziak: TAstea; TMax,Tmin,TMed: Real; I:Integer; write('introduce las temperaturas máximas de cada día'); for I:=1 to Astea do read(tenpmax[i]); write('introduce las temperaturas mínimas de cada día'); for I:=1 to Astea do read(tenpmin[i]); TMax:=TenpMax[1]; for I:=2 to Astea do if TMax<TenpMax[I] then TMax:=TenpMax[I]; TMin:=TenpMin[1]; for I:=2 to Astea do if TMin>TenpMin[I] then TMin:=TenpMin[I]; for I:=1 to Astea do TenpMediak[I]:=(TenpMax[I]+TenpMin[I])/2; TMed:=0; for I:=1 to Astea do TMed:= TMed+TenpMediak[I]; TMed:=TMed/Astea; for I:=1 to Astea do TenpDiferentziak[I]:=(TMed-TenpMediak[I]); writeln('temperatura máxima de la semana: ', TMax:5:2); writeln(''); writeln('temperatura mínima de la semana: ', TMin:5:2); writeln(''); writeln('temperatura media de la semana: ', TMed:5:2); writeln(''); writeln('día':10,'maximo':12, 'Minimo':12, 'Media':12, 'Diferencia':15); writeln('------------------------------------------------------------'); for I:=1 to Astea do writeln(i:8,tenpmax[i]:12:2,tenpmin[i]:12:2,tenpmediak[i]:12:2,tenpdiferentziak[i] :12:2); 15
10 LABORATORIO Program l10a1; const ikasle_kop=6; ikasgai_kop=5; type matrizem= array [1..ikasle_kop,1..ikasgai_kop] of integer; notak:matrizem; Zenbat,IL,IG:Integer; (* Introducir los valores en la matriz *) writeln ('Escribe las notas de los alumnos:'); for IL:=1 to Ikasle_kop do write ('Alumno ', IL, ': '); for IG:=1 to Ikasgai_kop do read(notak[il,ig]); (* Calculo de las notas definitivas *) for IL:=1 to Ikasle_kop do for IG:=1 to Ikasgai_kop do if notak[il,ig] <= 9 then notak[il,ig]:= notak[il,ig] +1 else notak[il,ig]:= 10; (* Escritura de las notas definitivas *) writeln('notas definitivas'); for IL:=1 to Ikasle_kop do write('alumno ', IL, ': '); for IG:=1 to Ikasgai_kop do write(notak[il,ig], ' '); writeln; 16
Program l10a2; const ikasle_kop=6; ikasgai_kop=5; type matrizem= array [1..ikasle_kop,1..ikasgai_kop] of integer; ikasleb= array [1..ikasle_kop] of Boolean; notak:matrizem; ikaslegainditua:ikasleb; IL,IG:Integer; (* Introducir los valores en la matriz *) writeln ('Escribe las notas de los alumnos:'); for IL:=1 to Ikasle_kop do write ('Alumno ', IL, ': '); for IG:=1 to Ikasgai_kop do read(notak[il,ig]); (* Calcular los alumnos que han aprobado todo *) for IL:=1 to Ikasle_kop do ikaslegainditua[il]:=true; for IG:=1 to Ikasgai_kop do if notak[il,ig] < 5 then ikaslegainditua[il]:=false; (* Escribir los alumnos que lo han aprobado todo *) writeln('alumnos que han aprobado todas las asignaturas'); for IL:=1 to Ikasle_kop do if ikaslegainditua[il] then writeln ('Alumno ', IL); 17
Program l10a3; const ikasle_kop=6; ikasgai_kop=5; type matrizem= array [1..ikasle_kop,1..ikasgai_kop] of integer; ikasgaib= array [1..ikasgai_kop] of Integer; notak:matrizem; ikasgaiak:ikasgaib; IL,IG:Integer; (* Introducir los valores en la matriz *) writeln ('Escribe las notas de los alumnos:'); for IL:=1 to Ikasle_kop do write ('Alumno ', IL, ': '); for IG:=1 to Ikasgai_kop do read(notak[il,ig]); (* Calcular el numero de alumnos aprobados en cada asignatura *) for IG:=1 to Ikasgai_kop do ikasgaiak[ig]:=0; for IL:=1 to Ikasle_kop do if notak[il,ig] >= 5 then ikasgaiak[ig]:=ikasgaiak[ig]+1; (* Sacar listado de cada asignatura *) writeln('numero de alumnos que han aprobado cada asignatura'); for IG:=1 to Ikasgai_kop do writeln ('Asignatura ', IG, ': ', ikasgaiak[ig]); 18
11 LABORATORIO Program l11a1; const prod_kop=10; enp_kop=5; type matrize_mota= array [1..enp_kop,1..prod_kop] of integer; bektore_mota1= array [1..prod_kop] of integer; bektore_mota2= array [1..enp_kop] of integer; punt:matrize_mota; min:bektore_mota1; prod_onak:bektore_mota2; prod,enp,hoberena: integer; (* Leer matriz *) writeln ('Introduce la puntuación de los productos); for enp:=1 to enp_kop do write (enp,'. empresa -> '); for prod:=1 to prod_kop do read(punt[enp,prod]); writeln; (* Leer vector de puntaciones mínimas *) writeln ('Introduce las puntuaciones mínimas de cada producto'); for prod:=1 to prod_kop do write (prod, '. producto: '); readln (min[prod]); (*Comprobar cada producto en cada empresa *) for enp:=1 to enp_kop do prod_onak[enp]:=0; for prod:=1 to prod_kop do if punt[enp,prod]>min[prod] then prod_onak[enp]:=prod_onak[enp]+1; (* Buscar la mejor empresa. La que tiene mas productos por encima del minimo *) hoberena:=1; for enp:=2 to enp_kop do if prod_onak[hoberena]<prod_onak[enp] then hoberena:=enp; writeln ('La mejor empresa es: ', hoberena); 19
Program l11a2; const instal_kop=6; egun_kop=5; type matrize_mota = array [1..instal_kop,1..egun_kop] of integer; bektore_mota1 = array [1..instal_kop] of real; matrize:matrize_mota; bb:bektore_mota1; instal, egun, batura, hoberena, instal_baxuena, egun_baxuena: integer; (*Introducción de datos *) writeln ('Introduce las puntuaciones'); for instal:=1 to instal_kop do write (instal, '. instalación -> '); for egun:=1 to egun_kop do read (matrize[instal,egun]); (* Calcular la media de rendimiento de cada instalación *) writeln ('Rendimiento medio de cada instalación:'); for instal:=1 to instal_kop do batura:=0; for egun:=1 to egun_kop do batura:=batura+matrize[instal,egun]; bb[instal]:=batura/egun_kop; writeln('instalación', instal, ': ', bb[instal]:5:2); (* Instalación con mayor media de rendimiento *) hoberena:=1; for instal:=2 to instal_kop do if bb[hoberena]<bb[instal] then hoberena:=instal; writeln ('La instalación: ', hoberena, '. tiene la mayor media'); (* La instalación con menor media *) instal_baxuena:=1; egun_baxuena:=1; for instal:=1 to instal_kop do for egun:=1 to egun_kop do if matrize[instal_baxuena,egun_baxuena]>matrize[instal,egun] then instal_baxuena:=instal; egun_baxuena:=egun; write ('La instalación', instal_baxuena, '. tiene la menor media de rendimiento '); writeln('y ha sido el día:', egun_baxuena); 20