Pascal/Turbo Pascal - Intercambio de elementos en una Matriz

 
Vista:

Intercambio de elementos en una Matriz

Publicado por Francisco (1 intervención) el 18/06/2014 22:08:08
Tengo un procedimiento que en base a la las letras A (Arriba), B(Abajo), D(Derecha) e I(izquierda), me cambia de lugar los valores de una matriz, mi duda es como pregunto para que si pongo otra letra distinta a esas 4 me diga que tengo que ingresar una letra correcta.
El codigo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Procedure MoverFichas(Var Tablero:Matriz);
Var
	numf,numc,m,i,j,maxm:integer;
	direccion,aux:char;
begin
numf:=0;
numc:=0;
direccion:= ' ';
maxm:=20;
	write('l');
	read(direccion);
	begin
	For m:=1 to MaxMovimientos do
		begin
		Write('Ingrese la fila que desea seleccionar:');
		Readln(numf);
		Write('Ingrese la columna que desea seleccionar:');
		Readln(numc);
		Write('En que direccion desea mover el elemento:');
		readln(direccion);
	If (direccion= 'A') then
		begin
			If (numf <> 1) then
				begin
					aux:= Tablero[numf,numc];
					Tablero[numf,numc]:= Tablero[(numf - 1),numc];
					Tablero[(numf - 1),numc]:= aux;
					MaxM:= (MaxM - 1);
					writeln('Movimientos Restantes:', maxm);
					writeln();
					For i:=1 to maxfil do
						begin
						For j:=1 to maxcol do
							begin
								write(tablero[i,j]);
								write(' ');
							end;
								writeln();
								writeln();
						end;
				end
				else
					write('El movimiento no se puede realizar');
		end
		else
			If (direccion= 'B') then
				begin
					If (numf <> 2) then
						begin
							aux:= Tablero[numf,numc];
							Tablero[numf,numc]:= Tablero[(numf + 1),numc];
							Tablero[(numf + 1),numc]:= aux;
							MaxM:= (MaxM - 1);
							writeln('Movimientos Restantes:', maxm);
							writeln();
							For i:=1 to maxfil do
								begin
								For j:=1 to maxcol do
									begin
										write(tablero[i,j]);
										write(' ');
									end;
										writeln();
										writeln();
								end;
						end
					else
						write('El movimiento no se puede realizar');
				end
				else
					If (direccion= 'I') then
						begin
							If (numf <> 3) then
								begin
									aux:= Tablero[numf,numc];
									Tablero[numf,numc]:= Tablero[numf,(numc - 1)];
									Tablero[numf,(numc - 1)]:= aux;
									MaxM:= (MaxM - 1);
									writeln('Movimientos Restantes:', maxm);
									writeln();
									For i:=1 to maxfil do
										begin
										For j:=1 to maxcol do
											begin
												write(tablero[i,j]);
												write(' ');
											end;
												writeln();
												writeln();
										end;
									end
								else
									write('El movimiento no se puede realizar');
						end
						else
							If (direccion= 'D') then
								begin
									If (numf <> 4) then
										begin
											aux:= Tablero[numf,numc];
											Tablero[numf,numc]:= Tablero[numf,(numc + 1)];
											Tablero[numf,(numc + 1)]:= aux;
											MaxM:= (MaxM - 1);
											writeln('Movimientos Restantes:', maxm);
											writeln();
											For i:=1 to maxfil do
												begin
												For j:=1 to maxcol do
													begin
														write(tablero[i,j]);
														write(' ');
													end;
														writeln();
														writeln();
												end;
										end
										else
											write('El movimiento no se puede realizar');
								end
	end;
end
end;
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

Intercambio de elementos en una Matriz

Publicado por David (1 intervención) el 18/06/2014 22:40:55
Te propongo la siguiente solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Procedure MoverFichas(Var Tablero:Matriz);
Var
numf,numc,m,i,j,maxm:integer;
direccion,aux:char;
begin
numf:=0;
numc:=0;
direccion:= ' ';
maxm:=20;
write('l');
read(direccion);
begin
For m:=1 to MaxMovimientos do
begin
Write('Ingrese la fila que desea seleccionar:');
Readln(numf);
Write('Ingrese la columna que desea seleccionar:');
Readln(numc);
Write('En que direccion desea mover el elemento:');
Repeat
  direccion:=readkey;
Until Direccion in ['A','B,','C,','D']; {esto har  que se repita la lectura de tecla hasta que se pulse una tecla v lida}
If (direccion= 'A') then
begin
If (numf <> 1) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[(numf - 1),numc];
Tablero[(numf - 1),numc]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion= 'B') then
begin
If (numf <> 2) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[(numf + 1),numc];
Tablero[(numf + 1),numc]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion= 'I') then
begin
If (numf <> 3) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[numf,(numc - 1)];
Tablero[numf,(numc - 1)]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion= 'D') then
begin
If (numf <> 4) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[numf,(numc + 1)];
Tablero[numf,(numc + 1)]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
end;
end
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

Intercambio de elementos en una Matriz

Publicado por ramon (2158 intervenciones) el 19/06/2014 00:27:24
Cambia esto
1
2
Write('En que direccion desea mover el elemento:');
readln(direccion);

por esto

1
2
3
4
5
Write('En que direccion desea mover el elemento:');
repeat
   readln(direccion);
    direccion := upcase(direccion);
until direccion in['A','B','D','I'];
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