掲示板



 本ページは目指せプログラマー!の掲示板代わりのページです。

 今まで運営していた掲示板がスパムばかり書かれるようになり、手動で削除するのに手間がかかっていました。ですので、NGキーワードでスパムを排除できる、ブログを1ページを借りてコメント欄を利用して掲示板代わりにさせていただきました。ちょっと使いづらいかも知れませんが、ご了承願います。

 投稿は、コメント欄に記載願います。よろしくお願いします。
  • いただきましたご意見は、許可なく当ホームページ内でハンドルネームと共に引用させて頂くことがあります。引用を拒否する場合は書き込む際にその旨の記載をお願い致します。また、引用後も削除の依頼があれば対応させて頂きます。
  • 管理人が不適当と判断した書き込みは、許可なく削除させて頂く場合がございます。



この記事へのコメント

mickey
2008年09月11日 00:10
最近思うところがありアセンブラを勉強しています。
こちらのアセンブラ入門も大変参考にさせていただいてます。
ただ、アセンブラに対してずぶな素人の私からの感想ですが、説明がないものが突然、例に挙がってくることがあるので、混乱しています。
既出でないもの、説明が不十分なものは注釈をいれてくれると大変読みやすくなると思います。
# まず2章目の練習問題でつまづきましたorz
# だって変数宣言の説明もない上にdbって…ぜんぜん入門じゃない…
まぁ。精進します。
そちらも頑張ってください。
2008年09月11日 23:12
mickeyさん、書き込みありがとうございます。
ご指摘ありがとうございます。確かに説明がなく使われている部分もありますね。逐次修正していきたいと思いますので、今後とも気がついたことを書き込みいただければと思います。
今回ご指摘いただいた件は、近々修正いたします。
シンペイ
2008年10月24日 05:54
2-4. 1文字入出力での例題のプログラムにミスがあると思います
確認お願いします

以下引用
『例を示します。

#include

void main(){
intch;
ch = getch();// 1文字入力

printf("\n");// 改行

putch(ch);// 1文字出力
}』

このプログラムではprintf関数を使ってるのでstdio.hもインクルードしなければいけないのではないですか??
2008年10月24日 06:54
シンペイさん、おはようございます。
間違えのご指摘ありがとうございます。
近日中に修正します。今後も間違えやわかりにくいところなどありましたら、ぜひご指摘をお願いいたします。
それでは今後とも当サイトをよろしくお願いいたします。
シンペイ
2008年10月24日 08:33
3-3. 多重分岐での例題の答え(?)の所にあるプログラムにミスがあると思います
確認お願いします

以下引用
『if(aif(a<=c)
w=a;
else
w=c;
}
else{
if(b<=c)
w=b;
else
w=c;
}
}
』ここまで

