EXAMEN FEBRERO TEST

Para cualquier tema relacionado con la asignatura de Programación en cualquier titulación.

EXAMEN FEBRERO TEST

Notapor markitos90 » Vie, 12 Feb 2010 11:46

LAS PREGUNTAS ERAN ESTAS:
1.) NIL ES UNA PALABRA RESERVADA QUE REPRESENTA UNA DIRECCION INEXISTENTE:
A) FALSO B) CIERTO C) NIL ES UN VAOR PREDEFINIDO
2.) MINREAL ES EL MENOR VALOR REAL POSITIVO REPRESENTABLE
A) FALSO B) CIERDIVTO C)MINREAL NO ES UN TIPO REAL
3.) EL PROCEDIMIENTO HALT
A) NO EXISTE B) NO TIENE ARGUMENTOS C) NI A NI B SON CIERTAS
4.) IDENTIFICADOR PARA UNA VARIABLE PUEDE SER:
A) CUALQUIER SUCESION ASCII B) IDENT_DIV_IDENT C)IDENT_ / _IDENT
5.) FRASE CIERTA
A)VARIABLES DE TIPO ENUMERADO SE LEEN CON READ B)READ LEE CADENAS DE LOS ARCHIVOS DE TEXTO C) WITH SIMPLIFICA TRABAJOS CON CONJUNTOS
6.) PACKED
A) SOLO APLICABLE A PROC Y FUNC CON RECURS INDIRE B) PUEDE PROCEDER A ARRAY RECORD FILE .... C)SOLO APLICABLE A REGISTROS VARIANTES CON RECURS.
7)READSTR
A) LEE DATOS DE UNA CADENA B) DEVUELVE UN PUNTERO A UN STRING C) SE UTILIZA PARA LEER CADENAS DE CARACTERES EN FICH DIRECTOS
8)RESET(f)
a) ALGO DE UN PUNTERO B)PONE EL FICHERO EN MODO LECTURA C)NO ME ACUERDO
9)
A)MODIFICASE SIEMPRE B) VARIA EN EL PARAMETRO ACTUAL C) NN VARIA OU AGO ASI SI VA COMO PROTECTED
10) NO ME ACUERDO

reserva: INTERFACE.


PONED LAS Q FALTAN Y LAS SOLUCIONES Q SEPAIS * FIJO*
markitos90
Bishibosh
 
Mensajes: 43
Registrado: Mié, 03 Jun 2009 17:52

Re: EXAMEN FEBRERO TEST

Notapor Undomirie » Vie, 12 Feb 2010 12:52

Mis respuestas (las que recuerdo) fueron:

Código: Seleccionar todo
1.) NIL ES UNA PALABRA RESERVADA QUE REPRESENTA UNA DIRECCION INEXISTENTE:
   C) NIL ES UN VALOR PREDEFINIDO
3.) EL PROCEDIMIENTO HALT
   C) NI A NI B SON CIERTAS
4.) IDENTIFICADOR PARA UNA VARIABLE PUEDE SER:
   B) IDENT_DIV_IDENT
5.) FRASE CIERTA
   B)READ LEE CADENAS DE LOS ARCHIVOS DE TEXTO
6.) PACKED
   B) PUEDE PROCEDER A ARRAY RECORD FILE ...
7)READSTR
   A) LEE DATOS DE UNA CADENA
8)RESET(f)
  B)PONE EL FICHERO EN MODO LECTURA
9)SI SE PASA UNA VARIABLE POR REFERENCIA A UN PROCEDIMIENTO Y SE MODIFICA DENTRO DEL MISMO(o algo del palo)
  C) NO VARIA SI VA COMO PROTECTED
Bluff, bluff, bluff, bluff the Stupid Ogre!

(8)Me como la ternera sobre un bol de arroz...(8)
Avatar de Usuario
Undomirie
Radament
Wish i were Stewie
 
Mensajes: 247
Registrado: Jue, 01 Oct 2009 22:37
Ubicación: Mi caaaaasa

Re: EXAMEN FEBRERO TEST

Notapor TaeL » Vie, 12 Feb 2010 17:11

ya que hablais del examen, vaya picada el ejercicio de desarrollar.

las 1500 cifras esas de mierda no cojen ni un int ni en un long que yo sepa...

Lo he solucionado metiendo cada número en arrays de 1501 y sumándolos.

¿Como lo habeis hecho vosotros?
TaeL
Cuervo Sangriento
 
Mensajes: 83
Registrado: Mié, 11 Nov 2009 21:22

Re: EXAMEN FEBRERO TEST

Notapor Fer » Vie, 12 Feb 2010 17:13

¿Por qué escribís todo con mayúsculas? ¿Estaba el examen así también?
Campaña de donación de apuntes:

¡Súbelos a la sección de apuntes o deja los tuyos en el local de alumnos!
Avatar de Usuario
Fer
QG Admin
Corresponsal de guerra
 
Mensajes: 26112
Registrado: Vie, 22 Sep 2006 14:18
Ubicación: A Coruña

Re: EXAMEN FEBRERO TEST

Notapor erKURITA » Vie, 12 Feb 2010 17:38

TaeL escribió:ya que hablais del examen, vaya picada el ejercicio de desarrollar.

las 1500 cifras esas de mierda no cojen ni un int ni en un long que yo sepa...

Lo he solucionado metiendo cada número en arrays de 1501 y sumándolos.

¿Como lo habeis hecho vosotros?


Podeis escribir el enunciado?
Avatar de Usuario
erKURITA
Colenzo el Aniquilador
erKARAJO
 
Mensajes: 2446
Registrado: Sab, 13 Sep 2008 10:43

Re: EXAMEN FEBRERO TEST

Notapor TaeL » Vie, 12 Feb 2010 18:09

si hombre faltaría más.
El enunciado del ejercicio es:

Escribir una función que se le pasen dos números de 1500 cifras cada uno y que devuelva la suma.

Ala, ahí qeuda eso...
TaeL
Cuervo Sangriento
 
Mensajes: 83
Registrado: Mié, 11 Nov 2009 21:22

Re: EXAMEN FEBRERO TEST

Notapor Fer » Vie, 12 Feb 2010 18:22

En pseudocódigo chungo sería algo así, creo:

Código: Seleccionar todo
n = 1500
numero1 : array [0..n-1]
numero2 : array [0..n-1]
resultado : array [0..n-1]


desde i=0 a (n-1) hacer {
  resultado[i] = numero1[i] + numero2[i]
  si mellevouna entonces resultado[i]++
  mellevouna = false
  si (resultado[i] <= numero1[i]) OR (resultado[i] <= numero2[i])
  // es que hay que sumarle uno al siguiente... o eso creo, si lo pensé bien xD
  mellevouna = true
  i++ (o si no está en el FOR, ya)
}

// tras acabar el bucle comprobar si hay desbordamiento si las dos últimas cifras (las dos primeras, de hecho, con más valor), desbordan. Se podría solucionar poniendo el array resultado con una posición más y listo.



Igual me cuelo en algo, pero creo que la idea es eso.
Campaña de donación de apuntes:

¡Súbelos a la sección de apuntes o deja los tuyos en el local de alumnos!
Avatar de Usuario
Fer
QG Admin
Corresponsal de guerra
 
Mensajes: 26112
Registrado: Vie, 22 Sep 2006 14:18
Ubicación: A Coruña

Re: EXAMEN FEBRERO TEST

Notapor markitos90_ordes » Vie, 12 Feb 2010 19:16

halt puede tener argumentos?? en el libro de cabecera pone k no!!! ademas k le vas a pasar si halt detiene el programa en el punto en donde se encuentra!!!
markitos90_ordes
Bishibosh
 
Mensajes: 25
Registrado: Mié, 16 Sep 2009 15:14

Re: EXAMEN FEBRERO TEST

