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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda ejercicio c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ejercicio c++  (Leído 1,476 veces)
sergio011295

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda ejercicio c++
« en: 24 Marzo 2013, 22:47 pm »

Buenaas ! debo realizar el sgte ejercicio en devc++ pero no logro que funcione ¿puede alguien ayudarme a corregirlo Gracias !
https://word.office.live.com/wv/WordView.aspx?FBsrc=https%3A%2F%2Fwww.facebook.com%2Fdownload%2Ffile_preview.php%3Fid%3D598647393497860%26time%3D1364161466%26metadata&access_token=100001104991353%3AAVIx80klEYIIaSdLetlj883fDorKauTG-pwXKUi-5N055A&title=quiz4+subprogramas+y+condicionales-25.doc

Este es mi codigo


#include <cstdlib>
#include <iostream>
int servicio,promo;
float total,des;
char mp[10];
using namespace std;
float agua()
{int ca,est;
float total,des;
printf ("Consumo agua");
scanf ("%d",&ca);
printf ("estrato");
scanf ("%d",&est);
if (ca<=2000)
return (total=35000);
else
if(ca>2000)
return (total=35000+(ca-2000*400));
else if(est==1||est==2)
des=total*0.20;
return (total = total-des);
 if  (est==3||est==4)
des=total*0.10;
return (total = total-des);
}
float energia()
{int ce,est;
float total,des;
printf ("Consumo energia");
scanf ("%d",&ce);
printf ("estrato");
scanf ("%d",&est);
if (ce<=3000)
return (total=30000);
else
if(ce>3000)
return (total=30000+(ce-3000*350));
else if(est==1||est==2)
des=total*0.15;
return (total = total-des);
 if  (est==3||est==4)
des=total*0.10;
return (total = total-des);
if  (est==5||est==6)
des=total*0.05;
return (total = total-des);
}
float telefono()
{int ct,est;
float total,des;
printf ("Consumo telefono");
scanf ("%d",&ct);
printf ("estrato");
scanf ("%d",&est);
if (ct<=1000)
return (total=38000);
else
if(ct>1000)
return (total=38000+(ct-1000*100));
else if(est==1||est==2)
des=total*0.30;
return (total = total-des);
 if  (est==3||est==4)
des=total*0.12;
return (total = total-des);
if  (est==5||est==6)
des=total*0.08;
return (total = total-des);

}
int main(int argc, char *argv[])
{printf ("1.Agua\n2.Energia\n3.Telefono");
scanf ("%d",&servicio);
printf ("Modo de pago (efectivo-Credito)");
scanf ("%s",&mp);
switch (servicio)
{case 1 : total =agua();
          break;
case 2 : total =energia();
          break;
case 3 : total =telefono();
          break;
default : printf ("Opcion no disponible\n");
          break;
}
if (strcmp(mp,"efectivo")==0&&total>200000)
{promo = (total*0.04);
total = total-promo;}
if (strcmp(mp,"credito")==0&&total>200000)
{promo = (total*0.02);
total = total-promo;}

printf ("El total es:%.0f",total);

    system("PAUSE");
    return EXIT_SUCCESS;
}


« Última modificación: 24 Marzo 2013, 22:54 pm por sergio011295 » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda ejercicio c++
« Respuesta #1 en: 24 Marzo 2013, 23:03 pm »

Deberías decir que es lo que te dice el compilador y en que falla, de momento si estás en C++ deberías utilizar las funciones:
Código
  1. std::cout << "cadena";
  2. std::cin >> agua;
En lugar de:
Código
  1. printf("cadena");
  2. scanf("%d",&agua);
Debes quitar las variables:
Código
  1. float total,des;
Ya que ya están declaradas y son globales cosa que deberías cambiar...
Mejor organización del código, nombres descriptivos de variables ...
En la sentencia:
Código
  1. scanf ("%s",&mp);
Sobra el ampersand '&'...
------------------------------------------------------------------------------------------
Lo dejo así porque es que si no , nadie lo va a leer (ahora lo miro a ver que tal):
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. int servicio,promo;
  4. float total,des;
  5. char mp[10];
  6. using namespace std;
  7. float agua()
  8. {
  9.    int ca,est;
  10.    float total,des;
  11.    printf ("Consumo agua");
  12.    scanf ("%d",&ca);
  13.    printf ("estrato");
  14.    scanf ("%d",&est);
  15.    if (ca<=2000)
  16.        return (total=35000);
  17.    else if(ca>2000)
  18.        return (total=35000+(ca-2000*400));
  19.    else if(est==1||est==2)
  20.        des=total*0.20;
  21.    return (total = total-des);
  22.    if  (est==3||est==4)
  23.        des=total*0.10;
  24.    return (total = total-des);
  25. }
  26. float energia()
  27. {
  28.    int ce,est;
  29.    float total,des;
  30.    printf ("Consumo energia");
  31.    scanf ("%d",&ce);
  32.    printf ("estrato");
  33.    scanf ("%d",&est);
  34.    if (ce<=3000)
  35.        return (total=30000);
  36.    else if(ce>3000)
  37.        return (total=30000+(ce-3000*350));
  38.    else if(est==1||est==2)
  39.        des=total*0.15;
  40.    return (total = total-des);
  41.    if  (est==3||est==4)
  42.        des=total*0.10;
  43.    return (total = total-des);
  44.    if  (est==5||est==6)
  45.        des=total*0.05;
  46.    return (total = total-des);
  47. }
  48. float telefono()
  49. {
  50.    int ct,est;
  51.    float total,des;
  52.    printf ("Consumo telefono");
  53.    scanf ("%d",&ct);
  54.    printf ("estrato");
  55.    scanf ("%d",&est);
  56.    if (ct<=1000)
  57.        return (total=38000);
  58.    else if(ct>1000)
  59.        return (total=38000+(ct-1000*100));
  60.    else if(est==1||est==2)
  61.        des=total*0.30;
  62.    return (total = total-des);
  63.    if  (est==3||est==4)
  64.        des=total*0.12;
  65.    return (total = total-des);
  66.    if  (est==5||est==6)
  67.        des=total*0.08;
  68.    return (total = total-des);
  69.  
  70. }
  71. int main(int argc, char *argv[])
  72. {
  73.    printf ("1.Agua\n2.Energia\n3.Telefono");
  74.    scanf ("%d",&servicio);
  75.    printf ("Modo de pago (efectivo-Credito)");
  76.    scanf ("%s",&mp);
  77.    switch (servicio)
  78.    {
  79.    case 1 :
  80.        total =agua();
  81.        break;
  82.    case 2 :
  83.        total =energia();
  84.        break;
  85.    case 3 :
  86.        total =telefono();
  87.        break;
  88.    default :
  89.        printf ("Opcion no disponible\n");
  90.        break;
  91.    }
  92.    if (strcmp(mp,"efectivo")==0&&total>200000)
  93.    {
  94.        promo = (total*0.04);
  95.        total = total-promo;
  96.    }
  97.    if (strcmp(mp,"credito")==0&&total>200000)
  98.    {
  99.        promo = (total*0.02);
  100.        total = total-promo;
  101.    }
  102.  
  103.    printf ("El total es:%.0f",total);
  104.  
  105.    system("PAUSE");
  106.    return EXIT_SUCCESS;
  107. }


« Última modificación: 24 Marzo 2013, 23:16 pm por avesudra » En línea

Regístrate en
sergio011295

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda ejercicio c++
« Respuesta #2 en: 24 Marzo 2013, 23:13 pm »

Lo dejo así porque es que si no , nadie lo va a leer (ahora lo miro a ver que tal):
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. int servicio,promo;
  4. float total,des;
  5. char mp[10];
  6. using namespace std;
  7. float agua()
  8. {
  9.    int ca,est;
  10.    float total,des;
  11.    printf ("Consumo agua");
  12.    scanf ("%d",&ca);
  13.    printf ("estrato");
  14.    scanf ("%d",&est);
  15.    if (ca<=2000)
  16.        return (total=35000);
  17.    else if(ca>2000)
  18.        return (total=35000+(ca-2000*400));
  19.    else if(est==1||est==2)
  20.        des=total*0.20;
  21.    return (total = total-des);
  22.    if  (est==3||est==4)
  23.        des=total*0.10;
  24.    return (total = total-des);
  25. }
  26. float energia()
  27. {
  28.    int ce,est;
  29.    float total,des;
  30.    printf ("Consumo energia");
  31.    scanf ("%d",&ce);
  32.    printf ("estrato");
  33.    scanf ("%d",&est);
  34.    if (ce<=3000)
  35.        return (total=30000);
  36.    else if(ce>3000)
  37.        return (total=30000+(ce-3000*350));
  38.    else if(est==1||est==2)
  39.        des=total*0.15;
  40.    return (total = total-des);
  41.    if  (est==3||est==4)
  42.        des=total*0.10;
  43.    return (total = total-des);
  44.    if  (est==5||est==6)
  45.        des=total*0.05;
  46.    return (total = total-des);
  47. }
  48. float telefono()
  49. {
  50.    int ct,est;
  51.    float total,des;
  52.    printf ("Consumo telefono");
  53.    scanf ("%d",&ct);
  54.    printf ("estrato");
  55.    scanf ("%d",&est);
  56.    if (ct<=1000)
  57.        return (total=38000);
  58.    else if(ct>1000)
  59.        return (total=38000+(ct-1000*100));
  60.    else if(est==1||est==2)
  61.        des=total*0.30;
  62.    return (total = total-des);
  63.    if  (est==3||est==4)
  64.        des=total*0.12;
  65.    return (total = total-des);
  66.    if  (est==5||est==6)
  67.        des=total*0.08;
  68.    return (total = total-des);
  69.  
  70. }
  71. int main(int argc, char *argv[])
  72. {
  73.    printf ("1.Agua\n2.Energia\n3.Telefono");
  74.    scanf ("%d",&servicio);
  75.    printf ("Modo de pago (efectivo-Credito)");
  76.    scanf ("%s",&mp);
  77.    switch (servicio)
  78.    {
  79.    case 1 :
  80.        total =agua();
  81.        break;
  82.    case 2 :
  83.        total =energia();
  84.        break;
  85.    case 3 :
  86.        total =telefono();
  87.        break;
  88.    default :
  89.        printf ("Opcion no disponible\n");
  90.        break;
  91.    }
  92.    if (strcmp(mp,"efectivo")==0&&total>200000)
  93.    {
  94.        promo = (total*0.04);
  95.        total = total-promo;
  96.    }
  97.    if (strcmp(mp,"credito")==0&&total>200000)
  98.    {
  99.        promo = (total*0.02);
  100.        total = total-promo;
  101.    }
  102.  
  103.    printf ("El total es:%.0f",total);
  104.  
  105.    system("PAUSE");
  106.    return EXIT_SUCCESS;
  107. }


