Preguntas del examen de idioma Fortran
Qué pocos puntos, tantos requisitos,
Súmalo a 200 y te compensaré
========= = ========
Alguien publicó otra publicación, pero de todos modos fue inventada.
Compilado especialmente, de la siguiente manera. Nunca vuelvas a hacer este tipo de preguntas.
! El 14 de junio de 2008, cvf6.6 pasó la depuración.
Programa principal
Ninguno implícito
Entero, parámetro:: Marknum=3, Studentnum=5. ¡Cuántas materias (notas), cuántos estudiantes, sin cambios
tipo de estudiantes! Definir tipo de estudiante
Entero (tipo=8)::ID! Número de estudiante
Real:: Mark(Marknum)=0! Puntuaciones en cada materia
real::summaryk = 0
Real::EvenMark=0! Puntuación media
Entero::Lugar=0! Consigue un lugar en el concurso
End type
type(student)::student arr(student num)! Hay cinco estudiantes.
real::temparr(Studentnum)
real::SearchMark
entero::searchpos
Entero::I, j
entero::select
entero::sn(Studentnum)
entero::binary_search
escribir(*,*) "Si Si elige leer datos de un archivo y enviar los resultados a un archivo, ingrese el número entero 1 y presione Intro".
Escriba (*, *) "Si elige ingresar datos desde el teclado y generar los resultados en la pantalla, luego ingrese el número entero 2 y presione Enter ”
Hacer
Leer (*, *) opción
si (elección = = 1). . o . elección = = 2) Luego
Salir
Otros
Escribir (*, *) "El ingreso de datos seleccionado es incorrecto, por favor vuelva a ingresar !"
Escribe (*, *) "Para leer datos de un archivo y enviar los resultados a un archivo, ingresa el número entero 1 y presiona Enter!"
Escribe (*, *) "Desde Ingrese datos con el teclado y envíe el resultado a la pantalla, luego ingrese el número entero 2 y presione Enter. ”
Terminará si...
Fin de
! -
si(elección==1)entonces
! Leer datos del archivo
Abrir (1, archivo="número de estudiante y archivo de datos de calificaciones.txt")
Hacer i=1, número de estudiante
leer(1,*) estudianteArr(i). Identificación,(studentArr(i)). Mark(j), j=1, Marknum)
Fin do
Leer (1, *) marca de búsqueda
Cerrar (1)
Otro
! Ingrese datos desde el teclado
Escriba (*, *) "一* *有", Studentnum, "Estudiantes, sigan las indicaciones para ingresar datos".
do i=1 , Número de Estudiante
Escribe (*, *) "-"
Escribe (*, *) "número", i, "datos del estudiante"
Escribe ( *, *) "ID de estudiante (entero), presione Enter para confirmar:"
Leer (*, *) StudentArr(i).
Prueba de identidad
hacer j=1, 3
Escribir (*), *) "primero", j, "puntaje de puerta (número real), presione Enter para confirmar:"< /p >
Leer(*,*) estudianteArr(i). Marca (j)
End do
End do
Escribe (*, *) "Por favor ingresa la puntuación total (número real) a consultar:" p>
Leer (*, *) marca de búsqueda
Escribir (*, *) "Ingreso de datos completado"
Terminará si...
! -
! Calcule la puntuación total y la puntuación media
Haga i=1, número de estudiante
studentArr(i). resumenk = estudiante arr(I). SumaMarca suma(studentArr(i)). Marca)
studentArr(i). EvenMark=estudianteArr(i). Resumen/número de etiquetas
sn(i)=i
Fin do
temparr=studentArr. resumenk
¡Llame a sort(temparr, sn, Studentnum)! Clasificación
SEARCH pos = BINARY _ SEARCH(temparr, Studentnum, searchMark)! Verifique los puntos y obtenga una clasificación.
! Escribe (*), *) marca de búsqueda, ubicación de búsqueda
! Encuentra la clasificación
bucle1: do i=1, Studentnum
bucle2: do j=1, Studentnum
if(studentArr(i).summaryk = = temparr (j)) Entonces
studentArr(i). place=j
Bucle 1
Terminará si...
Fin del bucle 2
Fin del bucle 1 p >
si(elección==1)entonces
! Enviar los resultados a un archivo
Abrir (2, file="★result file.txt")
Escribir (2, "(A5, 4x, A4, 7x, 3 ( A5 , 5x), A4, 7x, A6)") "clasificación", "número de estudiante", "grado 1", "grado 2", "grado 3", "puntaje total", "puntuación promedio".
Haz i=1, número de estudiante
Escribe (2, "(1x, i3.3, 2x, i10, 5x, 5(f6.2, 4x))") estudianteArr(i). lugar, estudianteArr(i). id amp;
amp(studentArr(i). Mark(j), j=1, Marknum), StudentArr(i). SumMark, estudianteArr(i). EvenMark
End do
Escribe (2, *) "-"
Escribe (2, *) "El ítem con mayor puntuación es:"< /p >
Escribe (2, "(A5, 4x, A4, 7x, 3 (A5, 5x), A4, 7x, A6)") "Ranking", "ID de estudiante", "Grado 1", " Grado 2", "Grado 3", "Puntuación total", "Puntuación media".
haz i=1, número de estudiante
if (studentArr(i).place==1) entonces
Escribe (2, "(1x, i3 .3, 2x, i10, 5x, 5(f6.2, 4x))") estudianteArr(i). lugar, estudianteArr(i).
id amp;
amp(studentArr(i). Mark(j), j=1, Marknum), StudentArr(i). SumMark, estudianteArr(i). EvenMark
Terminará si...
Fin do
Escribe (2, *) "-"
Si (Searchpos == 0) Luego
Escribe (2, *) "Puntuación total no encontrada", marca de búsqueda.
Otros
Escriba (2, *) "Puntuación total", SearchMark, "ID de estudiante:", arr(sn(pos. de búsqueda))ID de estudiante.
Terminará si...
Cerrar (2)
Escribir (*, *) "Abra el archivo de resultados.txt para ver los resultados "
Otro
! Muestra los resultados en la pantalla
Escribe (*, "(A5, 4x, A4, 7x, 3 (A5, 5x), A4, 7x, A6)") "clasificación", "número de estudiante" , "Grado 1", "Grado 2", "Grado 3", "Puntuación total", "Puntuación media".
Haz i=1, número de estudiante
Escribe (*, "(1x, i3.3, 2x, i10, 5x, 5(f6.2, 4x))") estudianteArr(i). lugar, estudianteArr(i). id amp;
amp(studentArr(i). Mark(j), j=1, Marknum), StudentArr(i). SumMark, estudianteArr(i). EvenMark
End do
Escribe (*, *) "-"
Escribe (*, *) "El ítem con mayor puntuación es:"< /p >
Escribe (*, "(A5, 4x, A4, 7x, 3 (A5, 5x), A4, 7x, A6)") "clasificación", "número de estudiante", "grado 1", " grado 2 ", "Grado 3", "Puntuación total", "Puntuación media".
haz i=1, número de estudiante
si (studentArr(i).place==1) entonces
Escribe (*, "(1x, i3 .3, 2x, i10, 5x, 5(f6.2, 4x))") estudianteArr(i). lugar, estudianteArr(i). id amp;
amp(studentArr(i). Mark(j), j=1, Marknum), StudentArr(i). SumMark, estudianteArr(i). EvenMark
Terminará si...
Fin do
Escribe (*, *) "-"
Si (Searchpos == 0) Luego
Escribe (*), *) "Puntuación total no encontrada", SearchMark.
Otros
Escriba (*) "Puntuación total", SearchMark, "ID de estudiante:", ID de estudiante (sn(pos. de búsqueda))ID.
Terminará si...
Terminará si...
Pausa "¡El programa finaliza, entra y sale!"
Finalizar programa
! Programa de método de semibúsqueda
Función entera BINARY_SEARCH(A, N, KEY)
Ninguna implícita
Entero:: N
real :: A(N), CLAVE
entero:: L! Posición inicial
Entero R! Posición final
Entero M! Posición media
L=1
R=N
M=(L R)/2
Si ((KEY gtA(L )) o .(KEY ltA(R))) entonces
BINARY_SEARCH = 0
Retorno
Terminará si...
hacer mientras(L lt; = R)
if(KEY-A(M) lt;-0.01)
! Si clave
L=M 1
M=(L R)/2
si no (KEY-A(M)>0.01)
! Si clave > valor medio, los datos caen en la mitad inferior.
R=M-1
M=(L R)/2
si no(ABS(KEY-A(M)) lt;=0.01) Entonces
BINARY_SEARCH = M
Regresar
Terminará si...
Fin do
BINARY_SEARCH = 0
Regresar
Finalizar función
! Clasificar.
Clasificación de subrutina(Arr, sn, len)
Ninguno implícito
Entero::longitud
Entero::número de secuencia (longitud )
real::arr(len), temporal
entero::i, j, item
if (len==1) return
hacer i=1, len-1
hacer j=1, len-1
if(arr(j) lt; arr(j 1)) Entonces
temp=arr(j)
arr(j)=arr(j 1)
arr(j 1)=temp
itemp=sn(j)
sn(j)=sn(j 1)
sn(j 1)=itemp
Si... lo hará Fin
Fin do
Fin do
Fin de clasificación de subrutinas
El nombre del archivo de datos es:
Archivos de datos de números de estudio y calificaciones. Los datos en el archivo de texto (textfile)
son:
123456781 79 67 62.80
123456782 46.94 30.29 85.68
123456783 78.12 2.59 94,92
123456784 90 75 86
123456785 81,23 77,58 88
162,91
El archivo de resultados generado es:
★Archivo de resultados. Archivo de texto (textfile)
El contenido es:
Clasificación del número de estudiante puntuación 1 puntuación 2 puntuación 3 puntuación total promedio.
003 123456781 79,00 67,00 62,80 208,80 69,60
005 123456782 46,94 30,29 85,68 162,91 54,30
004 123456783 78 2 2,59 94,92 175,63 58,54
001 123456784 90.00 75.00 86.00 251.00 83.67
002 123456785 81.23 77.58 88.00 246.81 82.27
-
La puntuación más alta es:
Ranking número de estudiante puntuación 1 puntuación 2 puntuación 3 puntuación total promedio.
001 123456784 90.00 75.00 86.00 251.00 83.67
-
El número de estudiantes con una puntuación total de 162 438 000 es: 102.