online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
<?php class wizard{ //Parâmetros necessário ser configurado corretamente private $tipo_contrato = "pre"; //Apenas podendo configurar com "pre" em caso de pré-pago ou "pos" em caso de pós-pago private $mes_alteracao = 3; //Apenas podendo conter o valor de 1 a 12 private $dia_alteracao = 1; //Apenas podendo configurar com o dia da alteração, sendo um dia existente private $valor_antigo = 89.90; //Apenas podendo conter o valor maior que 0 private $data_vencimento = 28; //Apenas podendo conter o valor de 1 a 28 private $base_periodo_prestacao = "vencimento"; //Apenas podendo configurar com "periodo" ou "vencimento" //---------------------------------------------------------------------------------- private $valor; private $mes_alteracao2; private $mes_dia = [ '1' => 31, '2' => 28, '3' => 31, '4' => 30, '5' => 31, '6' => 30, '7' => 31, '8' => 31, '9' => 30, '10' => 31, '11' => 30, '12' => 31 ]; public function Mudar(){ $this->mes_alteracao2 = $this->mes_alteracao; } public function VerificarParametros(){ //Validação 1 ---------------------------------------------------------------------------------- echo "Verificando o tipo contrato...\n"; if($this -> tipo_contrato == "pos"){ if($this->dia_alteracao < $this->data_vencimento and $this->base_periodo_prestacao == "vencimento"){ $this -> mes_alteracao = $this -> mes_alteracao - 1; } echo "Tipo contrato é um pós-pago\n"; } else if($this -> tipo_contrato == "pre"){ if($this->dia_alteracao < $this->data_vencimento and $this->base_periodo_prestacao == "vencimento"){ $this -> mes_alteracao = $this -> mes_alteracao - 1; } //Validação 2 ---------------------------------------------------------------------------------- echo "Tipo contrato é um pré-pago\n"; } else{ echo "Configuração de Pós pago ou Pré pago inválida, reconfigure na classe wizard"; exit; } echo "Verificando o mês da alteração...\n"; if($this -> mes_alteracao > 0 && $this-> mes_alteracao < 13){ echo "O mês atual é o mês ". $this->mes_alteracao2."\n"; } else{ echo "Configuração do mês de alteração inválida, reconfigure na classe wizard"; exit; } //Validação 3 ---------------------------------------------------------------------------------- echo "Verificando o dia da alteração...\n"; if($this -> dia_alteracao > 0 && $this -> dia_alteracao <= $this -> mes_dia[$this->mes_alteracao]){ echo "O dia atual é ". $this->dia_alteracao."/".$this->mes_alteracao2."\n"; } else{ echo "Configuração do dia de alteração inválida, reconfigure na classe wizard"; exit; } //Validação 4 ---------------------------------------------------------------------------------- echo "Verificando o valor antigo do plano...\n"; if($this -> valor_antigo > 0){ echo "O valor antigo do plano é de ". $this->valor_antigo."\n"; } else{ echo "Configuração do valor antigo do plano inválida, reconfigure na classe wizard"; exit; } //Validação 5 ---------------------------------------------------------------------------------- echo "Verificando a data de vencimento fixo...\n"; if($this -> data_vencimento > 0 && $this -> data_vencimento < 29){ echo "A data de vencimento dixo é dia ". $this->data_vencimento."\n"; } else{ echo "Configuração de vencimento fixo inválida, reconfigure na classe wizard"; exit; } //Validação 6 ---------------------------------------------------------------------------------- echo "Verificando a base periodo prestacao...\n"; if($this -> base_periodo_prestacao == "vencimento" || $this -> base_periodo_prestacao == "periodo"){ echo "A base periodo prestação é de ". $this->base_periodo_prestacao."\n\n"; } else{ echo "Configuração da base periodo prestão é inválida, reconfigure na classe wizard"; exit; } } function VerificarNumero($valor_novo, $tipo_alteracao){ do{ if(is_numeric($valor_novo)){ if($tipo_alteracao=="upgrade"){ if($this->valor_antigo<=$valor_novo){ break; } else{ do{ echo "Valor novo menor que o valor antigo\nPor ser um upgrade é necessário que o valor novo seja maior que o valor antigo\nDigite nvoamente o valor novo, caso deseja fazer um downgrade, pode estar recomeçando a alteração\n"; $valor_novo = trim(fgets(STDIN)); if($this->valor_antigo<=$valor_novo){ break; } }while(true); } } elseif($tipo_alteracao=="downgrade"){ if($this->valor_antigo>=$valor_novo){ break; } else{ do{ echo "Valor novo maior que o valor antigo\nPor ser um downgrade é necessário que o valor novo seja menor que o valor antigo\nDigite nvoamente o valor novo, caso deseja fazer um upgrade, pode estar recomeçando a alteração\n"; $valor_novo = trim(fgets(STDIN)); if($this->valor_antigo>=$valor_novo){ break; } }while(true); } } } else{ $valor_novo = readline("\nValor não aceito, tente novamente: "); } }while(true); } public function CalcularProporcional($valor_novo){ if ($this->mes_alteracao < 1 || $this->mes_alteracao > 12) { if($this->mes_alteracao < 1){ $this->mes_alteracao = 12; } elseif($this->mes_alteracao > 12){ $this->mes_alteracao = 1; } } $valor3 = $valor_novo; $valor_novo = $valor_novo / $this->mes_dia[$this->mes_alteracao]; $this->valor_antigo = $this->valor_antigo / $this->mes_dia[$this->mes_alteracao]; if($this->base_periodo_prestacao == "periodo"){ $valor_boleto = ($this->valor_antigo * ($this->dia_alteracao - 1)) + (($this->mes_dia[$this->mes_alteracao] - ($this->dia_alteracao - 1)) * $valor_novo); } elseif($this->base_periodo_prestacao == "vencimento"){ if($this->data_vencimento < $this->dia_alteracao){ $valor_boleto = ($this->dia_alteracao - $this->data_vencimento); $valor_boleto = ($valor_boleto * $this->valor_antigo) + (($this->mes_dia[$this->mes_alteracao] - $valor_boleto) * $valor_novo); } elseif($this->data_vencimento > $this->dia_alteracao){ $valor_boleto = ($this->data_vencimento - $this->dia_alteracao); $valor_boleto = ($valor_boleto * $valor_novo) + (($this->mes_dia[$this->mes_alteracao] - $valor_boleto) * $this->valor_antigo); } elseif($this->data_vencimento == $this->dia_alteracao){ $valor_boleto = $valor3; } } $this->valor = $valor_boleto; } public function GerarBoleto($valor_novo){ if($this -> tipo_contrato == "pos" and $this->dia_alteracao > $this->data_vencimento){ $this->mes_alteracao2 = $this->mes_alteracao2 + 1; if($this->mes_alteracao2 == 13){ $this->mes_alteracao2 = 1; } } elseif($this -> tipo_contrato == "pre" and $this->dia_alteracao < $this->data_vencimento){ $this->mes_alteracao2 = $this->mes_alteracao2 - 1; if($this->mes_alteracao2 == 0){ $this->mes_alteracao2 = 12; } } echo("\nVai ser gerado um boleto com o vencimento ".$this->data_vencimento."/".$this->mes_alteracao2." no valor de R$ ". number_format($this->valor, 2)). "\n"; echo ("Deseja gerar esse boleto ou gerar o proporcional para a próxima parcela? \n"); do{ $valor1 = readline("Digite 'gerar' ou 'proximo': "); if($valor1 == "proximo"){ $valor2 = $this->valor - $valor_novo; if ($valor2 < 0){ echo "Gerado desconto adicional no valor de R$ ".number_format($valor2, 2); } elseif($valor2 > 0){ echo "Gerado serviço adicional no valor de R$ ".number_format($valor2, 2); } break; } elseif($valor1 == "gerar"){ echo("\nBoleto com o vencimento ".$this->data_vencimento."/".$this->mes_alteracao2." no valor de R$ ". number_format($this->valor, 2)). " gerado!!\n"; break; } else{ echo "Resposta inválida\n"; $valor1 = readline("Digite 'gerar' ou 'proxima': "); if($valor1 == "proximo"){ break; } elseif($valor1 == "gerar"){ echo("\nBoleto com o vencimento ".$this->data_vencimento."/".$this->mes_alteracao2." no valor de R$ ". number_format($this->valor, 2)). " gerado!!\n"; break; } } }while(true); } } function VerficarAlteracao($tipo_alteracao){ while (true){ if($tipo_alteracao != "upgrade" && $tipo_alteracao != "downgrade"){ $tipo_alteracao = readline("\nResposta inválida, tente novamente: "); } else { break; } } } //---------------------------------------------------------------------------------- $wizard = new wizard; $wizard -> Mudar(); $wizard -> VerificarParametros(); $tipo_alteracao = readline("\nÉ um upgrade ou downgrade? \n"); VerficarAlteracao($tipo_alteracao); $valor_novo = readline("Qual o valor do novo plano? \n"); $wizard -> VerificarNumero($valor_novo, $tipo_alteracao); $wizard -> CalcularProporcional($valor_novo); $wizard -> GerarBoleto($valor_novo); ?> //fim

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue