Informática. Exame de Teoría Resolto. Septiembre 2002
Nota: Se define como mediana el valor central de los datos tras un proceso de ordenación de los mismos. En el caso de que el número de datos sea par, la mediana se define como el valor medio de los dos valores centrales.
SOLUCIÓN:
algoritmo ejercicio1 inicio variable x(100), vmed, med, dif: real variable i, n: entero i=1 Inicio del procedimiento de lectura escribir Introduzca un número positivo (-1 para salir) leer x(i) mientras x(i) > 0 i = i+1 escribir Introduzca un número positivo (-1 para salir) leer x(i) fin_mientras n = i -1 si n > 0 vmed = vmedio(x, n) Invocación a la funcón para el cálculo del valor medio med = mediana(x, n) Invocación para el cálculo de la mediana escribir El valor medio es , vmed escribir La mediana es , med dif = vmed - med Calculamos el valor absoluto de la diferencia si dif < 0 dif = -dif fin_si escribir La diferencia en valor absoluto entre la media y la mediana es, dif sino escribir No se puede calcular el valor mediano y la mediana sobre un conjunto de cero datos fin_si fin función vmedio(x, n) inicio variable x(100), sum: real variable i, n: entero sum = x(1) desde i=2 hasta n paso 1 sum = sum + x(i) fin_desde devolver(sum/n) fin función mediana(x, n) inicio variable x(100): real variable i, j, n: entero variable ordenado: lógica ordenado = falso Bandera para indicar que tenemos el vector ordenado i = 1 mientras i<n-1 y ordenado=falso Procedimiento de ordenación ordenado = cierto desde j=1 hasta n-i si x(j) > x(j+1) temp = x(j) x(j) = x(j+1) x(j+1) = temp ordenado = falso fin_si fin_desde i = i+1 fin_mientras si (n/2)*2 = n es n par? devolver ((x(n/2)+x(n/2 +1))/2) sino devolver(x(n/2 + 1)) fin
program examen real x(100), media, mediana, dif integer i, n open (2, file="datos.dat", status='old', err=2) read (2, *, end=3) n read (2, *, end=3) (x(i), i = 1, n) print 4, (x(i), i = 1, n) 4 format(f8.3) media = fmedia(x, n) mediana = fmediana(x, n) write (2, 1) media, mediana, abs(media - mediana) 1 format(3(f8.3, 3x)) close(2) stop 2 print *, "Error en open" stop 3 print *, "Fin de fichero" end ccccccccccccccccccccccccccccccccccccc function fmedia(x, n) real x(*) fmedia = 0 do 1 i = 1, n 1 fmedia = fmedia + x(i) if(n.ne.0) then fmedia = fmedia/n endif return end cccccccccccccccccccccccccccccccccccccc function fmediana(x, n) real x(*), temp logical fin i = n 2 fin = .true. do 1 j = 1, i - 1 if(x(j).gt.x(j + 1)) then temp = x(j) x(j) = x(j + 1) x(j + 1) = temp fin = .false. endif 1 continue i = i - 1 if(fin) then i = 1 endif if(i.gt.1) then goto 2 endif print 3, (x(i), i = 1, n) 3 format(f8.3) if(mod(n, 2).eq.0) then fmediana = (x(n/2) + x(n/2+1))/2 else fmediana = x(n/2 + 1) endif return end
print *, "Introduce un número entero:" read *, n x = 2*n if (n .gt. 0) then n + 5 = x ERROR: expresión a la izquierda de una asignación (debe ser una variable) goto 2 ERROR: salto desde fuera a dentro de un bucle do endif do 1 i = 1, 10 2 print *, f(i) ERROR: f es una subrutina y debe ser llamada con call 1 stop ERROR: un stop no puede ser sentencia terminal de un do end subroutine f(x) integer x f = x*x ERROR: la variable f no está definida porque f es una subrutina (no una función) return end
SOLUCIÓN: 239.4 en base 16 no es igual a 110011101.1 en base 2
SOLUCIÓN: 28.375 en base 10 = 11100.0110 en base 2
SOLUCIÓN: -122 en base 10 = 10000101 en complemento a 1
SOLUCIÓN: El propietario puede ver el contenido (archivos y directorios) del directorio (porque tiene permiso de lectura) y crear / borrar archivos y/o directorios del mismo (porque tiene permiso de escritura), pero no puede entrar con cd en el directorio (porque no tiene permiso de ejecución). Los usuarios del mismo grupo pueden crear/borrar archivos del directorio (tienen permiso de escritura) y pueden entrar en el mismo (permiso de ejecución) pero no pueden ver sus contenidos (no tienen permiso de lectura). El resto de usuarios no puede hacer nada.
SOLUCIÓN: El comando rmdir permite borrar un directorio cuando este está vacío. El comando rm, con su opción -r permite borrar directorios que no están vacíos.
SOLUCIÓN: chmod u+rw notas.dat; chmod g-x notas.dat
3x + 2y - z = 8 | (1) | ||
x - y - z = 0 | (2) | ||
x + 3y + 2z = 5 | (3) |
SOLUCIÓN:
>> A = [3 2 -1;1 -1 -1;1 3 2]; >> B=[8 0 5]'; >> inv(A)*B