Por cierto algunos me lo dijeron , el error es que el algoritmo no ejecuta los procesos  de descuento ni ninguna de las condiciones
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda ejercicio c++
« Respuesta #3 en: 25 Marzo 2013, 00:34 am »

Corregirlo era un poco coñazo así que lo he hecho de nuevo, espero que no te importe:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. float calculoAgua       (float consumoAgua      , int estrato);
  7. float calculoEnergia    (float consumoEnergia   , int estrato);
  8. float calculoTelefono   (float consumoTelefono  , int estrato);
  9.  
  10. float calculoDescuento  (float cantidad, float porcentajeDescuento);
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14.    float consumoAgua       = 0;
  15.    float consumoEnergia    = 0;
  16.    float consumoTelefono   = 0;
  17.  
  18.    float facturaAgua       = 0;
  19.    float facturaEnergia    = 0;
  20.    float facturaTelefono   = 0;
  21.    float facturaTotal      = 0;
  22.  
  23.    int   estrato           = 0;
  24.  
  25.    int   metodoPago        = 0;
  26.  
  27.    cout << "Ingrese el consumo de agua:"       << endl;
  28.    cin  >> consumoAgua;
  29.    cout << "Ingrese el consumo de energia:"    << endl;
  30.    cin  >> consumoEnergia;
  31.    cout << "Ingrese el consumo de telefono:"   << endl;
  32.    cin  >> consumoTelefono;
  33.    cout << "Ingrese su estrato:"               << endl;
  34.    cin  >> estrato;
  35.  
  36.    system("cls");          //Esto es solo para Windows
  37.  
  38.    cout << "Calculando la factura . . ."       << endl;
  39.  
  40.    facturaAgua     += calculoAgua(consumoAgua         , estrato);
  41.    facturaEnergia  += calculoEnergia(consumoEnergia   , estrato);
  42.    facturaTelefono += calculoTelefono(consumoTelefono , estrato);
  43.  
  44.    facturaTotal = facturaAgua + facturaEnergia + facturaTelefono;
  45.  
  46.    if(facturaTotal >= 200000)
  47.    {
  48.        do
  49.        {
  50.            cout << "¿El pago se realizo en efectivo o con tarjeta de credito?" << endl;
  51.            cout << "    1. En efectivo."                                       << endl;
  52.            cout << "    2. Con tarjeta de credito."                            << endl;
  53.            cout << "Seleccione: ";
  54.            cin  >> metodoPago;
  55.            switch(metodoPago)
  56.            {
  57.            case 1:
  58.                facturaTotal = calculoDescuento(facturaTotal,4);
  59.                break;
  60.            case 2:
  61.                facturaTotal = calculoDescuento(facturaTotal,4);
  62.                break;
  63.            default:
  64.                cout << "No ha seleccionado un metodo de pago correcto."        << endl;
  65.            }
  66.        }
  67.        while((metodoPago != 1) || (metodoPago != 2));
  68.    }
  69.  
  70.    system("cls");
  71.  
  72.    cout << "FACTURA"                               << endl;
  73.    cout << "--------------"                        << endl;
  74.    cout << "El importe del agua ha sido de: "      << facturaAgua      << endl;
  75.    cout << "El importe de la energia ha sido de: " << facturaEnergia   << endl;
  76.    cout << "El importe del telefono ha sido de: "  << facturaTelefono  << endl << endl;
  77.    cout << "El importe del agua ha sido: "         << facturaTotal     << endl;
  78.  
  79.    cin.getline();
  80.  
  81.    return 0;
  82. }
  83.  
  84. float calculoAgua(float consumoAgua, int estrato)
  85. {
  86.    int importeAgua = 0;
  87.    if(consumoAgua <= 2000)
  88.        importeAgua = 35000;
  89.    else
  90.        importeAgua = 35000 + ((consumoAgua-2000)*400);
  91.  
  92.    switch(estrato)
  93.    {
  94.    case 1:
  95.        importeAgua = calculoDescuento(importeAgua, 20);
  96.        break;
  97.    case 2:
  98.        importeAgua = calculoDescuento(importeAgua, 20);
  99.        break;
  100.    case 3:
  101.        importeAgua = calculoDescuento(importeAgua, 10);
  102.        break;
  103.    case 4:
  104.        importeAgua = calculoDescuento(importeAgua, 10);
  105.        break;
  106.    case 5:
  107.        break;
  108.    case 6:
  109.        break;
  110.    default:
  111.        cout << estrato << "no es un estrato valido." << endl;
  112.    }
  113.    return importeAgua;
  114. }
  115. float calculoEnergia(float consumoEnergia, int estrato)
  116. {
  117.    int importeEnergia = 0;
  118.    if(consumoEnergia <= 3000)
  119.        importeEnergia = 30000;
  120.    else
  121.        importeEnergia = 30000 + ((consumoEnergia-3000)*350);
  122.  
  123.    switch(estrato)
  124.    {
  125.    case 1:
  126.        importeEnergia = calculoDescuento(importeEnergia, 15);
  127.        break;
  128.    case 2:
  129.        importeEnergia = calculoDescuento(importeEnergia, 15);
  130.        break;
  131.    case 3:
  132.        importeEnergia = calculoDescuento(importeEnergia, 10);
  133.        break;
  134.    case 4:
  135.        importeEnergia = calculoDescuento(importeEnergia, 10);
  136.        break;
  137.    case 5:
  138.        importeEnergia = calculoDescuento(importeEnergia, 5);
  139.        break;
  140.    case 6:
  141.        importeEnergia = calculoDescuento(importeEnergia, 5);
  142.        break;
  143.    default:
  144.        cout << estrato << "no es un estrato valido." << endl;
  145.    }
  146.    return importeEnergia;
  147. }
  148. float calculoTelefono(float consumoTelefono, int estrato)
  149. {
  150.    int importeTelefono = 0;
  151.    if(consumoTelefono <= 1000)
  152.        importeTelefono = 38000;
  153.    else
  154.        importeTelefono = 38000 + ((consumoTelefono-1000)*100);
  155.  
  156.    switch(estrato)
  157.    {
  158.    case 1:
  159.        importeTelefono = calculoDescuento(importeTelefono, 30);
  160.        break;
  161.    case 2:
  162.        importeTelefono = calculoDescuento(importeTelefono, 30);
  163.        break;
  164.    case 3:
  165.        importeTelefono = calculoDescuento(importeTelefono, 12);
  166.        break;
  167.    case 4:
  168.        importeTelefono = calculoDescuento(importeTelefono, 12);
  169.        break;
  170.    case 5:
  171.        importeTelefono = calculoDescuento(importeTelefono, 8);
  172.        break;
  173.    case 6:
  174.        importeTelefono = calculoDescuento(importeTelefono, 8);
  175.        break;
  176.    default:
  177.        cout << estrato << "no es un estrato valido." << endl;
  178.    }
  179.    return importeTelefono;
  180. }
  181. float calculoDescuento(float cantidad, float porcentajeDescuento)
  182. {
  183.    return (cantidad - ((cantidad*porcentajeDescuento)/100));
  184. }
« Última modificación: 25 Marzo 2013, 00:38 am por avesudra » En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Ejercicio C 100
Ejercicios
Dem0ny 2 6,073 Último mensaje 19 Diciembre 2007, 22:45 pm
por Dem0ny
Ayuda co un ejercicio de C#
.NET (C#, VB.NET, ASP)
hitori batusai 2 5,398 Último mensaje 22 Febrero 2008, 01:53 am
por hitori batusai
Ayuda con ejercicio de VB
Programación Visual Basic
guada_sp 5 3,415 Último mensaje 8 Marzo 2008, 02:54 am
por ‭‭‭‭jackl007
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 15,945 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,287 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines