Problema con contador en C

Iniciado por -/lnkx/-, 2 Agosto 2009, 11:27 AM

0 Miembros y 1 Visitante están viendo este tema.

-/lnkx/-

Hola. estoy empezando en C y estaba intentando hacer un contador pero no consigo que funcione aquí dejo el código:

#include <stdio.h>
void contador(void);
int main(void)
{
    int valor,num;
    num=1;
    valor=0;
    contador();
}
void contador(void)
{
    valor=valor+num;
    printf("%d",valor);
    contador();
}


De echo creo que lo que pasa es que las variables solo funcionan con al función que las declara.Pero no se como hacer que funcione  :huh:

fuenteRea

#1
estas haciendo una llamada recursiva final en la funcion contador, las llamadas recursivas necesitan una condicion de final que tu funcion carece de ella. Te pongo un ejemplo (en c++)

//num=3
procedimiento vueltas (int &num){
    si(num!=0){
         num--;
         vueltas(num);
     finsi
fin


cuando num=0, deja de hacer llamadas recursivas

         

EDITO: Ademas las variables que llamas valor y numero le tienen que entrar a esa funcion por parametros, uno de entrada y otro de entrada/salida

void contador(int &valor, int num)

un saludo!!

PD: Di que hace contador porque es que no se ve, se llama contador pero no hace esa funcion sino otra que tampoco se cual es, explicala
Una rosa es una rosa...

-/lnkx/-

Cita de: thedoctor77 en  2 Agosto 2009, 12:40 PM
estas haciendo una llamada recursiva final en la funcion contador, las llamadas recursivas necesitan una condicion de final que tu funcion carece de ella. Te pongo un ejemplo (en c++)

//num=3
procedimiento vueltas (int &num){
    si(num!=0){
         num--;
         vueltas(num);
     finsi
fin


cuando num=0, deja de hacer llamadas recursivas

         

EDITO: Ademas las variables que llamas valor y numero le tienen que entrar a esa funcion por parametros, uno de entrada y otro de entrada/salida

un saludo!!

No acabo de entenderlo porque esta en c++ pero investigare lo de la llamada recursiva  :-\ pero al lo mejor tendría que usar for ? si alguien mas me pone un ejemplo en C

fuenteRea

perdon, no esta en c++, lo iba a poner pero decidi dartelo en pseudocodigo y aun asi no entiendes... en fin, ¿Que hace la funcion contador?. un saludo!!
Una rosa es una rosa...

-/lnkx/-

Cita de: thedoctor77 en  2 Agosto 2009, 12:54 PM
perdon, no esta en c++, lo iba a poner pero decidi dartelo en pseudocodigo y aun asi no entiendes... en fin, ¿Que hace la funcion contador?. un saludo!!

he empezado hoy... estaba haciendo una pruebas y no me salia :S

fuenteRea

pero cual es la funcion de ese metodo!!
Una rosa es una rosa...

-/lnkx/-

Cita de: thedoctor77 en  2 Agosto 2009, 13:06 PM
pero cual es la funcion de ese metodo!!

la función ninguna en concreto solo era para ver si lo podia hacer, luego lo puedo utilizar para crear diccionarios numericos por ejemplo pero de momento es para probar

fuenteRea

lo normal entonces seria que la quitaras, pero si la quieres dejar,

la cabecera tiene que ser

void contador(int &valor, int num)

y esto debe ser eliminado de dentro de este procedimiento
     contador();

un saludo!!
Una rosa es una rosa...

-/lnkx/-

Cita de: thedoctor77 en  2 Agosto 2009, 13:19 PM
lo normal entonces seria que la quitaras, pero si la quieres dejar,

la cabecera tiene que ser

void contador(int &valor, int num)

y esto debe ser eliminado de dentro de este procedimiento
     contador();

un saludo!!

Como dejándolo así :

#include <stdio.h>
void contador(int &valor, int num)
int main(void)
{
     int valor,num;
     num=1;
     valor=0;
     
}
void contador(void)
{
     valor=valor+num;
     printf("%d",valor);
     contador();
}



fuenteRea

no, creo que deberias leerte algun libro o algo primero. Seria esto:


#include <stdio.h>

int main(void){
    int valor=0;
    int num=1;
    contador(valor, num);
}
void contador(int &valor, int num){
    valor=valor+num;
    printf("%d",valor);
}
Una rosa es una rosa...