Как написать калькулятор

HTML

<body>
  <div class="calculator">
    <input type="text" id="display" disabled />

    <!-- Инженерные кнопки
   <div class="advanced-buttons">
     <button onclick="appendValue('(')">(</button>
     <button onclick="appendValue(')')">)</button>
     <button onclick="appendValue('Math.sin(')">sin</button>
     <button onclick="appendValue('Math.cos(')">cos</button>
     <button onclick="appendValue('Math.tan(')">tan</button>
     <button onclick="appendValue('Math.log(')">log</button>
     <button onclick="appendValue('Math.sqrt(')">√</button>
     <button onclick="appendValue('**')">xⁿ</button>
     <button onclick="appendValue('Math.PI')">π</button>
     <button onclick="appendValue('Math.E')">e</button>
   </div> -->

    <!-- Основные кнопки -->
    <div class="buttons">
      <button onclick="appendValue('7')">7</button>
      <button onclick="appendValue('8')">8</button>
      <button onclick="appendValue('9')">9</button>
      <button onclick="operate('/')">/</button>
      <button onclick="appendValue('4')">4</button>
      <button onclick="appendValue('5')">5</button>
      <button onclick="appendValue('6')">6</button>
      <button onclick="operate('*')">x</button>
      <button onclick="appendValue('1')">1</button>
      <button onclick="appendValue('2')">2</button>
      <button onclick="appendValue('3')">3</button>
      <button onclick="operate('-')">-</button>
      <button onclick="appendValue('0')">0</button>
      <button onclick="appendValue('.')">.</button>
      <button onclick="calculate()">=</button>
      <button onclick="operate('+')">+</button>
      <button onclick="clearDisplay()" class="clear">C</button>
    </div>
  </div>
  <script src="script.js"></script>
</body>

CSS

body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f3f3f3;
  margin: 0;
  font-family: Arial, sans-serif;
}

.calculator {
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
  padding: 20px;
  width: 400px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

#display {
  width: 100%;
  height: 60px;
  margin-bottom: 20px;
  font-size: 1.5rem;
  text-align: right;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 5px;
}

.advanced-buttons,
.buttons {
  display: grid;
  gap: 10px;
  width: 100%;
}

.advanced-buttons {
  grid-template-columns: repeat(5, 1fr); /* Инженерные кнопки: 5 колонок */
}

.buttons {
  grid-template-columns: repeat(4, 1fr); /* Основные кнопки: 4 колонки */
}

button {
  height: 60px;
  font-size: 1.2rem;
  border: none;
  background: #f0f0f0;
  border-radius: 5px;
  cursor: pointer;
  transition: background 0.3s;
  display: flex;
  justify-content: center;
  align-items: center;
}

button:hover {
  background: #ddd;
}

button.clear {
  grid-column: span 4; /* Кнопка очистки занимает всю строку */
  background: #ff4d4d;
  color: white;
}

JS

const display = document.getElementById("display");

// Добавление значения на дисплей
function appendValue(value) {
  display.value += value;
}

// Очистка дисплея
function clearDisplay() {
  display.value = "";
}

// Добавление операций
function operate(operator) {
  display.value += " " + operator + " ";
}

// Вычисление выражения
function calculate() {
  try {
    // Используем eval для выполнения математических операций
    display.value = eval(display.value.replace("x", "*"));
  } catch (e) {
    display.value = "Error";
  }
}