Você está desenvolvendo o sistema de bilheteria para um cinema.
Os clientes podem ter direito a meia-entrada em duas situações:
- Se tiverem menos de 18 anos
- Se forem estudantes
Sua tarefa é criar um algoritmo em linguagem natural ou gráfica (usando fluxogramas, por exemplo) que avalie as informações do cliente e exiba uma mensagem indicando se ele tem ou não direito ao desconto.
Acabei fazendo em php.
<?php
class User {
public $name;
public $age;
public $email;
public $isStudent = false;
public function __construct($name, $age, $email, $isStudent = false) {
$this->name = $name;
$this->age = $age;
$this->email = $email;
$this->isStudent = $isStudent;
}
}
class TicketService {
const SPECIAL_DISCOUNT = 0.50;
const TICKET_PRICE = 15.00;
public function calculatePrice(User $user) {
if ($user->isStudent || $user->age < 18) {
return self::TICKET_PRICE * self::SPECIAL_DISCOUNT;
}
return self::TICKET_PRICE;
}
}
echo "Bem vindo ao Cinema Kimura!\nHoje nossos ingressos estão com desconto especial para estudantes e crianças.\n";
echo "Você já possui um cadastro? (s/n): ";
$resposta = trim(fgets(STDIN));
$users = [
'teste@teste.com' => new User('Teste', 25, 'teste@teste.com', true)
];
if (strtolower($resposta) == 's') {
echo "Digite seu email: ";
$email = trim(fgets(STDIN));
if (isset($users[$email])) {
$currentUser = $users[$email];
echo "Bem-vindo de volta, {$currentUser->name}!\n";
} else {
echo "Email não encontrado. Por favor, cadastre-se.\n";
echo "Digite seu nome: ";
$name = trim(fgets(STDIN));
echo "Digite sua idade: ";
$age = trim(fgets(STDIN));
echo "Digite seu email: ";
$email = trim(fgets(STDIN));
echo "Você é estudante? (s/n): ";
$isStudent = trim(fgets(STDIN)) === 's';
$newUser = new User($name, $age, $email, $isStudent);
$users[$email] = $currentUser = $newUser;
echo "Cadastro realizado com sucesso! Bem-vindo, {$newUser->name}!\n";
}
}
$movies = ["Vingadores", "O Rei Leão", "Matrix", "Interestelar"];
echo "Qual filme você gostaria de assistir? \nNo momento, temos os seguintes filmes disponíveis:\n";
foreach ($movies as $index => $movie) {
echo ($index + 1) . ". " . $movie . "\n";
}
echo "Digite o número do filme que você deseja assistir: ";
$choice = (int)trim(fgets(STDIN)) - 1;
if (!isset($movies[$choice])) {
echo "Opção inválida. Por favor, tente novamente.\n";
exit;
}
$selectedMovie = $movies[$choice];
$ticketService = new TicketService();
$price = $ticketService->calculatePrice($currentUser);
$message = "Parabéns! Você tem direito a um ingresso gratuito!\n";
if ($price > 0) {
$message = "O preço do seu ingresso é: R$ " . number_format($price, 2) . "\n";
}
echo $message;