となっていますが
『if(a
2008年10月27日 19:22
シンペイさん、返事が遅くなってすみません。
追加のご指摘ありがとうございます。
最初の件と併せて修正しましたらまたこちらでも報告させていただきます。
今後ともよろしくお願いします。
管理人
2008年10月29日 22:12
シンペイさん、遅くなりましたが2ヵ所修正いたしました。2つ目の方はブラウザによっては正しく表示されていたようですね。申し訳ございませんでした。
また誤記、間違えなどありましたらよろしくお願いいたします。
管理人
2008年10月29日 23:37
mickeyさん、ご指摘いただいてから1ヶ月以上経ってしまいましたが、DBなどに関する疑似命令を追加しました。ご確認いただければと思います。
今後とも、わかりにくいところなどあればご指摘願います。
それでは今後ともよろしくお願いします。
コラッ
2008年11月01日 16:10
駄目ですよ。あんなインチキ団体に寄付しちゃ。
管理人
2008年11月01日 19:42
コラッさん、書き込みありがとうございます。
もう少し具体的に書いていただけるとわかりやすいのですが・・・。
2008年11月01日 21:06
C言語入門の
1-4.データ型と宣言の
unsigned intの数値の範囲はsignedでなくunsigned short,longと一緒なのでは無いでしょうか?
それと次の1-5.定数と変数の小数定数の"31415E-5"は円周率ではない気がします
シンペイ
2008年11月03日 02:12
C言語入門の
12-4. ファイル読み込み では

参照1

となっていますがstruct meibo classmate[100](以下classmate)を初期化してないので全てのname[0]にNULL(\0)が入ってるとはいえませんのでdispallのwhileでは関係ないものが表示される可能性があるのではないでしょうか?

ですので

参照2

このように[変更1]もしくは[変更2]のようにするべきではないでしょうか?
シンペイ
2008年11月03日 02:15
文字数の関係で別記という形になりました。

参照1(その1) ここから
(一部引用(dispallとmain))
『void dispall(struct meibo *p){
// 名前がない場合は終了する
while( p->name[0] != '\0' ){
printf("name : %s\n", p->name);
printf("tel : %s\n", p->tel);
printf("address : %s\n\n", p->address);

p++;
}
}
シンペイ
2008年11月03日 02:16
文字数の関係で別記という形になりました。

参照1(その2) ここから
void main(){
struct meibo classmate[100];
size_t n;
FILE *fp;

fp = fopen("class.dat", "r");

// ファイルオープン失敗か?
if ( !fp ){
printf("ファイルオープンエラー\n");
return;
}

// 1名ずつ読み込んで表示する
n = fread( classmate, sizeof(struct meibo), sizeof(classmate)/sizeof(struct meibo)-1, fp );
dispall(classmate);

// ファイルクローズ
fclose(fp);
}』
    ここまで
シンペイ
2008年11月03日 02:17
文字数の関係で別記という形になりました。

参照2(その1) ここから
(一部改変)
『void dispall(struct meibo *p, unsigned int n){ //変更2
unsigned int i = 0; //変更2

// 名前がない場合は終了する
while( i > n){ //変更2
printf("name : %s\n", p->name);
printf("tel : %s\n", p->tel);
printf("address : %s\n\n", p->address);

i++; //変更2
p++;
}
}
シンペイ
2008年11月03日 02:20
文字列の関係で別記という形になりました。

参考2(その2)
void main(){
int i; //変更1
struct meibo classmate[100];
size_t n;
FILE *fp;

for (i = 0; i < 100; i++) //変更1
{ //変更1
classmate[i].name[0] = NULL; //変更1
} //変更1

fp = fopen("class.dat", "r");

// ファイルオープン失敗か?
if ( !fp ){
printf("ファイルオープンエラー\n");
return;
}
シンペイ
2008年11月03日 02:22
文字列の関係で別記という形になりました。

参照2(その3)
// 1名ずつ読み込んで表示する
n = fread( classmate, sizeof(struct meibo), sizeof(classmate)/sizeof(struct meibo)-1, fp );
dispall(classmate, n); //変更2

// ファイルクローズ
fclose(fp);
}』
    ここまで

真に見にくくなってしまって申し訳ございません。
管理人
2008年11月03日 05:36
シンペイさん、またまた間違えのご指摘ありがとうございます。
確かに1つも読み込まれない場合\0である保証はないので、へんなデータが表示されることが考えられます。
後日確認した後修正いたします。

間違えやわかりにくいところなどありましたら、ぜひぜひご指摘ください。
遅くなりましたが、いつもご指摘感謝しております。
迷子の雄猫
2009年01月05日 16:15
JAVA入門について3点ほど。
http://www5c.biglobe.ne.jp/~ecb/java/02_11.html
次章へのリンク先が2章の先頭になっています。(ただしくは3章の先頭)

http://www5c.biglobe.ne.jp/~ecb/java/02_02.html
2. 単一分岐
charの内容が'A'であれば処理1を実行し、それ以外ならば何もしない、のCソースコード
if(ch=='A'){
処理1;
}
else{
処理2;
}
とありますが
if(ch=='A'){
処理1;
}
では?
また、「同上」こういう書き方もある、の図の中「n:0」は「n:m」では?
2009年01月06日 01:40
迷子の雄猫さん、間違えのご指摘ありがとうございます。
確認の上、後日修正いたします。
また、間違えがあったらぜひご指摘をお願いいたします。
それでは今後ともよろしくお願いいたします。
2009年01月12日 16:35
迷子の雄猫さんから指摘いただいた間違えを修正いたしました。
ご指摘ありがとうございました。
迷子の雄猫
2009年01月16日 16:50
お疲れ様です。修正を確認してきました。

http://www5c.biglobe.ne.jp/~ecb/java/02_11.html
ページ下部のリンク(表示文字)が「次ページへ」になっています。

http://www5c.biglobe.ne.jp/~ecb/java/14_22.html
トップ-> Java入門:14章 有用なクラス-> Calendar
の、画面上のリンク先「次ページへ」が、「NotFound」になります。
(画面下のリンク先「次ページへ」は、カレンダーのサンプルになっています)
迷子の雄猫
2009年01月16日 16:51
http://www5c.biglobe.ne.jp/~ecb/java/10_03.html
10. パッケージ の 3. クラスパスについて。

>このように設定すると、javaは

>カレントディレクトリの中の「entertainment」ディレクトリの中のTV.class
>c:\mypackage\entertainment\TV.class
>c:\downloadpackage\entertainment\TV.class
>Javaが標準で用意されているクラス郡の「entertainment」パッケージの中のTV.class


>という順序でTV.classを探しに行きます。


c:\【java\】mypackage\entertainment\TV.class
c:\【java\】downloadpackage\entertainment\TV.class

画面のpathの指定が、c:\java\ で始まっていますので、
探しにいくのもc:\java\~であろうと思われます。
管理人
2009年01月17日 07:12
迷子の雄猫さん、いつもご指摘ありがとうございます。
本当に助かります。
今回も確認の上修正いたしますのでもう少しお待ちください。
管理人
2009年01月18日 02:26
迷子の雄猫さん、遅くなりましたが上記の件修正しました。
また間違えを見つけましたらぜひご指摘ください。
かやな
2009年01月20日 15:02
初めまして。
当方今月から、こちらのC言語入門を参考にしながらCの勉強をさせていただいております。(JAVAは昨年四月より勉強しておりました)

間違いの指摘などではないのですが、少々質問がありまして書き込ませていただきました。
「C言語入門」10-7.構造体の練習問題についてです。
表示用dispメソッドの173行目のIF文(if!(i & 3))について、「i==0」の場合のみ真となる分岐であると思うのですが、これは「if(!i)」ではだめなのでしょうか?
また、同章の説明の中のdisp関数には記載されていなかったように思うのですが、これはどんな意味を持つのでしょうか。
(for文の初期化にて「i=1」を行っているため、到達しないように思うのですが)

もう一件あるのですが、文字数の関係で二つに分けさせていただきます。
かやな
2009年01月20日 15:04
文字数の関係で別記させていただきました。

もう一件、同じ練習問題中に躓いた部分がありました。
当方windowsXPでcygwin(version1.5.25-15)を使っているのですが、
コード中に「ソ」が出てくるときにコンパイルエラーと
なる不具合がありました。
(error:missing terminating"charcter)
(解答ソースのinitメソッド78行目「"カリプソ"」です。
コピペしたもので当事象が発生していました。
どうやらShift-Jisの文字コードの問題のようです)
gccでのコンパイル時
「-finput-charset=cp932 -fexec-charset=cp932」
を指定する、もしくは
「ソ」の直後に「\(バックスラッシュ)」を付加する
ことで回避可能ですが、そういったことをどこかに書いて
おいていただければより親切かと思います。
(既出の話題でしたら申し訳ありません。)

僭越な物言いを失礼いたしました。
お忙しいところ恐れ入りますが、質問お答えいただけますと幸いです。
かやな
2009年01月20日 15:10
すみません、先ほど書き込みをしたのですが間違いがありました。
「-finput-charset=cp932 -fexec-charset=cp932」
を付加してコンパイルすればエラーは出ませんが、実行結果を再度確かめたところ「カリプソ」の部分が文字化けしていました。
また、バックスラッシュは実は自分でまだ試しておりません・・・。
適当なことを言ってすみませんでした。
迷子の雄猫
2009年01月20日 15:15
お疲れ様です。修正を確認してきました。

前回気づかずに申し訳ないですが、Calendarのサンプル
http://www5c.biglobe.ne.jp/~ecb/java/14_22_02.html
画面上のリンク先「前ページへ」が、「Stringのサンプル」になります。

http://www5c.biglobe.ne.jp/~ecb/algorithm/3_2.html
トップ-> アルゴリズム入門:3章.分岐構造-> 3-2.単一分岐
「charの内容が'A'であれば処理1を実行し、それ以外ならば何もしない」
の図も、処理2があります。


http://www5c.biglobe.ne.jp/~ecb/algorithm/6_7.html
トップ-> アルゴリズム入門:6章.検索・ソート-> 6-7.選択法
について。

ソート前の要素6番目に14がありますが、ソート後の要素には14がありません。
ソート前の要素に93が2個ありますが、ソート後の要素に93が3個あります。
次ページ以降を見る限り、14があるのが正しいかと。
かやな
2009年01月20日 17:01
すみません、2009/01/20 15:10に書き込みしましたかやなです。

再度確認したところ、文字化けは自分のソースの誤りでした。
「-finput-charset=cp932 -fexec-charset=cp932」と
バックスラッシュの付加がともに有効であることを確認いたしました。

度々お騒がせしまして申し訳ありません。
管理人
2009年01月21日 21:46
かやなさん、いろいろ書き込みありがとうございます。
cygwinは使っていないのでわかりませんが、下記件について回答します。
> if!(i & 3)
これは0かどうかを判断するものではありません。
& はビット演算子です。iの初期値は1ですから、1と3の論理和をとると1です。つまり「真」です。それのNOTをとるので「偽」です。if文の中に入りません。
ではiが増えて2になった場合、2と3の論理和は2。同様にNOTをとるのでif文に入りません。3の場合も同様です。
2009年01月21日 21:47
かなやさんへ、続きです。
では4の時は。4と3の論理和は0、つまり「偽」NOTをとると真になりif文に入ります。5,6,7は入らず、8にはif文に入ります。
つまり4の倍数かどうかを判断する文なのです。
いっぱい登録されている時は途中で止めないと画面の上に流れてしまうので。
本来ならば、
if( i % 4 == 0 )
と書くのがわかりやすいのですが、コンピュータにとって割り算は時間のかかる仕事なんです。ですからできるだけ割り算やかけ算は避けた方がよいのです。(これくらいの計算ならば今のCPUなら問題ないでしょうし、普通のコンパイラは処理速度など最適化してくれるので、問題にはならないでしょうけれど。)
2009年01月21日 23:29
迷子の雄猫さん、いつもありがとうございます。
ご指摘いただいた3ヵ所は修正いたしました。
java入門だけでなくアルゴリズム入門まで・・・。
本当にいつもありがとうございます。
かやな
2009年01月22日 13:58
ご丁寧に回答いただき、ありがとうございます。

一応!(0 & 3)や!(1 & 3)などの結果を表示してどうなるのかを調べたつもりだったのですが、調査が全く足りていませんでした。
お恥ずかしい限りです。

少しだけ、言い訳を述べさせてください。
0かどうかを調べる文なのかと思ってしまったのは、まず上記の処理結果が0の場合に1となったということがありました。
また、if文の真偽値の判定として、0=偽、0以外=真という説明がありましたので、(i && true)という式なのかと思ってしまっていました。(&の数がすでに違うのですが…。)

おかげさまで、大変勉強になりました。
これからも勉強させて頂きます。
また、今後は疑問点ももう少し詳しく調査するように心がけます。
本当にありがとうございました。
2009年01月22日 23:33
かなやさん、お疲れ様です。
確かにビット演算が出てくると難しくなりますよね。
それに0が偽、0以外が真というのは便利な一面もありますが、わかりにくい部分もあります。C++では改善はされていますけどね。
演習問題や例題ではわざと、ん?と思うようなヵ所を入れています。
人のソースコードを読むことになった場合、どのような書き方をされているかわかりません。そう言う練習も含めているからです。
ん?と思うようなヵ所があった場合は、脳内デバッグで考えてみてください。
2009年06月05日 14:56
C言語入門の 『1-6. 簡単な演算』にある、
『比較演算子   
 等値か「==」、非等値か「=!」、大小関係「>」「>=」「<=」「<」を調べます。』
部の非等価の部分が表内と異なっています。
大したことでは無いのですが、気づいたため報告をさせて頂きました。
2009年06月09日 02:07
eyさん、間違えのご指摘ありがとうございます。
早速修正いたしました。また間違えに気がつきましたらぜひご指摘下さい。
それでは今後ともよろしくお願いいたします。
KKXY
2009年06月10日 19:55
初めまして、KKXYと申します。

質問があるのですが、C言語入門などの例題に出てくるソースは
自分が作っているプログラム等に使用してよろしいのでしょうか?
そこんとこは全く書いてなかったので…。
2009年06月10日 22:19
KKXYさん、はじめまして。当サイトにお越し下さいましてありがとうございます。

当ホームページで紹介しているプログラムをご自分の作っているプログラムの一部として利用することは常識の範囲内で可能です。
「常識の範囲内」と言うのは不明瞭ですが、例えば当サイトのようなプログラム解説サイトやプログラム解説本を作る際に同じコードを使うのは常識外だと考えています。
また、プログラムを流用した際にもし何らかの不利益が生じたとしても当方ではいっさいの責任を負いません。

なお、当ホームページが役に立ったと思われた方にはご寄付をお願いしております。下記URLを参考にしていただき、ユニセフ、ユネスコ、WWFなど、非営利団体に気持ち程度の寄付をしていただければ幸いです。
http://www5c.biglobe.ne.jp/~ecb/donation/donation.html

以上、よろしくお願いいたします。
KKXY
2009年06月12日 21:10
ご返答ありがとうございました。
2009年07月12日 16:35

#include
#define MAZ 10/*基本データ長*/
#define ZERO 0/*制御用初期値*/
static int ap[MAZ]={1,2,3,4,5,6,7,8,9,10};/*データの内容*/
int main(void){/*プログラム本文*/
int ia,*cp,sum=ZERO;/*変数とチャンネルポインタ*/
for(cp=&ia,ia=ZERO;ia<5;ia++){/*バッチ処理ループ*/
sum+=ap[ia];/*加算処理*/
sum+=ap[*cp+5];/*加算処理*/
}
printf("sum=%d",sum);/*結果表示*/
return ZERO;/*本文終了*/
}
KKXY
2009年07月15日 21:48
お久しぶりです。
突然なのですが、自分が書いているプログラムでどうしても
解決できないバグがあるので相談しに来ました。

class hikari{
protected:
int a;
public:
hikari(const int b)
  {
    a=b;
  };
  int get_z()
  {
return a;
  }
};
void kansu(hikari* bb)
{
bb->get_z();
}
void main(){
hikari op(1);
kasuu(&op);
}

こうやって書いたのですが コンパイルすると
「error C3861: 'kasuu': 識別子が見つかりませんでした」
というエラーが出てくるのです。
一体なぜなのでしょうか?
ちなみに使っているコンパイラはvisual C++ 2008です
かんりにん
2009年07月16日 23:54
KKXYさん、こんばんは。ご無沙汰しています。
“kasuu”ではなく“kansu”ではないでしょうか
かんりにん
2009年10月04日 19:58
シさん、間違えのご指摘ありがとうございます。
おっしゃるとおり、Labelでなくlabelです。ホームページの方も修正しました。
また、間違えなどありましたらご指摘お願いいたします。
かんりにん
2009年10月15日 01:11
シさん、またまた間違えのご指摘ありがとうございました。
遅くなりましたが修正させていただきました。何度もご指摘ありがとうございます。
かんりにん
2010年01月28日 01:46
ああさん、お返事が遅くなってすみません。
ああさんのおっしゃるとおり、フラグは変更されます。
確認の上近日中に修正します。
ご指摘ありがとうございました。また間違えなどがありましたぜひご指摘ください。
今後ともよろしくお願いします。
かんりにん
2010年04月09日 20:54
suraさん、間違えのご指摘ありがとうございます。
早速修正しました。
また間違えなどがありましたぜひご指摘ください。
今後ともよろしくお願いします。
とーりすがり
2010年05月09日 22:23
ブログと関係ないのですが
C++の第二章ストリームのところの「次の行」であるはず
のところが「次の業」になっています
でしゃばってすみません
かんりにん
2010年05月09日 22:24
とーりすがりさん、間違えのご指摘ありがとうございます。
早速修正いたしました。
また何かありましたらご指摘よろしくお願いいたします。
もっち
2010年05月31日 20:15
http://www5c.biglobe.ne.jp/~ecb/assembler/inst.html
アセンブリの勉強をしようと思い、MASMのインストール法を参考にMASM32と16bitリンカをインストールしたのですが、最後の
link /t test.obj,test.com,nul,nul
を実行しても
link: cannot create link `test.obj,test.com,nul,nul' to `/t': No such file or directory
と表示されてしまいます。
コマンドプロンプトの知識も覚束無いPC初心者レベルなので、色々調べてはいるものの、解決策が見つからず困っています。
是非アドバイスを頂けないでしょうか?
2010年06月14日 03:26
もっちさん、当サイトを訪れていただきありがとうございます。
返信が遅くなってしまい申し訳ございません。
「No such file or directory」とは簡単に言うとファイルが見つからないというエラーです。test.objがあるフォルダでlinkを実行しないといけないので、test.objがあるフォルダにMS-DOSのCDコマンドを使って移動しなくてはいけません。
cdコマンドに関しては右のURLをクリックしてみてください。
もっち
2010年06月19日 16:46
う~ん。
お手本と同じようにCドライブ直下で作業してるので、既に移動はしてるんですがやっぱり駄目ですね。
ml /c /Fl test.asmを実行するとCドライブ直下にtest.objとtest.lstができるのですが、このtest.lstが原因なんでしょうか?
某通行人
2010年07月12日 02:53
nulをもう一つ付け加えてみては?
某通行人
2010年07月12日 03:19
あ、私が質問するの忘れてた・・・orz
私もアセンブラの勉強をしようと思いtest.comを作るところまでは成功したのですがtest.comを起動してもすぐに消えてしまいます。プロンプトにぶち込んで起動してみても何故かごくまれに起動するのですが大体が
C:\masm32\program>C:\masm32\program\test.com




C:\masm32\program>C:\masm32\program\test.com

C:\masm32\program>
となってしまいます。
アドバイスをいただきたく思います。
某通行人
2010年07月12日 10:59
すいません
masm32入れなおしたら解決しました
管理人
2010年07月12日 23:29
某通行人さん、こんばんは。
お返事が遅れている間に自己解決されたようでよかったです。
今後とも当サイトをよろしくお願いします。
管理人
2010年07月12日 23:40
もっちさん、またまた返事が遅くなりましてすみません。
いろいろ試したのですが原因がわかりません。
link /t test.obj,test.com,nul,nul
と入力してからの部分をすべてこの掲示板にコピペして
いただけませんか?
うまくいけば
C:\>link /t test.obj,test.com,nul,nul

Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.

Definitions File [nul.def]:

C:\>
となります。


もしかすると、32bit版のlink.exeが使われているのかも
しれません。
> 上でインストールしたドライブのmasm32\binフォルダにある
> link.exeをlink32.exeに変更する。
の部分をやられているか確認してみてください。

以上、よろしくお願いいたします。
もっち
2010年08月01日 15:05
せっかく返信頂いたのに遅くなって申し訳ありません。
masm32の最新版を再インストールしてみましたが、やはり
link: cannot create link `test.obj,test.com,nul,nul' to `/t': No such file or directory
と表示されるだけでした。
最新版には16bit版が最初から入っているので、16bitリンカのインストール作業はしていませんが16bit版のファイル名をlink.exeへ変更する作業は行いました。
言い忘れていたことが一つあって
test.objを作ると一緒にtest.lstというファイルが一緒に作成されるのですが、test.lstというのは管理人さんの環境でも作成されるファイルなのでしょうか?
ゆう
2010年10月18日 23:12
こちらのサイトでアルゴリズムを勉強させていただいている者ですが、こちらのサイトを見ていて疑問に思ったこともこちらに書き込みしてよろしいのでしょうか?
管理人
2010年10月19日 01:34
ゆうさん、ようこそいらっしゃいました。
質問はわかる範囲でお答えしますが、回答に時間がかかるばあいがあります。もしよろしければ書き込みください。
それでは今後とも宜しくお願いします。
ゆう
2010年10月19日 23:39
では早速質問いたします。アルゴリズム入門の2章の練習問題1にあるヒントで「xをyに、yをxに代入するだけでは、yをxに代入する前に、yの値が壊れてしまうことに注意」とありますが、なぜ壊れてしまうのでしょうか?教えていただきたいです。
まったく0からのスタートなのでかなり基礎的な質問かもしれませんがよろしくお願いしますm(__)m
管理人
2010年10月21日 12:21
ゆうさん、こんにちは。
変数xとyがあり、xにはAと言う文字が、yにはBという文字が代入されていたとします。
ここで、xの中身をyに代入すると、xにもyにもAと言う文字が入ることになります。次にyをxに代入したら、当然xもyもAという文字が入ったままです。
問題はxとyの中身を交換しろという問題ですから、これではハズレということになります。間違いなのは、yの中身のBという文字が壊されてしまったことです。
解答例を見ていただければわかりますように、交換する時はもう一つの変数を用意してもともとのyの中身(この場合はB)を保管しておく必要があります。
以上の説明でお分かりになられましたでしょうか?
ゆう
2010年10月24日 12:52
ありがとうございました。わかりやすい説明有難うございますm(_ _)m  今後ともよろしくお願いします。
hono
2010年12月19日 20:28
はじめまして 突然の書き込み失礼します。
C++を勉強しようとあれこれ探している内にこちらのサイトを見つけまして、疑問に思った事がありましたので質問させていただきます。

C++の1章でオブジェクト指向の例の中に
enum COLOR{ black,…,blue }; 
とありますがこれが何なのかわかりません
typedef的な事でこれより前にenumを定義しているという事でしょうか
もしくはもっと別の書き方なのでしょうか

初心者なのでという言い訳もあれなのですが、しばらく考えても分からず質問させていただきました。
かんりにん
2010年12月20日 01:06
honoさん、目指せプログラマー!にお越しくださいましてありがとうございます。

お~!C言語入門でenumについては後述しますと書いているページがあるのに、enumの説明をしているページが無いことに今気がつきました。すみません。
enumとは列挙型と呼ばれる型です。コンピュータは基本的に数字で物事を考えます。人間は色を例にとると、赤とか青とか黒とかで判断しますが、コンピュータは数字でしか判断できません。ですから青、黒、赤という色を数字に置き換える必要があるわけです。
このように便宜上数字に置き換えたものを列挙型と言います。

enum COLOR{ black,…,blue }; 
では、便宜上blackを0に、whiteを1に、redを2に・・・と定義します。本来数字なのでint型として定義してもいいのですが、この場合はその型をCOLORと定義するわけです。
一度enumとしてCOLORを定義しておけば、プログラムする時にblackは0だから・・・と考える必要はなく、blackはblackと書けばいいのです。

> typedef的な事でこれより前にenumを定義しているという
> 事でしょうか
当サイトではtypedefの説明も割愛していますが、

typedef enum COLOR_T{
black,
white,
red,
green,
yellow,
blue
} COLOR;
と定義することも出来ます。というか、本来こっちの書き方の方が一般的かな。

以上の説明でおわかりいただけましたでしょうか?

それでは今後とも目指せプログラマー!をよろしくお願いいたします。
OROCHI
2010年12月20日 12:13
こんにちは、アセンブラの勉強のためにこちらのサイトを利用させていただいております

現在、アセンブラ入門の3-3の練習問題をやっているのですが、ANSに格納された値を確認する方法というかデバッガの起動法が分かりません。

現在、以下のような手順でやっているのですが、私の方法ではANSの値を確認することは不可能でしょうか?

1.ソースをエディタで書き,asm形式で保存
2. DOSプロンプトを起動(以下の操作は全てDOSプロンプトで実行.OSはXpで、masm32を使用しています)
3. ml /c /Fl (ファイル名).asmでコンパイル
4. link16 /t (ファイル名).obj,(ファイル名).com,nul,nul,nulでcomを生成
5.(ファイル名).comと入力して実行
かんりにん
2010年12月24日 04:07
OROCHIさん、当サイトにお越しくださいましてありがとうございます。
そうですね。ちょっと不親切でしたね。確かにこれでは確認のしようがありませんね。
デバッガはOSに標準でインストールされていたと思います。OSによって違うかも知れないのでわかりませんが…。デバッガはDOS窓で「debug」と打つと起動します。debugの後にファイル名を指定すると、そのファイルをデバッグモードで開きます。ですから、作ったcomファイルが、test.comの場合は、そのファイルがあるディレクトリで、
C:\>data\debug test.com
のように打ちます。すると
-
とプロンプトが変わります。
?↓
と入力するとヘルプが表示されます。
u↓
と入力するとアセンブラのコードが見られます。
t↓
でアセンブラコードを1行実行します。
mov ax,4c00h
のところまでtコマンドで実行していきます。つまりt↓を15回くらい入力します。すると
-t

AX=00F0 BX=0137 CX=003B DX=0000 SP=FFFE BP=0000 SI=012F DI=0133
DS=2D3D ES=2D3D SS=2D3D CS=2D3D IP=012A NV UP EI NG NZ AC PE NC
2D3D:012A B8004C MOV AX,4C00
と表示されると思います。


続く。。。
かんりにん
2010年12月24日 04:07
つづきです。


ここで、結果を見るために
d↓
と入力します。これはダンプ表示させるコマンドです。

0100 BE 2F 01 BF 33 01 BB 37-01 8A 04 02 05 88 07 8A
0110 44 01 12 45 01 88 47 01-8A 44 02 12 45 02 88 47
0120 02 8A 44 03 12 45 03 88-47 03 B8 00 4C CD 21 FF
0130 FF FF EF 01 00 00 00 00-00 00 F0 00 4D 2D DC 4F
と表示されると思いますが、
結果は0137番地に格納されています。そのアドレスを見ると
00 00 00 F0
と書かれています。INTELのプロセッサはリトルエンディアンですので、これをdd型に置き換えると反対から読みますので、F0000000となります。
EFFFFFFF+00000001=F0000000ですので、正解していると言うことになります。

デバッガで見ると結果がわかりづらいですが、理解していただけましたでしょうか?
2011年01月16日 17:36
はじめまして。アセンブリ言語を学習しようと思い
こちらのサイトにたどり着きました。
ところで質問があるのですが、一番初めのコンパイルの所で
ml /c /Fl test.asmを実行すると、fatal error A1000 cannot open file : test.asm と出てしまい、先に進めず困っています。
どうすれば解決できるのでしょうか。
かんりにん
2011年01月16日 18:19
nさん、当サイトにお越しくださいましてありがとうございます。
> fatal error A1000 cannot open file : test.asm
と言うのは、アセンブラがtest.asmというファイルを見つけられない場合に出るエラーです。そのコマンドを入力したディレクトリにtest.asmがありますでしょうか?
本文ではtest.asmをC:\に入れてくださいと書いていますが、DOS窓を起動してからC:\に移動してコマンドを入力するとは記載していませんでした。申し訳ございません。
Test.asmをCドライブ直下に置いてあるのでしたら、カレントディレクトリをC:\に移動しなくてはなりません。具体的には、
cd c:\
と入力します。
その後、
ml /c /Fl test.asm
と入力してみてください。
うまくコンパイルできることを祈っています。ダメでしたらまた書込をお願いします。
n
2011年01月17日 12:14
ご返信ありがとうございます。
うまくいきました!ありがとうございました。
かんりにん
2011年01月18日 01:25
nさん、うまくいってよかったです。本文に言葉足らず名部分があって申し訳ございませんでした。後日本文も修正いたします。
それでは今後ともよろしくお願いします。
stibear
2011年01月27日 18:57
どうも、最近このサイトをCの勉強に使わせていただいているのですが、
間違いかな?と思った箇所がありましたので報告させていただきます。
ttp://www5c.biglobe.ne.jp/~ecb/c/04_05_02.html このページの
数字や文字を入力する場合は、scanf関数で変数の前に「%」を つけました。
という文なのですが、これは、%ではなく&ではないでしょうか?
未だ勉強中の身ですので、間違っておりましたら申し訳ないです。
かんりにん
2011年01月27日 23:50
stibearさん、目指せプログラマー!にお越しくださいましてありがとうございます。
間違えのご指摘ありがとうございます。ご指摘の通り、「%」ではなく「&」ですね。修正いたします。

また間違えなどがありましたらぜひご指摘をお願いいたします。
それでは今後とも目指せプログラマー!をよろしくお願いいたします。
2011年02月23日 10:44
初めまして。ボクも将来はプログラマーを目指して勉強中です。
たまたまこのサイトを見つけたので、じっくり読ませてもらおうかなと思ってます。
M
2011年05月02日 10:54
こんにちは、Java入門、大変参考になっております。

気付いたんですが、Javaの基礎の構成のページの
図の画像に「ポインタ」がありますが、Javaにポインタは無いと聞いています。
C言語のと同じ図を使っているからかもしれませんが、Javaのほうを修正してはいかがですか。
かんりにん
2011年05月03日 00:50
スノービッツさん、はじめまして。
すみません。コメントいただいたのに全然気がつきませんでした。申し訳ございません。このサイトが少しでもスノービッツさんのお役に立てれば幸いです。それでは!
かんりにん
2011年05月03日 00:51
Mさん、ご指摘ありがとうございます!
確かにその通りですね。いやぁ、お恥ずかしい。
後ほど修正しますね。また何かありましたらご指摘ください。
それでは今後ともよろしくお願いいたします。
2011年05月22日 15:28
初めまして、こんにちは。
私は数日前からこのサイトでC言語の勉強をさせて頂いています。
そこで、作ったcファイルをURLにあるアップローダにコンパイルしてexe形式で載せているので、お時間よろしければ覗いてみてください。
それでは、これからも見させていただきますのでよろしくお願いします。
satanic
2011年05月22日 15:44
あと、追記ですが、
『日本赤十字社に義援金として10,000万円寄附いたしました。』
と言うのは10,000円書き間違いでは無いでしょうか?
10,000万円だと1億円になってしまうので…
連投失礼しました。
かんりにん
2011年05月23日 03:51
sataniさん、コメントありがとうございます。
1億円寄附できるほどネカチモだったらいいんですけどね~。
スモモ
2011年06月11日 01:53
初めまして、こんにちは。
私は数日前からこのサイトでC言語の勉強をさせて頂いています。
これからも使わせていただきます。
よろしくお願いします。
かんりにん
2011年06月14日 02:15
スモモさん、コメントありがとうございます。
スモモさんのお勉強に一役買えれば幸いです。ボリュームもありますが、ぜひ頑張ってくださいね。それでは。
2011年07月05日 07:10
はじめまして。
STL-mapのキー付近検索をググって貴HPに座礁?しました。

map::lower_bound の解説について(参照URL)、
『key以下の要素(pair)の最後を指すイタレーターを返します。』
…とありますが、『以上の』の誤りではないかと思います。
multimap/set/multisetについても同様の関数があるので、
チェック頂けると幸いです。
IBM_ThinkPad
2011年07月07日 16:58
Java入門を読ませていただいております。
気づいた点を・・・

■6. 簡単な演算
c2 = (char)n2; // 明示的なキャスト/FONT>
^^^^^^タグの記述ミスでしょうか?

■例題
変数a,b,cに適当な数が代入されている。この変数中で最小値を変数wに代入する。
・a≦bでかつa≦cの時 → 最小値は a ←a=b=cの場合でも成り立つため最小値はa&b&cとなる可能性がある。
・a≦bでかつa>cの時 → 最小値は c 
・a>bでかつb≦cの時 → 最小値は b ←a>(b=c)の場合でも成り立つため最小値はb&cとなる可能性がある。
・a>bでかつb>cの時 → 最小値は c 
⇒この例題には≦や≧は用いないほうが良いのではないでしょうか?

ついでに
■個人用途以外でご利用になる場合の注意
(いわゆる、パソコン教室、IT教室、e-Learning)の使用は禁止いたします。(理由は講述します。)
^^^^後述の誤変換でしょうか?
IBM_ThinkPad
2011年07月07日 17:01
すいません空白がカットされてしまい、よくわからない投稿になってしまいました。

■6. 簡単な演算
例に「/FONT>」が表示されている部分があります。
■個人用途以外でご利用になる場合の注意
講述⇒後述の誤変換と思われます。

#後藤真紀も後藤真希ですが・・・
IBM_ThinkPad
2011年07月08日 09:39
追加です。

■5. 演算子==とequalsメソッド
Test.java

import java.io.*;

class Test{
public static void main(String args[]){
MyPoint pnt1 = new MyPoint(50, -20);
MyPoint pnt2 = new MyPoint(pnt1);

System.out.println("pnt1 --> " + pnt1.toString());
System.out.println("pnt2 --> " + pnt1.toString());←【pnt2.toString()】のほうが宜しいのではないでしょうか?
if( pnt1.equals(pnt2) )
System.out.println("2つは同じです。");
else
System.out.println("2つは違います。");
}
}
IBM_ThinkPad
2011年07月08日 10:34
五月雨ですいません。

7章:クラス
1. thisキーワード
まず、4-3で解説したようにコンストラクタはインスタンスが作られるときに最初に呼ばれる【めそっ】である。

×めそっ
○メソッド
かんりにん
2011年07月09日 02:29
にけさん、ご指摘ありがとうございます。
確かにその通りでございます。lower_boundは「以上」ですね。
英語力の無さが露呈してしまいました。お恥ずかしい。
また間違いがあればご指摘ください。
どうもありがとうございました。
かんりにん
2011年07月09日 02:31
スモモさん、ようこそ「目指せプログラマー!」へ。
将来日本のIT技術を背負って立つ人材になってくださいね(笑)。
かんりにん
2011年07月09日 02:36
Mさん、ご指摘いただいてからだいぶ時間がたってしまいましたが、図を修正しました。改めてご指摘感謝いたしております。
今後とも当サイトをよろしくお願いいたします。
2011年07月09日 02:59
IBM_ThinkPadさん、たくさんご指摘ありがとうございます。
題(最小値を求める)部分と後藤真希さんの部分以外修正しました。リロードしないと修正が反映されない場合がございますが。
今回修正しなかった最小値を求める例題については、もう少しゆっくり考えたいのでお時間をください。また、後藤真希に関しては、固有名詞はすべて実在の人物にならないように微妙に変えております。例えば「宇多田ヒカリ」「倉木真衣」などです。ご了承ください。
他にもミスやアドバイスなどがあればぜひご指摘くださいますようお願いいたします。
それでは今後ともよろしくお願いいたします。
pudding
2011年10月05日 22:35
はじめまして
勉強のためにいつも参考にさせてもらっています。

プログラムを同じように書いてたのですが C++のページの
http://www5c.biglobe.ne.jp/~ecb/cpp/04_17_03.html
このページのプログラムが実行結果のようにならないようです。
環境は VC++2010 Express を使ってます。
デバック作業を行ってみると
delete[] pMem
この部分が、
オーバロードとして記述したところへ入っていかないようでした。
かんりにん
2011年10月12日 20:41
puddingさん、間違えのご指摘ありがとうございます。
newとdeleteの関数の中のstatic変数を定義する時にintが抜けていましたので、コンパイルエラーになってしまいましたので修正しました。
しかしながら、VC++2005では、きちんとオーバーロードされ、うまく実行できました。お手数ですがもう一度ご確認していただきますでしょうか。
よろしくお願いします。
pudding1025
2011年10月15日 21:00
ご返答ありがとうございます。

やはり自分の環境ですとこうなってしまいます
Memory block 1 allocated for 10 bytes
Memory block 2 allocated for 1 bytes
Memory block 1 deallocated
Memory block 2 allocated for 10 bytes
Memory block 3 allocated for 1 bytes
Memory block 2 deallocated
Memory block 3 allocated for 10 bytes
Memory block 4 allocated for 1 bytes
Memory block 3 deallocated
     :
何か策はありますでしょうか
かんりにん
2011年10月18日 08:06
pudding1025さん、ダメでしたか・・・。
VCのバージョンによって動作が異なっては、コンパイラとして動かと思いますが、うーん。自分の環境で再現できないので何とも言えませんが、
delete[] pMem;

delete pMem;
にして試してもらえますか。
これで治ればいいのですが・・・・。
Aria2334
2012年07月29日 11:52
失礼します。
はじめまして、Aria2334です。

プログラムをしたいと思ってる者ですが。。。
まずは簡単なものから始めようと思うのですが
このパソコンは、私のものではないので
壊さないようにしたいんです。
そこで、管理人さんに質問なのですが 
Mac専用のゲームツクールは、
ダウンロードなどをしても
セキュリティがおかしくなったり
パソコンが壊れたりしないでしょうか?

返信お願いします。
かんりにん
2012年07月30日 18:45
Aria2334さん、当サイトにお越しくださいましてありがとうございます。
申し訳ございませんが、私はMacを持っていませんのでわかりませんが、そのソフトがマルウェアとかではない信頼できるソフトならば、セキュリティがおかしくなったりパソコンが壊れたりはしないと思います。
あまりお役に立てずにすみません。
Aria2334
2012年08月02日 15:19
失礼します。
返信して下さってありがとうございます!

いえ、とても役に立ちました!
これからやってみたいとおもいます。

ありがとうございました!
かんりにん
2012年08月04日 11:21
Aria2334さん、こんにちは。
これから頑張ってくださいね。
村長
2013年01月28日 18:21
バイナリサーチを使った練習問題についてです。
反復構造内のif( syoji((1+h)/2-1) < a )についてyesだった場合、
下限を真ん中のひとつ奥に移動しますよね?この場合5でしょうか。
すると反復構造で上に戻ってまたさきほどの条件に引っかかって・・・
仮にsyoji[4]以降に該当する金額があった場合、ずっとlを引き上げるだけで、求まりませんでした。
if( syoji(h+l)/2 = a )としたほうがいいと思います。lとhが重なった場合も正しく動きますよね?

どうなんでしょう・・・アルゴリズム学び始めてまだ1週間も満たないので軽薄な考え方かもしれませんが、どうしてもここだけ解答を見て、あれ?求まらないぞ・・・となりました。

よろしくお願いします。
かんりにん
2013年01月29日 01:14
村長さん、当サイトにお越しくださいましてありがとうございます。
確認して後日お返事いたします。もうしばらく(1週間程度)お待ちくださいますようお願いいたします。
村長
2013年02月01日 16:23
了解です。
ありがとうござます!
かんりにん
2013年02月05日 02:03
村長さん、お返事が遅くなってすみません。
当該ページを修正いたしました。
アルゴリズム(フローチャート)は正しいのですが、それをプログラムに落とすときにミスったようです。申し訳ございません。

修正箇所は以下の通りです。
・while文の判定が間違っていた。
・if文の判定が不等号が逆だった。

ご指摘いただいたif( syoji(h+l)/2 = a )は、2つめの条件判断で行っていますので、不要かと思います。
上記2点を修正してもう一度お考えいただければと思います。

今後ともよろしくお願いいたします。
shinya
2013年06月18日 22:36
管理人さんはじめまして、JAVA入門について拝見させて頂きました。
参考になりました。有難うございますm(_ _)m

リンクミスだと思いますが、以下を指摘させて下さい。

"15. 入出力"の"32. スレッド間通信"の
http://www5c.biglobe.ne.jp/~ecb/java/15_32.html

下側の"次のページへ"のパスが間違っています。
正:http://www5c.biglobe.ne.jp/~ecb/java/15_32_02.html
誤:http://www5c.biglobe.ne.jp/~ecb/java/15_31_02.html

*上側の"次のページへ"のパスは正しいです。

お時間ある時に修正してみてください。
かんりにん
2013年07月23日 00:51
shinyaさん、間違えのご指摘ありがとうございます。
そしてお返事が遅くなりまして申し訳ございません。
先ほど修正しました。ブラウザによってはキャッシュに残っているためすぐに更新されない場合がございます。ご迷惑をおかけしてすみませんでした。
これに懲りずに、またミスを見つけましたらぜひお教え願えればと思います。
nam
2013年07月27日 15:14
はじめて投稿する者です。
(2,2)しきい値秘密分散法を用いて、文字画像(T)を暗号化(2分割)し、重ね合わせた時、画像(Tの文字画像)が復元されるプログラムを作成しているのですが、ソースコードが複雑だと聞いて、どのようにプログラムを構築すればいいか全然分かりません。
ヒントだけでもいいので教えてください。

開発環境はVisualC++2010です。
あるいはフローチャートでもいいので、アドバイスいただけないでしょうか?
回答をよろしくお願いします。
かんりにん
2013年07月29日 02:55
namさん、目指せプログラマー!においでくださりありがとうございます。
申し訳ございませんが、この掲示板は当サイトの内容に関する問い合わせに解説しているもので、当サイトにお越しくださった方の個々の案件に対応する場ではございません。ご了承願います。
muranoya
2014年03月20日 03:23
初めまして投稿する者です。muranoyaと申します。

C++の仮想デストラクタのウェブページを見ていて気づいた点なのですが、以下のページにおける非仮想デストラクタの出力の一部が間違っているように思います。
http://www5c.biglobe.ne.jp/~ecb/cpp/06_09.html

正しくは
Base::Base()
Deriv::Deriv()
Deriv::~Deriv()
Base::~Base()

Base::Base()
Base::~Base()

Base::Base()
Deriv::Deriv()
Base::~Base()

Base::Base()
Deriv::Deriv()
Deriv::~Deriv()
Base::~Base()
だと思うのですが、如何でしょうか。
walves
2014年07月18日 13:35
初めまして、このサイトには度々お世話になっております。

C++入門のSTLのページ(http://www5c.biglobe.ne.jp/~ecb/cpp/07_04.html)において、マルチマップが"mutimap"とlが抜けていたのでここに報告します。
かんりにん
2014年07月21日 01:43
muranoyaさん、ご指摘ありがとうございました。
連絡をいただいてからだいぶ経ってしまいましたが、修正しました。
また間違えがありましたらご指摘をお願いします。
かんりにん
2014年07月21日 03:25
walvesさん、間違えのご指摘ありがとうございます。
修正しました。
また間違えがありましたらご指摘をお願いします。
ありがとうございました。

この記事へのトラックバック