InicioCiencia EducacionProgramas para compilar en pascal
Acá les voy a dejar el código de algunos de los programas que piden en el primer año de la carrera de analista en computación Programa que dado dos numeros ingresado por el usuario, devuelve el maximo comun divisor y el minimo comun multiplo entre ellos(el método utilizado para resolver el problema, es el famoso Algoritmo de Euclídes) : {comienzo del código} program ejercicio; uses crt; var num1,num2:integer;{variables que almacenan los valores ingresados por el usuario} mcd,mcm:integer;{variables que almacenan los resultados devueltos por las funciones} procedure LeerDatos( var x,y:integer);{ accion que lee los datos ingresados por el usuario e intercambia sus valores en caso de que el primero sea menor que el segundo} var aux:integer; begin writeln(' Ingrese el primer numero'); readln(x); writeln(' Ingrese el segundo numero'); readln(y); if y>x then begin aux:= y; y:= x; x:= aux; end; end; function CalcMax( x,y:integer):integer;{funcion que calcula el maximo comun divisor} var aux:integer; result:integer; begin if (x mod y=0)then begin CalcMax:= y; end else begin if (y = 0) then begin result:= x end else begin while x > 0 do begin aux:= x; x:= y mod x; y:= aux; result:= y end; CalcMax:= result; end; end; end; function CalcMin( x,y:integer):integer; {funcion que calcula el minimo comun multiplo} begin CalcMin:= (x*y) div (CalcMax(x,y)); end; begin{cuerpo principal del algoritmo(invocacion de la accion y de las funciones, devolucion por pantalla de los resultados)} LeerDatos(num1,num2); if (num1>0) and (num2>0) then begin mcd:= CalcMax(num1,num2); writeln( 'El maximo comun divisor entre los dos numeros es: ',mcd); if (CalcMin(num1,num2) < 0) then {en el caso de que la cuenta supere el numero 32000, se sale de rango y devuelve un valor negativo} begin writeln('El valor del minimo comun multipo esta fuera de rango, no se puede calcular!'); end else begin mcm:=CalcMin(num1,num2); writeln( 'El minimo comun multiplo entre los dos numeros es: ',mcm); end; end else begin writeln('Los datos ingresados no son validos, no se puede realizar la cuenta!'); end; readkey; clrscr; end. {fin del código} Programa que carga una matriz de forma aleatoria(simulando ser la cantidad diaria de precipitaciones a lo largo de una año no bisiesto) y calcula los promedios de las precipitaciones diarias, mensuales, totales, mayor y menor subsecuencias de precipitaciones: {inicio del código} program ejercicio17; uses crt; type TArreglos= array [1..365] of integer; {tipo enumerado para facilitar el uso de las variables de tipo arreglo unidimensional} type TMatriz= array [1..12,1..31] of integer; {tipo enumerado para facilitar el uso de las variables de tipo arreglo bidimensional} const MaxMilimetros=180; {constante utilizada en la funcion randomReal para cargar la matriz aleatoriamente con valores de 0 hasta 100} var lluvias: TMatriz; {cargar los valores de las presipitaciones, para luego pasarlo a arreglo} diaMaxPrecipitacion,diaMinPrecipitacion:integer; {variables para almacenar el dia con mas y menos precipitaciones} mesMaxPrecipitacion,mesMinPrecipitacion:integer; {variables para almacenar el mes con mas y menos precipitaciones} maxPrecipitacion,minPrecipitacion:integer; {variables para almacenar la maxima y minima precipitacion en todo el año} cambio:TArreglos; {variable que almacena los valores de la matriz cuando es pasada a un arreglo} promMens:TArreglos; {variable que almacena el promedio por mes de las precipitaciones} numUsuario:integer; {variable que almacena el valor ingresado por el usuario para calcular la max y min subsecuencia de precipitaciones a lo largo del año} res,res1,res2,res3:integer; {variables que almacenan el principio y fin de la subcecuencia maxima y minima de precipitaciones} function RandomReal(hasta:integer):integer; {funcion que asigna valores aleatorios cuando es invocada en la accion cargar} var x:integer; begin x:=Random (hasta)-70; if x<0 then begin x:=0; end; RandomReal:=x; end; function DiaMes(m:integer):integer; { funcion que dada un mes, retorna la cantidad de dias que contiene el mes, sin tener en cuenta bisiesto} begin case m of 1,3,5,7,8,10,12: DiaMes:=31; 2: DiaMes:=28; 4,6,9,11: DiaMes:=30; end; end; procedure Cargar(var a:TMatriz; hastaDonde:integer);{accion que carga la matriz de forma aleatoria} var i,j,n:integer; begin for i:= 1 to 12 do begin n:=DiaMes(i); for j:= 1 to n do begin a[i,j]:= RandomReal(hastaDonde); end; end; end; function Cambiar(a:TMatriz):TArreglos; { funcion que dada una matriz, la convierte en arreglo } var j,i:integer; k:integer; res:TArreglos; begin k:=0; for i := 1 to 12 do begin for j := 1 to 31 do begin if (a[i,j] > -1) then begin res:=a[i,j]; end; k:=k+1; end; end; Cambiar:=res; end; function PromedioDia( a:TArreglos):real; {funciones que calcula el promedio por dia} var i,acum:integer; begin acum:=0; for i:=1 to 365 do begin acum:= acum + a; end; PromedioDia:= (acum div 365); end; procedure PromedioMens(a:TMatriz; var b:TArreglos); {acciones que calcula el promedio mensual} var i,j,k,acum:integer; begin k:=0; for i:=1 to 12 do begin acum:=0; for j:=1 to 31 do begin acum:=acum + a[i,j]; end; k:= k+1; case i of 1,3,5,7,8,10,12:b:=acum div 31; 2:b:=acum div 28; 4,6,9,11:b:=acum div 30; end; end; end; procedure PrecipitacionMax( a:TMatriz; var max,dia,mes:integer); {accion que calcula maxima precipitacion anual} var i,j:integer; begin max:=0; for i:=1 to 12 do begin for j:=1 to 31 do begin if (a[i,j] >= max) then begin max:= a[i,j]; dia:=j; mes:=i; end; end; end; end; procedure PrecipitacionMin( a:TMatriz; var min,dia,mes:integer); {accion que calcula la minima precipitacion anual} var i,j:integer; begin min:=MaxMilimetros; for i:=1 to 12 do begin for j:=1 to 31 do begin if (a[i,j] < min) and (a[i,j] <> 0) then begin min:= a[i,j]; dia:=j; mes:=i; end; end; end; end; function Sumatoria(a:TArreglos; desde,hasta:integer):integer; {funcion que calcula la sumatoria de los elementos que se encuentran en el arreglo} var i,acum:integer; begin acum:=0; for i:= desde to hasta do begin acum:= acum + a; end; Sumatoria:= acum; end; procedure SubSecuenciaMax( a:TArreglos; dia:integer; var res,res1:integer); {accion que calcula la maxima subsecuencia de precipitaciones} var resul,i,max:integer; begin max:=0; for i:= 1 to 365 - dia do begin resul:= Sumatoria(a,i,i+dia); if (resul > max) then begin max:= resul; res:=i; res1:=(i+dia)-1; end; end; end; procedure SubSecuenciaMin( a:TArreglos; dia:integer; var res,res1:integer); {accion que calcula la minima subsecuencia de precipitaciones} var resul,i,min:integer; begin min:=MaxMilimetros; for i:= 1 to 365 - dia do begin resul:= Sumatoria(a,i,(i+dia)-1); if (resul < min) and (resul > 0) then begin min:= resul; res:=i; res1:=(i+dia)-1; end; end; end; procedure Mostrar (a:TArreglos); var i:integer; begin for i:=1 to 12 do begin writeln('[',i,'] ', a,' % '); end; end; procedure Mostrar1 (a:TMatriz); var i,j:integer; begin for i:=1 to 12 do begin for j:=1 to 31 do begin gotoxy(j*4,i+22); write(a[i,j]); end; end; end; begin {cuerpo principal del algoritmo} clrscr; Cargar(lluvias,MaxMilimetros); cambio:= Cambiar(lluvias); Writeln( ' El promedio de lluvias por dia fue: ',PromedioDia(cambio):2:0,'%'); PromedioMens(lluvias,promMens); Writeln(' El promedio mensual de lluvias fue: '); Mostrar(cambio); PrecipitacionMax(lluvias,maxPrecipitacion,diaMaxPrecipitacion,mesMaxPrecipitacion); Writeln( ' La maxima precipitacion del año fue: ',maxPrecipitacion, ' en el dia: ',diaMaxPrecipitacion,' y en el mes: ' ',mesMaxPrecipitacion); PrecipitacionMin(lluvias,minPrecipitacion,diaMinPrecipitacion,mesMinPrecipitacion); Writeln(' La minima precipitacion del año fue: ',minPrecipitacion,' en el dia: ',diaMinPrecipitacion,' y en el mes: ',mesMinPrecipitacion); Writeln(' Ingrese un numero entero para saber la maxima y minima subsecuencia de precipitaciones:'); readln(numUsuario); if numUsuario<= 0 then begin textcolor(lightred); Writeln(' ERROR: No se puede realizar el calculo para el numero ingresado'); end else begin SubSecuenciaMax(cambio,numUsuario,res,res1); SubSecuenciaMin(cambio,numUsuario,res2,res3); Writeln(' El periodo del año de ',numUsuario,' dias con mas precipitaciones fue desde el dia: ',res,' hasta el dia ',res1); Writeln(' El periodo del año de ',numUsuario,' dias con menos precipitaciones fue desde el dia: ',res2,' hasta el dia ',res3); end; textcolor(white); Writeln(' La matriz generada es la siguiente: '); Mostrar1(lluvias); Write(' '); textcolor(90); Writeln(' Presione una tecla para salir'); readkey; textcolor(white); clrscr; end. {fin del código} Programa que cuenta la cantidad de vocales cargadas en un arreglos unidimensinal: {inicio del código} program vocaless; uses crt; const max=3; var vocales:array[0..3] of char; vocal:char; res:char; indice:integer; function EsVocal(letra:char):boolean; begin if (letra='a') or (letra='e') or (letra='i') or (letra='o') or (letra='u') then begin EsVocal:=true; end else EsVocal:=false; end; begin{cuerpo principal del algoritmo} indice:=0; repeat writeln(' Ingrese una letra'); readln(vocal); if EsVocal(vocal)=true then begin indice:=indice+1; vocales:=vocal; end; writeln('¿Desea continuar? (s/n)'); readln(res) until (res='n') or (res='N') or (indice=max); writeln(' La cantidad de vocales ingresadas es: ',indice); readkey; clrscr; end. {fin del código} Por ahora son estos tres que creo que son los ejercicios más pedidos para ser entregados a manera de trabajo práctico Nota: Recuerden indentar bien el código a la hora de copiarlo y pegarlo en sus respectivos editores o compiladores! Si quieren que los textos que se imprimen por pantalla con algun color, despues de "program..." ponen *uses crt; y antes de cada "writeln" ponen *textcolor(el color que quieran,ej: red,blue). Aclaracion: se escribe sin * Espero que les sea de ayuda en caso de que la necesiten! Saludos!
Datos archivados del Taringa! original
50puntos
3,865visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cheatr4🇦🇷
Usuario
Puntos0
Posts6
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.