Autor
|
Tema: el 3er do-while me esta marcando overflow porfa ayuda (Leído 2,243 veces)
|
marcoaa
Desconectado
Mensajes: 2
|
#include<stdlib.h> #include<stdio.h> //a es igual a la ganancia// //vp es igaul a valor de produccion// //contn es contador de niño y conts lo inverso// //contvs es contador de variedad salada mientras que contvn inverso// char tipo, rsp, tipomax; float cod , pvp, a, vp, acumganan=0, acumvp=0, gananmax=0, codmax; float costoalm, contn=0, conts=0, contvs=0, contvn=0; void valo_pvp_ganancia(char tipo, float costoalm, float pvp, float a, float vp, float conts, float contvs, float contn, float contvn, float acumvp, float acumganan) { if (tipo=='n' && cod<=10) { vp=costoalm*2; pvp=vp+(vp*0.10); a=vp*0.10; contn=contn+1; contvs=contvs+1; acumvp=vp+acumvp; acumganan=acumganan+a; } else if (tipo=='n' && cod>=11) { vp=costoalm*4; pvp=vp+(vp*0.15); a=vp*0.15; contn=contn+1; acumvp=vp+acumvp; acumganan=acumganan+a; } else if (tipo=='a' && cod<=10) { vp=costoalm*4; pvp=vp+(vp*0.20); a=vp*0.20; conts=conts+1; contvs=contvs+1; } else { vp=costoalm*6; pvp=vp+(vp*0.25); a=vp*0.25; conts=conts+1; contn=contn+1; } } float promediovp (float acumvp, float contn) { return ( acumvp/contn); } float promedioganan (float acumganan, float contn) { return (acumganan/contn); } main() { do { //info para la parte a// do { printf("\n ingrese para quien esta dirigido el producto, n=ninos a=adultos "); scanf(" %c", &tipo); } while (tipo!='n' && tipo!='a'); do { printf("\n ingrese el codigo de variedad, del 1 al 20 "); scanf(" &f", &cod ); } while (cod<1 || cod>20); printf("\n ingrese el costo de almacenamiento "); scanf(" %f", &costoalm); printf("\n"); printf("\n"); if (tipo=='n') //le faltan las comillas a la n// { printf("\nel producto es dirigido hacia ninos"); } else { printf("\nel producto es dirigido hacia adultos"); } if (cod<=10) { printf("\n el producto es salado"); } else { printf("\n el producto es dulce"); } printf("\n el costo de almacenamiento es %.0f ", costoalm); void valo_pvp_ganancia(char tipo, float costoalm, float pvp, float a, float vp, float conts, float contvs, float contn, float contvn); printf("\n el valor de produccione es %.0f ", vp); printf("\n el precio de venta al publico es de %.0f ", pvp); printf("\n la ganancia de la empresa es %.0f ", a); printf("\n"); printf("\n"); printf("\ndesea ingresar los datos de otro producto?"); scanf(" %c", &rsp); if (a>gananmax) { a=gananmax; tipo=tipomax; cod=codmax; } } while (rsp=='n'); //culimna la parte a falta ciclo de rep// printf("\n"); printf("\n"); printf("\n"); printf("\n"); if (contn<conts) { printf("\nel tipo de pruducto mas fabricado fue hacia adultos %.0f", conts); printf("\n mientras que el de los ninos se fabricaron %.0f ", contn); } else if (conts<contn) { printf("\nel tipo de producto mas fabricado fue hacia ninos %.0f", contn); printf("\n mientras que el de los adultos e fabricaron %.0f ", conts); } else { printf("\n ambos producos se producieron en mismas cantidades %.0f", contn); } printf("\n el total de los valores de produccion para ninos es de %.0f ", acumvp); printf("\n el total de ganancia por los productos de ninos es de %.0f ", acumganan); if (contn=0) { printf("\n no hubo produccion de productos para ninos"); } else { printf("\n el promedio de los valores de produccion para ninos es de %.2f, ", promediovp(acumvp,contn)); printf("\n el promedio de la ganancias de los productos de ninos es de %.2f ", promedioganan (acumganan, contn)); } printf("\n el tipo de producto que genero la maxima ganancia fue %c ", tipomax); printf(" con codigo de %.0f", codmax); system("pause"); }
|
|
|
|
« Última modificación: 24 Febrero 2015, 07:58 am por engel lex »
|
En línea
|
|
|
|
|
engel lex
|
te modifiqué el código, cuando publiques usa etiquetas GeSHi... segundo aviso.... primer error... main siempre es tipo int... y retorna normalmente 0... segundo error.... todos (o casi todos) tus scanf están mal declarados... scanf(" %c", &tipo);
espera literalmente lo que está ahí... que escribas un espacio y luego una letra... sin embargo lo agarra bien, aunque debes quitarle los espacios tercer error y tu bug... linea 79 scanf(" &f", &cod );
es %f no &f cuarto error... uno logico en la linea 122.... recomiendo que aprendas a usar el debugger de tu ide para conseguir estos errores con cierta facilidad
|
|
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
segundo error.... todos (o casi todos) tus scanf están mal declarados... scanf(" %c", &tipo);
espera literalmente lo que está ahí... que escribas un espacio y luego una letra... sin embargo lo agarra bien, aunque debes quitarle los espacios No es un error sino un forma común de utilizar esa función. Explico: scanf con todos los especificadores de formato (excepto dos) lo primero que hace es descartar el espacio blanco (espacio, tabulador, etc.), solo entonces consume los caracteres validos para la conversión indicada. Por ejemplo si tratamos de leer un entero y una palabra con "%d%s" una entrada como esta funcionara correctamente: Las dos excepciones son "%c" y "%[]", con estas el descarte no sucede (la función se "traga" los caracteres que pueda), por ejemplo si tratamos de leer un entero y un carácter con "%d%c" la siguiente entrada no dará el resultado esperado: Ello porque la función consumirá los caracteres '1', '2' y '3' para generar el entero 123 y el avance de linea que sigue sera almacenado en la dirección indicada. Para evitarlo se suele utilizar un espacio antes del especificador "%c" ya que este (el espacio) se interpreta como "descartar todo carácter para el cual la función isspace resulte en verdadero". Por ultimo con la bendita función los caracteres de espacio blanco no se toman literalmente, en su lugar cualquier secuencia de estos se interpreta de la forma indicada (lectura y descarte de espacio blanco). Un saludo
|
|
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
me sigue marcando error el vitualdub
Multimedia
|
morbid
|
1
|
1,853
|
31 Enero 2006, 01:32 am
por Songoku
|
|
|
mecanico par esta conexion de trayano porfa!!(me tiene loco y soy nuevo!!)
Programación Visual Basic
|
cark
|
3
|
1,828
|
29 Mayo 2007, 18:38 pm
por Xerok1!
|
|
|
Ayudenme a desempacar esta mañosa aplicación... porfa
« 1 2 »
Ingeniería Inversa
|
TM_Recargado
|
13
|
7,512
|
23 Noviembre 2011, 22:26 pm
por TM_Recargado
|
|
|
necesito darle valores a esta matriz y que me de un resultado ayuda porfa
Programación C/C++
|
chrisvel
|
2
|
3,648
|
9 Mayo 2013, 20:49 pm
por cypascal
|
|
|
Google está marcando como virus algunos programas que no lo son
Noticias
|
wolfbcn
|
0
|
1,255
|
9 Diciembre 2018, 02:07 am
por wolfbcn
|
|