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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con Funciones en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Funciones en C  (Leído 2,976 veces)
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Problema con Funciones en C
« en: 16 Agosto 2011, 17:05 pm »

tengo esto hasta ahora, pero nose q es lo q estoy haciendo mal y no entiendo el error.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.    void Listado(char palabra[6], float n1,int n2);
  5.  
  6. int main()
  7.    {  
  8.        int n2,desc,subtotal;
  9.        float n1;
  10.        char prod3[6]="prod3";
  11.        char prod2[6]="prod2";
  12.        char prod1[6]="prod1";
  13.        char palabra[6];        
  14.        printf("Ingrese nombre del producto:");
  15.        fgets(palabra,6,stdin);
  16.        printf("Ingrese precio unitario:");
  17.        scanf("%f",&n1);
  18.        printf("Ingrese cantidad necesitada:");
  19.        scanf("%d",&n2);
  20.  
  21.        printf("| Producto: %s \t\n| Cantidad: %d \t\n| P.unitario: %0.2f \t\n| Descuento: \t\n| Subtotal: \t\n",palabra,n2,n1,Listado(desc,subtotal));
  22.  
  23.  
  24.            //return 0;
  25.    }
  26. //--------------Descuento PROD1--------------------//
  27. void Listado(char pala[6], float val1,int val2)
  28.    {  
  29.      int desc,subtotal;
  30.      char prod3[6]="prod3";
  31.        char prod2[6]="prod2";
  32.        char prod1[6]="prod1";
  33.  
  34.        if(strcmp(pala,prod1)==0)
  35.        {
  36.          desc=(val1*val2*10)/100;
  37.          subtotal=(val1*val2)-desc;
  38.        }
  39.        else if(strcmp(pala,prod2)==0)
  40.        {
  41.          desc=(val1*val2*10)/100;
  42.          subtotal=(val1*val2)-desc;
  43.        }
  44.        else(strcmp(pala,prod3)==0)
  45.        { subtotal=val1*val2;  }
  46.  
  47.        return desc,subtotal;
  48.  
  49.    }
  50.  

y lo q tengo q hacer es que el usuario ingrese un codigo (PROD1,PROD2 y PROD3) si ingresa PROD1 o PROD2 tiene sus respectivos descuentos y sin ingresa PROD3 no tiene descuentos y devuelve el resultado.


En línea

bigfu

Desconectado Desconectado

Mensajes: 49



Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #1 en: 16 Agosto 2011, 17:09 pm »

El problema es que void no devuelve ningun valor, tienes que sacarlo del printf.


En línea

A reader lives a thousand lives before he dies. The man who never reads lives only one
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #2 en: 16 Agosto 2011, 17:23 pm »

y como hago para q me aparezca el "desc" y el "subtotal" del void hay en el print donde falta.
En línea

bigfu

Desconectado Desconectado

Mensajes: 49



Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #3 en: 16 Agosto 2011, 18:01 pm »

y como hago para q me aparezca el "desc" y el "subtotal" del void hay en el print donde falta.

O declaras esas variables en el subalgoritmo y haces el cout interno al subalgoritmo o en el prototipo declaras los parámetros como entrada/salida.
En línea

A reader lives a thousand lives before he dies. The man who never reads lives only one
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #4 en: 16 Agosto 2011, 18:08 pm »

O declaras esas variables en el subalgoritmo y haces el cout interno al subalgoritmo o en el prototipo declaras los parámetros como entrada/salida.

no entendi mucho nose C++ jeje
q es cout en C scanf?
En línea

bigfu

Desconectado Desconectado

Mensajes: 49



Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #5 en: 16 Agosto 2011, 18:34 pm »

no entendi mucho nose C++ jeje
q es cout en C scanf?

Lo siento, me he liado xD cout es lo mismo que printf, pero viene incluida en una librería de C++.
He estado mirando un poco como hacerlo en C y no se pueden pasar valores por referencia. Asi que antes de liarte más, a ver si tienes suerte y te ayuda alguien que programa en C.

Suerte!
En línea

A reader lives a thousand lives before he dies. The man who never reads lives only one
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Problema con Funciones en C
« Respuesta #6 en: 16 Agosto 2011, 19:02 pm »

