📜  案例 1 或 2 c++ (1)

📅  最后修改于: 2023-12-03 14:55:41.405000             🧑  作者: Mango

C++ 案例

本文将介绍两个 C++ 案例,分别是案例 1 和案例 2。

案例 1:计算器

这是一个基本的计算器程序,可以进行加、减、乘、除运算。用户输入两个操作数和一个操作符,程序会输出运算结果。

#include <iostream>
using namespace std;

int main() {
  double num1, num2, result;
  char op;

  cout << "Please input the first number: ";
  cin >> num1;
  cout << "Please input the second number: ";
  cin >> num2;
  cout << "Please input the operator: ";
  cin >> op;

  switch (op) {
    case '+':
      result = num1 + num2;
      break;
    case '-':
      result = num1 - num2;
      break;
    case '*':
      result = num1 * num2;
      break;
    case '/':
      result = num1 / num2;
      break;
    default:
      cerr << "Invalid operator!";
      return 1;
  }

  cout << "Result: " << result << endl;

  return 0;
}

上述代码使用了 switch-case 结构,通过用户输入的操作符来选择不同的运算操作。使用了 cerr 来输出错误信息。运行结果截图如下:

calculator

案例 2:环形缓冲区

这是一个环形缓冲区类,实现了类似于队列的功能。用户可以向环形缓冲区中添加数据,也可以从中读取数据。当环形缓冲区存满时,再添加数据时会覆盖掉最早添加的数据。当环形缓冲区为空时,再读取数据时会返回 0。

class RingBuffer {
public:
  RingBuffer(int capacity);
  ~RingBuffer();
  void Add(double value);
  double Get();

private:
  double *buffer_;
  int capacity_, size_, head_, tail_;
};

RingBuffer::RingBuffer(int capacity)
  : capacity_(capacity),
    size_(0),
    head_(0),
    tail_(0) {
  buffer_ = new double[capacity_];
}

RingBuffer::~RingBuffer() {
  delete[] buffer_;
}

void RingBuffer::Add(double value) {
  buffer_[tail_] = value;
  tail_ = (tail_ + 1) % capacity_;
  if (size_ < capacity_)
    size_++;
  else
    head_ = (head_ + 1) % capacity_;
}

double RingBuffer::Get() {
  if (size_ == 0)
    return 0.0;
  
  double value = buffer_[head_];
  head_ = (head_ + 1) % capacity_;
  size_--;
  
  return value;
}

上述代码使用了类和指针。定义了环形缓冲区的大小和各种指针。并且添加了返回 0 的语句。可以在自己的代码中根据需要进行修改。