TÓPICO

Wrong answer (5%) C#

DavidBelfort perguntou 2 years ago

Gostaria de compreender onde o codigo abaixo poderia estar errado, por gentileza teria como alguém ilumidar minha mente?

using System;

namespace Teste
{
    class Program
    {
        static void Main(string[] args)
        {

            int idadePessoa = int.Parse(Console.ReadLine());
            int ano = idadePessoa / 365;
            int mes = idadePessoa % 365 / 30;
            int dia = ((idadePessoa / 365) * 365) % 30;

            Console.WriteLine(ano + " ano (s)");
            Console.WriteLine(mes + " mes (es)");
            Console.WriteLine(dia + " dia (s)");

        }
    }

}

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • FabricioRamos respondido 2 years ago

    Apesar da dica do @Igor Bavand, você pode fazer desse seu modo porem suas gravações de dados, os "WriteLine", está errados. Se você observar após as palavras ano mes e dia não há espaço entre as possíveis pluralizações, os "(s)" e "(es)".

    Agora, não seria um erro mas sim uma percebição diferente a minha. No resultado de dias você podia simplesmente returnar o calculo da sobra de ano e mês, assim restando os dias. Exemplo:

            var idade = int.Parse(Console.ReadLine());
    
            // 1 = 400 / 365
            var ano = idade / 365;
            // 1 = (400 % 365) / 30
            var mes = (idade % 365) / 30;
            // 5 = (400 % 365) % 30            <=== AQUI O QUE ME RESTAM SÃO APENAS OS DIAS.
            var dia = (idade % 365) % 30;
    
            Console.WriteLine($"{ano} ano(s)");
            Console.WriteLine($"{mes} mes(es)");
            Console.WriteLine($"{dia} dia(s)");
  • IGORBAVAND respondido 2 years ago

    tem um jeito mais simples de fazer com while, cria um contador para ano, mes e dia. dessa forma vc consegur facilmente. :)