elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES  (Leído 4,450 veces)
smdiegoarmando

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« en: 27 Enero 2013, 17:04 pm »

La verdad hice el esfuerzo de terminar el programa, pase toda la noche intentando que corra y no lo logre lo ideas seria que cada opcion llevara funciones pero se me hizo dificil Uso Dev-C ... AYUDAAAA

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
int cubo ( int n ) {
      return n*n*n;
}
int multiplo ( int x, int y) {
    return x%y;
}
int main(){
int i, temp,n1,n2;
int _cont;
int opc,numero,resultado;
srand(time(NULL));
for(i=0 ; i<5 ; i++){

printf(" \n Menu  ");
printf(" \n 1...Generar y mostrar  5 números aleatorios del 1 al 10  ");
printf(" \n 2...Cubo de un número entero  ");
printf(" \n 3...Determinar si un numero es múltiplo de otro  ");
printf(" \n 4...Mostrar los números pares entre 1 y 40  ");
printf(" \n 5...Salir  ");
printf(" \n ESCOJA UNA OPCION  ");
scanf("%d",opc);
switch (opc)

{
case 1: puts("Generar y mostrar  5 números aleatorios del 1 al 10");
        printf("Numero aleatorio %d es : %d\n",i+1, rand()%10 );
        getch();
        main();
        break;
case 2: puts("Cubo de un número entero");
        printf(" \n Ingrese un numero");
        scanf("%d",&numero);
        resultado = cubo(numero);
        printf("El cuadrado del numero es %d", resultado);
        getch();
        main();
        break;
case 3: puts("Determinar si un numero es múltiplo de otro");
        printf(" \n Ingrese un numero");
        scanf("%d",&n1);
        printf(" \n Ingrese otro numero");
        scanf("%d",&n2);
        resultado=multiplo(n1,n2);
        if (n1%n2==0)
        {
        printf(" \n Los numeros son multiplos entre si"); }
        else
        {
        printf(" \n Los numeros no son multiplos entre si"); }
        getch();
        main();
        break;  
case 4: puts("Mostrar los números pares entre 1  y 40");
         while(_cont<=40){
         if(_cont%2==0){
         printf("%d, ",_cont);
         }
         _cont++;
     }
         getch();
         main();
         break;
case 5:puts("salir");
       printf("Fin del programa");
       getch();
       break;
       default: printf(" opcion invalalida");
       }
       getch();        
                        }            
system("pause");
}


« Última modificación: 27 Enero 2013, 17:07 pm por smdiegoarmando » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #1 en: 27 Enero 2013, 17:23 pm »

Código
  1. case 1: puts("Generar y mostrar  5 números aleatorios del 1 al 10");
  2.        printf("Numero aleatorio %d es : %d\n",i+1, rand()%10 );
  3.        getch();
  4.        main();
  5.        break;
WTF? ¿Porque haces una llamada al main?.

Eso es super inestable, cada vez que llames a una función se iran creando llamadas proguesivamente gastando memoria y tiempo de ejecución.... Cuando te quedes sin pila el programa te crasheara estrepidosamente. Si lo que quieres esque el programa se repita continuamente ponlo dentro de un while:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<conio.h>
  5.  
  6. int cubo ( int n )
  7. {
  8.    return n*n*n;
  9. }
  10. int multiplo ( int x, int y)
  11. {
  12.    return x%y;
  13. }
  14.  
  15. int main()
  16. {
  17.    int i, temp,n1,n2;
  18.    int _cont;
  19.    int opc,numero,resultado;
  20.    srand(time(NULL));
  21.  
  22.    while (true)
  23.    {
  24.  
  25.        printf(" \n Menu  ");
  26.        printf(" \n 1...Generar y mostrar  5 números aleatorios del 1 al 10  ");
  27.        printf(" \n 2...Cubo de un número entero  ");
  28.        printf(" \n 3...Determinar si un numero es múltiplo de otro  ");
  29.        printf(" \n 4...Mostrar los números pares entre 1 y 40  ");
  30.        printf(" \n 5...Salir  ");
  31.        printf(" \n ESCOJA UNA OPCION  ");
  32.        scanf("%d",opc);
  33.  
  34.        switch (opc)
  35.        {
  36.  
  37.        case 1:
  38.            puts("Generar y mostrar  5 números aleatorios del 1 al 10");
  39.            printf("Numero aleatorio %d es : %d\n",i+1, rand()%10 );
  40.            getch();
  41.  
  42.            break;
  43.        case 2:
  44.            puts("Cubo de un número entero");
  45.            printf(" \n Ingrese un numero");
  46.            scanf("%d",&numero);
  47.            resultado = cubo(numero);
  48.            printf("El cuadrado del numero es %d", resultado);
  49.            getch();
  50.  
  51.            break;
  52.        case 3:
  53.            puts("Determinar si un numero es múltiplo de otro");
  54.            printf(" \n Ingrese un numero");
  55.            scanf("%d",&n1);
  56.            printf(" \n Ingrese otro numero");
  57.            scanf("%d",&n2);
  58.            resultado=multiplo(n1,n2);
  59.            if (n1%n2==0)
  60.            {
  61.                printf(" \n Los numeros son multiplos entre si");
  62.            }
  63.            else
  64.            {
  65.                printf(" \n Los numeros no son multiplos entre si");
  66.            }
  67.            getch();
  68.  
  69.            break;
  70.        case 4:
  71.            puts("Mostrar los números pares entre 1  y 40");
  72.            while(_cont<=40)
  73.            {
  74.                if(_cont%2==0)
  75.                {
  76.                    printf("%d, ",_cont);
  77.                }
  78.                _cont++;
  79.            }
  80.            getch();
  81.  
  82.            break;
  83.        case 5:
  84.            puts("salir");
  85.            printf("Fin del programa");
  86.            getch();
  87.            break;
  88.        default:
  89.            printf(" opcion invalalida");
  90.        }
  91.        getch();
  92.        system("CLS"); // Comando para borrar la pantalla
  93.    }
  94.    system("pause");
  95. }

