Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sacar porciento en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=67665)

hervicen 29-04-2010 03:34:08

Sacar porciento en Delphi
 
Hola todos he iniciado un cur de programacion y me han entregado un manual y he comensado a leerlo sin asistir a mi primera clase, en el manaul me plantean el siguiente problema.

3. Dado el monto de venta de un vendedor, es: RD$50.000,00; calcular la comision de venta de dicho vendedor, la cual corresponde al 10% del monto vendido..

Con los pocos conocimientos que he adquirod del manual lo he planteado de la suiguiente manera en Delphi
Código Delphi [-]
 
var
MV, PO, CO: Integer;
begin
 MV:=StrtoINt(edit1.text);
 PO:=StrtoINt(edit2.text);
 CO:=StrtoINt(edit1.text)*StrtoINt(edit2.text)/100);
 edit3.Text:=INtToStr(CO);
pero me da un error y no se como solucionalo,

Si alguien me pudiera explicar de favor se lo agradeseria..

Lord Delfos 29-04-2010 06:06:27

El problema es que tu variable CO es de tipo Integer. Las variables de tipo integer solamente pueden contener números enteros.

Cuando hacés

CO:=StrtoINt(edit1.text)*StrtoINt(edit2.text)/100);

Lo que obtenés es un número real, porque la división con "/" genera un número real (independientemente de si el resultado es "con coma" o sin ella). Ahí está el problema.

¿Solución? Pues declarar CO como una variable real.

Código Delphi [-]
var MV, PO: Integer;
     CO: Real;

begin
  MV:= StrToInt(edit1.text);
  PO:= StrToInt(edit2.text);
  CO:= StrToInt(edit1.text) * StrToInt(edit2.text) / 100;
  edit3.Text:= FormatFloat('%f', [CO]);
end;

PD: También te sobraba un paréntesis en esa linea.

PD2: Comentario obligado a todo usuario nuevo. ¡Bienvenido! y pegale una leída a la guía de estilo.

PD3: ¡Fijate bien dónde ponés los hilos! :) El foro de Debates es, como su nombre lo indica, para debates.

Ñuño Martínez 29-04-2010 09:53:39

Hola y bienvenido, hervicen.

Sólo comentarte que, la próxima vez que hagas una consulta a causa de un error, estaría bien que citaras dicho error. Más que nada porque un compilador puede devolver miles de posibles errores, por lo que muchas veces decir únicamente "me sale un error" no es ni por mucho suficiente. De hecho, hoy has tenido suerte, pero en el futuro puede no ser así.

Pues eso: ¡ánimo y al toro! :D

hervicen 29-04-2010 12:55:25

Muchas gracias.....

Me sirve de Mucho..
Ademas voy a tener presente todas sus sugerencias..

AzidRain 29-04-2010 21:56:56

Ñuño, sin que tenga que ver gran cosa con resolver el problema de nuestro nuevo amigo, que comes que adivinas, me parece que el clásico "Me sale un error" o "Me marca error" es creo por mucho la frase mas socorrida del usuario final...a quien no le ha tocado. OJO: No estoy atacando a hervicen ni criticando su post, pero me acordé de lo que muchos casos de usuarios.

Ñuño Martínez 30-04-2010 09:29:02

Tienes razón, AzidRain. Es más: ayer mismo recibí por enésima vez un mensaje de correo de un usuario diciendo que "no funciona". Literalmente. >.<

hervicen 30-04-2010 17:22:34

Interes Compuesto
 
ESpero que me tengan Paciencia, pues como les explique estoy nuevesito en esto de programacion en delphi.

he estado intentando resolver un problema de interes compuesto y lo he planteado de esta forma:

Var
Prestamo, Plazo, Interes: Integer;
Cuotas: Real;
begin
Prestamo:=StrtoINt(edit1.Text);
Plazo:=StrtoINt(edit2.Text);
Interes:=StrtoINt(edit3.Text);
Cuotas:=(Prestamo*(1+(Interes/100))^Plazo)/Plazo;
edit4.text:=formatFloat([Cuotas]);
end;

