[ Foro de C ]

Duda con una de las preguntas del test

07-Mar-2006 00:23
Javier Hernández
7 Respuestas

Bueno en una de las preguntas e probado el codigo y me sale un resultado 2. Pero la respuesta segun el corrector es otra. que esta mal el corrector o el compilador (o yo, posibilidad a tener en cuenta :P)



int escribe(int x){

printf("%d",x);
}

int main(){

int x =2;
escribe(x);


07-Mar-2006 00:50
Nacho Cabanes (+84)

Da más detalles: fuente completo y respuesta supuestamente correcta ;-)

Yo veo por ejemplo este:

void escribe(int x) {
  printf("%d", x);
}

main() {
  printf("%d", escribe(2));
}

que no puede compilar, porque no puedes poner el "escribe" dentro de un "printf" porque no devuelve ningún valor.

--------

Otra pregunta parecida es

Este programa

int escribe(int x) {
  printf("%d", x);
}

int main() {
  int x =2;
  escribe(x);
}

Y la respuesta correcta es

"Compilará y funcionará, escribiendo un 2 en pantalla"

que es lo que tu dices que te sale (Claro!)

Más detalles, please...

N.



07-Mar-2006 02:12
Javier Hernández

el que yo digo es el segundo fuente que pones y la respuesta que e puesto es la misma pero los resultados del corrector en una primera intentona a sido otra (me a extrañao) i al volver a intentarlo ya a salido bien.

Todo solucionao :P



P.D.: podrias hacerte el loco y no poner recursividad de esa que es fea y askerosa  ;-)


07-Mar-2006 13:40
Cog Swapero

Y esto, no lo entiendo!!!!

Una función recursiva que calculara el producto de dos números enteros positivos, descomponiéndolo en varias sumas, podría ser

int producto (int a, int b) {
  if (b == 1) return a;
  else return XXXXXXXXXXXXXXX;
}

donde XXXXXXXXXXXXXXX sería (escribe tu respuesta sin ningún espacio en blanco)...

Respuesta: a+producto(a,b-1)

¿Por qué ese b-1?

Saludosss

07-Mar-2006 15:22
Nacho Cabanes (+84)

Se trata de simplificar cada vez más hasta llegar a un caso trivial ("caso base"):

3 * algo =

Caso trivial: 3 * 1 = 3

Si no es trivial y no puedes usar multiplicaciones, sino operaciones más sencillas:

3 * 5 = 3 + 3 + 3 + 3 + 3

(Sumas 3 cinco veces), mientras que

3 * 4 = 3 + 3 + 3 + 3

(sumas 3 cuatro veces) y así sucesivamente

En general

3 * n = 3 + 3 * (n-1)
^^^^^^
Siempre se trata de bajar de "n" a un caso más sencillo, hasta acercarte al caso trivial (1) -> generalmente se intentará pasar del valor para "n" al valor para "n-1".

Es algo así como si tú hicieras parte del trabajo y le pasaras la pelota al siguiente, que hace otra parte del trabajo, y le pasa la pelota al siguiente, y así hasta el último (el caso base).


N.



11-Mar-2006 11:41
Taisen Tetsu

Nacho corregiras los ejercicios del examen de funciones en la pizarra o los pondras en el servidor (si no estan ya :P)?? me quede con la duda de como se hacian
12-Mar-2006 19:22
Nacho Cabanes (+84)

Posiblemente los HAREMOS en la pizarra.

Iré dando pistas, pero creo que se aprende mucho más cuando uno pelea con las dificultades (aunque sea con algo de ayuda) que cuando se las resuelven por completo.

N.


17-Mar-2006 00:16
Javier Hernández

Cuando vas a poner el temario correspondiente a punteros? Y algun test de esos raros.






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