Duvida sobre final da resolução de questão C#

Boa dia amigos! Estou resolvendo uma questão em C# (Ainda sou iniciante) e não tem jeito de achar a resposta sobre “Percentual de matrículas rejeitas” que no código está como “PercRejeitada”, sempre o resultado sair como “0”. Vou colocar o código aqui para se alguém puder me dar uma luz sobre o que estou errando. Agradeço antecipadamente!

static void Main(string[] args)
{
            string nome = "";
            int idade, menor15 = 0, menor21 = 0;
            int qtdEscritos = 0;
            double percRejeicao = 0;
            

            Console.WriteLine("Digite o nome ou xx para encerrar: ");
            nome = Console.ReadLine();
            nome = nome.ToLower();

            while (nome != "xx")
            {
                qtdEscritos = qtdEscritos + 1;

               Console.WriteLine("Digite a idade: ");
               idade = Convert.ToInt32(Console.ReadLine());

                if (idade < 15)
                {
                    menor15 = menor15 + 1;
                    Console.WriteLine("Não pode se matricular!!!");
                   

                }
                else if (idade < 21)
                {
                    menor21 = menor21 + 1;
                    Console.WriteLine("Só pode se matricular com um responsável!!");
                    
                }
                else
                {
                    Console.WriteLine("Pode fazer a matricula!!");
                    
                }
                

                Console.WriteLine("Digite o nome ou xx para encerrar: ");
                nome = Console.ReadLine();
                nome = nome.ToLower();

                

            }

            percRejeicao = (menor15 + menor21) / qtdEscritos * 100;
            Console.WriteLine("");
            Console.WriteLine("Fim da matricula!!");
            Console.ReadKey();
            Console.WriteLine("");
            Console.WriteLine("A quantidade menor de 15: " + menor15);
            Console.WriteLine("A quantidade menor de 21: " + menor21);
            Console.WriteLine("A quantidade total de escritos: " + qtdEscritos);
            
            Console.WriteLine("O percentual de matriculas rejeitadas foi de {0}% ",percRejeicao);
            Console.ReadKey();

           
        }
    }
}

Não, olhei sei código mas acredito que você deve fazer essa modificação aqui (no final colocando 100.0 no lugar de apenas 100):

percRejeicao = (menor15 + menor21) / qtdEscritos * 100.0

Você deve ter em mente que em algumas linguagem de programação, a divisão de dois números inteiros também gera um novo inteiro. Ex:

//Divisão de inteiros
20/100 =  0

/* Agora é uma divisão entre um inteiro e um double
 * tendo como resultado um número do tipo double!
 */
20/100.0 = 0.2

//Ou ainda fazendo um cast:

(double)20/100 = 0.2

Bom dia Jelson1! Muito obrigado pela disponibilidade. Tentei sua sugestão mas ainda sai “0” como resposta da solução da percentual de matriculas rejeitadas (As matriculas de menores de 15 e menores de 21) Tentei varias coisas é só dá Zero…

Bom dia! Pode postar o código com as modificações que você fez?

Edit:
Faça isso:

percRejeicao = ((double)(menor15 + menor21) / qtdEscritos) * 100.0;

Poxa, já fiz isso é nada da certo. Penso que estou colocando o algoritmo do cálculo do percentual de matrículas rejeitadas no local errado. Imagino que na está dando certo por motivo simples mas nada de encontrar o código certo!

Você fez o que falei acima? Mostra como você está fazendo? Eu tinha testado o seu código e deu certo.

Bom dia! Obrigado Jelson1, realmente deu certo, e tudo por conta do “(double)” pois quando tiro essa parte o coódigo volta a não funcionar. Essa questão é por ter colocado na formula variáveis Int com Double? Mas foi uma boa lição.

Como eu falei antes, as variáveis: menor15, menor21 e qtdEscritos são do tipo int então o resulta dessa operação também vais ser um número inteiro (sem as casas decimais). Ex:

1 / 2 resulta em 0, em vez de 0.5


Mas agora com o double:
(double)(menor15 + menor21)
Estamos convertendo o resultado dessa soma para um número do tipos double. Então a divisão logo a seguir será entre um double e um int, resultando naquele com uma maior capacidade o double.

Um resumo:

//Soma e subtração:
int + int = int
int + double = double
float + double = double

//Divisão e multiplica
int/int = int
double/int = Double // E assim por diante!

//Obs: em algumas linguagem como Python e
//javascript a divisão entre inteiros já gera um número decimal