Sí el calculo del subtotal porque no lo haces al volver de la llamada a la función? Es decir, yo haría algo así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.    void Listado(char palabra[6], float n1,int n2);
  5.  
  6. int main()
  7.    {  
  8.        int n2,desc,subtotal;
  9.        float n1;
  10.        char prod3[6]="prod3";
  11.        char prod2[6]="prod2";
  12.        char prod1[6]="prod1";
  13.        char palabra[6];        
  14.        printf("Ingrese nombre del producto:");
  15.        fgets(palabra,6,stdin);
  16.        printf("Ingrese precio unitario:");
  17.        scanf("%f",&n1);
  18.        printf("Ingrese cantidad necesitada:");
  19.        scanf("%d",&n2);
  20.  
  21.        printf("| Producto: %s \t\n|, palabra);
  22.        printf("| Cantidad: %d \t\n|, n2);
  23.        printf("| P.unitario: %0.2f \t\n|, n2);
  24.        desc = Listado(prod1, n1, n2);
  25.        printf("| Descuento: %d\t\n|, desc);
  26.        printf("Subtotal: %d\t\n", (val1*val2)-desc);
  27.  
  28.  
  29.            //return 0;
  30.    }
  31. //--------------Descuento PROD1--------------------//
  32. int Listado(char pala[6], float val1,int val2)
  33.    {  
  34.      int desc,subtotal;
  35.      char prod3[6]="prod3";
  36.        char prod2[6]="prod2";
  37.        char prod1[6]="prod1";
  38.  
  39.        if(strcmp(pala,prod1)==0)
  40.        {
  41.          desc=(val1*val2*10)/100;
  42.          subtotal=(val1*val2)-desc;
  43.        }
  44.        else if(strcmp(pala,prod2)==0)
  45.        {
  46.          desc=(val1*val2*10)/100;
  47.          subtotal=(val1*val2)-desc;
  48.        }
  49.        else(strcmp(pala,prod3)==0)
  50.        { subtotal=val1*val2;  }
  51.  
  52.        return desc;
  53.  
  54. }
  55.  

Por ejemplo podrías hacerlo así, en C que yo sepa si se pueden pasar los parámetros por referencia, pero si es algo que todavía no has visto creo que sería mejor hacer algo así como lo que te he puesto.

Saludos.
En línea

;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #7 en: 16 Agosto 2011, 19:26 pm »

perfecto lo voy a probar gracias!!!
En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Problema con Funciones en C
« Respuesta #8 en: 17 Agosto 2011, 10:19 am »

Hola

en C que yo sepa si se pueden pasar los parámetros por referencia

En C no se pueden pasar parámetros por referencia como en C++ utilizando &, para hacerlo hay que pasar un puntero y modificar el valor al que apunta, pongo un ejemplo con este ejercicio

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. /*
  6.  * Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida
  7.  * Devuelve 1 si existe el producto, 0 en caso contrario
  8.  */
  9. int listado(char palabra[], float, int, float*, float*);
  10.  
  11. int main()
  12. {
  13.    int cant;
  14.    float precio, *desc, *subtotal;
  15.    char palabra[6];
  16.  
  17.    desc = (float*)malloc(sizeof(float));
  18.    subtotal = (float*)malloc(sizeof(float));
  19.  
  20.    printf("Ingrese nombre del producto:");
  21.    fgets(palabra, 6, stdin);
  22.    printf("Ingrese precio unitario:");
  23.    scanf("%f", &precio);
  24.    printf("Ingrese cantidad necesitada:");
  25.    scanf("%d", &cant);
  26.  
  27.    if(listado(palabra, precio, cant, desc, subtotal) == 1)
  28.        printf("| Producto: %s \t\n| Cantidad: %d \t\n| P.unitario: %0.2f \t\n| Descuento: %0.2f \t\n| Subtotal: %0.2f \t\n", palabra, cant, precio, *desc, *subtotal);
  29.    else
  30.        printf("ERROR");
  31.  
  32.    free(desc);
  33.    free(subtotal);
  34.  
  35.    return 0;
  36. }
  37.  
  38.  
  39. /*
  40.  * Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida
  41.  * Devuelve 1 si existe el producto, 0 en caso contrario
  42.  */
  43. int listado(char pala[6], float precio, int cant, float *desc, float *subtotal)
  44. {
  45.    if((strcmp(pala, "prod1")==0) || (strcmp(pala, "prod2")==0))
  46.        {
  47.        *desc = (precio*cant*10)/100;
  48.        *subtotal = ((precio*cant)-(*desc));
  49.        return 1;
  50.        }
  51.    else
  52.        if(strcmp(pala, "prod3")==0)
  53.            {
  54.            *desc = 0;
  55.            *subtotal = precio*cant;
  56.            return 1;
  57.            }
  58.        else
  59.            return 0;
  60.    }
  61.  

Saludos
En línea

Breakbeat como forma de vida
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con funciones (resuelto)
Programación C/C++
Gotttlieb 2 2,401 Último mensaje 10 Marzo 2011, 15:41 pm
por Gotttlieb
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,525 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
Problema con funciones
Programación C/C++
DickGumshoe 2 2,292 Último mensaje 22 Enero 2012, 11:48 am
por DickGumshoe
Ayuda!! Problema con las funciones.
Programación C/C++
elkiy 4 2,210 Último mensaje 15 Junio 2012, 21:38 pm
por elkiy
Problema con funciones scanf() y gets().
Programación C/C++
latinoalfredo 0 1,787 Último mensaje 22 Octubre 2012, 17:45 pm
por latinoalfredo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines