type Operator = "+" | "-" | "*" | "/";

interface Wynik {
  wynik: number;
  opis: string;
  sukces: boolean;
}

function kalkulator(a: number, b: number, operator: Operator): Wynik {
  let wynik: number;
  let opis: string;
  let sukces = true;

  switch (operator) {
    case "+":
      wynik = a + b;
      opis = `Dodawanie ${a} + ${b}`;
      break;
    case "-":
      wynik = a - b;
      opis = `Odejmowanie ${a} - ${b}`;
      break;
    case "*":
      wynik = a * b;
      opis = `Mnożenie ${a} * ${b}`;
      break;
    case "/":
      if (b === 0) {
        opis = "Błąd: dzielenie przez zero";
        sukces = false;
        wynik = NaN;
      } else {
        wynik = a / b;
        opis = `Dzielenie ${a} / ${b}`;
      }
      break;
    default:
      opis = "Nieznany operator";
      sukces = false;
      wynik = NaN;
  }

  return { wynik, opis, sukces };
}

// Przykłady użycia
const wynik1 = kalkulator(5, 3, "+");      // int + int
const wynik2 = kalkulator(4.5, 2.3, "*");  // float * float
const wynik3 = kalkulator(10, 0, "/");     // dzielenie przez zero

console.log(wynik1);
console.log(wynik2);
console.log(wynik3);
