domingo, 11 de diciembre de 2011

Ejercicio(14) ARRAYS

. Plantee e implemente un programa en PASCAL que permita introducir
apropiadamente una matriz 4x4 de caracteres y que, a petición del usuario,
intercambie las filas o columnas i y j de dicha matriz. Muestre por pantalla en
formato matricial tanto la matriz original introducida como la matriz resultante
del intercambio de filas o columnas solicitado por el usuario. No utilice el tipo
String, cree las matrices como arrays de caracteres.

PROGRAM ejer14 (input,output);
TYPE
Tmatriz=ARRAY[1..100,1..100]OF integer;
VAR
matriz:Tmatriz;
bo,ba:integer;
PROCEDURE construccion ;
VAR
i,j,numeros:integer;
BEGIN
j:=1;
i:=1;
FOR i:=1 to 4 DO
BEGIN
FOR j:=1 to 4 DO
BEGIN
write('escriba el elemento fila:',i,'columna',j,':');
read(matriz[i,j]);
END;
END;

END;
PROCEDURE fila (var matriz:Tmatriz);
var
I,J,Y,Z:integer;
BEGIN
write('escriba la fila inicial:');
readln(Y);
write('escriba el numero de la fila por la que cambiarla:');
readln(Z);
IF YFOR I:=Y TO Z DO
begin
FOR J:=1 to 4 do
begin
matriz[Y,J]:=matriz[Z,J];
matriz[Z,J]:=matriz[Y,J];
read(matriz[I,J]);
end;
END;
END;
END;
PROCEDURE columna (var matriz:Tmatriz);
var
I,J,A,B:integer;
BEGIN
write('escriba la columna inicial:');
readln(A);
write('escriba el numero de la columna por la que cambiarla:');
readln(B);
If Abegin
FOR I:=1 TO 4 DO
begin
FOR J:=A to B do
begin
matriz[I,A]:=matriz[I,B];
matriz[I,B]:=matriz[I,A];
readln(matriz[I,J]);
end;
END;
END;
END;
PROCEDURE escribir;
VAR
q,w:integer;
BEGIN
q:=1;
w:=1;
FOR q:=1 to 4 do begin
writeln;
for w:=1 to 4 do begin
write(matriz[q,w]);
write(' ');
end;
END;
END;
BEGIN
bo:=0;
ba:=0;
construccion;
escribir;
write('quiere cambiar alguna fila?[1=si,0=no]:');
readln(bo);
IF bo=1 THEN
fila(matriz);
write('quiere cambiar alguna columna?[1=si,0=no]:');
readln(ba);
IF ba=1 then
columna(matriz);
escribir;

END.

AVISO:el programa compila y se ejecuta,pero el problema sucede que en la fila o columnas iniciales,te pide que metas otros numeros,cojiendo a boleo 4 para la fila o columna y escribiendolos.Se produce el cambio de lugar de todas maneras.

2 comentarios:

  1. Yo no lo veo asi como lo has echo tu... pongo el mio:

    PROGRAM ejer14 (input,output);

    CONST
    n=4;

    TYPE
    Tmatriz=ARRAY[1..n,1..n]OF integer;
    VAR
    matriz:Tmatriz;
    seleccion: integer;

    (*******************************************************************)

    PROCEDURE leer(VAR matriz: tmatriz);
    VAR
    i,j:integer;
    BEGIN

    FOR i:=1 to n DO
    FOR j:=1 to n DO
    BEGIN
    write('escriba el elemento fila ',i:2,' columna',j:2,': ');
    read(matriz[i,j]);
    END;
    END;

    (***********************************************************************)

    PROCEDURE escribir(matriz: tmatriz);
    VAR
    i,j:integer;
    BEGIN
    FOR i:=1 to n do BEGIN
    for j:=1 to n do begin
    write(matriz[i,j]);
    write(' ');
    end;
    Writeln;
    END;
    END;

    (***********************************************************************)

    PROCEDURE intercambio (matriz: tmatriz);

    VAR
    fila, columna: integer;
    aux: array[1..4] OF integer;
    i,j: integer;
    edit: tmatriz;

    BEGIN

    Write('Que fila quieres intercambiar?');
    readln(fila);

    write('Que columna quieres intercambiar?');
    readln(columna);

    FOR j:=1 to 4 DO
    aux[j]:=matriz[fila,j]; {Almacenamos en un ausiliar la fila que nosotros queremos cambiar}

    FOR i:=1 to 4 DO
    matriz[fila,i]:=matriz[i,columna]; {En la fila que queremos cambiar ponemos la columna a cambiar}

    for i:=1 to 4 DO
    matriz[i,columna]:=aux[i]; {En la columna que queremos cambiar guardamos el auxiliar que contiene la fila cambiada}

    escribir(matriz);
    END;
    (***********************************************************************)

    {programa ppal}
    BEGIN
    leer(matriz);

    repeat
    Writeln('Elige una opcion: ');
    writeln('1. Intercambiar filas y/o columnas');
    writeln('0. salir');
    read(seleccion);

    IF seleccion=1 THEN intercambio(matriz);
    UNTIL seleccion=0;

    escribir(matriz);
    END.

    ResponderEliminar
  2. gracias por el aporte :),pero siempre es bueno conocer el nombre del autor

    ResponderEliminar

Twitter Delicious Facebook Digg Stumbleupon Favorites More