ayuda con este codigo

Iniciado por maik22, 7 Abril 2012, 20:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

maik22

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
"Un final feliz depende de donde acabes el cuento" Orsen Welles

s00rk

Código (cpp) [Seleccionar]

#include<stdio.h>
#inlcude<conio.h>
main()
{
    int a,b,c,d;
    bool bandera = true;
    clrscr();
    printf("dame el nuemro de contenedores");
    scanf("%d", &a);
    if(a > 0)
    {
        printf("\n Dame los litros del contenedor");
        scanf("%d",&b);
        if(b > 0)
        {
            printf("\n dame el número de casas");
            scanf("%d",&c);
            if(c <= 0)
                bandera = false;
        }else{
            bandera = false;
        }
    }else{
        bandera = false;
    }
    if(bandera)
    {
        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();
}

Beakman

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:
#include<stdio.h>

int main(){
int a,b,c,d;

do{
printf("Dame el nuemro de contenedores: ");
scanf("%d", &a);
}while( a < 0 );

do{
printf("Dame los litros del contenedor: ");
scanf("%d",&b);
}while( b < 0 );

do{
printf("Dame el número de casas: ");
scanf("%d",&c);
}while( c < 0 );

d = ( a*b ) / c;
printf( "La cantidad de litros por casa es %d\n", d );
return 0;
}

david_BS

#3
yo te lo optimizo aún más sin decir "dulces lunas" weee XD
mejor dicho, otra propuesta de como hacerlo

#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;
}



maik22

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
"Un final feliz depende de donde acabes el cuento" Orsen Welles

david_BS

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.

maik22

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 :/
"Un final feliz depende de donde acabes el cuento" Orsen Welles

Beakman

#7
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.

maik22

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();
}




"Un final feliz depende de donde acabes el cuento" Orsen Welles

maik22

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
-...
"Un final feliz depende de donde acabes el cuento" Orsen Welles