== DISTANCIAS ==
El programa permite ingresar distancias entre una cantidad dada de obras\\
e informar al usuario si existe entre las mismas una distancia mayor\\
a la ingresada por el usuario.
{Secci¢n declarativa}
program distancias;
{El programa permite ubicar las distancias de obras en una matriz}
{e informar si existe una distancia mayor entre obras a la pedida}
uses
crt,dos;
type
matriz=array [1..30,1..30] of real;
var
dist:real; {distancia minima}
mat:matriz; {matriz que contiene las distancias}
cantobras:integer; {cantidad de obras}
procedure cargar(var mat1:matriz;cantobras1:integer);
{procedimiento para el ingreso de datos}
var
i,j,k,l,m:integer; {contadores}
begin
k:=cantobras1-1;
l:=cantobras1-1;
for i:=1 to k do begin
m:=i;
m:=m+1;
for j:=1 to l do begin
write('Ingrese la distancia (en kms.) de la obra ',i,' a la ',m,' = ');
readln(mat1[i,j]);
m:=m+1;
end;
l:=l-1;
end;
writeln;
writeln('Presione enter para continuar');
readln;
clrscr;
delay(500);
end;
procedure encontrar(dist1:real;var mat1:matriz;cantobras1:integer);
{procedimiento para encontrar distancias mayores a las pedidas}
var
i,j,k:integer;
begin
k:=cantobras1-1;
i:=0;
repeat
i:=i+1;
j:=0;
repeat
j:=j+1;
until (mat1[i,j]>dist1) or (j=k);
k:=k-1;
until (mat1[i,j]>dist1) or (i=cantobras1-1);
if mat1[i,j]>dist1 then
writeln('Existe una distancia mayor a ',dist1:6:2,' kms.')
else
writeln('No existe una distancia mayor a ',dist:6:2,' kms.');
end;
{Secci¢n algor¡tmica}
begin
{pr¢logo}
clrscr;
writeln('Hola, ingrese la cantidad de obras de la empresa');
writeln;
readln(cantobras); {lectura de cantidad de obras}
writeln;
writeln('Ahora ingrese la distancia minima entre obras (kms.)');
writeln;
readln(dist); {distancia minima}
writeln;
clrscr;
cargar(mat,cantobras);{ingreso de distancias}
encontrar(dist,mat,cantobras);{busqueda de distancias}
writeln;
writeln;
readln;
end.
== MATRICES ==
El programa multiplica matrices de hasta 20x20.
{Secci¢n declarativa}
program matrices;
{El programa multiplica matrices de una determinada dimensi¢n}
uses
crt,dos;
type
matriz=array [1..20,1..20] of real; {tipo de matrices}
var
matA,matB,matC:matriz; {matrices}
filA,colA,filB,colB,filC,colC:integer; {dimensiones de las matrices}
procedure cargar(var matA1,matB1:matriz;filA1,colA1,filB1,colB1:integer);
{procedimiento para el ingreso de las matrices}
var
i,j:integer;
begin
writeln('Ahora vamos a ingresar los valores de las matrices');
writeln;
for i:=1 to filA1 do begin
for j:=1 to colA1 do begin
writeln('Ingrese el coeficiente A',i,j,' y presione enter');
readln(matA1[i,j]);
end;
end;
clrscr;
writeln('Ahora lo mismo con la matriz B');
for i:=1 to filB1 do begin
for j:=1 to colB1 do begin
writeln('Ingrese el coeficiente B',i,j,' y presione enter');
readln(matB1[i,j]);
end;
end;
clrscr;
writeln('Presione enter para multiplicar las matrices');
readln;
clrscr;
end;
procedure multiplicar(var matA1,matB1,matC1:matriz;filA1,colA1,colB1:integer);
{procedimiento que multiplica las matrices}
var
i,j,k:integer;
begin
for i:=1 to filA1 do begin
for j:=1 to colB1 do begin
matC1[i,j]:=0;
for k:=1 to colA1 do begin
matC1[i,j]:=matC1[i,j]+matA1[i,k]*matB1[k,j];
end;
end;
end;
end;
procedure mostrar(var matC1:matriz;filC1,colC1:integer);
{procedimiento para mostrar el resultado}
var
i,j:integer;
begin
for i:=1 to filC1 do begin
writeln;
for j:=1 to colC1 do begin
write(matC1[i,j]:10:3);
end;
end;
writeln;
writeln;
writeln('Presione enter para terminar');
readln;
delay(500);
end;
{Secci¢n algor¡tmica}
begin
{pr¢logo}
clrscr;
repeat
writeln('Hola, el programa multiplica matrices');
writeln;
writeln('Ingrese la cantidad de filas de la matriz A y seguido de un');
writeln('espacio la cantidad de columnas y presione enter');
readln(filA,colA); {lectura de dimensi¢n de matriz A}
writeln;
writeln('Ingrese la cantidad de filas de la matriz B y seguido de un');
writeln('espacio la cantidad de columnas y presione enter');
readln(filB,colB); {lectura de dimensi¢n de matriz B}
if (colA<>filB) then begin
writeln;
writeln('Error de dimension'); {caso de error de dimensi¢n}
delay(1000);
clrscr;
end;
until colA=filB;
filC:=filA;
colC:=colB;
clrscr;
cargar(matA,matB,filA,colA,filB,colB); {ingreso de matrices}
multiplicar(matA,matB,matC,fila,colA,colB); {multiplicaci¢n de matrices}
mostrar(matC,filC,colC); {exhibici¢n de resultado}
end.
== HORMIGON ==
El programa ordena en forma ascendente y exhibe en pantalla la cantidad\\
de metros cúbicos de hormigón en una cantidad dada de obras.
{Secci¢n declarativa}
program Obras;
{El programa ordena en forma ascendente la cantidad de metros c£bicos}
{de hormig¢n de una determinada cantidad de obras de una empresa}
uses
crt,dos;
type
vector=array [1..40] of real;
var
vec:vector; {vector que contiene los mts. c£bicos}
nobras:integer; {numero de obras}
procedure cargar(nobras1:integer;var vec1:vector);
{procedimiento para el ingreso de los valores}
var
i:integer; {contador interno}
begin
clrscr;
for i:=1 to nobras1 do
begin
writeln('Ingrese los metros c£bicos de la obra numero ',i);
readln(vec[i]);
end;
writeln;
writeln('Presione enter para continuar');
readln;
clrscr;
end;
procedure escribir(var vec1:vector;nobras1:integer);
var
i:integer; {contador interno}
begin
writeln('Metros c£bicos de las obras (en orden ascendente)');
writeln;
for i:=1 to nobras do
writeln(vec1[i]:8:2);
writeln;
writeln('Presione enter para terminar');
readln;
clrscr;
end;
procedure ordenar(var vec1:vector;nobras1:integer);
{procedimiento para el ordenamiento de los valores}
var
i,p,j:integer; {contadores internos}
aux:real; {lugar auxiliar}
begin
i:=0;
repeat
i:=i+1;
until (vec1[i]=0) or (i>nobras1);
p:=i-1;
for i:=1 to p-1 do
for j:=1 to p-i do
if vec1[j]>vec1[j+1] then
begin
aux:=vec1[j];
vec1[j]:=vec1[j+1];
vec1[j+1]:=aux;
end;
writeln('Obras ordenadas');
delay(1000);
clrscr;
end;
{Secci¢n algor¡tmica}
begin
{Pr¢logo}
clrscr;
writeln('Este programa permite ordenar la cantidad de metros c£bicos');
writeln('de hormig¢n en las obras de la empresa');
writeln;
writeln;
writeln;
writeln;
writeln('Ingrese la cantidad de obras (MAX=40)');
readln(nobras); {lectura de datos}
clrscr;
cargar(nobras,vec); {carga de los mts. c£bicos de las obras}
ordenar(vec,nobras); {ordenamiento de los valores}
escribir(vec,nobras);{exhibici¢n de los valores ordenados}
writeln;
writeln('Gracias por utilizar mi programa');
delay(500); {pausa}
end.
== LEGAJOS ==
El programa permite ingresar, ordenar, suprimir y añadir\\
numeros de legajos para luego mostrarlos en pantalla.
{Secci¢n declarativa}
program legajos;
{El programa permite ingresar una lista de legajos, ordenarlos, a¤adir o suprimir}
{legajos y mostrar en pantalla los mismos}
uses
crt,dos;
type
vector=array [1..50] of integer; {vector que contiene los legajos}
const
a=50; {limite del vector}
var
nlv:integer; {numero de legajos en el vector}
opc:integer; {opcion para operar el vector}
vec:vector; {vector que contiene los legajos}
procedure cargar(nlv1:integer;var vec1:vector);
{procedimiento para el ingreso de legajos}
var
i:integer; {contador}
begin
clrscr;
for i:=1 to nlv1 do
begin
writeln('Ingrese el legajo numero ',i);
readln(vec1[i]);
end;
writeln;
writeln('Presione enter para continuar');
readln;
clrscr;
end;
Procedure modificar (var vec1:vector;var nlv1:integer;a1:integer);
{procedimiento para modificar la lista}
var
opc:char ; {opcion de incorporar o suprimir numero de legajo}
leg:integer; {numero de legajo que se incorpora o se suprime}
pos,i:integer; {representa el indice del vector}
begin
repeat
writeln;
writeln;
writeln;
writeln(' 1.A¤adir');
writeln(' 2.Suprimir');
writeln(' 3.Volver');
writeln;
writeln;
writeln('Ingrese una opcion y presione enter');
writeln;
readln(opc);
case opc of
'1':begin
clrscr;
writeln ('Ingrese el numero de legajo que desea a¤adir');
writeln;
readln (leg);
i:=0;
repeat
i:=i+1;
until (leg<(vec1[i])) or (i>nlv1);
nlv1:=nlv1+1;
pos:=i;
for i:=nlv1 downto pos do
begin
vec1[i]:= vec1[i-1]
end;
vec1[pos]:=leg;
clrscr;
end;
'2':begin
clrscr;
writeln('Ingrese el numero de legajo que desea suprimir');
writeln;
readln(leg);
i:=0;
repeat
i:=i+1;
until leg = vec1[i];
pos:=i;
for i:=pos to nlv1 do
begin
vec1[i]:= vec1[i+1];
clrscr;
end;
nlv1:=nlv1-1;
end;
end;
until(opc='3');
clrscr;
end;
procedure escribir(var vec1:vector;nlv1:integer);
{procedimiento para la exhibicion de la lista}
var
i:integer; {contador interno}
begin
for i:=1 to nlv1 do
writeln('Legajo ',i,' = ',vec1[i]);
writeln;
writeln('Presione enter para continuar');
readln;
clrscr;
end;
procedure ordenar(var vec1:vector;nlv1:integer);
{procedimiento para ordenar la lista}
var
i,p,j:integer; {contadores internos}
aux:integer; {auxiliar}
begin
i:=0;
repeat
i:=i+1;
until (vec1[i]=0) or (i>nlv1);
p:=i-1;
for i:=1 to p-1 do
for j:=1 to p-i do
if vec1[j]>vec1[j+1] then
begin
aux:=vec1[j];
vec1[j]:=vec1[j+1];
vec1[j+1]:=aux;
end;
writeln('Legajos ordenados');
delay(1000);
clrscr;
end;
{Secci¢n algor¡tmica}
begin
{pr¢logo}
clrscr;
writeln('Hola, este programa permite operar con legajos');
writeln('Ingrese el numero de legajos que va a usar (MAX=50)');
writeln;
readln(nlv); {lectura del numero de legajos en el vector}
clrscr;
repeat
writeln;
writeln;
writeln;
writeln(' 1.Cargar');
writeln(' 2.Ordenar');
writeln(' 3.Modificar');
writeln(' 4.Mostrar');
writeln(' 5.Terminar');
writeln;
writeln;
writeln;
writeln;
writeln;
writeln('Ingrese una opcion y presione enter');
writeln;
readln(opc);
clrscr;
case opc of
1:cargar(nlv,vec); {carga de datos}
2:ordenar(vec,nlv); {ordenamiento de datos}
3:modificar(vec,nlv,a); {supresion o a¤adidura de legajos}
4:escribir(vec,nlv); {exhibici¢n de lista}
end;
until opc=5;
writeln('Gracias por utilizar mi programa');
delay(1000); {pausa}
end.