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