
AYUDA - Algoritmo para calcular monto de pago
#1
Escrito 01 diciembre 2011 - 01:30
tarifa basica=5000 bs los primeros 400 impulsos y el resto a 60 bspor inpulsos adicionales.
tarifa intermedia=9000 bs los primeros 400 impulsos y el resto a 70 bspor inpulsos adicionales
tarifa maxima=12000 bs los primeros 400 impulsos y el resto a 80 bspor inpulsos adicionales
se requiere diseñar un algoritmo que permita calcular el monto a pagar a CANTV
#2
Escrito 01 diciembre 2011 - 01:36
Y........ ¿ Cual es la ayuda que solicitas ?
Saludos
#3
Escrito 01 diciembre 2011 - 02:15
#4
Escrito 01 diciembre 2011 - 02:19
tarifa intermedia=9000 bs los primeros 400 impulsos y el resto a 70 bspor inpulsos adicionales
tarifa maxima=12000 bs los primeros 400 impulsos y el resto a 80 bspor inpulsos adicionales
de ahi tengo ke sacar la fomula!
#5
Escrito 01 diciembre 2011 - 02:33
TotalaPagar = MontoPlan + ((totalImpulsos - 400) * ValorImpulsoPlan)

#6
Escrito 01 diciembre 2011 - 02:46
uses crt;
const adi=0.06;
impulso2=0.07;
impulso3=0.08;
basica=5.00;
intermedia=9.00;
maxima=12.00;
var
tarifa,impulso: integer;
codigo,precio,total: real;
begin
clrscr;
writeln('TAQUILLA DE PAGO CANTV');
writeln('Codigo del Cliente');
read(codigo);
writeln(' SELECCIONE TARIFA POR SERVICIO');
writeln('1) TARIFA BASICA');
writeln('2) TARIFA INTERMEDIA');
writeln('3) TARIFA MAXIMA');
writeln('Ingrese el Tipo de Tarifa: ');
read(tarifa);
case tarifa of
1: precio:=basica;
2: precio:=intermedia;
3: precio:=maxima;
end;
write('Ingrese cantidad de Inpulsos: ');
read(impulso);
if tarifa=1 then
if ((impulso >0 )and impulso <400)) then
total:=basica
else
if impulso > 400 then
total:=basica+((impulso-400)*(adi);
writeln('el monto a cancelar es:',total:5:2);
readkey;
end.
[/pascal]
haci?
#7
Escrito 01 diciembre 2011 - 03:04
#8
Escrito 01 diciembre 2011 - 03:21
funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero Si Tarifa = 'basica' entonces Si Pulsos < 400 entonces Coste = Pulsos * 5000 Sino Coste = (400 * 5000) + ((Pulsos - 400) * 60) finSi finSi Si Tarifa = 'intermedia' entonces Si Pulsos < 400 entonces Coste = Pulsos * 9000 Sino Coste = (400 * 9000) + ((Pulsos - 400) * 70) finSi finSi Si Tarifa = 'maxima' entonces Si Pulsos < 400 entonces Coste = Pulsos * 12000 Sino Coste = (400 * 12000) + ((Pulsos - 400) * 80) finSi finSi finFuncion
Saludos.
#9
Escrito 01 diciembre 2011 - 03:24
Buenos días
delphi
funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero Si Tarifa = 'basica' entonces Si Pulsos < 400 entonces Coste = Pulsos * 5000 Sino Coste = (400 * 5000) + ((Pulsos - 400) * 60) finSi finSi Si Tarifa = 'intermedia' entonces Si Pulsos < 400 entonces Coste = Pulsos * 9000 Sino Coste = (400 * 9000) + ((Pulsos - 400) * 70) finSi finSi Si Tarifa = 'maxima' entonces Si Pulsos < 400 entonces Coste = Pulsos * 12000 Sino Coste = (400 * 12000) + ((Pulsos - 400) * 80) finSi finSi finFuncion
Saludos.
Saludos.
Vaya que tenía tiempo que no veía pseudo-código (Desde la universidad).

#10
Escrito 01 diciembre 2011 - 03:35
Saludos.
Vaya que tenía tiempo que no veía pseudo-código (Desde la universidad).
Sí

En este caso, donde nos pide el algoritmo para realizar un cálculo, me parece que es lo más indicado ya que así el algoritmo le será muy fácil de entender.

#11
Escrito 01 diciembre 2011 - 03:36
#12
Escrito 01 diciembre 2011 - 03:40
Que util seria el codigo si fuera en español y asi de facil de entender.Buenos días
delphi
funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero Si Tarifa = 'basica' entonces Si Pulsos < 400 entonces Coste = Pulsos * 5000 Sino Coste = (400 * 5000) + ((Pulsos - 400) * 60) finSi finSi Si Tarifa = 'intermedia' entonces Si Pulsos < 400 entonces Coste = Pulsos * 9000 Sino Coste = (400 * 9000) + ((Pulsos - 400) * 70) finSi finSi Si Tarifa = 'maxima' entonces Si Pulsos < 400 entonces Coste = Pulsos * 12000 Sino Coste = (400 * 12000) + ((Pulsos - 400) * 80) finSi finSi finFuncion
Saludos.

Saludos
#13
Escrito 01 diciembre 2011 - 03:45
Y en pascal como seria eso por favor plis nesito para ahorita!
Lo bueno de utilizar pseudo-código es que la traducción a Pascal es inmediata (por eso te recomiendo que lo utilices siempre que tengas dudas).
Este es el mismo algoritmo en Pascal :
function Coste(Tarifa: string, Pulsos: integer): integer if Tarifa = 'basica' then begin if Pulsos < 400 then begin Result := Pulsos * 5000; end else begin Result := (400 * 5000) + ((Pulsos - 400) * 60); end; end; if Tarifa = 'intermedia' then begin if Pulsos < 400 then begin Result := Pulsos * 9000; end else begin Result := (400 * 9000) + ((Pulsos - 400) * 70); end; end; if Tarifa = 'maxima' then begin if Pulsos < 400 then begin Result := Pulsos * 12000; end else begin Result := (400 * 12000) + ((Pulsos - 400) * 80); end; end; end;
Pero vamos, que si no has sabido hacer este cambio, antes de seguir programando necesitas leer al menos los primeros capítulos de cualquier libro de introducción a Pascal / Object Pascal.
Si quieres te podemos recomendar alguno que esté disponible on-line.
Saludos.
#14
Escrito 01 diciembre 2011 - 03:50
Amigo Marc te falta la explicación del uso de esa Función, ya que estamos aprendiendo hay que dar la lección completa.


Saludos
PD: No ves que necesitamos pasar esta clase.

#15
Escrito 01 diciembre 2011 - 04:03

#16
Escrito 01 diciembre 2011 - 04:04
Hola
Amigo Marc te falta la explicación del uso de esa Función, ya que estamos aprendiendo hay que dar la lección completa.![]()
Saludos
PD: No ves que necesitamos pasar esta clase.
Jajajaja, ¿ de verdad crees que hace falta ?

Darsro, esta función necesita que le pases dos parámetros : Tarifa y Pulsos, y te devolverá el coste de esos Pulsos con dicha Tarifa.
No te pongo un ejemplo en Pascal, porqué no conozco su función de formateo de un entero. En Delphi (Object Pascal), puedes utilizar esta función en una llamada de este estilo.
ShowMessage(IntToStr(Coste('intermedia', 625)) + ' bs.');
El ShowMessage es parecido al WriteLn que utilizas en tu programa, y el IntToStr es para pasar de Entero a Cadena (la cadena que queremos que devuelva el programa, con el coste deseado).
En este caso, como estamos pidiendo al programa que devuelva el Coste de 625 pulsos con Tarifa intermedia, lo que hará esa llamada de ejemplo es mostrar en pantalla : '3615750 bs.'
Saludos.
#17
Escrito 01 diciembre 2011 - 04:07

#18
Escrito 01 diciembre 2011 - 04:09

#19
Escrito 01 diciembre 2011 - 04:12
#20
Escrito 01 diciembre 2011 - 04:20
Tu programa será algo de este estilo :
[pascal]program factura;
uses crt;
var codigo, tarifa, impulso: integer;
function Coste(Tarifa: integer; Pulsos: integer): integer;
begin
if Tarifa = 1 then begin
if Pulsos < 400 then begin
Result := Pulsos * 5000;
end
else begin
Result := (400 * 5000) + ((Pulsos - 400) * 60);
end;
end;
if Tarifa = 2 then begin
if Pulsos < 400 then begin
Result := Pulsos * 9000;
end
else begin
Result := (400 * 9000) + ((Pulsos - 400) * 70);
end;
end;
if Tarifa = 3 then begin
if Pulsos < 400 then begin
Result := Pulsos * 12000;
end
else begin
Result := (400 * 12000) + ((Pulsos - 400) * 80);
end;
end;
end;
begin
clrscr;
writeln('TAQUILLA DE PAGO CANTV');
writeln('Codigo del Cliente');
read(codigo);
writeln(' SELECCIONE TARIFA POR SERVICIO');
writeln('1) TARIFA BASICA');
writeln('2) TARIFA INTERMEDIA');
writeln('3) TARIFA MAXIMA');
writeln('Ingrese el Tipo de Tarifa: ');
read(tarifa);
writeln('Ingrese cantidad de Inpulsos: ');
read(impulso);
writeln('el monto a cancelar es:', Coste(tarifa, impulso));
end.
[/pascal]
Si no te funciona, vas a tener que poner también algo de tu parte y no esperar que te lo demos todo ya hecho.
Saludos (me desconecto porqué para mi ya casi es medianoche).