Ir al contenido


Foto

AYUDA - Algoritmo para calcular monto de pago


  • Por favor identifícate para responder
21 respuestas en este tema

#1 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 01:30

Qpara la cancelacion del servicio de CANTV se requiere la siguiente informacion : codigode cliente ,tarifa del servicio y numero de impulsos la tarifa puede ser:tarifa basica,tarifa intermedia,tarifa maxima.

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
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 diciembre 2011 - 01:36

Hola darsro, bienvenido a DelphiAccess

Y........ ¿ Cual es la ayuda que solicitas ?

Saludos
  • 0

#3 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 02:15

mira nesesito una idea sobre como desarrollo ese algoritmo por favor la formula que tengo que usar
  • 0

#4 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 02:19

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

de ahi tengo ke sacar la fomula!
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 01 diciembre 2011 - 02:33

Esta es la formula

TotalaPagar = MontoPlan + ((totalImpulsos - 400) * ValorImpulsoPlan)


(y)
  • 0

#6 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 02:46

[pascal]program factura;
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?
  • 0

#7 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 03:04

por favorrrrrrrrrrrrrrr
  • 0

#8 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 01 diciembre 2011 - 03:21

Buenos días



delphi
  1. funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero
  2.  
  3.   Si Tarifa = 'basica' entonces
  4.     Si Pulsos < 400 entonces
  5.       Coste = Pulsos * 5000
  6.     Sino
  7.       Coste = (400 * 5000) + ((Pulsos - 400) * 60)
  8.     finSi
  9.   finSi
  10.  
  11.   Si Tarifa = 'intermedia' entonces
  12.     Si Pulsos < 400 entonces
  13.       Coste = Pulsos * 9000
  14.     Sino
  15.       Coste = (400 * 9000) + ((Pulsos - 400) * 70)
  16.     finSi
  17.   finSi
  18.  
  19.   Si Tarifa = 'maxima' entonces
  20.     Si Pulsos < 400 entonces
  21.       Coste = Pulsos * 12000
  22.     Sino
  23.       Coste = (400 * 12000) + ((Pulsos - 400) * 80)
  24.     finSi
  25.   finSi
  26.  
  27. finFuncion



Saludos.
  • 0

#9 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 01 diciembre 2011 - 03:24

Buenos días



delphi
  1. funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero
  2.  
  3.   Si Tarifa = 'basica' entonces
  4.     Si Pulsos < 400 entonces
  5.       Coste = Pulsos * 5000
  6.     Sino
  7.       Coste = (400 * 5000) + ((Pulsos - 400) * 60)
  8.     finSi
  9.   finSi
  10.  
  11.   Si Tarifa = 'intermedia' entonces
  12.     Si Pulsos < 400 entonces
  13.       Coste = Pulsos * 9000
  14.     Sino
  15.       Coste = (400 * 9000) + ((Pulsos - 400) * 70)
  16.     finSi
  17.   finSi
  18.  
  19.   Si Tarifa = 'maxima' entonces
  20.     Si Pulsos < 400 entonces
  21.       Coste = Pulsos * 12000
  22.     Sino
  23.       Coste = (400 * 12000) + ((Pulsos - 400) * 80)
  24.     finSi
  25.   finSi
  26.  
  27. finFuncion



Saludos.


Saludos.

Vaya que tenía tiempo que no veía pseudo-código (Desde la universidad).

:cheesy:
  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 01 diciembre 2011 - 03:35

Saludos.

Vaya que tenía tiempo que no veía pseudo-código (Desde la universidad).

:cheesy:


:D. Aún lo sigo utilizando, de vez en cuando, si tengo que recurrir a papel y lápiz porqué un algoritmo se me resiste.

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.

:)
  • 0

#11 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 03:36

Y en pascal como seria eso por favor plis nesito para ahorita!
  • 0

#12 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 01 diciembre 2011 - 03:40

Hola

Buenos días



delphi
  1. funcion Coste(Tarifa: Cadena, Pulsos: Entero): Entero
  2.  
  3.   Si Tarifa = 'basica' entonces
  4.     Si Pulsos < 400 entonces
  5.       Coste = Pulsos * 5000
  6.     Sino
  7.       Coste = (400 * 5000) + ((Pulsos - 400) * 60)
  8.     finSi
  9.   finSi
  10.  
  11.   Si Tarifa = 'intermedia' entonces
  12.     Si Pulsos < 400 entonces
  13.       Coste = Pulsos * 9000
  14.     Sino
  15.       Coste = (400 * 9000) + ((Pulsos - 400) * 70)
  16.     finSi
  17.   finSi
  18.  
  19.   Si Tarifa = 'maxima' entonces
  20.     Si Pulsos < 400 entonces
  21.       Coste = Pulsos * 12000
  22.     Sino
  23.       Coste = (400 * 12000) + ((Pulsos - 400) * 80)
  24.     finSi
  25.   finSi
  26.  
  27. finFuncion



Saludos.

Que util seria el codigo si fuera en español y asi de facil de entender. (y)
Saludos
  • 0

#13 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 01 diciembre 2011 - 03:45

Hola.

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 :



delphi
  1. function Coste(Tarifa: string, Pulsos: integer): integer
  2.  
  3.   if Tarifa = 'basica' then begin
  4.     if Pulsos < 400 then begin
  5.       Result := Pulsos * 5000;
  6.     end
  7.     else begin
  8.       Result := (400 * 5000) + ((Pulsos - 400) * 60);
  9.     end;
  10.   end;
  11.  
  12.   if Tarifa = 'intermedia' then begin
  13.     if Pulsos < 400 then begin
  14.       Result := Pulsos * 9000;
  15.     end
  16.     else begin
  17.       Result := (400 * 9000) + ((Pulsos - 400) * 70);
  18.     end;
  19.   end;
  20.  
  21.   if Tarifa = 'maxima' then begin
  22.     if Pulsos < 400 then begin
  23.       Result := Pulsos * 12000;
  24.     end
  25.     else begin
  26.       Result := (400 * 12000) + ((Pulsos - 400) * 80);
  27.     end;
  28.   end;
  29.  
  30. 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.
  • 0

#14 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 01 diciembre 2011 - 03:50

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. *-) (y)
Saludos
PD: No ves que necesitamos pasar esta clase.  :wink:
  • 0

#15 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 04:03

No me corre el programa por que :s lo copie tal igual esta en el foro yno correo
  • 0

#16 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

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. *-) (y)
Saludos
PD: No ves que necesitamos pasar esta clase.  :wink:


Jajajaja, ¿ de verdad crees que hace falta ? :D

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.

  • 0

#17 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 04:07

amigo marc pero no me corre el programa, :s
  • 0

#18 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 04:09

Amigo marc no me corre el programa :s
  • 0

#19 darsro

darsro

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 01 diciembre 2011 - 04:12

Si tienes algun Skype dejalo para porder hablar mejor por que de verdad nesesito aprender !
  • 0

#20 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 01 diciembre 2011 - 04:20

Lo siento, pero no conozco la sintaxis exacta de tu compilador Pascal.

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).
  • 0




IP.Board spam blocked by CleanTalk.