[ Foro de Pascal ]

Ejercicio 4.1.2.2 [VECTORES]

15-Apr-2014 21:37
Invitado (Marc)
2 Respuestas

Hola otra vez...

Este ejercicio lo había hecho con un REPEAT...UNTIL. Pero luego lo he cambiado por un WHILE. Pero bueno, es mas o menos igual. Eso sí, le he aplicado un BREAK dentro del ciclo. Aunque no sé si me estirará el profe Nacho de las orejas (por no haberlo dado aún).


{ Ejercicio propuesto 4.1.2.2: Crea un programa que pida al usuario diez 
* números enteros, los guarde en un array y luego le vaya preguntando 
* qué número quiere buscar de forma repetitiva, y diga si era parte de 
* los 10 datos originales o no. Terminará cuando el número introducido 
* sea 9999.}

program ejercicio_4_1_2_2;

var
    vector : array[1..10] of integer;
    num, i : integer;
    existe : boolean;
    
begin
    writeln('Escribe 10 numeros...');
    for i := 1 to 10 do
        readln(vector[i]);
    num := 0;
    while num <> 9999 do
        begin
            existe := false;
            writeln('Que numero quieres buscar...? ');
            readln(num);
            if num = 9999 then
                break;
            for i := 1 to 10 do
                if vector[i] = num then
                existe := true;
            if existe then
                writeln('El numero existe...')
            else
                writeln('No existe el numero...')
        end;   
end.



16-Apr-2014 00:51
Nacho Cabanes (+84)

Efectivamente, está casi perfecto. Y el "casi" se debe a que hay que evitar el "break" siempre que sea posible, porque rompe el flujo natural del programa, así que disminuye su legibilidad. Y en este caso, es fácil evitarlo: en vez de decir "interrumpe si es 9999" puedes decir "haz esto si no es 9999".

Por cierto, incluiré el "break" en el tema de "for", en vez de en un tema más avanzado, como estaba en la versión anterior del curso, pero recordando que se debe intentar no usarlo.


16-Apr-2014 13:45
Invitado (Marc)

OK. Tomo nota del consejo. Muchas gracias...






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