[ Foro de Pascal ]

Ejercicio 4.1.2.2 : Buscar en un array

25-Dec-2018 20:09
Invitado (Jos? Manuel)
1 Respuestas

Buenas, antes de nada agradecer esta labor de divulgación y pedagogía porque la gran mayoría de las dudas que me surgen durante mi aprendizaje de pascal, se resuelven echando un ojo al curso.

Tenía una duda respecto a como resolver el final del problema, a la hora de si introducir el 9999. He leido por aquí como usaban break, pero yo no lo he utilizado, pues aun desconocozco como hacerlo. Me he decantado por un repeat-until.

Mi duda surge porque para poder finalizar con 9999 y que el programa no se cerrara si pulsaban otra tecla, he añadido una nueva variable de tipo cadena.

Les dejo el codigo que he empleado, igual habia alguna otra forma mas sencilla de atajar el problema, sería todo oídos.

Saludos y gracias.


Program arrayDiezComparar9999;

var

datos: array [1..10] of integer;
n: integer;
num: integer;
encontrado: boolean;
opcion: string[4];


Begin

repeat
for n:= 1 to 10 do
    begin
	 write ('Introduzca un numero:  ');
	 readln (datos [n]);
     writeln;
	end;
	
write ('Teclee el numero para buscar...');
readln (num);
writeln;
	
encontrado:= false;

writeln ('Buscando coincidencias con:  ',num );
writeln;

for num:= datos[1] to datos[10] do
    if datos[n]= num then encontrado:=true;
	
	if encontrado then
       begin
	    writeln ('Encontrado');
        writeln;
       end
    else
       begin
	    writeln ('No encontrado');
        writeln;
       end;
writeln ('Si desea terminar pulse 9999');
readln (opcion);

until opcion=('9999')
end. 


 


05-Jan-2019 12:22
Nacho Cabanes (+74)

Se acerca bastante. Un par de sugerencias:

- No hace falta que '9999' sea una cadena.

- No puedes decir "no encontrado" hasta que no termina el bucle "for". Si no, con datos como 1, 2, 3, 5 y buscando 5, te diría 3 veces que no lo ha encontrado y finalmente una vez que sí lo ha encontrado.

Edito: Perdona, es correcto. Está tabulado de forma extraña y hace pensar que el "if" es parte del "for", pero no es así, porque no hay begin-end, así que la lógica es correcta.






(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.)