2019年1月31日 星期四

【C++語言】找出陣列最大值

C語言傳統陣列,找出其最大值
#include <cassert>
int max(int list[], int count)
{
  assert(count > 0);
  int ret = list[0];
  for (int i = 1; i < count; ++i) {
    if (list[i] > ret) {
      ret = list[i];
    }
  }
  return ret;
}
但在C++中,常常建議大家使用STL的容器,例如這裡使用std::vector
#include <cassert>
#include <vector>
// Call by reference
int max(std::vector<int>& list)
{
  assert(!list.empty());
  int ret = list.front();
  for (auto i : list) {
    if (i > ret) {
      ret = i;
    }
  }
  return ret;
}
也可以使用algorithm標頭檔中的std::max_element
#include <algorithm>
#include <vector>
int max(std::vector<int>& list)
{
  return *std::max_element(list.begin(), list.end());
}

2019年1月30日 星期三

【C++語言】加起來的數

這是一個可以計算從1加到指定數的程式,
範例:輸入「100」,即可計算1加到100答案是5050。

#include <cstdio>
int main ()
{
  int answer,n;
  printf("請輸入大於0的項數:");
  scanf("%d",&n);
  if(n>0)
  {
    answer=(1+n)*n/2;
    printf("\n%d\n",answer);
  }
  else
  {
    printf("\n無效字,請重新運行。\n");
  }
  printf("\n");
  return 0;
}

2019年1月29日 星期二

【C++程式設計】最大公因數計算器

利用輾轉相除法計算n1和n2的最大公因數
int gcd(int n1, int n2)
{
  while (n1 && n2) {
    if (n1 > n2) {
      n1 -= n2;
    } else {
      n2 -= n1;
    }
  }
  return n1 ? n1 : n2;
}

2019年1月28日 星期一

【C++程式設計】時間轉換器(秒)

輸入秒數,即可計算出幾分幾秒。
#include <cstdio>
int main()
{
  puts("Enter second:");
  int enter;
  scanf("%d",&enter);
  printf("%d min. %d sec.\n", enter/60, enter%60);  //「%」代表取餘數
  return 0;
}