落書きノート

ふと自分が気になった事を書いてます

C++で問題を解く

ポインタの項目で、配列の問題を解いてると頭がこんがらがってきたので、最後の問題だけ答えを参考にしました。予想通り、降順に操作してましたね…。メモ帳で書いて考えれば良かったかな…。

#include <iostream>

using namespace std;

int sum_of(const int a[], int n){
  int sum = 0;
  for(int i = 0; i < n; i++){
    sum += a[i];
  }
  return sum;
}

int main(void){
  const int n = 5;
  int c[n];

  for(int i = 0; i < n; i++){
    cout << "c[" << i << "]:";
    cin >> c[i];
  }

  cout << "全要素の合計は" << sum_of(c,n) << "です。" << endl;

  return 0;
}



#include <iostream>

using namespace std;

// 前方にずらすので通常通りの操作。上書きのやり方によっては簡単に出来る。
void aryrmv(int a[], int n, int idx){
  for(int i = 0; i < n; i++){
    if(i >= idx && i < n - 1){
      a[i] = a[i + 1];
    }
  }
}

int main(void){
  const int n = 6;
  int c[n];
  int idx;

  for(int i = 0; i < n; i++){
    cout << "c[" << i << "]:";
    cin >> c[i];
  }

  cout << "削除する要素の添字:";
  cin >> idx;

  aryrmv(&c[0], n, idx);

  for(int i = 0; i < n; i++){
    cout << "c[" << i << "]:" << c[i] << endl;
  }

  return 0;
}




#include <iostream>

using namespace std;

// 前方にずらすので通常通りに操作。上書きのやり方によって簡単に出来る。
void arynrmv(int a[], int n, int idx, int k){
  for(int i = 0; i < n; i++){
    if(i == idx){
      for(int j = i; j < idx + k; j++){
        if(j + k < n){
          a[j] = a[j + k];
        }else{
          a[j] = a[n - 1];
        }
      }
    }
  }
}

int main(void){
  const int n = 6;
  int a[n];
  int idx,k;

  for(int i = 0; i < n; i++){
    cout << "a[" << i << "]:";
    cin >> a[i];
  }

  cout << "削除する先頭要素の添字:";
  cin >> idx;
  cout << "削除する要素数:";
  cin >> k;

  arynrmv(&a[0], n, idx, k);

  for(int i = 0; i < n; i++){
    cout << "a[" << i << "]:" << a[i] << endl;
  }

  return 0;
}




#include <iostream>

using namespace std;

// 後方にずらすので逆から操作。上書きのやり方によっては簡単に出来る。
void aryins(int a[], int n, int idx, int x){
  if(idx >= 0 && idx < n){
    for(int i = n - 1; i > idx; i--){
      a[i] = a[i - 1];
    }
    a[idx] = x;
  }
}

int main(void){
  const int n = 6;
  int a[n];
  int idx,x;

  for(int i = 0; i < n; i++){
    cout << "a[" << i << "]:";
    cin >> a[i];
  }

  cout << "挿入する添字:";
  cin >> idx;
  cout << "挿入する値:";
  cin >> x;

  aryins(&a[0], n, idx, x);

  for(int i = 0; i < n; i++){
    cout << "a[" << i << "]:" << a[i] << endl;
  }

  return 0;
}