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

[Dúvida] Exercício 2

Olá, não consegui aplicar o exercício de número 2 teria como pastar a solução?

1 resposta
solução!

Oi Rafael, tudo bem?

Vou te ajudar a implementar essa funcionalidade no KakoBot. A ideia é adicionar suporte para operações matemáticas simples, como adição, subtração, multiplicação e divisão.

import 'dart:io';

void main() async {
  String kakoBot = 'KakoBOT:\n';
  var a = true;
  String usuario = '';

  print('-- Iniciando o KakoBOT, aguarde..--');
  await clock(3);
  print('KakoBOT:\n Oi :) \n Como posso ajudar?');
  do {
    usuario = stdin.readLineSync().toString();
    await clock(1);

    if (usuario.toLowerCase() == 'xau') {
      a = false;
      print(kakoBot + ' Até a próxima!!');
    } else if (isMathOperation(usuario)) {
      // Verifica se a entrada do usuário é uma operação matemática
      calculateMathOperation(usuario);
    } else {
      print(kakoBot +
          ' Não fui treinado para responder a essa pergunta \n Desculpe :( ');
      print(kakoBot + ' Você pode fazer outra pergunta ou dizer Adeus');
    }
  } while (a);

  print('--Encerrando KakoBOT--');
}

bool isMathOperation(String input) {
  // Verifica se a entrada do usuário contém operadores matemáticos
  return input.contains('+') ||
      input.contains('-') ||
      input.contains('*') ||
      input.contains('/');
}

void calculateMathOperation(String input) {
  // Divide a entrada do usuário em partes com base nos operadores matemáticos
  List<String> parts = input.split(RegExp(r'[+\-*/]'));

  // Remove espaços em branco das partes
  parts = parts.map((part) => part.trim()).toList();

  // Encontra o operador na entrada do usuário
  String operator = input.split(RegExp(r'[0-9]')).skip(1).first.trim();

  try {
    // Converte as partes em números
    double num1 = double.parse(parts[0]);
    double num2 = double.parse(parts[1]);

    // Realiza a operação matemática com base no operador
    double result;
    switch (operator) {
      case '+':
        result = num1 + num2;
        break;
      case '-':
        result = num1 - num2;
        break;
      case '*':
        result = num1 * num2;
        break;
      case '/':
        result = num1 / num2;
        break;
      default:
        print('Operador inválido');
        return;
    }

    print('KakoBot: $input é $result');
  } catch (e) {
    print('KakoBot: Desculpe, não consegui entender a operação matemática.');
  }
}

Future<void> clock(int seconds) async {
  // Simula uma espera de tempo
  await Future.delayed(Duration(seconds: seconds));
}

No código adicionei duas funções novas: isMathOperation e calculateMathOperation. A primeira verifica se a entrada do usuário contém operadores matemáticos, e a segunda realiza o cálculo da operação matemática.

Não esqueça de incluir essas funções no seu código, e teste a interação com o KakoBot usando operações matemáticas.

Lembrando que essa é uma ideia de como você pode fazer, com esse exemplo você pode criar o seu. É muito importante praticar.

Um abraço e bons estudos.