Autor
|
Tema: Problema con Funciones en C (Leído 3,394 veces)
|
;c1v!c
Desconectado
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
tengo esto hasta ahora, pero nose q es lo q estoy haciendo mal y no entiendo el error. #include <stdio.h> #include <stdlib.h> void Listado(char palabra[6], float n1,int n2); int main() { int n2,desc,subtotal; float n1; char prod3[6]="prod3"; char prod2[6]="prod2"; char prod1[6]="prod1"; char palabra[6]; printf("Ingrese nombre del producto:"); printf("Ingrese precio unitario:"); printf("Ingrese cantidad necesitada:"); 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 )); //return 0; } //--------------Descuento PROD1--------------------// void Listado(char pala[6], float val1,int val2) { int desc,subtotal; char prod3[6]="prod3"; char prod2[6]="prod2"; char prod1[6]="prod1"; { desc=(val1*val2*10)/100; subtotal=(val1*val2)-desc; } else if(strcmp(pala ,prod2 )==0) { desc=(val1*val2*10)/100; subtotal=(val1*val2)-desc; } { subtotal=val1*val2; } return desc,subtotal; }
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
|
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
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
y como hago para q me aparezca el "desc" y el "subtotal" del void hay en el print donde falta.
|
|
|
En línea
|
|
|
|
bigfu
|
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
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
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
|
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
Mensajes: 646
Divide y vencerás
|
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í: #include <stdio.h> #include <stdlib.h> void Listado(char palabra[6], float n1,int n2); int main() { int n2,desc,subtotal; float n1; char prod3[6]="prod3"; char prod2[6]="prod2"; char prod1[6]="prod1"; char palabra[6]; printf("Ingrese nombre del producto:"); printf("Ingrese precio unitario:"); printf("Ingrese cantidad necesitada:"); printf("| Producto: %s \t\n|, palabra); printf("| Cantidad: %d \t\n|, n2); printf("| P.unitario: %0.2f \t\n|, n2); desc = Listado(prod1, n1, n2); printf("| Descuento: %d\t\n|, desc); printf("Subtotal: %d\t\n", (val1 *val2 )-desc ); //return 0; } //--------------Descuento PROD1--------------------// int Listado(char pala[6], float val1,int val2) { int desc,subtotal; char prod3[6]="prod3"; char prod2[6]="prod2"; char prod1[6]="prod1"; { desc=(val1*val2*10)/100; subtotal=(val1*val2)-desc; } else if(strcmp(pala ,prod2 )==0) { desc=(val1*val2*10)/100; subtotal=(val1*val2)-desc; } { subtotal=val1*val2; } return desc; }
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
Mensajes: 151
Forma parte de esta comunidad gamer!!!
|
perfecto lo voy a probar gracias!!!
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
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 #include <stdio.h> #include <stdlib.h> #include <string.h> /* * Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida * Devuelve 1 si existe el producto, 0 en caso contrario */ int listado(char palabra[], float, int, float*, float*); int main() { int cant; float precio, *desc, *subtotal; char palabra[6]; desc = (float*)malloc(sizeof(float)); subtotal = (float*)malloc(sizeof(float)); printf("Ingrese nombre del producto:"); fgets(palabra , 6, stdin ); printf("Ingrese precio unitario:"); printf("Ingrese cantidad necesitada:"); if(listado(palabra, precio, cant, desc, subtotal) == 1) 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 ); else return 0; } /* * Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida * Devuelve 1 si existe el producto, 0 en caso contrario */ int listado(char pala[6], float precio, int cant, float *desc, float *subtotal) { if((strcmp(pala , "prod1")==0) || (strcmp(pala , "prod2")==0)) { *desc = (precio*cant*10)/100; *subtotal = ((precio*cant)-(*desc)); return 1; } else { *desc = 0; *subtotal = precio*cant; return 1; } else return 0; }
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con funciones (resuelto)
Programación C/C++
|
Gotttlieb
|
2
|
2,642
|
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
|
24,001
|
19 Mayo 2011, 23:39 pm
por Littlehorse
|
|
|
Problema con funciones
Programación C/C++
|
DickGumshoe
|
2
|
2,531
|
22 Enero 2012, 11:48 am
por DickGumshoe
|
|
|
Ayuda!! Problema con las funciones.
Programación C/C++
|
elkiy
|
4
|
2,475
|
15 Junio 2012, 21:38 pm
por elkiy
|
|
|
Problema con funciones scanf() y gets().
Programación C/C++
|
latinoalfredo
|
0
|
1,994
|
22 Octubre 2012, 17:45 pm
por latinoalfredo
|
|