A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
c++である必然性が見えないので、敢えて「使っている言語はc++です。
」に真っ向対立しますが以下のコードをメモ帳に張って保存し、拡張子をvbsに変更してダブルクリックすれば
さわりの部分は動きます。
ただ、完成させようとすると、全ルートを網羅すべく大変なコード量になるので
No.2さんのおっしゃる様に2次元配列を用いる事になるでしょう。
尚、「NO」ルートが2つある事に関しては感知しない事にします。
(実はこれが質問の核心などと仰るのはご勘弁下さい)
If MsgBox("興味や嗜好品など特定分野の知識には結構自信自身がある",vbYesNo)=vbYes Then
If MsgBox("飲み会に誘われると断れない方だ",vbYesNo)=vbYes Then
'どんどん書いていく
Else
'どんどん書いていく
End If
Else
If MsgBox("もっともっと稼ぎたい!",vbYesNo)=vbYes Then
'どんどん書いていく
Else
'どんどん書いていく
End If
End If
No.3
- 回答日時:
あ、でも今気づいたけど、この仕様バグがありますね・・・。
*「商品の知識はそこそこでも売る自信がある」
*「何事もバランスが大切と思う」
*「プレゼンテーション能力には自信あり!」
の三箇所からはNoが二本出てやんの・・・・。
ありゃ、作ってたプログラムで遊んでたら気づいた(笑)。
これどっちのルートが正しいんですかね。
No.2
- 回答日時:
全然C++は知らないんですが(ダメじゃん・笑)。
それでも一つだけ。
これは「プログラミングの問題」と言うより
「どうデータ設計するのか」
って問題に見えますね。データ設計の問題。
で、図示されてるブツ見る限り(そしてコンソールで考える限り)、
「二次元配列しかあり得ない」
でしょう。
まずはその図のままに二次元配列を使う、ってのがストレートな解法な気がします。
んで(またもやコンソールで考える限り)、取り敢えずC++のキモ、オブジェクト指向の出番なんて無いと思いますね。
まあ、C++でGUIのプログラムを作りたい、って場合、ちょっとは話が変わってくるでしょうが、基本的な発想は変わらんと思います。
(もし、C++でGUIで、とか言うのなら、それが得意な人が現れるのを待ちましょう・笑)
各質問をQ_ij、各ゴールをA〜Eで表記すると、取り敢えず暫定的に配列を[]で表記すれば、まず必要なデータ配列は上の図式に従うと
[
[Q_00 Q_01 Q02 A]
[Q_10 Q_11 Q12 B]
[Q_20 Q_21 Q22 C]
[Q_30 Q_31 Q32 D]
[Q_40 Q_41 Q42 E]
]
ってカタチになってるわけですよ。単純にこの配列からiとjに従った要素を返せば良いわけです(当然 i = 0, j = 0からスタートする)。
とすると、上の図に従うと、
* YESと答えた場合 -> jが1増える
* NOと答えた場合 -> iが1増える
ってのが基本構造なわけですよね。
基本的にはこれだけ、です。
ただし、例外があって、それも図で見れば分かるでしょうが、
*i が4でNOと答えた場合 -> iを1減らし、jが1増える
*j が2でNOと答えた場合 -> iを1減らし、jが1増える
これだけ、ですよね(しかも上の条件だと結果やるこたぁ同じなんで、||で結べばイイわけです)。
Cだと次のようなコードになるんじゃないでしょうか。
C++だとある程度Cの上位互換らしいんで、多分動く?んじゃないかしら?
良く知らんですが(ダメじゃん・笑)。
まあ、いずれにせよ、C++で書きなおしてみて下さい。
// ここから
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#define ROW_MAX 5
#define COL_MAX 4
#define BUF_SIZE 4
char read(void);
char* eval(char arg, int tuple[], char* message[ROW_MAX][COL_MAX]);
int main(void) {
char* msg[ROW_MAX][COL_MAX] = {
{ "趣味や嗜好品など\n特定分野の知識に\nは結構自信がある",
"飲み会に誘われる\nと断れない方だ",
"政治的な\nネゴシエーション・\nコミュニケーション\nはそんなに嫌い\nではない",
"Type\nA" },
{ "もっともっと\n稼ぎたい!",
"人に負けることが\n異常に嫌いだ",
"商品の知識は\nそこそこでも\n売る自信がある",
"Type\nB" },
{ "公明正大なタイプ\nだと周囲の人に\n見られている",
"社会に貢献したい\nという気持ちが\n他人より強いほう\nだと思う",
"何事もバランスが\n大切と思う",
"Type\nC" },
{ "よい意味でも\n悪い意味でも\nプライドは高い\nほうだ",
"解らない事があると\n徹底的に調べる",
"プレゼンテーション\n能力には自信あり!",
"Type\nD"},
{ "お客さんに\n割と可愛がられる",
"笑顔を誉められる\nことが結構ある",
"コツコツ仕事を\n進めるのは好き",
"Type\nE" }
};
int tuple[] = { 0, 0 };
puts(msg[0][0]);
while (true) {
puts(eval(read(), tuple, msg));
if (tuple[1] == COL_MAX-1)
break;
}
return 0;
}
char read(void) {
static char buffer[BUF_SIZE];
char c;
fgets(buffer, BUF_SIZE, stdin);
c = buffer[0];
if (isalpha(c) && (c == 'y' || c == 'Y' || c == 'n' || c == 'N'))
return c;
else
return read();
}
char* eval(char arg, int tuple[], char* message[ROW_MAX][COL_MAX]) {
if (arg == 'Y' || arg == 'y')
tuple[1] += 1;
else {
if (tuple[0] == ROW_MAX-1 || tuple[1] == COL_MAX-2) {
tuple[0] -= 1;
tuple[1] += 1;
} else
tuple[0] += 1;
}
return message[tuple[0]][tuple[1]];
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- Ruby GitHubについて 1 2022/08/04 14:17
- C言語・C++・C# gettimeofday() と localtime_r() を使って現在の日時をマイクロ秒単位で表 2 2022/10/26 21:15
- その他(プログラミング・Web制作) プログラミングについて 4 2022/09/02 21:31
- C言語・C++・C# C言語 入力した値から0までの数を並べて表示するプログラミングを作りたいんですけど、自分でやってみた 2 2023/05/22 18:18
- CGI 掲示板専用スクリプトなどを使わなくてもプログラミング言語のみで作れますか? 3 2022/06/12 17:49
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- C言語・C++・C# プログラミングのC言語についてですが 全く分かりません。 どなたか教えてくれないでしょうか、、? 3 2022/07/15 04:29
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
C言語の課題が出たのですが自力...
-
c言語
-
コンボボックスでデフォルト値...
-
C言語において、 配列要素をひ...
-
100の階乗のプログラムって
-
配列の要素数に変数を入れたい...
-
C言語 プログラミング 関数につ...
-
C言語についてです 5人のテスト...
-
C言語 ファイルの指定された行...
-
配列のアドレス部
-
int i, int i[1];
-
c言語プログラミング 等差数列...
-
2番目の最大値を求める
-
C#で構造体の配列を持った構造...
-
C言語 構造体でつまずいています
-
要素数・要素の値が未定の配列...
-
define で 配列
-
c言語 構造体
-
C言語の配列のコピーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
構造体のextern方法
-
C言語において、 配列要素をひ...
-
C#でのフィボナッチ数列
-
C言語の2次元配列 容量が大き...
-
C#で配列が空かを判定するには?
-
配列のアドレス部
-
char型配列をint型に代入するには
-
2番目の最大値を求める
-
C言語の課題が出たのですが自力...
-
C言語についてです 5人のテスト...
-
C言語から質問です。
-
C言語 ファイルの指定された行...
-
c言語 構造体
-
コンボボックスでデフォルト値...
-
MFCのCArrayを使った二次元配列
おすすめ情報