Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lista de exercícios - Questão 4

  1. Verificando a maioridade em diferentes países
import "dart:io";

void verificarBrasil(int idade) {
  const int idadeMinimaBrasil = 18;

  print('Regras no Brasil:');
  print('Categorias A e B: 18 anos');
  print('Categorias C, D, E: 21 anos (+ requisitos adicionais)\n');

  if (idade >= idadeMinimaBrasil) {
    print('Você pode tirar habilitação categorias A e B no Brasil!');
    if (idade >= 21) {
      print('Você também pode aplicar para categorias C, D ou E!');
    }
  } else {
    int falta = idadeMinimaBrasil - idade;
    print('Você ainda não pode.');
    print(
      'Faltam $falta ${falta == 1 ? 'ano' : 'anos'} para categoria A ou B.',
    );
  }
}

void verificarEUA(int idade) {
  const int idadeMinimaEUA = 16;

  print('Regras nos EUA:');
  print('Idade mínima: 16 anos (varia por estado)');
  print('Alguns estados: 14-15 anos com permissão de aprendizado\n');

  if (idade >= idadeMinimaEUA) {
    print('Você pode tirar habilitação nos EUA!');
  } else {
    int falta = idadeMinimaEUA - idade;
    print('Você ainda não pode.');
    print('Faltam $falta ${falta == 1 ? 'ano' : 'anos'}.');
  }
}

void verificarJapao(int idade) {
  const int idadeMinimaJapao = 16;

  print('Regras no Japão:');
  print('Moto pequena (até 50cc): 16 anos');
  print('Carro/Moto grande: 18 anos');
  print('Caminhão médio: 20 anos');
  print('Caminhão grande/Ônibus: 21 anos\n');

  if (idade >= 21) {
    print('Você pode tirar qualquer categoria no Japão!');
  } else if (idade >= 20) {
    print(
      'Você pode tirar: Moto pequena, Carro, Moto grande e Caminhão médio!',
    );
  } else if (idade >= 18) {
    print('Você pode tirar: Moto pequena, Carro e Moto grande!');
  } else if (idade >= 16) {
    print('Você pode tirar: Moto pequena (até 50cc)!');
  } else {
    int falta = idadeMinimaJapao - idade;
    print('Você ainda não pode tirar nenhuma habilitação.');
    print('Faltam $falta ${falta == 1 ? 'ano' : 'anos'} para moto pequena.');
  }
}

void main() {
  print('/n========================================');
  print('         CNH International Check');
  print('========================================/n');
  print('');
  print('Qual é a sua idade atual?');
  int? idade = int.tryParse(stdin.readLineSync() ?? '');

  if (idade == null || idade < 0 || idade > 90) {
    print('\n  Erro: Entrada de dados inválido!');
    print('Fim da verificação');
    return;
  }
  // Menu de opções para escolha dos países;
  print('\nPor favor, escolha 1, 2 ou 3.');
  print('1 - Brasil');
  print('2 - EUA');
  print('3 - Japão');
  String? opcao = stdin.readLineSync();

  switch (opcao) {
    case '1':
      print('\n== BRASIL ===');
      verificarBrasil(idade);
    break;

    case '2':
      print('\n=== EUA ===');
      verificarEUA(idade);
    break;

    case '3':
      print('\n=== JAPÃO ===');
      verificarJapao(idade);
    break;

    default:
      print('\nPaís inválido!');
  }
  print('');
  print('/n========================================');
  print('     Obrigado por usar o programa!');
  print('========================================/n');
}
1 resposta
solução!

Olá, José, como vai?

Seu código está muito bem estruturado e demonstra um ótimo domínio das funções, uso de constantes e condicionais. A separação da lógica por país em funções distintas tornou o código bem organizado e fácil de entender. A verificação de idade e a exibição de mensagens estão claras e cumprem bem o objetivo proposto.

Você utilizou boas práticas e tratou corretamente entradas inválidas com tryParse, o que torna o programa mais robusto.

Continue compartilhando seus códigos e explorando novas formas de refinar suas soluções.

O fórum está à disposição para suas dúvidas e projetos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!