Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: maik22 en 7 Abril 2012, 20:09 pm



Título: ayuda con este codigo
Publicado por: maik22 en 7 Abril 2012, 20:09 pm
Bueno hice un código con mi equipo que diga cuanot slitros de agua necesita cada casa, ya tengo todo el codigo, lo compile lo corri todo bien, pero debo indicar que si el numero es negativo, que diga que no exista, lo he logrado pero solo lo dice hasta que me da el resulatdo, y esque usa una formula
a*b/c
a=Número de contenedores
b=Litros del contenedor
c=Numero de casas
aquie sta el código

#include<stdio.h>
#inlcude<conio.h>
main();{
 int a,b,c,d;
 clrscr();
 printf("dame el nuemro de contenedores");
 scanf("%d", &a);
 printf("\n Dame los litros del contenedor");
 scanf("%d",&b);
 printf("\n dame el número de casas");
 scanf("%d",&c);
 if(a,b,c>0){
 d=(a*b)/c;
 printf("\n La cantodad de litros por casa es %d", d);}
 else
 printf("No existen números negativos ni un numero en fraccion");}
 getch();
 }

bueno el problema es en que si al primer nuemro lo pongo como negativo me deja proceder con el sigueinte numero cosa queno quiero, lo unico que e conseguio es que me diga que no existen los litros negativos pero me lo dice hasta el final, osea el resultado, y si pones un numero en fraccion te manda luego luego a decir que no existe asi es loq ue quiero que haga pero con negativos tambein ... ayudaaaaaa :-X


Título: Re: ayuda con este codigo
Publicado por: s00rk en 7 Abril 2012, 20:29 pm
Código
  1. #include<stdio.h>
  2. #inlcude<conio.h>
  3. main()
  4. {
  5.    int a,b,c,d;
  6.    bool bandera = true;
  7.    clrscr();
  8.    printf("dame el nuemro de contenedores");
  9.    scanf("%d", &a);
  10.    if(a > 0)
  11.    {
  12.        printf("\n Dame los litros del contenedor");
  13.        scanf("%d",&b);
  14.        if(b > 0)
  15.        {
  16.            printf("\n dame el n&#250;mero de casas");
  17.            scanf("%d",&c);
  18.            if(c <= 0)
  19.                bandera = false;
  20.        }else{
  21.            bandera = false;
  22.        }
  23.    }else{
  24.        bandera = false;
  25.    }
  26.    if(bandera)
  27.    {
  28.        d=(a*b)/c;
  29.        printf("\n La cantodad de litros por casa es %d", d);
  30.    }else{
  31.        printf("No existen n&#250;meros negativos ni un numero en fraccion");
  32.    }
  33.    getch();
  34. }
  35.  


Título: Re: ayuda con este codigo
Publicado por: Beakman en 7 Abril 2012, 20:30 pm
Tenés muchos errores.
Por qué pusiste un "punto y coma" después del main() ?
Por qué main() no tiene ningún tipo, y no retorna valor ?
Te faltó cerrar una llave.
Y ese if no funciona.

Lo arreglé un poco:
Código
  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int a,b,c,d;
  5.  
  6. do{
  7. printf("Dame el nuemro de contenedores: ");
  8. scanf("%d", &a);
  9. }while( a < 0 );
  10.  
  11. do{
  12. printf("Dame los litros del contenedor: ");
  13. scanf("%d",&b);
  14. }while( b < 0 );
  15.  
  16. do{
  17. printf("Dame el número de casas: ");
  18. scanf("%d",&c);
  19. }while( c < 0 );
  20.  
  21. d = ( a*b ) / c;
  22. printf( "La cantidad de litros por casa es %d\n", d );
  23. return 0;
  24. }


Título: Re: ayuda con este codigo
Publicado por: david_BS en 7 Abril 2012, 20:40 pm
yo te lo optimizo aún más sin decir "dulces lunas" weee XD
mejor dicho, otra propuesta de como hacerlo
Código:
#include<stdio.h>
 
int main(){
int a,b,c;
while(true){
a=0;
printf("Dame el nuemro de contenedores: ");
scanf("%d", &a);
if(a>0)break;
}
while(true){
b=0;
printf("Dame los litros del contenedor: ");
scanf("%d",&b);
if(b>0)break;
}
while(true){
c=0;
printf("Dame el número de casas: ");
scanf("%d",&c);
if(c>0)break;
}

printf( "La cantidad de litros por casa es %f\n", (float)((a*b)/c) );
while(getchar()!='\n');
return 0;
}