Al correrlo me arroja el siguiente error:

[Error]Unit1.pas(43):Pointer type Required.

Si me pudieran ayudar de favor..!!!!

Lord Delfos 30-04-2010 17:35:27

Eso es porque el símbolo "^" no es la potencia. Es el símbolo de dereferencia de punteros...

Lo que tendrías que hacer es usar la función Power:

Código Delphi [-]

uses ..., Math, ...;

[...]

Cuotas:= (Prestamo * Power((1+(Interes/100)), Plazo)) / Plazo;

hervicen 30-04-2010 19:02:11

Utilizando esta sentencias

Var
Prestamo, Plazo, Interes: Integer;
Cuotas: Real;
begin
Prestamo:=StrtoINt(edit1.Text);
Plazo:=StrtoINt(edit2.Text);
Interes:=StrtoINt(edit3.Text);
Cuotas:=(Prestamo * Power(1+(Interes/100)),Plazo)/Plazo;
edit4.text:=formatFloat([Cuotas]);

Me arroja el siguiente error:

[Error]Unit1.pas(43):Undeclared indentifier:'Power'
[Error]Unit1.pas(43):')' expected but ',' found

Lord Delfos 30-04-2010 21:55:50

Es que hay varios errores...

[1] "Undeclared indentifier:'Power'" se debe a que no agregaste la unidad Math a la cláusula uses. Las funciones, tipos de datos, variables, constantes, etc. están contenidas en unidades. Para poder usarlas tenés que decirle al compilador que incluya dicha unidad. La función Power está declarada en la unidad Math, así que donde dice "uses UnMontónDeCosas" tenés que agregar el Math.

[2] No sé porqué lo puse, pero es FormatFloat('%f', Cuotas). El primer parámetro es el formato que se le va a dar, y el segundo es el número en cuestión.

[3] "')' expected but ',' found". Que espere un paréntesis y encuentre una coma usualmente significa que te está faltando un paréntesis. Concretamente, al principio de la sentencia "Cuotas:= (Prestamo..." tenés un "(" que no coincide con ninguno, es decir que sobra, o que falta el ")" complementario.

AzidRain 30-04-2010 22:18:25

Una sugerencia Hervicen, no te limites a únicamente hacer lo que te vamos sugieriendo y poner código, compilar y ver que pasa. Así vas a aprender muy poco. Los 2 erroes que mencionas en tu último post son sencillos de resolver si lee uno la ayuda de Delphi, ahi hubieras visto que es lo que hace Power() y que requisitos hay que cumplir para usarla, en este caso añadir el uses math como te dijo Delfos, el otro error tambiés muy obvio pues analizando la setencia te darías cuenta que o te falta un paréntesis al final o bien te sobra el que pusiste al principio, cualquiera de las 2 soluciones te sirve.

Todos empezamos como tú, asi que no te sientas cohibido ni nada nomás si ten en cuenta la recomendación a la larga te será muy útil y te ayudará a resolver los problemas mas rápidamente pues poco a poco dependerás menos de la ayuda de otros para resolver pequeñas cosas y podrás recibir tb ayuda más rápidamente al irte explicando mejor cada vez.

Como dicen los maestros zen "La paciencia es la llave del paraiso"

hervicen 30-04-2010 22:39:07

Ok. Comprendi Lord Delfos..!!!!

Azidrain, gracias muy buena tu sugerencias, tienes rozon. Pasa que uno medio se turba cuando esta tratando de aprender y algo le sale mal.

Realmente me son muy fructiferas sus explicaciones, para que vean he resulto 9 de 10 problemas planteados en mi manual y aun no he asistido a mi primera clase que sera el proximo martes....

Gracias a ustedes creo que voy avanzando.. No duden en corregirme cauquier error que cometa, con sinceridad no me ofendo...

Gracias...

Espero en futuro muy Proximo estar ayudando personas al igual que ustedes.!!!!


La franja horaria es GMT +2. Ahora son las 08:26:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi