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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

6回答

2187閲覧

初めて質問します。この質問の内容のプログラミングがわかりません。助けてください。

yu-ya

総合スコア8

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2015/06/02 12:42

#include <stdio.h>

#define FALSE 0
#define TRUE !FALSE

int main(){
int value,c, count;
char line[128];

count = 0;

while(TRUE){
count++;
if(count > 5) break;

printf("Enter a HexValue ===> "); fgets(line, sizeof(line), stdin); sscanf(line, "%x", &c); printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c); if(0x20 <= c && c <= 0x7e) printf("-%%c(%c)\n",c); else printf("-Not Printable character\n"); if (0x20 <= c && c <= 0x2f){ puts("====> Scope_A\n"); }else if(0x30 <= c && c <= 0x39){ puts("====> Scope_B\n"); }else if(0x3a <= c && c <= 0x40){ puts("====> Scope_C\n"); }else if(0x41 <= c && c <= 0x5a){ puts("====> Scope_D\n"); }else{ puts("====> Scope_E\n"); }

}

return(0);
}

/*
Enter a HexValue ===> 56
Colum=01:%d( 86)-%x(56)-%c(V)
====> Scope_D

Enter a HexValue ===> 07
Colum=02:%d( 7)-%x( 7)-Not Printable character
====> Scope_E

Enter a HexValue ===> ff
Colum=03:%d(255)-%x(ff)-Not Printable character
====> Scope_E

Enter a HexValue ===> 7f
Colum=04:%d(127)-%x(7f)-Not Printable character
====> Scope_E

Enter a HexValue ===> 7e
Colum=05:%d(126)-%x(7e)-%c(~)
====> Scope_E
*/

このプログラミングがどういう意味なのかわかりません。
今年から大学に進学してプログラミングを学んでいるのですが、初心者すぎて授業についていけていません。

printf("Enter a HexValue ===> ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%x", &c);

printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c); if(0x20 <= c && c <= 0x7e) printf("-%%c(%c)\n",c); else printf("-Not Printable character\n");

特にこの部分について教えてほしいです。
どうかよろしくお願いします。

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

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

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

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

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

guest

回答6

0

コードだけどんと載せられて,「意味が分からない」と言われても,回答者の方も回答に困ると思います.
一つ一つ意味を説明していこうとしたら,それこそ入門レベルの教科書頭からすべて説明していかないと説明できません.
今現在あなたがどこまで理解していて,どこがわからないのか,そこが明確で無い限り,あなたの望む回答はできませんし,仮に回答したとしても理解できないでしょう.
そもそもこのコードが明らかにCなのにC#のタグをつけている時点で勉強不足と言わざるを得ません.
プログラミングに限らず,基礎があって応用ができるのです.あなたはそもそもの基礎が足りていないように思います.

投稿2015/06/02 15:16

swordone

総合スコア20651

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

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

0

> ... 大学に進学してプログラミングを学んでいる ...
クラスメートや先生に聞くことはできないのでしょうか?

投稿2015/06/02 12:46

katoy

総合スコア22324

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

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

yu-ya

2015/06/02 12:51

 クラスメートに教えてもらったのですが、私が理解することができず何度も聞くのがきまづくなってしまいまして・・・。  大学の先生も今忙しそうであまり部屋にいないんです。  なので自分でネットや教科書で調べているのですがどうしてもわからないんです。
katoy

2015/06/02 13:26

このコードが提示され前までの講義内容は理解できているのでしょうか? 地道に教科書、講義の内容を最初からなぞってみてはいかがdしょう。 教科書にあらわれたコードは実際に自分で打ち込んで実行しながら進めていくとよいです。(copy & paste でなく、実際に 1文字ずつ キー入力していく) さらに すこし自分でアレンジを加えてみて、どんなふうに動作の差が生じるかを試してみると さらに理解を深められます。
guest

0

まず直接の回答ではありませんが
出来ないことがあったら出来るところまで戻りましょう。

「printf("Enter a HexValue ===> "); 画面に表示するんだな」
「printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c); %02dとかってなんだろうググるか」
「sscanf(line, "%x", &c); sscanfってなんだろうググるか」

みたいな感じです。

細かい部品を組み合わせてより大きな問題に対応するのがプログラミングです。
地道に一行一行分からない関数を調べれば「何をやっているのか」はわかります。
(「何故こうやろうと思ったのか」と「何でこれがやりたいのか」はその限りでない。)

ちなみに質問のコードは16進数を入力するといろんな表示で返すプログラムです。
(講義の流れで出された課題でも入門書でも、そもそも概要ぐらい説明されてそうなものですが。)

「特にこの部分」についてですが。

lang

1 printf("Enter a HexValue ===> "); 2 fgets(line, sizeof(line), stdin); 3 sscanf(line, "%x", &c);

入力部分です。
"Enter a HexValue ===> "と表示するコードの下に続いているので
入力に関することだろうと当たりを付けられます。

if(0x20 <= c && c <= 0x7e) の条件式については
anaprestooさんの回答のとおりです。

解らなかったとして、

lang

1else 2 printf("-Not Printable character\n");

と続くので、文字として扱えるかどうかの判定なんだなと推測できます。

あとタグがC#になってますが、明らかにこのコードC#ではないです。

投稿2015/06/02 14:26

編集2015/06/02 14:45
ozwk

総合スコア13521

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

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

0

0x20 <= c && c <= 0x7eは「画面に表示できる文字」を表すようです。
参考…ASCIIコード表

投稿2015/06/02 12:59

anaprestoo

総合スコア199

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

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

0

C#?C+?なんてもうずっとやってないのでうろ覚えですが。
流れ的にたぶんプログラムのフォーマットの概念をテストしてるプログラムですね。
入力した文字を10進数、16進数、文字コード、比較してるだけです。
関数調べるのめんどくさいので分かる範囲で。

printf("Enter a HexValue ===> ");
fgets(line, sizeof(line), stdin); ◀︎わからん
sscanf(line, "%x", &c); ◀︎入力を求める関数 %xはたぶん16進数

printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c); ◀︎count表示、cを10進数、16進数で表示 if(0x20 <= c && c <= 0x7e)◀︎IF構文で文字コード比較のテスト printf("-%%c(%c)\n",c); ◀︎比較成功したので文字コードで表示 else printf("-Not Printable character\n"); ◀︎範囲外、もしくは比較できなかったので出力

大学は高校までと違って教授が一方的に伝えるだけだから分からない部分は自分で調べれる力を身につけないとあかん。
とりあえず初歩的なprintf関数とscanf関数ぐらい調べて理解しないと試験受からないからがんばれ。

投稿2015/06/02 18:27

miso

総合スコア68

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

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

0

このプログラムが、何をするプログラムか分かっていますか?
・・・聞いた話ではなく、実行結果からあなたが得たものは何ですか?

投稿2015/06/02 13:46

cateye

総合スコア6851

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問