Mostrando resultados del 1 al 7 de 7

Tema: la variable usada en el for pierde su valor[RESUELTO]

  1. #1
    Miembro estable
    Fecha de Ingreso
    Apr 2008
    Ubicación
    Selva
    Mensajes
    16

    Question la variable usada en el for pierde su valor[RESUELTO]

    Hola, bueno este es mi primer post y desearia me aclaren un par de dudas.
    Primer:
    e tenido por costumbre porgrmas un for de la siguiente manera.
    for(i=1;i<=n;i++)
    {

    resto de codiog
    }
    do
    {
    resto de codigo
    } while (i>=1)

    bien me han dicho que cuando termina el for la i que uso dentro de el pierde su valor, eso quiero decir que no podre usarlo en el do .. while?
    por que lo que hago es cojer el ultimo valor de i que al terminar el foro seria con el valor de n

    2.- Esta duda es en cuando a recursividad.
    se me pide que haga un programa recursivo de x elevado a la n

    en seudocodigo lo hago asi

    inicio
    leer x
    repetir
    {
    leer n
    }
    hasta que x>=0

    b=n+1
    a=0
    llamar pot(la verda estoy acostumbrado a ahcer diagramas de flujo que no recuerdo como se hace llamar
    a sub programa)

    mostrar p

    fin

    sub programa pot(b,a,n,x) //recive los valore de b,a,x
    inicio
    repetir
    {
    a=a+1
    p=x+pot(b-1) //aca quiero hacerlo recursivo
    }
    hasta que (a=n)

    devolver p

    fin

    quisiera que me ayuden diciendome cual es mi falla y cosas que debo saber.. porfa
    ----...:::No se extrañen si despues los supero:::...-----

  2. #2
    (a + b)² =a² + b² (mód 2) Avatar de Marco
    Fecha de Ingreso
    Sep 2007
    Ubicación
    Estenopeico
    Mensajes
    1,462
    Entradas del Blog
    9

    Predeterminado

    Para empezar el pseudocódigo lo estás haciendo mal..

    Código:
    inicio
    leer x
    repetir
    {
    leer n 
    }
    hasta que x>=0
    Estas leyendo N hasta que X >= 0, por lo cual, si vos de una metes x = -1 te tira un lindo bucle infinito..

    Por otro lado, no tiene sentido la funcion POT ya que cuando la llamas en la recursiva la llamas sin pasarle los argumentos que pide..

    No se si hacer X ^ N te lo piden como las sumas recursivas (sería más quilombado) pero lo hice de esta forma y decime que te parece

    Código:
    long pot(float num, int exp)
    {
        if (exp == 0)
        {
           return 1;        
        }
        return num * pot(num, exp - 1);    
    }
    Entonces, vos lees el primer numero, X si queres llamalo
    Lees el segundo numero, hasta que ese numero sea mayor o igual que 0

    y después mostrás el resultado de la funcion Pot..


    Después, sobre tu primer duda.. Si la variable la declaras fuera del for, vas a poder usarla tranquilamente fuera de este, con el ultimo valor que le seteó el for (si no le seteaste ninguno antes :P) asi que 0 drama con eso..
    Última edición por Marco fecha: 21-11-2008 a las 09:33 AM

    Suscribite a los Feeds de SummArg
    - El dolor es temporal. Rendirse dura para siempre.
    Lance Armstrong.

  3. #3
    Miembro estable
    Fecha de Ingreso
    Apr 2008
    Ubicación
    Selva
    Mensajes
    16

    Predeterminado

    loque pasa, esque no entro en cuanto a programacion aun es algoritmo puro.. pero estoy tratando de comprender un poco esto gracias... a por cierto no entendi mucho el codigo en recursivo qe me dites,, si me ayudas a paralo en algoritmo puro sin usar ningun lenguaje de programacion.
    ----...:::No se extrañen si despues los supero:::...-----

  4. #4
    (a + b)² =a² + b² (mód 2) Avatar de Marco
    Fecha de Ingreso
    Sep 2007
    Ubicación
    Estenopeico
    Mensajes
    1,462
    Entradas del Blog
    9

    Predeterminado

    Sería algo asi, según tu forma de "pseudocodigo"

    Código:
    inicio
         leer numero
         repetir
              leer exponente
         hasta que exponente >= 0
         
         mostrar potencia ( numero , exponente )
    fin
    
    funcion potencia ( numero, exponente)
    inicio
         Si exponente = 0 entonces retornar 1
         retornar numero * potencia ( numero, exponente - 1 )          
    fin
    Lo que hace la funcion potencia, en resumidas palabras ¿? es:
    multiplicar al numero por si mismo N veces, donde N = exponente y multiplicarlo por 1 al final ¿?

    Por ejemplo, si queremos mostrar potencia ( 2, 3 ) que seria 2 al cubo, seria algo asi

    2 * potencia ( 2 , 2 )

    que sería
    2 * (2 * potencia ( 2, 1 ))

    que sería

    2 * (2 * ( 2 * potencia (2, 0)))

    que sería

    2 * 2 * 2 * 1


    Debe haber mil formas mejores de hacerlo, pero esa es una :$
    Última edición por Marco fecha: 22-11-2008 a las 01:33 AM

    Suscribite a los Feeds de SummArg
    - El dolor es temporal. Rendirse dura para siempre.
    Lance Armstrong.

  5. #5
    Miembro estable
    Fecha de Ingreso
    Apr 2008
    Ubicación
    Selva
    Mensajes
    16

    Predeterminado

    muchas gracias amigo. entendi.
    ----...:::No se extrañen si despues los supero:::...-----

  6. #6
    (a + b)² =a² + b² (mód 2) Avatar de Marco
    Fecha de Ingreso
    Sep 2007
    Ubicación
    Estenopeico
    Mensajes
    1,462
    Entradas del Blog
    9

    Predeterminado

    No hay problema, cuando tengas alguna otra duda, no dudes en consultar ;D

    Suscribite a los Feeds de SummArg
    - El dolor es temporal. Rendirse dura para siempre.
    Lance Armstrong.

  7. #7
    EXPULSADO
    Fecha de Ingreso
    Dec 2007
    Ubicación
    Caracas
    Mensajes
    1,096

    Predeterminado

    Juaz eso es C? que locura :S me da miedo llegar a eso xD adoro el pascal por ahora (porque es lo que conozco).

Tags for this Thread

Normas de Publicación

  • Vos no podés postear nuevos mensajes
  • Vos no podés responder mensajes
  • Vos no podés agregar adjuntos
  • Vos no podés editar tus mensajes
  •  
El Foro Latino | vBsoporte