🌐
50 React Coding Puzzles
  • 50 React Coding Puzzles
  • Contact
  • Reviews
  • Table of Contents
  • Introduction
  • 1 - Simple Counter App
  • 2 - Dynamic List of Items with Strikethrough
  • 3 - Color Picker with Hex Code Display
  • 4 - Password Strength Checker
  • 5 - Countdown Timer with Audio
  • 6 - Dynamic Movie List with Filtering and Sorting
  • 7 - Text Animation Component (Fade/Scroll)
  • 8 - Dynamically Generated Text Art
  • 9 - Meme Generator with Custom Text
  • 10 - "What Should I Eat?" Random Recipe Generator
  • 11 - Simple Quiz App with Multiple Choice
  • 12 - Unit Converter
  • 13 - Dynamic Image Gallery with Lightbox
  • 14 - Weather Widget with Temperature and Description
  • 15 - Contact Form with Email and Message Validation
  • 16 - Color Palette Generator
  • 17 - Drag-and-Drop Feature for Rearranging Items
  • 18 - Interactive Quiz with Dynamic Results and Feedback
  • 19 - To-Do List with Task Categorization
  • 20 - Note-Taking App with Markdown Support
  • 21 - Simple Calculator with Basic Operations
  • 22 - Word Scramble Game with Timer and Score
  • 23 - Number Guessing Game
  • 24 - Digital Clock with Time Zone Support
  • 25 - Interactive Time Zone Converter
  • 26 - Weather Forecast App with Location Detection
  • 27 - Real-Time Stock Ticker with Updates
  • 28 - Virtual Dice Roller with Multiple Dice
  • 29 - Responsive Navigation Menu with Dropdowns
  • 30 - Progress Bar for Loading or Task Completion
  • 31 - Modal Window for Alerts and Confirmations
  • 32 - Infinite Scroll for Loading More Content
  • 33 - Form Validation with Error Messages
  • 34 - Search Bar with Filtering and Suggestions
  • 35 - Drag-and-Drop File Upload
  • 36 - Interactive Color Picker with Sliders
  • 37 - Image Carousel with Autoplay
  • 38 - Rating System with Stars or Thumbs Up/Down
  • 39 - Comment Section with Nested Replies
  • 40 - Pagination for Long Lists of Data
  • 41 - Stopwatch app that tracks elapsed time
  • 42 - Responsive E-commerce Product Grid
  • 43 - Random Movie/Book Recommender
  • 44 - Kanban board for managing tasks with drag-and-drop
  • 45 - Chat application with real-time messaging using WebSockets
  • 46 - Calendar that displays events and allows scheduling
  • 47 - Tic-Tac-Toe Game
  • 48 - Hangman Game
  • 49 - Notes App
  • 50 - Expense Tracker
  • Afterword
  • Appendix
Powered by GitBook
On this page
  • Description
  • Algorithm
  • Classes
  • Code
  • Explanation
  • Possible Future Enhancements

21 - Simple Calculator with Basic Operations

Description

Create a React application that displays a simple calculator with basic operations. The calculator should display a running total and current input, accept user input through buttons or keyboard presses for numbers and operators, perform basic arithmetic operations based on chosen operators, and show the final result after an equals button is clicked.

Algorithm

  1. Create a state variable to store the current input and running total.

  2. Define a function to handle user input through buttons or keyboard presses.

  3. Define a function to perform basic arithmetic operations based on chosen operators.

  4. Define a function to handle the equals button click.

  5. Render the calculator display and buttons.

Classes

  • Calculator: A component that represents the calculator display and buttons.

  • Button: A component that represents a single button.

Code

Calculator.js

import React, { useState } from 'react';
import Button from './Button';

function Calculator() {
  const [input, setInput] = useState('0');
  const [total, setTotal] = useState('0');

  const handleInput = (value) => {
    setInput(input + value);
  };

  const handleOperator = (operator) => {
    const currentTotal = parseFloat(total);
    const currentInput = parseFloat(input);
    let result;

    switch (operator) {
      case '+':
        result = currentTotal + currentInput;
        break;
      case '-':
        result = currentTotal - currentInput;
        break;
      case '*':
        result = currentTotal * currentInput;
        break;
      case '/':
        result = currentTotal / currentInput;
        break;
      default:
        result = currentTotal;
    }

    setTotal(result.toString());
    setInput('0');
  };

  const handleEquals = () => {
    const result = parseFloat(total) + parseFloat(input);
    setTotal(result.toString());
    setInput('0');
  };

  return (
    <div>
      <div>
        <input type="text" value={input} readOnly />
        <input type="text" value={total} readOnly />
      </div>
      <div>
        <Button value="1" onClick={() => handleInput('1')} />
        <Button value="2" onClick={() => handleInput('2')} />
        <Button value="3" onClick={() => handleInput('3')} />
        <Button value="+" onClick={() => handleOperator('+')} />
        <Button value="-" onClick={() => handleOperator('-')} />
        <Button value="*" onClick={() => handleOperator('*')} />
        <Button value="/" onClick={() => handleOperator('/')} />
        <Button value="=" onClick={handleEquals} />
      </div>
    </div>
  );
}

export default Calculator;

Button.js

import React from 'react';

function Button({ value, onClick }) {
  return (
    <button onClick={onClick}>
      {value}
    </button>
  );
}

export default Button;

Explanation

The Calculator component renders the calculator display and buttons. The Button component represents a single button. The handleInput function handles user input through buttons or keyboard presses. The handleOperator function performs basic arithmetic operations based on chosen operators. The handleEquals function handles the equals button click.

Possible Future Enhancements

  • Add more features to the calculator (e.g., square root, exponentiation).

  • Improve the user interface and user experience.

  • Add support for multiple operators.

  • Display the calculation history.

  • Allow users to save and load calculations.

Previous20 - Note-Taking App with Markdown SupportNext22 - Word Scramble Game with Timer and Score

Last updated 10 months ago