Título: Re: ayuda con este codigo
Publicado por: maik22 en 7 Abril 2012, 20:49 pm
hehe, bueno pues prmero que nada muchas gracias, pero la neta no se que e slo que hicieron haha, disculpen mi ignorancia esque apenas ando empezando ene esto, y esque cambian muchos comandos, no digo que este mal, solo digoq ue si me explicaran para qeu sirve por decir while, o esos que sustituyeron estaria perfecto, y aun mas si me dijeran el poque mi codigo esta mal, por que ami solo me falla lo que les pongo, de que si pongo un numero negativo quiero que me salte todo y diga, no existen por decir cantidad de reciekpientes negativos jeje


Título: Re: ayuda con este codigo
Publicado por: david_BS en 7 Abril 2012, 20:54 pm
te doy un consejo con respecto a otra cosa, cada vez que hagás una división tenés que comprobar que no vayas a dividir por cero.


Título: Re: ayuda con este codigo
Publicado por: maik22 en 8 Abril 2012, 01:20 am
CrisQC, probe tu codigo pero lo que este hace es que si le das un número negativo no te deja avanzar hasta que pongas uno positivio, lo que no se es ocmo le hiciste :/


Título: Re: ayuda con este codigo
Publicado por: Beakman en 8 Abril 2012, 01:43 am
Lo que hacen while y do while es ejecutar el código entre llaves {} mientras la expresión dentro de los paréntesis () sea verdadera. La diferencia es que el do while primero ejecuta y luego evalúa. El ciclo que hizo @David se corta con el break, sino sería infinito: while( true ).
Tenés miles de formas para hacer lo que necesitas.
Un buen manual de C/C++ que te recomiendo es el de Pozo Coronado. Podés buscarlo en Google. Me parece muy completo y ahí vas a entender muy bien todo esto.

PD: @David ya quité mi firma ja.


Título: Re: ayuda con este codigo
Publicado por: maik22 en 8 Abril 2012, 03:56 am
Va, primero que nada gracias CrisQC tu comentario me ayudo a comprender tu codigo, y mmm, tengo un horribel problema, logre cambiar el codigo para que hiciera loq ue yo queria, ahora si introduzco un numero negativo o con deciaml, me dice que es imposible hasta ahi esta bien, solo que ahora si e meto nuemro sgrandes como no se primero
590
1000
75
el resultado me lo tira negativo :S, con numeros grandes no sirve el programa y no entinedo porque, con los pequeños si hace bien als operaciones, me estoy volveindo loco ayudaa, aquie esta el codigo:

#include<stdio.h>
#include<conio.h>
 int a,b,c,d;
 main() {
  clrscr();
 printf("Dame el número de contenedores");
 scanf("%d",&a);
  if(a<0){
    printf("\n Dame lo litros del contenedor");
    scanf("%d",&b);
  if(b>0){
     printf("\n Dame el número de casas");   
     scanf("%d",&c);
  if(c>0){
d=(a*b)/c;
 printf("\n La cantidad de litros que hayq ue poner en cada casa es %d",d);
 }
else printf(\n no hay deciamles ni negativos");
}
else printf(\n no hay deciamles ni negativos");
}
else printf(\n no hay deciamles ni negativos");
getch();
}






Título: Re: ayuda con este codigo
Publicado por: maik22 en 8 Abril 2012, 03:59 am
Sera qeu el "int" no aguanta nuemros tan grandes???? porque con numeros pequeños is hace bien el calculo comprobado por mi calculadora, epro con grandes saca tonterias y aveces hasta negativas :S, perdonden el codigo de arriba como lo transcribi podria haber errores pequeños :S, pero si me lo compila y corre
-...


Título: Re: ayuda con este codigo
Publicado por: Beakman en 8 Abril 2012, 04:40 am
No sé como te pudo compilar porque te faltaron comillas en los últimos printf ( antes del \n ).
Y esto:
Código
  1. if( a<0 ){
Debería ser:
Código
  1. if( a>0 ){

Corregí eso y fijate. De nada, un saludo!.