Fórum Preciso de ajuda em um desafio de delphi. #589080
22/11/2017
0
Uma loja vende DVDs por R$ 1,10 a unidade. Acima de 10 unidades, será vendido cada DVD
por R$ 1,00 a unidade adicional e acima de 20 unidades, será vendido cada unidade adicional a
R$ 0,90. Exemplo, vendendo 21 unidades deverá ser cobrado 10x1.10+10x1.00+1x0.90.
Escreva uma função (utilizando Delphi / Pascal) que receba a quantidade de DVDs a ser
vendida e retorne o valor desta venda.
--------
Program Teste ;
var
X, V1, V2, V3: real;
BEGIN
WRITE('Qual a quantidade de discos desejados?');
READLN(X);
IF (X > 0) AND (X <= 10) THEN
begin
V1:= X * 1.10;
write('O Valor de' + FloatToStr(X) + 'discos correspode a: '+ FloatToStr(V1) + 'reais');
end;
IF (X > 10) AND (X <= 20) THEN
begin
V2:= (X - 10) * 1.00 + V1;
write('O Valor de' + FloatToStr(X) + 'discos correspode a: '+ FloatToStr(V2)+ 'reais');
end;
IF (X >= 21) AND (X <= 30) THEN
begin
V3:= (X - 20) * 0.80 + V2;
write('O Valor de' + FloatToStr(X) + 'discos correspode a: '+ FloatToStr(V3)+'reais');
end;
END
Luiz Silva
Curtir tópico
+ 0Posts
25/01/2018
Jerson Boer
Para execução dele adicionei na tela 1 edit + 1 button + 1 memo.
No edit informo a quantidade e realizo a checagem.
procedure TfrmCalcDVD.btnCalcularClick(Sender: TObject);
var
Total : integer;
begin
Total := StrToInt(edtQuantidade.Text);
mmoResultado.Lines.Clear;
if Total <= 10 then
begin
mmoResultado.Lines.Add('O Valor de' + IntToStr(Total) + ' discos correspode a: '+ FloatToStr(Total * 1.10) + ' reais');
end
else if Total <= 20 then
begin
mmoResultado.Lines.Add('O Valor de' + IntToStr(10) + ' discos correspode a: '+ FloatToStr(10 * 1.10) + ' reais');
mmoResultado.Lines.Add('O Valor de' + IntToStr(Total - 10) + ' discos correspode a: '+ FloatToStr(Total - 10 * 1.00) + ' reais');
end
else
begin
mmoResultado.Lines.Add('O Valor de' + IntToStr(10) + ' discos correspode a: '+ FloatToStr(10 * 1.10) + ' reais');
mmoResultado.Lines.Add('O Valor de' + IntToStr(10) + ' discos correspode a: '+ FloatToStr(10 * 1.00) + ' reais');
if (Total - 20) <> 0 then
mmoResultado.Lines.Add('O Valor de' + IntToStr(Total - 20) + ' discos correspode a: '+ FloatToStr((Total - 20) * 0.90) + ' reais');
end;
end;
end.
Gostei + 0
21/06/2018
Luiz Silva
Muito obrigado ajudou bastante. Desculpa não ter respondido antes.
Att,
Gostei + 0
01/03/2023
Bruno Gisse
procedure TForm1.btnCalcMediaClick(Sender: TObject);
var
QtdeDVD : Integer;
Total : Double;
const
MIN_DVD = 10;
MED_DVD = 20;
PRECO_1_10 = 1.10;
PRECO_1_00 = 1.0;
PRECO_0_90 = 0.9;
begin
QtdeDVD := StrToIntDef(editQtdeDVD.Text,0);
total := 0;
if editQtdeDVD.Text <> '' then
begin
if (QtdeDVD <= MIN_DVD) then
Total := QtdeDVD * PRECO_1_10
else if (QtdeDVD < MED_DVD) then
total := (MIN_DVD * PRECO_1_10) + ((QtdeDVD - MIN_DVD) * PRECO_1_00)
else
total := (MIN_DVD * PRECO_1_10) + ((MED_DVD - MIN_DVD) * PRECO_1_00)
+ ((QtdeDVD - MED_DVD) * PRECO_0_90);
ShowMessageFmt('Total das vendas dos DVDs : R$ %.2n', [Total] );
btnLimpar.SetFocus;
end
else
begin
MessageDlg('Por favor, preencha a qtde de DVDs vendidos', mtWarning, [mbOK], 0);
editQtdeDVD.SetFocus;
end;
end;
Gostei + 0
01/03/2023
Arthur Heinrich
function Preco(QDVD : Integer):Double; begin Result := QDVD*1.1 - 0.1*sign(QDVD div 11)*(QDVD-10) - 0.1*sign(QDVD div 21)*(QDVD-20); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)