Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Desafio: Simulador de pedidos em uma cafeteria

"Você foi contratado por uma cafeteria que deseja automatizar o atendimento no balcão. O sistema deve permitir que o atendente registre os pedidos de cada cliente, calcule o valor total e aplique um desconto de 10% para clientes cadastrados."

...

<?php

function registrarPedido() {
    $valorTotal = 0;

    echo "=== Sistema da Cafeteria ===\n";
    $quantidadeItens = (int) readline("Quantos itens o cliente vai pedir? ");

    if ($quantidadeItens <= 0) {
        echo "Nenhum item registrado. Encerrando...\n";
        return;
    }

    for ($i = 1; $i <= $quantidadeItens; $i++) {
        echo "\n--- Item $i ---\n";
        $nomeItem = trim(readline("Nome do item: "));
        $precoItem = (float) readline("Preço (R$): ");
        
        $valorTotal += $precoItem;
    }

    echo "\nResumo: Valor total sem desconto é R$ " . number_format($valorTotal, 2, ',', '.') . "\n";
    
    $cadastro = strtolower(trim(readline("O cliente é cadastrado? (s/n): ")));

    if ($cadastro === 's' || $cadastro === 'sim') {
        $desconto = $valorTotal * 0.10;
        $valorFinal = $valorTotal - $desconto;
        echo "\n[!] Cliente cadastrado: Desconto de 10% aplicado.\n";
        echo "Valor FINAL a pagar: R$ " . number_format($valorFinal, 2, ',', '.') . "\n";
    } else {
        echo "\n[!] Cliente não cadastrado.\n";
        echo "Valor FINAL a pagar: R$ " . number_format($valorTotal, 2, ',', '.') . "\n";
    }
}

registrarPedido();
1 resposta
solução!

@Julia Kimura.

Muito boa a sua solução. Ela é rica em detalhes e bem clara, sem a necessidade de comentários adicionais no seu código para explicação de trechos específicos. Observei que declarou e inicializou uma variável no início da função: $valorTotal.

No algoritmo que elaborei declarei e inicializei uma variável chamada descontoPeloCadastro para permitir que o desconto possa ser parametrizado, apesar de eu não ter implementado a função que alteraria o valor do desconto caso fosse necessário.

Na implementação que fiz, também inclui um loop para que a aplicação só seja finalizada se o usuário selecionar a opção "2- Fechar a aplicação" que implementei em um "menu".

Te agradeço pelo comparilhamento da sua solução.