Título: necesito q el programa me pida los datos hasta q yo le diga que no, y que imprim
Publicado por: luis torres en 29 Junio 2014, 20:36 pm
#include <iostream> #include<stdio.h> float zonaA(float v) { float limit=100,mult=0; if(v>limit){ mult=(1000+(500*(v-limit))); } else{ mult=0;} return mult; } float zonaB(float v) { float limit=120,mult=0; if(v>limit){ mult=(1000+(500*(v-limit))); } else{ mult=0;} return mult; } float zonaC(float v) { float limit=150,mult=0; if(v>limit){ mult=(1000+(500*(v-limit))); } else{ mult=0;} return mult; } float zonaD(float v) { float limit=180,mult=0; if(v>limit){ mult=(1000+(500*(v-limit))); } else{ mult=0;} return mult; } using namespace std; int main() { float mpagar=0,pm=0,k,prom,promedio[3],c=0,d=0; int I; char placa[6],opc; while(opc!='n'){ cout<<"ingrese la placa del auto"<<endl; cin>>placa; cout<<"ingrese la zona"<<endl; cin>>I; cout<<"cantidad de kilometros"<<endl; cin>>k; if((I==1)&&(zonaA(k)==0)) { cout<<placa<<" no paga multa"<<endl; d=d+1; } else{ cout<<placa<<" su multa es= "<<zonaA(k)<<endl; c=c+1; } promedio[I]=(zonaA(k)/(c+d)); } cout<<"cargar mas s/n=<"<<endl; cin>>opc; if((I==2)&&(zonaB(k)==0)) { cout<<placa<<" no paga multa"<<endl; d=d+1; } else{ cout<<placa<<" su multa es= "<<zonaB(k)<<endl; c=c+1; } promedio[I]=(zonaB(k)/(c+d));} cout<<"cargar mas s/n=<"<<endl; cin>>opc; if(opc=='n') { for(I=1;I<4;I++) cout<<promedio[I]<<endl; } system("PAUSE"); return 0; }
necesito que el programa me pida los datos hasta que le diga no, y que me imprime el promedio, lo hice con uno y si daba necesito de 4 opcione y ahi si q no da nada el enunciado dice 1. El departamento de tránsito prepara por cada infracción la siguiente entrada: placa, zona de infracción (A,B,C,D) límite de velocidad de la zona, y velocidad desarrollada por el infractor. Realice un algoritmo utilizando funciones y que produzca la siguiente información : a. placa y multa la cual es a 1000 Bs + 500Bs*(por cada Km de exceso con respecto al límite) El sistema sigue pidiendo información hasta que el usuario desee. b.. indique por cada zona el número de infracciones ocurridas y la multa promedio
Título: Re: necesito q el programa me pida los datos hasta q yo le diga que no, y que imprim
Publicado por: engel lex en 29 Junio 2014, 22:49 pm
no entendi el problema... el programa parece correr bien por cierto... using namespace std;
eso va (normalmente) no sobre el main, sino luego de los include, antes de todas las funciones
Título: Re: necesito q el programa me pida los datos hasta q yo le diga que no, y que imprim
Publicado por: leosansan en 30 Junio 2014, 00:09 am
Yo te aconsejaría usar una sola función Zona a cambio de pasarle como parámetro la velocidad máxima en cada caso. float Zona(float v,float limit){ float mult=0; if(v>limit) mult=(1000+(500*(v-limit))); else mult=0; return mult; }
Y ya que has arreglado lo del while también te aconsejaría usar un par de arrays para ir quedando los coches que pasan por cada zona y los que en las mismas son multados: float velocidad,promedio[4]={0},cont[4]={0}; int zona,multa[4]={0};
Y el tratamiento de una zona, la cuatro como ejemplo, la haría: ///faltaria las zona=1, zona=2 y zona=3, analogas a la 4 ///con las correspondientes velocidades maximas de argumento en la funcion Zona if((zona==4) && (Zona(velocidad,180)==0)){ cout<<placa<<" no paga multa"<<endl; cont[3]++; } else if(zona==4 && Zona(velocidad,180)!=0){ cout<<placa<<" su multa es= "<<Zona(velocidad,180)<<endl; cont[3]++; multa[3]++; } if(zona==4 && cont[3]!=0) promedio[zona-1]+=Zona(velocidad,180); cout<<"cargar mas s/n=<"<<endl; cin>>opc; }///fin del WHILE if(opc=='n'){ //SOLO aqui va for(zona=0;zona<4;zona++) if (cont[zona]!=0) cout<<"[zona= "<<zona+1<<"] "<<endl<<"Promedio de las multas = "<<promedio[zona]/cont[zona]<<" Multas: "<<multa[zona]<<" Vehiculos que han circulado: "<<cont[zona]<<endl; }
Aunque yo sería partidario de un swtich en lugar de tanto if-else. Pero para que vayas cogiendo una idea creo que te vale, ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Y por favor, indenta más correctamente el códiogo.
Título: Re: necesito q el programa me pida los datos hasta q yo le diga que no, y que imprim
Publicado por: eferion en 30 Junio 2014, 11:02 am
¿Y mapear la velocidad máxima en función de la zona? así no tienes que usar ni if ni switch... #define MAXZONAS 4 // Velocidad maxima de cada una de las zonas int velocidades[ MAXZONAS ] = { 100, 120, 160, 180 }; // ... float multa = Zona( velocidad, velocidades[ zona - 1 ] ); if ( multa == 0.0 ) { cout << placa << " no paga multa " << endl; } else { cout << placa << " su multa es " << multa << endl; }
|