質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

950閲覧

配列の問題で、エラーが発生してしまいます。

46hm

総合スコア20

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/04/22 08:15

###問題
与えられた数列を逆順に出力するプログラムを作成したい。
数列の長さを指定し、その後数列を打ち込む。
サンプルインプット1
5
1 2 3 4 5

サンプルアウトプット1
5 4 3 2 1

###作成したコード

#include<iostream> #include<vector> using namespace std; int main(){ vector<int>a; int n; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int j=0;j<n/2;j++){ int t = a[j]; a[j] = a[n-j-1]; a[n-j-1] = t; } for(int k=0;k<n;k++){ cout<<a[k]<<endl; } return 0; }

###実行結果
インプット
5
1 2 3 4 5 ・・・
segmentation fault 11

数列の長さを指定はできた
そのあとの数列を打ち込む際に打ちこみが終了しない。それでエンターを押すと上記のエラーが発生する。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

cin >> a[i];
aは要素数0のため範囲外アクセスとなります。

C++

1 int n; 2 cin >> n; 3 vector<int> a(n);

もしくは

C++

1 vector<int>a; 2 int n; 3 cin >> n; 4 a.resize(n);

として確保してください。

一旦別の変数に受けてpush_back()でも可。

C++

1 for(int i=0;i<n;i++){ 2 int j; 3 cin>>j; 4 a.push_back(j); 5 }

並べ替えせずに逆順出力。

C++

1#include <iostream> 2#include <vector> 3#include <algorithm> 4 5int main() { 6 int n; 7 std::cin >> n; 8 std::vector<int> a(n); 9 10 for (int& i: a) 11 { 12 std::cin >> i; 13 }; 14 std::for_each(a.rbegin(), a.rend(), [](int i) { std::cout << i << std::endl; }); 15}

投稿2020/04/22 08:21

編集2020/04/22 17:37
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問への回答ではありませんが、再帰呼出しを使ってもできます。

C++

1#include <iostream> 2 3void rev(int n) { 4 if (n > 0) { 5 int v; std::cin >> v, rev(n - 1), std::cout << v << ' '; 6 } 7} 8 9int main() { 10 int n; std::cin >> n, rev(n), std::cout << '\n'; 11}

投稿2020/04/22 17:06

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

[余談] 並びの逆転を自前で実装するのが目的でないなら std::reverse つかって楽できます。

C++

1#include <iostream> 2#include <vector> 3#include <algorithm> 4 5int main() { 6 int n; 7 std::cin >> n; 8 std::vector<int> a(n); 9 10 std::for_each(a.begin(), a.end(), [](int& item) { std::cin >> item;}); 11 std::reverse(a.begin(), a.end()); 12 std::for_each(a.begin(), a.end(), [](int item) { std::cout << item << std::endl;}); 13}

投稿2020/04/22 16:41

編集2020/04/22 16:52
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問