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

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

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

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

Q&A

3回答

1106閲覧

入力データに隠された文字

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

0グッド

0クリップ

投稿2017/12/06 22:27

次の処理手順を満たすプログラムを作成し,入力データに隠されたメッセージ(ASCIIコード表にある文字で構成される)を答えるプログラムがわからないです。

  1. 入力データに示された8個の整数値を順に読込み,int型の配列(各要素は4バイト)に格納する.
  2. 配列の各要素を構成する4バイトのうち,第31ビット~第24ビット,第23ビット~第16ビット,第15ビット~第8ビット,第7ビット~第0ビットの各8ビット(1バイト)が,それぞれ「文字に対応する数値(ASCIIコードそのままの値ではない)である」と考え,すべての文字を表示する.

※ ASCIIコードが 0 である文字はヌル文字('\0')であるため,表示する必要は無い.
3) 2) で表示した結果が,意味のあるメッセージとならない場合には,ASCIIコードへの変換方法や文字の表示順などを変更して試してみる.

[入力データ]
-1886220100
-1919251574
-1768117025
-1701015142
-1684955425
-1735279905
-1701146218
-1735289203

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

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

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

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

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

guest

回答3

0

javascriptで書いてみましたが意味がよくわかりません。各値はプラスですかマイナスですか?

javascript:javascript

1> f=i=>i;[1886220100,1919251574,1768117025,1701015142,1684955425,1735279905,1701146218,1735289203]. 2map(e=>String.fromCharCode(f(e>>24&255),f(e>>16&255),f(e>>8&255),f(e&255))).join("") 3< "pmoDretvicS!ecnfdna!gnE!eenjgnis"

投稿2017/12/07 00:41

編集2017/12/07 03:09
matobaa

総合スコア2493

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

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

matobaa

2017/12/07 00:50

あー、ふーん。なるほどそういうことねー 値はマイナスなのねー。
matobaa

2017/12/11 01:05

そろそろ答えを書いてもよいでしょうかね。 f=i=>i^255;[-1886220100,-1919251574,-1768117025,-1701015142,-1684955425,-1735279905,-1701146218,-1735289203]. map(e=>String.fromCharCode(f(e&255),f(e>>8&255),f(e>>16&255),f(e>>24&255))).join("")
guest

0

こんにちは。

なんか出題者がミスしまくっている印象です。

C++

1#include <iostream> 2 3union to_string 4{ 5 int mInt; 6 char mStr[5]; 7 to_string(int iInt) : mInt(iInt) 8 { 9 mStr[4]=0; 10 } 11}; 12 13int main() 14{ 15 to_string strings[] = {1886220100, 1919251574 , 1768117025 , 1701015142 , 1684955425 , 1735279905 , 1701146218 , 1735289203 }; 16 for (auto& i : strings) 17 { 18 std::cout << i.mStr; 19 } 20 std::cout << std::endl; 21}

Wandboxでやってみました。

結果は、Dompvter!Scifnce!and!Engjneesingでした。
Google先生に聞いてみたところ、下記提案がありました。
Dompvter → Dumpster (ごみ箱)
Scifnce → Science

Engjneesingは、たぶんEngineeringかな。


いつのまにやら union でコンストラクタが使えるようになっているのですね~。
知ってはいたけど、初めて使いました。

投稿2017/12/07 03:44

Chironian

総合スコア23272

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

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

PineMatsu

2017/12/07 08:43

「ASCIIコードそのままの値ではない」とあるのでそのまま表示してもダメなんだろなと思い、暗号的な要素になっているかもと、2進数に直してパターンになってないかとか、ビット反転とか考えましたけどわかりませんでした。 これ、質問者は退会済みユーザーですよね。答えが聞けない(笑)
matobaa

2017/12/07 09:30

あれ、そこまでやっててわかりませんでした?
PineMatsu

2017/12/08 07:37

あれ?わかったんですか!答えは?マイナスの数値としてしか見てませんがもしかしてプラス?
matobaa

2017/12/08 07:56

マイナスです。 ビット反転ってLSBとFSB入れ替えたりしてます? XOR?
matobaa

2017/12/11 01:06

答え書きました
guest

0

unionを使うと楽ですかね。
他の方も書いてる通り、値がマイナス値なのかどうかが曖昧です。
あと環境(エンディアン)に依存するので環境は書いた方がよいですね。
Windows(64bit)+MinGWの環境では以下の結果。
とりあえず最初のひとつをプラス値としてテスト。
マイナス値だと文字化けしました。

c

1union { 2 int n; 3 char c[4]; 4} tochar; 5tochar.n = 1886220100; 6printf("%c%c%c%c\n", tochar.c[0],tochar.c[1],tochar.c[2],tochar.c[3]);
Domp

ちなみにpaizaもideoneも同じ結果でした。

投稿2017/12/07 01:23

ttyp03

総合スコア16998

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問