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

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

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

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

Q&A

解決済

2回答

605閲覧

どんなソースコード書いたらいいかわからない

kumathi

総合スコア7

C++

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

0グッド

0クリップ

投稿2022/06/10 03:45

外国人の通人から送られてきたのですが問題文含めいまいちどんなソースコードを書いたらいいかわかりません。どなたかお時間ある方で教えていただけるとありがたいです。

引用テキスト。2つの同じタイプの参照パラメーターを受け取るasc_orderと呼ばれるテンプレートvoid関数。 2つの値の順序を確認し、必要に応じて値を交換します。 その結果、最初の参照変数には小さい値が含まれ、2番目の参照変数には大きい値が含まれます。関数の呼び出しを示すメイン関数。 値1と2を含むint変数を使用した最初の呼び出し。値4.0と3.0を含むdouble変数を使用した2番目の呼び出し。 値「world」および「hello」を含む文字列オブジェクトを使用した3番目の呼び出し。

引用テキストa template void function called asc_order that takes two same-type reference parameters; it checks the order of the two values and swap the values if necessary; the result is that the first referenced variable contains the smaller value and the second referenced variable contains the larger value. the main function that demonstrates the calls to the function. The first call with int variables containing values 1 and 2. The second call with double variables containing values 4.0 and 3.0. The third call with string objects containing values "world" and "hello".

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

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

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

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

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

Zuishin

2022/06/10 03:55

void を戻り値とし、二つの引数をとる関数のテンプレートを書け。 二つの引数は同じ型の参照である。 その関数は、第一引数が第二引数より大きい場合、それらを交換せよ。 main はその関数を呼び出せ。 最初の呼び出しは 1 と 2 を引数とし、次は 4.0 と 3.0 を引数としろ。 3 つめの呼び出しは "world" と "hello" を引数としろ。 以上、やれ。
fana

2022/06/10 03:58

むしろ何がわからないのか? 全てが事細やかに具体的に指示されているではないか. 何がどうなって「送られてきた」のか不明だが,それを送ってきた相手に尋ねるべきではあるまいか.
Zuishin

2022/06/10 04:37

結局、template や parameter や reference などの言葉がわからないから問題文が読めないわけで、そんな入門書に載っているようなものは問題文を解こうとする前にあらかじめ知っておいてください。
guest

回答2

0

正直,何が質問者にとっての解決すべき課題であるのかが不明であるが…

【まずは問題文全体を解釈する → 完品コードを書く】
っていう手続きができない,ってことなのであれば,

【問題文をちょっとだけ読む → そこだけをコード化 → 問題文の続きをちょっと読む → その内容でコードを更新 → …】
っていう感じの手続きでトライしてみてはどうか.


問題文の先頭を見ると,

template void function called asc_order

って書かれてる.そしたらとりあえずは

C++

1//読んだ部分だけを素直に書くぜ! 2template< ??? > 3void asc_order( ??? ) 4{ ??? }

みたいなのが書けるよね.
何やら template で,戻り値がvoidで,名前がasc_order という関数である,と.
??? の部分はまだ不明だけど,まずはわかったことだけ書けばいい.
で,文章の続きを読めば

that takes two same-type reference parameters

なる引数に関する言及があるから,今度はこれを反映させれば

C++

1//よっしゃ,ちょっと更新したぜ 2template< typename T > 3void asc_order( T &param1, T &param2 ) 4{ ??? }

みたいな形になるよね.で,さらに次を読めば今度は処理の内容に関する事柄が

it checks the order of the two values and swap the values if necessary;

とか書かれてるから,

C++

1//よくわかんねぇけど,何か必要だったらswapするらしいぜ! 2template< typename T > 3void asc_order( T &param1, T &param2 ) 4{ 5 if( ??? ) //← "checks the order of the two values" の具体的な話はまだ見えてないぜ 6 { std::swap( param1, param2 ); } //「必要ならswapする」ということだけはわかる 7}

って感じに更新できる.続きを読むとここらへんの話が具体的に

the result is that the first referenced variable contains the smaller value and the second referenced variable contains the larger value.

って言及されてるから,この話から if( ??? ) の条件のところを埋めれるよね.

…ってな感じで,文章に出てきた事柄を都度ちょっとずつ自身のコードに取り込んでゆけばそのうち完成するのではないかと.

投稿2022/06/10 05:55

fana

総合スコア11656

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

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

fana

2022/06/10 06:01

一気に複数の事柄を相手にできないのであれば各個撃破しましょう,ってだけ.
guest

0

ベストアンサー

残念ながら、ここではコードの作成依頼は受け付けていません

まずはあなたなりにコードを書いてみましょう。その上でわからないことを聞いていただければお答えできるかと思います。

投稿2022/06/10 03:47

y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2022/06/10 03:48

点数乞食は止めましょう。回答ではないことを回答欄に書くのは止めましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問