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

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

ただいまの
回答率

90.49%

  • C++

    3579questions

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

C++ 再帰について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 181

write07

score 1

 前提・実現したいこと

10,9,8,7,6,5,6,7,8,9,
9,8,7,6,5,4,5,6,7,8,
8,7,6,5,4,3,4,5,6,7,
7,6,5,4,3,2,3,4,5,6,
6,5,4,3,2,1,2,3,4,5,
5,4,3,2,1,0,1,2,3,4,
6,5,4,3,2,1,2,3,4,5,
7,6,5,4,3,2,3,4,5,6,
8,7,6,5,4,3,4,5,6,7,
9,8,7,6,5,4,5,6,7,8,

 発生している問題・エラーメッセージ

エラーメッセージ
95,93,91,89,87,85,96,97,98,99,
94,92,90,88,86,84,83,82,81,80,
75,73,71,69,67,65,76,77,78,79,
74,72,70,68,66,64,63,62,61,60,
35,29,23,17,11,5,41,47,53,59,
30,24,18,12,6,0,36,42,48,54,
31,25,19,13,7,1,37,43,49,55,
32,26,20,14,8,2,38,44,50,56,
33,27,21,15,9,3,39,45,51,57,
34,28,22,16,10,4,40,46,52,58,

### 該当のソースコード

C++
ソースコード
using MapData = std::vector<std::vector<int>>;

void A(MapData& range, int x, int y)
{
range[y][x] = 0;
MapData result(range);

B(range, result, x, y, 0);
}
void B(MapData& range, const MapData& mapData, int x, int y, int move)
{
if (range[y][x] < 0)
{
move -= mapData[y][x];
range[y][x] = move;
}
int up = y + 1;
int down = y - 1;
int left = x - 1;
int right = x + 1;
if (up < (int)range.size() && range[up][x] < range[y][x])
{
B(range, mapData, x, up, move);
}
if (down >= 0 && range[down][x] < range[y][x])
{
B(range, mapData, x, down, move);
}
if (left >= 0 && range[y][left] < range[y][x])
{
B(range, mapData, left, y, move);
}
if (right < (int)range[0].size() && range[y][right] < range[y][x])
{
B(range, mapData, right, y, move);
}
}

以上の通りです。よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/06/18 09:47

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

checkベストアンサー

0

こんにちは。

前方宣言が必要です。
宣言も定義もしないまま関数を使うことはできません。A関数の中でB関数を呼び出していますので、A関数の定義の前に

void B(MapData& range, const MapData& mapData, int x, int y, int move);


を書けばOKです。(最後の ; を忘れないように)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/17 02:31

    失礼しました。関数定義はこちらには記述していないのですが自身のプログラム上には記述しております。エラーに書いてあるのは現在の表示結果です。これを再帰とmove -= mapData[y][x];を用いて実現したい事に書いてある通りにする方法が分からずに質問させていただきました。説明不足で申し訳ありません。

    キャンセル

  • 2018/06/17 02:55 編集

    すいません。そこまでやる気力はないので、どなたか親切な方が見えるのをお待ち下さい。

    ただ、ご質問には、どのようにしてこれらの関数を呼び出しているのか?、結果をどのように表示しているのか?等の必要な情報の記載がありません。ですので、このままでは解を見つけることは現実的ではないと思います。
    問題が再現するプログラムを全て提示された方がよいと思います。ただ、その量があまりに多いと回答はつきにくくなります。(回答者は皆さんボランティアですから。)ですので、問題が再現する最小限のプログラムにして提示されると回答が付きやすくなります。

    キャンセル

関連した質問

  • 解決済

    Javaでは実装できるメソッドを持つenumについて

    Javaでは以下のように方向を管理するクラスDirectionが作れ、直感的に使えます。 public enum Direction { FRONT(0), RIGH

  • 受付中

    vectorの値の参照

    前提・実現したいこと <int,int>型のvectorで値を参照したいのですがどうすればいいですか? 該当のソースコード ここにご自身が実行したソースコードを書いてくだ

  • 受付中

    この問題のプログラムはどうなるのですか?

    実現したいこと 初歩的な質問だとは思うのですが、答えていただけると幸いです 下の問題を解くとプログラムはどういう風になるのかプログラムを書いていただけると幸いです。 お願いし

  • 解決済

    【vector】vector.erase()を高速化したい

     解決済みですが、まだまだこんなのあるよ!という方のコメントを随時募集してます! 前提・実現したいこと タイトルの通り、C++のSTLコンテナの一つvectorクラスの"vecto

  • 解決済

    OpenCVを使った笑顔検出での問題

    前提・実現したいこと OpenCVで元からあるサンプルコード「smiledetect.cpp」を用いて笑顔検出のシステムを作っています。 検出機能を実装中に以下の問題が発生しました

  • 解決済

    vectorを外部の関数から値を変更したい

     前提・実現したいこと ここにを質問の内容を詳しく書いてください。 (例)vectorクラスを用いて値の変換を外部でしたいです. vectorを配列のように扱っているのでアドレスを

  • 解決済

    unity2D 抽象クラス destory エラー

    using System.Collections; using System.Collections.Generic; using UnityEngine; public abs

  • 解決済

    ダブルポインタについて

    main関数で生成したダブルポインタ変数を、関数の引数に渡して、動的なサイズの配列を作って、main関数からデータアクセスできるようなプログラムを書きたいのですが、 main関数の

同じタグがついた質問を見る

  • C++

    3579questions

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