También te he quitado el for del principio porque no servía para nada...


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #2 en: 27 Enero 2013, 17:29 pm »

A parte de lo dicho por amchacon  te lo he puesto en funciones, pero trabaja un poco más porque es que el código es sucio.Y no te digo nada de la portabilidad...Además te faltaba un ampersand al introducir la opción en ese scanf. En fín:
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<conio.h>//Esto sería bueno quitarlo pero bueno
  5. //PROTOTIPOS DE FUNCIONES
  6. int multiplo ( int x, int y);
  7. void aleatorio();
  8. void cubo();
  9. void esMultiplo();
  10. void pares();
  11. void salir();
  12.  
  13. int main()
  14. {
  15.    int opc;
  16.    do
  17.    {
  18.        printf(" \n Menu  ");
  19.        printf(" \n 1...Generar y mostrar  5 números aleatorios del 1 al 10  ");
  20.        printf(" \n 2...Cubo de un número entero  ");
  21.        printf(" \n 3...Determinar si un numero es múltiplo de otro  ");
  22.        printf(" \n 4...Mostrar los números pares entre 1 y 40  ");
  23.        printf(" \n 5...Salir  ");
  24.        printf(" \n ESCOJA UNA OPCION  ");
  25.        scanf("%d",&opc);
  26.        switch (opc)
  27.        {
  28.        case 1:
  29.            aleatorio();
  30.            break;
  31.        case 2:
  32.            cubo();
  33.            break;
  34.        case 3:
  35.            esMultiplo();
  36.            break;
  37.        case 4:
  38.            pares();
  39.            break;
  40.        case 5:
  41.  
  42.            break;
  43.        default:
  44.            printf("Opcion invalida");
  45.        }
  46.        if(opc!=5)
  47.        {
  48.            printf("Presione una tecla para volver al menu principal . . . ");
  49.            getch();
  50.            system("cls");
  51.        }
  52.    }
  53.    while(opc!=5);
  54.    puts("Salir");
  55.    printf("Fin del programa");
  56.    getch();
  57.    return 0;
  58. }
  59. //DEFINICIÓN DE FUNCIONES
  60. int multiplo(int x,int y)
  61. {
  62.    return x%y;
  63. }
  64. void aleatorio()
  65. {
  66.    puts("Generar y mostrar  5 números aleatorios del 1 al 10");
  67.    srand(time(0));
  68.    int i;
  69.    for(i=0; i!=5; ++i)
  70.    {
  71.        printf("Numero aleatorio %d es : %d\n",i+1, rand()%10 );
  72.    }
  73. }
  74. void cubo()
  75. {
  76.    int numero=0;
  77.    int resultado=0;
  78.    puts("Cubo de un número entero");
  79.    printf(" \n Ingrese un numero");
  80.    scanf("%d",&numero);
  81.    resultado = numero*numero*numero;
  82.    printf("El cuadrado del numero es %d", resultado);
  83. }
  84. void esMultiplo()
  85. {
  86.    int n1,n2,resultado;
  87.    puts("Determinar si un numero es múltiplo de otro");
  88.    printf(" \n Ingrese un numero");
  89.    scanf("%d",&n1);
  90.    printf(" \n Ingrese otro numero");
  91.    scanf("%d",&n2);
  92.    resultado=multiplo(n1,n2);
  93.    if (n1%n2==0)
  94.    {
  95.        printf(" \n Los numeros son multiplos entre si");
  96.    }
  97.    else
  98.    {
  99.        printf(" \n Los numeros no son multiplos entre si");
  100.    }
  101. }
  102. void pares()
  103. {
  104.    int _cont;
  105.    puts("Mostrar los números pares entre 1  y 40");
  106.    while(_cont<=40)
  107.    {
  108.        if(_cont%2==0)
  109.        {
  110.            printf("%d, ",_cont);
  111.        }
  112.        _cont++;
  113.    }
  114. }
« Última modificación: 27 Enero 2013, 17:34 pm por avesudra » En línea

Regístrate en
smdiegoarmando

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #3 en: 27 Enero 2013, 17:38 pm »

Ciertamente no entiendo porque el programa corre pero al ingresar una de las opciones del 1 al 5 se cierra automaticamente muestra -> NombreDelPrograma.exe dejo de funcionar.

Sera que tego problema con el Dev-C ?
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #4 en: 27 Enero 2013, 17:41 pm »

Pero cual de los códigos, ¿el que tu has puesto, el que ha puesto amchacon o el que he puesto yo? El que tu y amchacon habeis puesto debería dar error en ejecución como dices por esta sentencia, donde falta un ampersand:
Código
  1. scanf("%d",opc);
Debería estar así:
Código
  1. scanf("%d",&opc);
« Última modificación: 27 Enero 2013, 17:44 pm por avesudra » En línea

Regístrate en
smdiegoarmando

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #5 en: 27 Enero 2013, 17:44 pm »

Pero cual de los códigos, ¿el que tu has puesto, el que ha puesto amchacon o el que he puesto yo?

Avesudra utilice tu codigo
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #6 en: 27 Enero 2013, 17:49 pm »

Pues es por el Dev-Cpp sin duda. Porque en Codeblocks con la ultima versión de MinGW funciona a la perfección.Puedes descargarlo e instalarlo desde aquí:
http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup_user.exe/download?_test=updater&utm_expid=65835818-0&utm_referrer=http%3A%2F%2Fwww.codeblocks.org%2Fdownloads%2F26
En línea

Regístrate en
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #7 en: 27 Enero 2013, 19:20 pm »

Pues es por el Dev-Cpp sin duda. Porque en Codeblocks con la ultima versión de MinGW funciona a la perfección.Puedes descargarlo e instalarlo desde aquí:
http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup_user.exe/download?_test=updater&utm_expid=65835818-0&utm_referrer=http%3A%2F%2Fwww.codeblocks.org%2Fdownloads%2F26

Si señor, poco más puedo agregar a los gurus de aqui, dev-c++ apesta a millones, CodeBlocks con MinGW es mucho pero millones años luz mejor.
En línea


smdiegoarmando

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #8 en: 27 Enero 2013, 19:37 pm »

Pues es por el Dev-Cpp sin duda. Porque en Codeblocks con la ultima versión de MinGW funciona a la perfección.Puedes descargarlo e instalarlo desde aquí:
http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup_user.exe/download?_test=updater&utm_expid=65835818-0&utm_referrer=http%3A%2F%2Fwww.codeblocks.org%2Fdownloads%2F26

Ya instale el Codeblocks y me va de maravilla el programa es genial y todo gracias a ti aunque por una extraña forma la opcion 4...Mostrar los números pares entre 1 y 40  " no me muestra los numeros :/
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES
« Respuesta #9 en: 27 Enero 2013, 19:44 pm »

No es extraño es un fallo de programación, ha sido error mío al declarar la variable, perdón jeje  :silbar:. Para arreglarlo, en la función:
Código
  1. void pares()
  2. {
  3.    int _cont;
  4.    puts("Mostrar los números pares entre 1  y 40");
  5.    while(_cont<=40)
  6.    {
  7.        if(_cont%2==0)
  8.        {
  9.            printf("%d, ",_cont);
  10.        }
  11.        _cont++;
  12.    }
  13. }
Debes inicializar _cont en 0 pues sino se inicializa con un valor aleatorio.Quedando así:
Código
  1. void pares()
  2. {
  3.    int _cont=0;
  4.    puts("Mostrar los números pares entre 1  y 40");
  5.    while(_cont<=40)
  6.    {
  7.        if(_cont%2==0)
  8.        {
  9.            printf("%d, ",_cont);
  10.        }
  11.        _cont++;
  12.    }
  13. }
En línea

Regístrate en
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
La Operacion en varios pasos genero errores... AYUDA AQUI"""""
Programación Visual Basic
JoseCheO 1 7,460 Último mensaje 23 Diciembre 2011, 16:57 pm
por JoseCheO
Ayuda con programacion en c! "Urgente porfavor"
Programación C/C++
Superr29 3 2,130 Último mensaje 6 Julio 2012, 21:55 pm
por 0xDani
Ayuda con el siguiente MENU "programacion en C"
Programación General
smdiegoarmando 1 1,956 Último mensaje 7 Febrero 2013, 16:30 pm
por [Case]
AYUDA POR FAVOR!! :( NUEVO EN PROGRAMACION
Programación C/C++
RamonVelz 1 1,655 Último mensaje 13 Mayo 2014, 05:48 am
por engel lex
Duda funciones programación en C
Ejercicios
LUCHADOR97 7 4,265 Último mensaje 16 Diciembre 2016, 01:44 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines