<?php

// Leia quatro números (N1, N2, N3, N4), cada um deles com uma casa decimal, correspondente às quatro notas de um aluno.
// Calcule a média com pesos 2, 3, 4 e 1, respectivamente, para cada uma destas notas e mostre esta média acompanhada pela mensagem "Media: ".
// Se esta média for maior ou igual a 7.0, imprima a mensagem "Aluno aprovado.". Se a média calculada for inferior a 5.0,
// imprima a mensagem "Aluno reprovado.". Se a média calculada for um valor entre 5.0 e 6.9, inclusive estas,
// o programa deve imprimir a mensagem "Aluno em exame.".

// No caso do aluno estar em exame, leia um valor correspondente à nota do exame obtida pelo aluno.
// Imprima então a mensagem "Nota do exame: " acompanhada pela nota digitada. 
// Recalcule a média (some a pontuação do exame com a média anteriormente calculada e divida por 2). e 
// imprima a mensagem "Aluno aprovado." (caso a média final seja 5.0 ou mais ) ou "Aluno reprovado.", 
// (caso a média tenha ficado 4.9 ou menos). Para estes dois casos (aprovado ou reprovado após ter pego exame)
// apresente na última linha uma mensagem "Media final: " seguido da média final para esse aluno.
// Entrada

// A entrada contém quatro números de ponto flutuante correspendentes as notas dos alunos.
// Saída

// Todas as respostas devem ser apresentadas com uma casa decimal. As mensagens devem ser impressas conforme a descrição do problema. 
// Não esqueça de imprimir o enter após o final de cada linha, caso contrário obterá "Presentation Error".

function readInput()
{
    return array_map(
        'floatval',
        explode(" ",trim(fgets(STDIN)))
    );
}


function readNotaExame()
{
    return floatval(trim(fgets(STDIN)));
}

function calcMediaPonderada(array $notas, array $pesos): float
{
    $total = array_reduce(
        array_keys($notas),
        function (float $acumulador, int $indice) use ($notas, $pesos): float {
            return $acumulador + ($notas[$indice] * $pesos[$indice]);
        },
        0
    );

    return $total / array_sum($pesos);
}

function calcMedia($notas)
{ 
    [$N1,$N2,$N3,$N4] = $notas;
    
    $media = ($N1*2 + $N2*3 + $N3*4 + $N4*1) / 10;

    return ($media * 100) / 100;
}

$notas = readNotas();

$media = calcMedia($notas);

printf("Media: %.1f" . PHP_EOL, $media);
// echo "Media: " .  number_format($media,1,".","") . PHP_EOL;

if( $media >= 7.0)
{    
    printf("Aluno aprovado." . PHP_EOL);
}elseif($media < 5.0){
    printf("Aluno reprovado." . PHP_EOL);
}elseif($media >= 5.0 && $media < 7.0){

    printf("Aluno em exame." . PHP_EOL);
    
    $notaExame = readNotaExame();

    printf("Nota do exame: %.1f" . PHP_EOL, $notaExame);    
    
    $mediaFinal = ($notaExame + $media) / 2.0;
     
    if($mediaFinal >= 5.0){
        printf("Aluno aprovado." . PHP_EOL);
    } else{
        printf("Aluno reprovado." . PHP_EOL);
    }

    printf("Media final: %.1f" . PHP_EOL, $mediaFinal);    
}






































































Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: