Situación del primer número primo
Publicado por Sara Bretón Ruiz-Alejos (1 intervención) el 06/11/2006 18:37:27
Hola me llamo Sara y soy de La Rioja, he llegado a Madrid para hacer ingeniería técnica de informática este curso y me han mandado hacer una práctica de programación que no entiendo, además la profesora es malísima y yo he llegado sin tener ni idea de programar y no sé ni por donde empezar...pero la mayoría de la gente sabe lo que es programar y la he intentado hacer con manuales que me he descargado de internet pero me da errores, no sé por qué. Porfavor si alguien sabe cómo se hace, o me la puede corregir y explicarme la razón, que me conteste, aquí dejo la práctica y lo que he hech. Gacias.
PRÁCTICA 1 A.- Tipos simples y sentencias de control. Subprogramación.
Enunciado:
En el fichero de entrada hay grabada una secuencia de números enteros positivos. Codifíquese un programa Pascal para determinar la posición ocupada por el primer número primo. La posición del número queda definida por dos valores numéricos: el número de línea y el lugar del número primo dentro de la línea.
Si en el fichero no existe el número buscado se grabará el siguiente mensaje: ‘No existen primos en el fichero’.
Resolución:
La solución se ajustará a las siguientes especificaciones:
Especificaciones de entrada:
- Se utilizará un fichero de texto para la entrada de datos que debe llamarse datosp1.txt
En el código Pascal este fichero debe estar direccionado a la unidad a, es decir la sentencia assign
debe ser: assign (nombre_del_fichero, 'a :\datosp1.txt').
- Puede existir más de un número por línea y suponemos que todos los números están grabados correctamente, es decir, son enteros positivos y no existen en el fichero líneas en blanco.
Especificaciones de salida:
- Se utilizará el fichero estándar de salida: Output.
- Se recuerda que en la primera línea del Output aparecerán los datos: número de matrícula, apellidos y nombre del alumno que realiza la práctica.
Especificaciones de diseño:
- No se utilizarán estructuras de datos, salvo los ficheros de entrada y salida.
- No se admite la utilización de variables globales dentro de los subprogramas.
- Se recuerda que no se puede utilizar las unidades del Turbo Pascal ni del FreePascal.
- Se debe utilizar subprogramas. Se realizarán al menos una función que compruebe si un número entero positivo es o no primo.
Pruebas:
Deberá probarse la práctica contemplando distintas situaciones con diferentes juegos de datos.
Recomendaciones de estudio: el objetivo de esta parte es que el alumno pueda ampliar conocimientos comparando situaciones similares a las planteadas en el enunciado. Esta parte no hay que entregarla.
a) Realizar el mismo proceso pero indicando además cuántas líneas y cuántos números hay en el fichero de entrada.
b) Realizar el mismo proceso pero buscando el último número primo del fichero.
c) Realizar el mismo proceso pero indicando las posiciones que ocupan todos los números primos de la secuencia de entrada. Indicar también cuántos números forman la secuencia de entrada y de ellos, cuántos son primos.
d) Realizar el mismo proceso pero cambiando las especificaciones de diseño realizando un procedimiento para comprobar si el número es o no primo.
A continuación va mi solución errónea:
PROGRAM numeros_primos (input,output);
VAR
n:integer;
FUNCTION es_primo (n:integer) : boolean;
VAR
divisor:integer;
BEGIN
divisor:=2;
while ((divisor<=trunc(SQRT(n))) AND ((n mod divisor)<>0) DO
divisor:=divisor+1;
es_primo:=divisor>trunc(SQRT(n)));
END;
BEGIN
writeln('introduce un número');
readln(n);
if es_primo:=true
writeln('es primo')else writeln('no es primo')
END.
PRÁCTICA 1 A.- Tipos simples y sentencias de control. Subprogramación.
Enunciado:
En el fichero de entrada hay grabada una secuencia de números enteros positivos. Codifíquese un programa Pascal para determinar la posición ocupada por el primer número primo. La posición del número queda definida por dos valores numéricos: el número de línea y el lugar del número primo dentro de la línea.
Si en el fichero no existe el número buscado se grabará el siguiente mensaje: ‘No existen primos en el fichero’.
Resolución:
La solución se ajustará a las siguientes especificaciones:
Especificaciones de entrada:
- Se utilizará un fichero de texto para la entrada de datos que debe llamarse datosp1.txt
En el código Pascal este fichero debe estar direccionado a la unidad a, es decir la sentencia assign
debe ser: assign (nombre_del_fichero, 'a :\datosp1.txt').
- Puede existir más de un número por línea y suponemos que todos los números están grabados correctamente, es decir, son enteros positivos y no existen en el fichero líneas en blanco.
Especificaciones de salida:
- Se utilizará el fichero estándar de salida: Output.
- Se recuerda que en la primera línea del Output aparecerán los datos: número de matrícula, apellidos y nombre del alumno que realiza la práctica.
Especificaciones de diseño:
- No se utilizarán estructuras de datos, salvo los ficheros de entrada y salida.
- No se admite la utilización de variables globales dentro de los subprogramas.
- Se recuerda que no se puede utilizar las unidades del Turbo Pascal ni del FreePascal.
- Se debe utilizar subprogramas. Se realizarán al menos una función que compruebe si un número entero positivo es o no primo.
Pruebas:
Deberá probarse la práctica contemplando distintas situaciones con diferentes juegos de datos.
Recomendaciones de estudio: el objetivo de esta parte es que el alumno pueda ampliar conocimientos comparando situaciones similares a las planteadas en el enunciado. Esta parte no hay que entregarla.
a) Realizar el mismo proceso pero indicando además cuántas líneas y cuántos números hay en el fichero de entrada.
b) Realizar el mismo proceso pero buscando el último número primo del fichero.
c) Realizar el mismo proceso pero indicando las posiciones que ocupan todos los números primos de la secuencia de entrada. Indicar también cuántos números forman la secuencia de entrada y de ellos, cuántos son primos.
d) Realizar el mismo proceso pero cambiando las especificaciones de diseño realizando un procedimiento para comprobar si el número es o no primo.
A continuación va mi solución errónea:
PROGRAM numeros_primos (input,output);
VAR
n:integer;
FUNCTION es_primo (n:integer) : boolean;
VAR
divisor:integer;
BEGIN
divisor:=2;
while ((divisor<=trunc(SQRT(n))) AND ((n mod divisor)<>0) DO
divisor:=divisor+1;
es_primo:=divisor>trunc(SQRT(n)));
END;
BEGIN
writeln('introduce un número');
readln(n);
if es_primo:=true
writeln('es primo')else writeln('no es primo')
END.
Valora esta pregunta


0