Autor
|
Tema: Ayuda ejercicio c++ (Leído 1,480 veces)
|
sergio011295
Desconectado
Mensajes: 3
|
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.docEste 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
Mensajes: 724
Intentando ser mejor cada día :)
|
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: std::cout << "cadena"; std::cin >> agua;
En lugar de:
Debes quitar las variables: 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: 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): #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, 23:16 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
sergio011295
Desconectado
Mensajes: 3
|
Lo dejo así porque es que si no , nadie lo va a leer (ahora lo miro a ver que tal): #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; }
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
Mensajes: 724
Intentando ser mejor cada día :)
|
Corregirlo era un poco coñazo así que lo he hecho de nuevo, espero que no te importe: #include <cstdlib> #include <iostream> using namespace std; float calculoAgua (float consumoAgua , int estrato); float calculoEnergia (float consumoEnergia , int estrato); float calculoTelefono (float consumoTelefono , int estrato); float calculoDescuento (float cantidad, float porcentajeDescuento); int main(int argc, char *argv[]) { float consumoAgua = 0; float consumoEnergia = 0; float consumoTelefono = 0; float facturaAgua = 0; float facturaEnergia = 0; float facturaTelefono = 0; float facturaTotal = 0; int estrato = 0; int metodoPago = 0; cout << "Ingrese el consumo de agua:" << endl; cin >> consumoAgua; cout << "Ingrese el consumo de energia:" << endl; cin >> consumoEnergia; cout << "Ingrese el consumo de telefono:" << endl; cin >> consumoTelefono; cout << "Ingrese su estrato:" << endl; cin >> estrato; system("cls"); //Esto es solo para Windows cout << "Calculando la factura . . ." << endl; facturaAgua += calculoAgua(consumoAgua , estrato); facturaEnergia += calculoEnergia(consumoEnergia , estrato); facturaTelefono += calculoTelefono(consumoTelefono , estrato); facturaTotal = facturaAgua + facturaEnergia + facturaTelefono; if(facturaTotal >= 200000) { do { cout << "¿El pago se realizo en efectivo o con tarjeta de credito?" << endl; cout << " 1. En efectivo." << endl; cout << " 2. Con tarjeta de credito." << endl; cout << "Seleccione: "; cin >> metodoPago; switch(metodoPago) { case 1: facturaTotal = calculoDescuento(facturaTotal,4); break; case 2: facturaTotal = calculoDescuento(facturaTotal,4); break; default: cout << "No ha seleccionado un metodo de pago correcto." << endl; } } while((metodoPago != 1) || (metodoPago != 2)); } system("cls"); cout << "FACTURA" << endl; cout << "--------------" << endl; cout << "El importe del agua ha sido de: " << facturaAgua << endl; cout << "El importe de la energia ha sido de: " << facturaEnergia << endl; cout << "El importe del telefono ha sido de: " << facturaTelefono << endl << endl; cout << "El importe del agua ha sido: " << facturaTotal << endl; cin.getline(); return 0; } float calculoAgua(float consumoAgua, int estrato) { int importeAgua = 0; if(consumoAgua <= 2000) importeAgua = 35000; else importeAgua = 35000 + ((consumoAgua-2000)*400); switch(estrato) { case 1: importeAgua = calculoDescuento(importeAgua, 20); break; case 2: importeAgua = calculoDescuento(importeAgua, 20); break; case 3: importeAgua = calculoDescuento(importeAgua, 10); break; case 4: importeAgua = calculoDescuento(importeAgua, 10); break; case 5: break; case 6: break; default: cout << estrato << "no es un estrato valido." << endl; } return importeAgua; } float calculoEnergia(float consumoEnergia, int estrato) { int importeEnergia = 0; if(consumoEnergia <= 3000) importeEnergia = 30000; else importeEnergia = 30000 + ((consumoEnergia-3000)*350); switch(estrato) { case 1: importeEnergia = calculoDescuento(importeEnergia, 15); break; case 2: importeEnergia = calculoDescuento(importeEnergia, 15); break; case 3: importeEnergia = calculoDescuento(importeEnergia, 10); break; case 4: importeEnergia = calculoDescuento(importeEnergia, 10); break; case 5: importeEnergia = calculoDescuento(importeEnergia, 5); break; case 6: importeEnergia = calculoDescuento(importeEnergia, 5); break; default: cout << estrato << "no es un estrato valido." << endl; } return importeEnergia; } float calculoTelefono(float consumoTelefono, int estrato) { int importeTelefono = 0; if(consumoTelefono <= 1000) importeTelefono = 38000; else importeTelefono = 38000 + ((consumoTelefono-1000)*100); switch(estrato) { case 1: importeTelefono = calculoDescuento(importeTelefono, 30); break; case 2: importeTelefono = calculoDescuento(importeTelefono, 30); break; case 3: importeTelefono = calculoDescuento(importeTelefono, 12); break; case 4: importeTelefono = calculoDescuento(importeTelefono, 12); break; case 5: importeTelefono = calculoDescuento(importeTelefono, 8); break; case 6: importeTelefono = calculoDescuento(importeTelefono, 8); break; default: cout << estrato << "no es un estrato valido." << endl; } return importeTelefono; } float calculoDescuento(float cantidad, float porcentajeDescuento) { return (cantidad - ((cantidad*porcentajeDescuento)/100)); }
|
|
« Última modificación: 25 Marzo 2013, 00:38 am por avesudra »
|
En línea
|
Regístrate en
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Ayuda] Ejercicio C 100
Ejercicios
|
Dem0ny
|
2
|
6,077
|
19 Diciembre 2007, 22:45 pm
por Dem0ny
|
|
|
Ayuda co un ejercicio de C#
.NET (C#, VB.NET, ASP)
|
hitori batusai
|
2
|
5,400
|
22 Febrero 2008, 01:53 am
por hitori batusai
|
|
|
Ayuda con ejercicio de VB
Programación Visual Basic
|
guada_sp
|
5
|
3,417
|
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,956
|
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,291
|
31 Marzo 2011, 15:43 pm
por d(-_-)b
|
|