Escolar Documentos
Profissional Documentos
Cultura Documentos
Barrera GT 04 - 08
Formato Metodologa para Resolver Problemas (Centinela)
ENUNCIADO: Supngase que el importe del seguro obligatorio de un vehiculo depende se su modelo, del color del vehiculo y de la edad del
conductor. Sean los modelos del coche X y Y y los precios del seguro segn el color como sigue:
Modelo Color Precio
Dorado $240.41
X
Metalizado $330.00
Dorado $300.41
Y
Metalizado $360.00
Si el conductor tiene menos de 26 aos el precio se incrementa un 25%;
Si tiene entre 26 y 30 aos se incrementa un 10%;
Si tiene entre 31 y 65 aos se incrementara un 25% adicional;
S O L U C I N
I. Planteamiento del Problema
ENTRADA PROCESO SALIDA
d. Proceso
Cont = 0, PMe=0, PMa=0, PorMe=0, PorMa=0, P1=0, P=0, ImporTot=0, MaP=0, E=16;
E = 10; Mientras
Imprimir: "Digite la edad del conductor: (entre 15 y 65) o 2. Parar o Detener" (!((E >=15 && E<= 65)||(E==2)))
Leer E
Es E != 2 ?
Si:
Imprimir: "Digite el nombre del conductor: "
Leer nom
M='Z'; Mientras
Imprimir: "Digite el modelo del vehculo: X. Modelo x Y. Modelo y " (!(M == 'X' || M == 'Y'))
Leer M
C = -1;
Imprimir: "Digite el color del vehculo: 1. Dorado 2. Metalizado" Mientras
Leer C (!(C == 1 || C == 2))
En caso de:
'X' : Es C == 1?
Si: P = 240.41; Mientras
M= No: P = 330.00; (E != 2)
'Y': Es C == 1?
Si: P = 300.41
No: P = 360.00
Es la E < 26?
Si: P1 = P*0.25 + P;
PMe = PMe + 1 ;
No: Es E<= 30?
Si: P1 = P*0.10 + P;
No: P1 = P*0.25 + P;
PMa = PMa + 1;
Es P1 > MaP?
Si: MaP=P1;
Imprimir: "El Automovilista: ", nom, "paga el seguro ms alto de: ", MaP, "(US)"
ImporTot+=P1;
Imprimir: "El Automovilista: ", nom, "tiene un vehiculo modelo", M, "y deber pagar un total de: ", P1, "(US)"
Cont++
PorMe = PMe*100/Cont;
PorMa = PMa*100/Cont;
Imprimir: "El porcentaje de las personas menores de 26 aos es de :", PorMe
Imprimir: "El porcentaje de las personas entre de 31 y 65 aos es de :", PorMa
Imprimir: "El importe total es de :", ImporTot
Imprimir: " El pago de seguro ms alto es de: ", MaP, "(US)"
Inicio 1 3
P1=0,P=0,PorMe=0,
PorMa=0,MaP=0, PorMe = Pme * 100.0 / Cont
ImporTot=0, PMe=0, M
PorMa = Pma * 100.0 / Cont
PMa=0, Cont=0,
'X'
"El porcentaje de las
E=16
personas menores de 26
NO SI aos es de :", PorMe
C == 1
SI P = 300.41
P = 360.00
"Digite la edad del " El pago de seguro ms
conductor: (entre 15 y 65) o
2. Parar o Detener:"
alto es de: ", MaP, "(US)"
E
FIN
NO SI
E < 26
NO SI P1 = P*0.25 + P
E != 2 NO SI
E<= 30 PMe = PMe + 1
nom
M='Z'
NO SI
P1 > MaP
(!(M == 'X' ||
M == 'Y') MaP = P1
SI
"Elija el modelo del "El Automovilista: ", nom,
vehculo: "paga el seguro ms alto
X. Modelo x de: ", MaP, "(US)"
Y. Modelo y "
M ImporTot+=P1
!(C == 1 ||
C == 2)
Cont++
SI
"Elija el color del 2
vehculo:
1. Dorado
2. Metalizado"
fflush(stdin);
E=16;
while(E!=2)
{
E=10;
while(!((E>=15&&E<=65)||(E==2)))
{
puts("Digite la edad del conductor (edad entre 15 y 65)o\n2: Detener ");
scanf("%i", &E);
}
if (E!=2)
{
puts("Digite El Nombre completo del Conductor: \n\r ");
fflush(stdin);
scanf("%[^\n]s", nom); //gets(nom);
fflush(stdin);
M = 'Z';
while(!((M=='X')||(M=='Y')))
{
puts("Elija el Modelo del vehiculo:");
printf("\n\r X. Modelo x \n\r Y. Modelo y \n\nEleccion del Modelo del Vehiculo:");
fflush(stdin);
M = getche();//scanf("%c", &M);
M = toupper(M);
}
C=-1;
while(!(C==1||C==2))
{
printf("\n\n\nElija el Color del vehiculo: ");
printf("\n\r 1. Dorado \n\r 2. Metalizado \n\nEleccion del Color del Vehiculo:");
scanf("%i", &C);
}
switch (M)
{
case 'X': if(C==1)
P=240.41;
else
P=330.00;
break;
if(E<26)
{
P1=P + P*0.25;
PMe=PMe+1;//PMe++;
}
else
if (E<=30)
P1=P + P*0.10;
else
{
P1=P + P*0.25;
PMa=PMa+1;
}
ImporTot+=P1;
printf("\nEl Automovilista: %s tiene un vehiculo modelo %c \ny deber pagar un total de: %.2f (US) \n\n", nom, M, P1);
printf("\n\n*************************OTRO*************************\n\n");
Cont++;
}
}
PorMe = PMe*100.0/Cont;
PorMa = PMa*100.0/Cont;
getch();
return 0;
}
S O L U C I N
I. Planteamiento del Problema
SALIDA
NTRADA PROCESDFGDF GDGDG O
ENTRADA
-
- El nombre de cada uno de los conductores - Se desplegara el nombre de cada uno
- El precio de cada uno de los seguros por el tipo de los conductores juntos con el importe
de vehculo (ver tabla) del seguro y el modelo del vehculo
- El modelo de cada uno de los vehculos (X, Y) - El porcentaje de conductores que
tiene menos de 26 aos
- El color de cada uno de los vehculos (1.
Dorado 2. Metalizado) - El porcentaje de personas que tiene
- La edad de cada uno de los conductores entre 31 y 65 aos
- Porcentajes del incremento del seguro (25% y 10%) - Importe total que deben de pagar
entre todos los clientes
- La variable control Bandera o indicador de continuar
(1) o parar (0) - El conductor que paga el mayor importa
- El valor de 100.0 de porcentaje
- Inicio del conteo(0); incremento de conteo 1
c. Proceso
Cont = 0, PMe=0, PMa=0, PorMe=0, PorMa=0, P1=0, P=0, ImporTot=0, MaP=0, Ban=1;
En caso de:
'X' : Es C == 1?
Si: P = 240.41;
M= No: P = 330.00;
'Y' : Es C == 1? Mientras
Si: P = 300.41 (Ban==1)
No: P = 360.00
Es la E < 26?
Si: P1 = P*0.25 + P;
PMe = PMe + 1 ;
No: Es E<= 30?
Si: P1 = P*0.10 + P;
No: P1 = P*0.25 + P;
PMa = PMa + 1;
Es P1 > MaP?
Si: MaP=P1;
Imprimir: "El Automovilista: ", nom, "paga el seguro ms alto de: ", MaP, "(US)"
ImporTot+=P1;
Imprimir: "El Automovilista: ", nom, "tiene un vehiculo modelo", M, "y deber pagar un total de: ", P1, "(US)"
Imprimir: "Desea continuar ? 1. SI o NO"
Leer: Ban
Mientras
Imprimir: " Error Ingrese de datos, Desea continuar ? 1. SI 0. (!(Ban == 1 || Ban == 0))
NO"
Leer Ban
Cont++
PorMe = PMe*100.0/Cont;
PorMa = PMa*100.0/Cont;
Imprimir: "El porcentaje de las personas menores de 26 aos es de :", PorMe
Imprimir: "El porcentaje de las personas entre de 31 y 65 aos es de :", PorMa
Imprimir: "El importe total es de :", ImporTot
Imprimir: "El pago del seguro ms alto de: ", MaP, "(US)"
M='Z';
Mientras
Imprimir: "Digite el modelo del vehculo: X. Modelo x Y. Modelo y (!(M == 'X' || M == 'Y'))
" Leer M
C = -1;
Imprimir: "Digite el color del vehculo: 1. Dorado 2. Mientras
(!(C == 1 || C == 2))
Metalizado" Leer C
E = 10; Mientras
Imprimir: "Digite la edad del conductor: (entre 15 y 65)" (!(E >= 15 && E <= 65))
Leer E
En caso de:
'X' : Es C == 1?
Si: P = 240.41;
M= No: P = 330.00;
'Y': Es C == 1?
Mientras
Si: P = 300.41
No: P = 360.00
(Ban==1)
Es la E < 26?
Si: P1 = P*0.25 + P;
PMe = PMe + 1 ;
No: Es E<= 30?
Si: P1 = P*0.10 + P;
No: P1 = P*0.25 + P;
PMa = PMa + 1;
Es P1 > MaP?
Si: MaP=P1;
Imprimir: "El Automovilista: ", nom, "paga el seguro ms alto de: ", MaP, "(US)"
ImporTot+=P1;
Imprimir: "El Automovilista: ", nom, "tiene un vehiculo modelo", M, "y deber pagar un total de: ", P1, "(US)"
Ban = -1;
Imprimir: "Desea continuar ? 1. SI o NO" Mientras
Leer Ban (!(Ban == 1 || Ban == 0)
Cont++
PorMe = PMe*100/Cont;
PorMa = PMa*100/Cont;
Imprimir: "El porcentaje de las personas menores de 26 aos es de :", PorMe
Imprimir: "El porcentaje de las personas entre de 31 y 65 aos es de :", PorMa
Imprimir: "El importe total es de :", ImporTot
Imprimir: " El pago de seguro ms alto es de: ", MaP, "(US)"
main()
{
char nom[50];
float P1=0,P=0,PorMe=0, PorMa=0,MaP=0, ImporTot=0;
int C,E,PMe=0, PMa=0, Cont=0, Ban;
char M;
fflush(stdin);
Ban=1;
while(Ban==1)
{
puts("Digite El Nombre completo del Conductor: \n\r ");
fflush(stdin);
scanf("%[^\n]s", nom); //gets(nom);
while(!(M=='X'||M=='Y'))
{
puts("Error, Elija Nuevamente el Modelo del vehiculo:");
printf("\n\r X. Modelo x \n\r Y. Modelo y \n\nEleccion del Modelo del Vehiculo:");
M = getche();//scanf("%c", &M);
M = toupper(M);
}
while(!(C==1||C==2))
{
printf("\n\n\nError, Elija Nuevamente el Color del vehiculo:");
printf("\n\r 1. Dorado \n\r 2. Metalizado \n\nEleccion del Color del Vehiculo:");
scanf("%i", &C);
}
//E=10;
puts("Digite la edad del conductor (edad entre 15 y 65)");
scanf("%i", &E);
while(!(E>=15&&E<=65))
{
puts("\n\n\rError, Digite Nuevamente la edad del conductor (edad entre 15 y 65)");
//puts("Digite la edad del conductor (edad entre 15 y 65)");
scanf("%i", &E);
}
switch (M)
{
case 'X': if(C==1)
P=240.41;
else
P=330.00;
break;
if(E<26)
{
P1=P + P*0.25;
PMe=PMe+1;//PMe++;
}
else
if (E<=30)
P1=P + P*0.10;
else
{
P1=P + P*0.25;
PMa=PMa+1;
}
ImporTot+=P1;
printf("\nEl Automovilista: %s tiene un vehiculo modelo %c \ny deber pagar un total de: %.2f (US)", nom, M, P1);
printf("\n\n************************OTRO************************\n\n");
Actualizada: May-09-2015 Pgina 10 de 14 Ing. Luis S. Barrera GT 04 - 08
Actualizada: May-09-2015 Ing. Luis S. Barrera GT 04 - 08
fflush(stdin);
puts("\nDesea continuar ? \n1. SI \n0. NO");
scanf("%i", &Ban);
printf("\n");
while(!(Ban==1||Ban==0))
{
fflush(stdin);
printf(" \nError de datos, \nDesea continuar ? \n1. SI \n0. NO");
scanf("%i", &Ban);
printf("\n\n");
}
Cont++;
}
PorMe = PMe*100.0/Cont;
PorMa = PMa*100.0/Cont;
printf("\n\n**********************RESULTADOS**********************\n\n");
printf("\nEl porcentaje de las personas menores de 26 aos es de : %.1f", PorMe);
printf("\nEl porcentaje de las personas entre de 31 y 65 aos es de : %.1f", PorMa);
printf("\nEl importe total es de: %.2f", ImporTot);
printf("\nEl pago de seguro ms alto es de: %.2f (US)", MaP);
getch();
return 0;
}
main()
{
char nom[50];
float P1=0,P=0,PorMe=0, PorMa=0,MaP=0, ImporTot=0;
int C,E,PMe=0, PMa=0, Cont=0, Ban;
char M;
fflush(stdin);
Ban=1;
while(Ban==1)
{
puts("Digite El Nombre completo del Conductor: \n\r ");
fflush(stdin);
scanf("%[^\n]s", nom); //gets(nom);
while(!(M=='X'||M=='Y'))
{
puts("Error, Elija Nuevamente el Modelo del vehiculo:");
printf("\n\r X. Modelo x \n\r Y. Modelo y \n\nEleccion del Modelo del Vehiculo:");
M = getche();//scanf("%c", &M);
M = toupper(M);
}
while(!(C==1||C==2))
{
printf("\n\n\nError, Elija Nuevamente el Color del vehiculo:");
printf("\n\r 1. Dorado \n\r 2. Metalizado \n\nEleccion del Color del Vehiculo:");
scanf("%i", &C);
}
//E=10;
puts("Digite la edad del conductor (edad entre 15 y 65)");
scanf("%i", &E);
while(!(E>=15&&E<=65))
{
puts("\n\n\rError, Digite Nuevamente la edad del conductor (edad entre 15 y 65)");
//puts("Digite la edad del conductor (edad entre 15 y 65)");
scanf("%i", &E);
}
switch (M)
{
case 'X': if(C==1)
P=240.41;
else
P=330.00;
break;
if(E<26)
{
P1=P + P*0.25;
PMe=PMe+1;//PMe++;
}
else
if (E<=30)
P1=P + P*0.10;
else
{
P1=P + P*0.25;
PMa=PMa+1;
}
ImporTot+=P1;
printf("\nEl Automovilista: %s tiene un vehiculo modelo %c \ny deber pagar un total de: %.2f (US)", nom, M, P1);
printf("\n\n************************OTRO************************\n\n");
Actualizada: May-09-2015 Pgina 13 de 14 Ing. Luis S. Barrera GT 04 - 08
Actualizada: May-09-2015 Ing. Luis S. Barrera GT 04 - 08
Ban = -1;
while(!(Ban==1||Ban==0))
{
puts("\n\nDesea continuar ? \n1. SI \n0. NO");
scanf("%i", &Ban);
printf("\n");
}
Cont++;
}
PorMe = PMe*100.0/Cont;
PorMa = PMa*100.0/Cont;
printf("\n\n**********************RESULTADOS**********************\n\n");
printf("\nEl porcentaje de las personas menores de 26 aos es de : %.1f", PorMe);
printf("\nEl porcentaje de las personas entre de 31 y 65 aos es de : %.1f", PorMa);
printf("\nEl importe total es de: %.2f", ImporTot);
printf("\nEl pago de seguro ms alto es de: %.2f (US)", MaP);
getch();
return 0;
}