Notapor erKURITA » Vie, 12 Feb 2010 19:45

FeR escribió:En pseudocódigo chungo sería algo así, creo:

Código: Seleccionar todo
n = 1500
numero1 : array [0..n-1]
numero2 : array [0..n-1]
resultado : array [0..n-1]


desde i=0 a (n-1) hacer {
  resultado[i] = numero1[i] + numero2[i]
  si mellevouna entonces resultado[i]++
  mellevouna = false
  si (resultado[i] <= numero1[i]) OR (resultado[i] <= numero2[i])
  // es que hay que sumarle uno al siguiente... o eso creo, si lo pensé bien xD
  mellevouna = true
  i++ (o si no está en el FOR, ya)
}

// tras acabar el bucle comprobar si hay desbordamiento si las dos últimas cifras (las dos primeras, de hecho, con más valor), desbordan. Se podría solucionar poniendo el array resultado con una posición más y listo.



Igual me cuelo en algo, pero creo que la idea es eso.


Pues que la suma se hace de derecha a izquierda, y no de izquierda a derecha.

Esta solucion en Python funciona:

Código: Seleccionar todo
#!/usr/bin/env python

#numero1 = '24948235'
#numero2 = '49273582'

numero1 = '125747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574722574725747257472574725747257472574725747257472574725747257472574725612351267884725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257442321525747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574752354574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472575'

numero2= '921378958921389907516239062815089126901256213709127509123907893257893426573485673276489126401927487124098659781267367216787126743821689612784682936578126578962135217865377257472574725747257472574725747257472574725747257472574724896128654721638907217586219372532894691876598761298368912560912738961279521783657216578621837128945872162574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747258624386213767567182638962178389561285328682170981289376127469201361298549812637821537892167342174725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257442321525747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725744982163821847218367216472309879865482188213978679821639812097312980126549926389216948672130595902743215398216325674725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574752354574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472574725747257472575'

resultado = ''
nums = range(len(numero1))
nums.reverse()
carry = 0
for i in nums:
   temp = str(int(numero1[i])+int(numero2[i])+carry)
   if (len(temp) == 2):
      carry = 1
   else:
      carry = 0
   resultado = str(temp[0+carry])+resultado

if carry:
   resultado = '1'+resultado


El ejercicio es simple: empiezas el indice desde la ultima celda, y vas sumando numero a numero + acarreo. Si el resultado da una cadena de longitud dos, teneis hasta un maximo de 19 (9+9 = 18 + 1 (carry, si lo hubiese) = 19), por lo que el carry siempre valdra 1 o 0. Esto lo podeis usar para seleccionar el caracter que quereis guardar (la posicion 1 que seria el 9 de '19' o el 1 de '1') y se lo añadis a la cadena por el principio

Podeis guardarlo en un fichero .py y ejecutarlo con python <nombre fichero>.py

EDIT: Se me olvido el carry al final :oops:
Avatar de Usuario
erKURITA
Colenzo el Aniquilador
erKARAJO
 
Mensajes: 2446
Registrado: Sab, 13 Sep 2008 10:43

Re: EXAMEN FEBRERO TEST

Notapor Sydanta » Vie, 12 Feb 2010 20:08

erKurita escribió:Pues que la suma se hace de derecha a izquierda, y no de izquierda a derecha.

Si no te dicen más en el enunciado hazlo como veas, como si te apetece hacerlo en base 13.
Imagen
Avatar de Usuario
Sydanta
QG Admin
Corresponsal en Noruega
 
Mensajes: 3361
Registrado: Mié, 20 Sep 2006 10:26
Ubicación: Bergen

Re: EXAMEN FEBRERO TEST

Notapor Fer » Vie, 12 Feb 2010 20:40

En_Manta escribió:
erKurita escribió:Pues que la suma se hace de derecha a izquierda, y no de izquierda a derecha.

Si no te dicen más en el enunciado hazlo como veas, como si te apetece hacerlo en base 13.


Nah, pero en este caso tiene razón, que lo hice mal mentalmente. Es cosa de cambiar los índices o bien el bucle.
Campaña de donación de apuntes:

¡Súbelos a la sección de apuntes o deja los tuyos en el local de alumnos!
Avatar de Usuario
Fer
QG Admin
Corresponsal de guerra
 
Mensajes: 26112
Registrado: Vie, 22 Sep 2006 14:18
Ubicación: A Coruña

Re: EXAMEN FEBRERO TEST

Notapor Dookie » Vie, 12 Feb 2010 21:11

Código: Seleccionar todo
type
tsumando = array [1..1500] of integer;
tsolucion = array[0..1500] of integer;
function sumaNatural(var natural1:tsumando;var natural2:tsumando):tsolucion;
var
suma,acarreo,i:integer;
solucion:tsolucion;
begin
acarreo:=0;suma:=0;
 for i:=1500 downto 1do
  begin
    suma:=natural1[i]+natural2[i]+acarreo
    if (suma>9)then
       begin
         acarreo:=1;
         solucion[i]:=suma mod 10;
        end
     else
       begin
         acarreo:=0;
         solucion[i]:=suma;
        end;
  end;
  solucion[0]:=acarreo;
  sumaNatural:solucion;
end;



Yo hice esta solución, la probe en el compilador y me fue.
Última edición por Dookie el Vie, 12 Feb 2010 21:44, editado 1 vez en total
Dookie
Cuervo Frío
 
Mensajes: 115
Registrado: Sab, 08 Nov 2008 21:14

Re: EXAMEN FEBRERO TEST

Notapor markitos90 » Vie, 12 Feb 2010 21:27

ola informaticos! jeje
halt puede tener argumentos??
en el libro de cabecera del pascal estandar estendido iso 10206 pone k no pero aun asi ai gente que lo discute!!!
ademas k le vas a pasar si halt detiene el programa en el punto en donde se encuentra!!!
markitos90
Bishibosh
 
Mensajes: 43
Registrado: Mié, 03 Jun 2009 17:52

Re: EXAMEN FEBRERO TEST

Notapor Dookie » Vie, 12 Feb 2010 21:37

Halt

Synopsis

Halt;

or

Halt (ExitCode: Integer);


Description

Halt terminates the program with exitcode 0. If ExitCode, is specified, it is returned by Halt on exit.
Conforming to

Halt is an Extended Pascal and a UCSD Pascal extension.
Example

program HaltDemo;
begin
WriteLn ('This string will always be this program''s output.');
Halt; { Terminate right here and right now. }
WriteLn ('And this string won''t ever!')
end.

See also


Esto lo saque del libro en ingles que hay en la pagina de ruiperez.
Esta pregunta la dijo Esteban en clase .No viene en las hojas de ficheros que dio el?

Yo tengo dudas en la de nil. Es un tanto tocapelotas.
Dookie
Cuervo Frío
 
Mensajes: 115
Registrado: Sab, 08 Nov 2008 21:14

Re: EXAMEN FEBRERO TEST

Notapor erKURITA » Vie, 12 Feb 2010 21:47

En_Manta escribió:
erKurita escribió:Pues que la suma se hace de derecha a izquierda, y no de izquierda a derecha.

Si no te dicen más en el enunciado hazlo como veas, como si te apetece hacerlo en base 13.


Claro, pero si te dan los numeros en orden natural, no vas a ir sumandolos como te de la gana, sino como se deben sumar. El estaba sumando desde el primer indice (es decir, la posicion mas a la izquierda) hasta el ultimo. A menos claro, que quieras revertir todo el array de 1500 caracteres, cuando te basta con cambiar el bucle para empezar desde el ultimo al primero.
Avatar de Usuario
erKURITA
Colenzo el Aniquilador
erKARAJO
 
Mensajes: 2446
Registrado: Sab, 13 Sep 2008 10:43

Siguiente

Volver a 1º [EI/ETIS/ETIX] Programación (Pro)

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados