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

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

新規登録して質問してみよう
ただいま回答率
85.35%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

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

Q&A

解決済

4回答

1314閲覧

関数の中で関数を使うことはできないのか

langhtorn

総合スコア105

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

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

0グッド

0クリップ

投稿2020/05/29 02:18

編集2020/05/29 02:51

###実現したいこと
コンテナに保存した文字を反転させたい
###追記
実行結果がおかしいです。
###エラー
いただいた意見を基につくりなおしてみました。
そもそもが違うのか

データ数を入力してください:3 整数デーをタ入力してください 1 4 5 入力されたデータ: 1 4 5 反転結果 4 5 0

###コード

C++

1#include<iostream> 2#include<vector> 3#include<utility> 4void print_container(std::vector<int>& values); 5std::vector<int>& reverse(std::vector<int>& values); 6int main() 7{ 8 int i,n,val; 9 std::cout<<"データ数を入力してください:"; 10 std::cin>>n; 11 std::cout<<"整数デーをタ入力してください\n"; 12 std::vector<int> vals={}; 13 for(i=0;i<n;i++){ 14 std::cin>>val; 15 vals.push_back(val); 16 } 17 std::cout<<"入力されたデータ:\n"; 18 print_container(vals); //入力されたデータを出力する 19 std::cout<<"\n"; 20 std::cout<<"反転結果:\n"; 21 print_container(reverse(vals)); 22 std::cout<<"\n"; 23 return 0; 24} 25void print_container(std::vector<int>& values) //コンテナを表示する関数 26{ 27 int n=values.size(); 28 int i; 29 for(i=0;i<n;i++){ 30 std::cout<<values[i]<<" "; 31 } 32} 33std::vector<int>& reverse(std::vector<int>& values) 34{ 35 int n=values.size(); 36 int i,j; 37 for(i=0;i<n;i++){ 38 for(j=n;j>0;j--){ 39 std::swap(values[i],values[j]); 40 } 41 } 42 return values; 43}

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

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

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

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

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

guest

回答4

0

×: void reverce(std::vector<int>& values);
○: void reverse(std::vector<int>& values);

それと:

C++

1#include<iostream> 2#include<vector> 3#include<utility> 4void print_container(std::vector<int>& values); 5std::vector<int>& reverse(std::vector<int>& values); 6 7... 中略 ... 8 9std::vector<int>& reverse(std::vector<int>& values) //コンテナを反転させる関数 10{ 11 int n=values.size(); 12 int i,j; 13 for(i=0;i<n;i++){ 14 for(j=n;j>0;j--){ 15 std::swap(values[i],values[j]); 16 } 17 } 18 return values; 19}

[追記] こんなメンドくさいことしなくていい。

C++

1#include <algorithm> 2 3std::vector<int>& reverse(std::vector<int>& values) //コンテナを反転させる関数 4{ 5 std::reverse(values.begin(), values.end()); 6 return values; 7}

投稿2020/05/29 02:32

編集2020/05/29 03:05
episteme

総合スコア16612

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

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

0

ベストアンサー

C++

1std::vector<int>& reverse(std::vector<int>& values) 2{ 3 int n=values.size(); 4 int i,j; 5 for(i=0;i<n;i++){ 6 for(j=n;j>0;j--){ 7 std::swap(values[i],values[j]); 8 } 9 } 10 return values; 11}

↑考えすぎ。

C++

1std::vector<int>& reverse(std::vector<int>& values) 2{ 3 int i = 0, j = values.size()-1; 4 while ( i < j ) { 5 std::swap(values[i], values[j]); 6 ++i; 7 --j; 8 } 9 return values; 10}

投稿2020/05/29 03:10

episteme

総合スコア16612

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

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

0

void reverse(std::vector<int>& values) //コンテナを反転させる関数

void なので、結果を返しません。
それでエラーになってます

投稿2020/05/29 02:32

y_waiwai

総合スコア88042

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

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

0

エラーメッセージのとおりです。reverse関数の返り値はvoidなので、それを他の式の途中に入れることはできません。

投稿2020/05/29 02:30

編集2020/05/29 02:32
maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問