[ Foro de Pascal ]

Ejercicio 4.1.1.2 [Consulta]

05-Apr-2014 19:25
Invitado (Marc)
8 Respuestas

Hola de nuevo!

Estoy realizando los ejercicios del nuevo curso de Pascal. Y supongo que hay muchas formas de hacerlos. Me gustaría saber si está bien enfocada mi solución.

He realizado una resta en la iteración de la variable 'cont' del ciclo FOR. De esa manera me va restando los indices hasta llegar al que yo quiero. Osea, me da como resultado el primer número y el último sobre los cinco seleccionados.


Mi código:
// Ejercicio propuesto 4.1.1.2: Crea un programa que pida al usuario 
// cinco números enteros, los guarde en un array y luego muestre el 
// primero y el último.


program ejercicio_4_1_1_2;

uses
	crt;
var
	vector : array [1..5] of byte;
	cont : byte;
	

begin
	
	for cont := 1 to 5 do
		begin
			write('Escribe el ',cont,' numero: ');
			read(vector[cont]);
			writeln;
		end;
		
	writeln(vector[cont-4],' ',vector[cont]);
	
end.


Saludos!


06-Apr-2014 00:01
Luis Torres (+18)

Está bien hecho.

Saludos.


06-Apr-2014 11:36
Invitado (Marc)

Ok, Luis. Muchas gracias. Es que cuando hago un ejercicio siempre tengo la duda de si se podía haber hecho mejor. O con menos líneas de código.

Saludos.


06-Apr-2014 18:58
Luis Torres (+18)

Si estás comenzando a programar, el ejercicio está bien hecho. Siempre hay una forma de hacer mejor las cosas. En la parte en la que pides los datos, el texto con el que pides los datos no está bien redactado, porque vendría a ser así:
                                   Escribe el 1 numero:
                                   Escribe el 2 numero:
                                   .
                                   .
                                   .
                                   Escribe el 5 numero:
Eso no tiene sentido, deberías haber colocado algo como esto:
                       write('Escribe el numero ',cont',': ');
Y, cuando vas a mostrar el primer dato y el último, yo en tu caso hubiese colocado:
                       write(vector[1],' ',vector[5]);
Eso es todo.
Saludos.


06-Apr-2014 19:17
Invitado (Marc)

Gracias. Tomo nota de las recomendaciones ;)


06-Apr-2014 21:17
Invitado (Marc)

Aquí dejo el código que he creado sobre el ejercicio 4.1.1.5:


// Ejercicio propuesto 4.1.1.5: Crea un programa que sume dos vectores, 
// cuyos componentes indicará el usuario. Por ejemplo, la suma de 
// (1,2,3) y (7,11,-1) sería (8,13,2).

program ejercicio_4_1_1_5;

uses
	crt;
var
	vec_1, vec_2 : array [1..3] of integer;
	cont : byte;
begin
	
	writeln('SUMA DE VECTORES...');
	writeln();
	
	for cont := 1 to 3 do
		begin
			textcolor(green);
			write('Escribe dato ',cont, ' vector 1: ');
			readln(vec_1[cont])
		end;
	writeln();
	for cont := 1 to 3 do
		begin
			textcolor(blue);
			write('Escribe dato ',cont, ' vector 2: ');
			readln(vec_2[cont])
		end;
	writeln();
	textcolor(white);
	writeln('SUMA DE INDICES DE AMBOS VECTORES');
	writeln();	
	for cont:= 1 to 3 do
		begin
		textcolor(yellow);
		write(vec_1[cont] + vec_2[cont],' ')
		end;
	writeln()
		
end.


Supongo que habrá fallos a capazos...


06-Apr-2014 23:27
Nacho Cabanes (+84)

Está bien. Sólo tres mejoras de poca importancia:

1) Yo no usaría colores para un fuente tan sencillo ;-D  Cuando uno comienza, es preferible ver bien la lógica del programa, en vez de que sea "bonito en ejecución".

2) No me gustan  nada los fuentes tabulados con "el carácter de tabulación", porque es habitual que se conviertan en un sangrado demasiado grande (típicamente 8 espacios) y aún más frecuente que se descuadren cuando se mezclan con espacios. Configura tu editor para usar el carácter de espacio cuando tabules tu fuente, y para que cada salto equivalga a 4 espacios.

3) Recuerda que los comentarios estándar en Pascal con { } y (* *), no doble barra, que son "heredados" de C/C++ y funcionan en muy pocos compiladores.

Con esos pequeños cambios, yo lo simplificaría hasta algo así:


{ Ejercicio propuesto 4.1.1.5: Crea un programa que sume dos vectores, 
  cuyos componentes indicará el usuario. Por ejemplo, la suma de 
  (1,2,3) y (7,11,-1) sería (8,13,2). }
 
program ejercicio_4_1_1_5;
 
var
    vec1, vec2 : array [1..3] of integer;
    cont : byte;

begin
    writeLn('SUMA DE VECTORES...');
    writeLn();
 
    for cont := 1 to 3 do
        begin
            write('Escribe dato ',cont, ' del vector 1: ');
            readLn( vec1[cont] );
        end;
    writeLn();
    
    for cont := 1 to 3 do
        begin
            write('Escribe dato ',cont, ' del vector 2: ');
            readLn( vec2[cont] );
        end;
    writeLn();

    writeLn('SUMA DE INDICES DE AMBOS VECTORES');
    writeLn();  
    for cont:= 1 to 3 do
        write(vec1[cont] + vec2[cont],' ');
    writeLn();
end.



07-Apr-2014 19:15
Invitado (Marc)

Hola Nacho :)

Sobre lo que me comentas de la tabulación, no sé por que sale así en el foro. Yo lo tengo configurado con Geany a cuatro espacios al tabular y así lo veo en mi editor. Es decir, la primera sentencia que creo después del begin se coloca debajo de la 'n' (del begin).

A mi no me sale tan espaciado como se ve en el foro.

Sobre el tema de los colorines, sabía que me lo ibas a comentar. Te he de dar la razón ;)

Y los comentarios con // lo desconocía. Me gusta más así. Si pongo {}, parece los bloques que encierran las sentencias en C o C++.

Saludos...


07-Apr-2014 19:41
Nacho Cabanes (+84)

Si usas Geany como editor, una cosa es la cantidad de espacios que te va a mostrar en pantalla y otra cosa es cómo se guarde el fichero. En Editar / Preferencias / Editor / Sangría, asegúrate de que, además de "Ancho 4" esté marcado "Espacios", no "Tabulaciones".

Y entiendo que te gusten más los comentarios de una línea... pero no funcionarán en Turbo Pascal ni en otros compiladores antiguos, sólo en Free Pascal y Delphi.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)