Pascal/Turbo Pascal - AYUDA SOBRE DOS EJERCICIO MUY DIFICIL EN PASCAL.

 
Vista:

AYUDA SOBRE DOS EJERCICIO MUY DIFICIL EN PASCAL.

Publicado por Deiby  (1 intervención) el 04/02/2008 22:09:32
Hola.. estudio ingenieria informática... he estado tratando de hacer estos dos ejercicios en pascal pero me han costado mucho.. NECESITO AYUDA URGENTE.. si pueden colaborar conmigo a ayudarme a resolverlos.. se los agradecería mucho... saludos.. gracias!

1) Se dispone de un arreglo unidimensional de números enteros cuyo tamaño
máximo es de 100 elementos. Crear un programa en PASCAL que contenga una
rutina que devuelva en el mismo arreglo los números enteros pares separados
de los impares, y de tal forma que cada uno de los subconjuntos formados
quede ordenado ascendentemente. Considerar:
- Al crear el subprograma se debe considerar que el arreglo ya contiene N
números enteros, siendo N <= 100.
- Se pueden usar estructuras auxiliares y se valorara su adecuación.
- Es indiferente que al final estén antes los pares o los impares en el arreglo.

2) Los elementos de una matriz pueden listarse de muy
diversas formas: por fila, por columna, o de otras
maneras. Una de ellas es “a la Cantor”, que consiste en
“barrer la matriz avanzando en forma diagonal hacia
arriba y desde la izquierda”. Por ejemplo, para una
matriz 6 x 6, el recorrido sería:
Construya una subrutina “ListaCantor” que recibe
una matriz M (cuadrada de dimensión n x n) e imprime
sus elementos en un recorrido “a la Cantor”.

1 3 6 10 15 21

2 5 9 14 20 26

4 8 13 19 25 30

7 12 18 24 29 33

11 17 23 28 32 35

16 22 27 31 34 36
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA SOBRE DOS EJERCICIO MUY DIFICIL EN PASCAL

Publicado por Diego Romero (996 intervenciones) el 05/02/2008 19:21:00
Me agarraste inspirando, siéntete afortunado porque no suelo hacer programas a pedido tipo ejercicio de secundaria:

uses crt;
type
TArreglo=array [1..100] of integer;

procedure LlenarArreglo(var A: TArreglo);
var
i: integer;
begin
randomize;
for i:=1 to 100 do A[i]:=Random(100)+1;
end;

var
Arreglo:TArreglo;

function EsPar(N: integer):boolean;
begin
EsPar:=(N mod 2)=0;
end;

Procedure Ordenar(var A: TArreglo; L,R: integer);
var
i,j,x,aux:integer;
begin
i:=l;
j:=r;
x:=A[(l+r) div 2];
repeat
while A[i]<x do inc(i);
while A[j]>x do dec(j);
if i<=j then
begin
aux:=A[i];
A[i]:=A[j];
A[j]:=aux;
inc(i);
dec(j);
end;
until i>j;
if l<j then Ordenar(A,l,j);
if l<r then Ordenar(A,i,r);
end; { Ordenar }

procedure Proceso(var A:Tarreglo);
var
Pares, Impares: TArreglo;
i, j, k: integer;
begin
j:=0;
k:=0;
for i:=1 to 100 do
if EsPar(A[i]) then
begin
inc(j);
Pares[j]:=A[i];
end
else
begin
inc(k);
Impares[k]:=A[i];
end;
Ordenar(Pares,1,j);
Ordenar(Impares,1,k);
A:=Pares; { los pares primero }
k:=0;
for i:=j+1 to 100 do
begin
inc(k);
A[i]:=Impares[k];
end;
end; { Proceso }

procedure Mostrar(A: TArreglo);
var
i: integer;
begin
for i:=1 to 100 do
Write(A[i]:3);
end; { Mostrar }

begin
clrscr;
LlenarArreglo(Arreglo);
Proceso(Arreglo);
Mostrar(Arreglo);
readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA SOBRE DOS EJERCICIO MUY DIFICIL EN PASCAL

Publicado por Mariano (57 intervenciones) el 08/02/2008 05:44:30
Holaa! Dado que Diego hizo el primero de los dos programas, y estbaa un rato aburrido, me encargue de hacer el segundo programa, el de impresion de la matriz, yo puse en el ejemplo hsta para 6, pero basta con cambiar el type, la cantidad predefinida y listo :), y para probar primero precargue a la matriz con el valor de un contador

Ahi va el programa

Program Cantor;
uses
crt;
const
NL = #13#10;
type
tmat= array [1..6,1..6] of word;

procedure CargaMat(var n:byte;var mat:tmat);
var
i,j:byte;
cant:word;
begin
writeln('Ingrese cantidad de filas y columnas');
readln(n);
cant:=0;
for i:=1 to n do begin
for j:=1 to n do begin
inc(cant);
mat[i,j]:=cant
end;
end;
end;

procedure Emite (mat:tmat;num:byte);
var
a, b,max, aux, j:byte;

begin
writeln ('Los valores cargados en la matriz son: ');
write(mat[1,1], ', ');
a:=2;
while a <> num +1 do begin
b:=1;
aux:=a;
while aux <> 0 do begin
write(mat[aux,b],', ');
inc(b);
dec(aux)
end;
a:=a+1;
end;
j:=2;
while j <> num do begin
max:= num;
aux:=j;
while aux <> num + 1 do begin
write(mat[max,aux],', ');
dec(max);
inc(aux)
end;
inc(j)
end;
write(mat[num,num])
end;

var
matriz:tmat;
numero:byte;

begin
clrscr;
CargaMat(numero,matriz);
Emite(matriz,numero);
readkey
end.

Cualquier cosa preguntame :)

Un abrazoo

Mariano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA SOBRE DOS EJERCICIO MUY DIFICIL EN PASCAL

Publicado por patricia rodrigez (1 intervención) el 17/07/2008 01:07:40
un progra que calcule el suldo neto de N trabajadores.
el otro es que calcule la nota definitiva de N estudiantes y que diga cuantos aprobaron y cuantos reprobaron
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar