C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   二分木で簡易人工知能 ....   
     ・[5051] Yuki 
     ・[5052] holmes 
     ・[5053] holmes 
     ・[5054] Yuki 
     ・[5056] holmes 
     ・[5057] Yuki 
     ・[5058] Yuki 
     ・[5060] 管理人 
     ・[5061] holmes 
     ・[5079] Yuki 
     ・[5110] holmes 
     ・[5111] holmes 
     ・[5112] 管理人 
   素朴(?な疑問   
     ・[5105] 管理人 
   C言語について   
     ・[5092] 管理人 
     ・[5093] 管理人 
     ・[5094] asd 
     ・[5104] 管理人 
   よくわかりませn   
     ・[5071] ぽん太 
     ・[5072] ふぐお 
     ・[5073] ぽん太 
     ・[5074] ふぐお 
     ・[5075] ぽん太 
     ・[5077] バグ 
     ・[5096] ふぐお 
     ・[5097] ぽん太 
     ・[5098] ふぐお 
     ・[5099] ぽん太 
     ・[5100] curthis 
     ・[5101] Justy 
     ・[5102] curthis 
     ・[5103] ふぐお 
   たびたびすみません質 ....   
     ・[5025] Yuki 
     ・[5026] ももた 
     ・[5027] Yuki 
     ・[5028] ももた 
     ・[5029] Yuki 
     ・[5030] ももた 
     ・[5031] Yuki 
     ・[5032] ももた 
     ・[5034] Yuki 
     ・[5035] keichan 
     ・[5036] ももた 
     ・[5037] Yuki 
     ・[5038] ももた 
     ・[5039] Yuki 
     ・[5040] ももた 
     ・[5041] ももた 
     ・[5042] Yuki 
     ・[5043] keichan 
     ・[5044] ももた 
     ・[5045] Yuki 
     ・[5046] ももた 
     ・[5047] Yuki 
     ・[5048] ももた 
     ・[5049] Yuki 
     ・[5062] 管理人 
     ・[5063] 管理人 
     ・[5064] ももた 
     ・[5066] 管理人 
   文字認識について   
     ・[4816] asd 
     ・[4854] ナガタ 
     ・[4867] asd 
     ・[4869] ナガタ 
     ・[4876] asd 
     ・[4884] 管理人 
     ・[4888] Justy 
     ・[4961] ナガタ 
     ・[4975] むつ 
     ・[4980] ナガタ 
     ・[4982] 管理人 
     ・[4987] Justy 
     ・[4991] むつ 
     ・[4993] ナガタ 
     ・[4994] むつ 
     ・[4995] Justy 
     ・[4996] ナガタ 
     ・[5000] asd 
     ・[5017] ナガタ 
     ・[5023] asd 
   VC++でのライブラリの ....   
     ・[5014] Justy 
     ・[5021] 組木紙織 
     ・[5022] Blue 
   導入について   
     ・[5003] 管理人 
     ・[5005] ナナシ 
     ・[5006] 管理人 
     ・[5009] ナナシ 
     ・[5020] 管理人 
   -   
     ・[5016] しっぽ 
     ・[5019] 管理人 
   ゲームを作りたいので ....   
     ・[5008] 管理人 
     ・[5011] バグ 
   質問です!   
     ・[4926] Yuki 
     ・[4927] ももた 
     ・[4928] Justy 
     ・[4929] ももた 
     ・[4930] Justy 
     ・[4933] ももた 
     ・[4935] ももた 
     ・[4936] Yuki 
     ・[4937] ももた 
     ・[4938] Justy 
     ・[4939] box 
     ・[4942] ももた 
     ・[4944] box 
     ・[4945] バグ 
     ・[4946] ももた 
     ・[4947] ももた 
     ・[4951] ももた 
     ・[4952] box 
     ・[4953] ももた 
     ・[4954] box 
     ・[4956] ももた 
     ・[5001] asd 
   プログラムメモリのア ....   
     ・[4889] 管理人 
     ・[4914] Justy 
     ・[4998] ken 
     ・[4999] ken 
   二分木中の要素数を求 ....   
     ・[4950] box 
     ・[4955] ゆきもちこ 
     ・[4962] box 
     ・[4966] ゆきもちこ 
     ・[4970] box 
     ・[4979] ゆきもちこ 
   画像の明るさについて   
     ・[4885] 管理人 
     ・[4941] 名無し 
     ・[4972] 管理人 
   プログラムの実行につ ....   
     ・[4971] 管理人 
   ポインタの質問   
     ・[4960] 管理人 
     ・[4963] box 
   累乗を行うとき   
     ・[4801] ぽん太 
     ・[4868] box 
     ・[4919] sign 
     ・[4920] ぽん太 
     ・[4934] sign 
     ・[4943] しっぽ 
     ・[4948] しっぽ 
     ・[4957] sign 
   printfとscanfについて ....   
     ・[4809] box 
     ・[4818] 組木紙織 
     ・[4822] box 
     ・[4824] 組木紙織 
     ・[4827] box 
     ・[4870] 組木紙織 
     ・[4895] 管理人 
     ・[4909] Justy 
     ・[4910] 管理人 
     ・[4940] 組木紙織 
   キー入力について   
     ・[4874] Justy 
     ・[4931] tower 
     ・[4932] Justy 
   学校の課題なのですが ....   
     ・[4744] Yuki 
     ・[4745] keichan 
     ・[4746] 超初心者 
     ・[4747] keichan 
     ・[4748] Yuki 
     ・[4758] 超初心者 
     ・[4769] Yuki 
     ・[4774] 超初心者 
     ・[4775] Yuki 
     ・[4779] 超初心者 
     ・[4781] keichan 
     ・[4790] 超初心者 
     ・[4828] Yuki 
     ・[4924] 超初心者 
   ||について (おまけも ....   
     ・[4901] 管理人 
     ・[4904] 管理人 
     ・[4906] 管理人 
     ・[4921] GPGA 
     ・[4922] magu 
     ・[4923] 管理人 
   どうもです   
     ・[4599] 管理人 
     ・[4605] ぽん太 
     ・[4611] 管理人 
     ・[4614] ぽん太 
     ・[4623] 管理人 
     ・[4624] 管理人 
     ・[4627] ぽん太 
     ・[4634] 管理人 
     ・[4635] 管理人 
     ・[4636] 管理人 
     ・[4638] ぽん太 
     ・[4641] 管理人 
     ・[4642] ぽん太 
     ・[4643] 大工 
     ・[4644] ぽん太 
     ・[4645] 大工 
     ・[4646] ぽん太 
     ・[4647] 大工 
     ・[4661] ぽん太 
     ・[4666] 管理人 
     ・[4697] 大工 
     ・[4698] 管理人 
     ・[4701] 管理人 
     ・[4702] 大工 
     ・[4703] 管理人 
     ・[4704] 大工 
     ・[4705] 管理人 
     ・[4708] ぽん太 
     ・[4713] 管理人 
     ・[4714] ぽん太 
     ・[4715] 管理人 
     ・[4716] ぽん太 
     ・[4717] 管理人 
     ・[4719] ぽん太 
     ・[4749] 管理人 
     ・[4761] ぽん太 
     ・[4763] 管理人 
     ・[4766] ぽん太 
     ・[4786] 管理人 
     ・[4795] ぽん太 
     ・[4886] 管理人 
     ・[4891] ぽん太 
     ・[4894] 管理人 
     ・[4896] ぽん太 
     ・[4898] 管理人 
     ・[4900] ぽん太 
     ・[4902] 管理人 
     ・[4903] ぽん太 
     ・[4905] 管理人 
     ・[4907] ぽん太 
     ・[4908] 管理人 
     ・[4912] ぽん太 
     ・[4913] 管理人 
     ・[4915] ぽん太 
     ・[4916] ぽん太 
     ・[4917] 管理人 
     ・[4918] ぽん太 
   配列なんですが。   
     ・[4787] Yuki 
     ・[4788] box 
     ・[4789] 管理人 
     ・[4838] tower 
     ・[4844] box 
     ・[4845] ぽん太 
     ・[4849] tower 
     ・[4851] ぽん太 
     ・[4853] box 
     ・[4878] りむ 
     ・[4880] Hermit 
     ・[4881] keichan 
     ・[4882] Justy 
     ・[4892] りむ 
     ・[4911] Justy 
   無題   
     ・[4803] keichan 
     ・[4883] sumioturk 
     ・[4897] 管理人 
   シューティングについ ....   
     ・[4837] バグ 
     ・[4893] 管理人 
   無題   
     ・[4887] 管理人 
   無題   
     ・[4848] ももた 
     ・[4852] Yuki 
     ・[4855] ももた 
     ・[4856] box 
     ・[4857] ももた 
     ・[4858] ももた 
     ・[4859] keichan 
     ・[4860] ももた 
     ・[4861] keichan 
     ・[4862] box 
     ・[4863] ももた 
     ・[4864] Yuki 
     ・[4865] box 
     ・[4866] ももた 
   質問です・・。   
     ・[4807] box 
     ・[4808] ももた 
     ・[4810] box 
     ・[4813] ももた 
     ・[4814] ももた 
     ・[4817] box 
     ・[4821] ももた 
     ・[4825] box 
     ・[4826] ももた 
     ・[4829] ももた 
     ・[4830] box 
     ・[4831] むつ 
     ・[4836] ももた 
     ・[4850] ももた 

Name: holmes  ..ぴよぴよ(501ポイント)   Date: 2007/02/27(火) 17:07   No:5050       
Title: 二分木で簡易人工知能??    
#include <stdio.h>

#include <stdlib.h>

#define NIL 0
#define YES 1
#define NO 0



struct OBJECT{
struct OBJECT *yn[2];
char *item;
};


typedef struct OBJECT NODE;


NODE *node_malloc();
NODE *add_node(NODE *kotae);
void out(FILE *fp,NODE *thing);
NODE *in(FILE *fp);


main(){
NODE *root,*p,*thing;
char ans[]="y",ansyn,file[256];
FILE *fp;

printf("ファイルからデータを読み込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='n'){
root=node_malloc();
printf("最初の質問は何ですか?\n");
scanf("%s",root->item);

thing=node_malloc();
root->yn[YES]=thing;
printf("'YES'の時の答えは何ですか?\n");
scanf("%s",thing->item);

thing=node_malloc();
root->yn[NO]=thing;
printf("'NO'の時の答えは何ですか?\n");
scanf("%s",thing->item);
}
else{
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"r"))==NULL){
printf("%sを開けません\n",file);
exit(0);
}
root=in(★★★★);
fclose(fp);
}

ans[0]='y';
while(ans[0]=='y'){
thing=★★★★;
while(thing->yn[0]!=NIL&&thing->yn[1]!=NIL){
☆☆☆☆=thing;
printf("%sか?[y/n]",thing->item);
scanf("%s",ans);
ansyn=★★★★;
thing=thing->yn[ansyn];
}
printf("それは%sか?[y/n]",thing->item);
scanf("%s",ans);
if(ans[0]=='n')★★★★->yn[★★★★]=add_node(thing);
printf("続けますか?[y/n]");
scanf("%s",ans);
}
printf("データをファイルに書き込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='y'){
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL){
printf("%sをオープンできない\n",file);
exit(0);
}
★★★★(fp,★★★★);
fclose(fp);
}
}
/*データの領域を確保する関数*/
NODE *node_malloc(){
NODE *n;
if((n=malloc(sizeof(NODE)))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
if((n->item=malloc(sizeof(char)*256))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
n->[★★★★]=n->yn[★★★★]=NIL;
return(n);
}
/*新しいデータを追加する関数*/
NODE *add_node(NODE *kotae){
NODE *quest,*child;
child=node_malloc();
printf("それは何ですか?\n");
scanf("%s",child->item);

printf("%sは%sとどこが違うのですか?\n",child->item,kotae->item);
quest=node_malloc();
scanf("%s",quest_item);
quest->yn[NO]=★★★★;
quest->yn[YES]=★★★★;
return(★★★★);
}
/*ファイルへ書き込む関数*/
void out(FILE *fp,NODE *thing){
fprintf(fp,"%d %s\n",thing->yn[YES]==NIL&&thing->yn[NO]==NIL,★★★★);
if(thing->yn[YES]!=NIL)out(fp,★★★★);
if(thing->yn[NO]!=NIL)out(fp,★★★★);
}
/*ファイルから入力する関数*/
NODE *in(FILE *fp){
int n;
NODE *thing;

thing=node_malloc();
fscanf(fp,"%d %s",&n,★★★★);
if(n==0){
thing->yn[★★★★]=★★★★(fp);
thing->yn[★★★★]=★★★★(fp);
}
return(★★★★);
}


501ポイント を手に入れた。


Name: Yuki  ..中級者(10,700ポイント)   Date: 2007/02/27(火) 17:10   No:5051     
Title: Re:二分木で簡易人工知能??    
★★★★の部分を埋めろということなのかな?


23ポイント を手に入れた。

Name: holmes  ..ぴよぴよ(862ポイント)   Date: 2007/02/27(火) 17:22   No:5052     
Title: Re:二分木で簡易人工知能??    
学校の授業で、二分木を使って(超)簡易人工知能を作ろうとしています。
たとえば、初期状態のコンピュータは犬と猫の情報しかもっていないと仮定して、(人間は"象"と答えてほしい)
COMP>4本足ですか?
USER>yes
COMP>ワンと鳴きますか?
USER>no
COMP>それは猫ですね?
USER>no
--------------------コンピュータはここまでの情報しか知りません。
ですが、コンピュータが知らない情報を人間が教えていくというプログラムを作ろうとしています。
続きで
COMP>それは何ですか?
USER>象です
COMP>象は猫とどこがちがいますか?
USER>鼻が長いです

"それは何ですか?"以降に入力した情報を利用して新たな二分木を自動で作成していきたいのです。
プログラムを終了したあとも情報を保持したいので、ファイル処理も利用しています。
学校で配られたプリントを参考にして上記の状態までは作ったのですが、★★★★となっている箇所には何を入れていいかわかりません。これだけの情報で埋めることができますか??
よろしくお願いします。


361ポイント を手に入れた。

Name: holmes  ..ぴよぴよ(962ポイント)   Date: 2007/02/27(火) 17:25   No:5053     
Title: Re:二分木で簡易人工知能??    
>Yukiさん
早速のコメントありがとうございます。
件名を入力する際、Enterを2回押してしまい、中途半端な状態で書き込んでしまいました;
上にも書いたとおり、★★★★を埋めて欲しいのです。
よろしくお願いします。


この掲示板でプログラムを投稿する際にTabをちゃんと表示させる方法とかありますか??


100ポイント を手に入れた。

Name: Yuki  ..中級者(10,758ポイント)   Date: 2007/02/27(火) 17:30   No:5054     
Title: Re:二分木で簡易人工知能??    
>この掲示板でプログラムを投稿する際にTabをちゃんと表示させる方法とかありますか??

<pre>タグでくくると良いですよ。
※<>は半角でお願いします。



58ポイント を手に入れた。

Name: holmes  ..かけだし(2,161ポイント)   Date: 2007/02/27(火) 17:41   No:5056     
Title: Re:二分木で簡易人工知能??    
tab失敗しちゃいました;;
やっぱり素人はダメですね><
やってくださる方いましたらよろしくお願いします。。。


2倍のポイントを手に入れた! 88ポイント を手に入れた。

Name: Yuki  ..中級者(12,127ポイント)   Date: 2007/02/27(火) 17:52   No:5057     
Title: Re:二分木で簡易人工知能??    
<pre>

#include <stdio.h>
#include <stdlib.h>

#define NIL 0
#define YES 1
#define NO 0

struct OBJECT{
struct OBJECT *yn[2];
char *item;
};

typedef struct OBJECT NODE;

NODE *node_malloc();
NODE *add_node(NODE *kotae);
void out(FILE *fp,NODE *thing);
NODE *in(FILE *fp);

main(){
NODE *root,*p,*thing;

char ans[]="y",ansyn,file[256];
FILE *fp;

printf("ファイルからデータを読み込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='n'){
root=node_malloc();
printf("最初の質問は何ですか?\n");
scanf("%s",root->item);

thing=node_malloc();
root->yn[YES]=thing;
printf("'YES'の時の答えは何ですか?\n");
scanf("%s",thing->item);

thing=node_malloc();
root->yn[NO]=thing;
printf("'NO'の時の答えは何ですか?\n");
scanf("%s",thing->item);
}
else{
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"r"))==NULL){
printf("%sを開けません\n",file);
exit(0);
}
root=in(★★1★★);
fclose(fp);
}

ans[0]='y';
while(ans[0]=='y'){
thing=★★2★★;
while(thing->yn[0]!=NIL&&thing->yn[1]!=NIL){
★★3★★=thing;
printf("%sか?[y/n]",thing->item);
scanf("%s",ans);
ansyn=★★4★★;
thing=thing->yn[ansyn];
}
printf("それは%sか?[y/n]",thing->item);
scanf("%s",ans);
if(ans[0]=='n')★★5★★->yn[★★6★★]=add_node(thing);
printf("続けますか?[y/n]");
scanf("%s",ans);
}
printf("データをファイルに書き込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='y'){
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL){
printf("%sをオープンできない\n",file);
exit(0);
}
★★7★★(fp,★★8★★);
fclose(fp);
}
}
/*データの領域を確保する関数*/
NODE *node_malloc(){
NODE *n;
if((n=malloc(sizeof(NODE)))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
if((n->item=malloc(sizeof(char)*256))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
n->[★★9★★]=n->yn[★★10★★]=NIL;
return(n);
}
/*新しいデータを追加する関数*/
NODE *add_node(NODE *kotae){
NODE *quest,*child;
child=node_malloc();
printf("それは何ですか?\n");
scanf("%s",child->item);

printf("%sは%sとどこが違うのですか?\n",child->item,kotae->item);
quest=node_malloc();
scanf("%s",quest_item);
quest->yn[NO]=★★11★★;
quest->yn[YES]=★★12★★;
return(★★13★★);
}
/*ファイルへ書き込む関数*/
void out(FILE *fp,NODE *thing){
fprintf(fp,"%d %s\n",thing->yn[YES]==NIL&&thing->yn[NO]==NIL,★★14★★);
if(thing->yn[YES]!=NIL)out(fp,★★15★★);
if(thing->yn[NO]!=NIL)out(fp,★★16★★);
}
/*ファイルから入力する関数*/
NODE *in(FILE *fp){
int n;
NODE *thing;

thing=node_malloc();
fscanf(fp,"%d %s",&n,★★17★★);
if(n==0){
thing->yn[★★18★★]=★★19★★(fp);
thing->yn[★★20★★]=★★21★★(fp);
}
return(★★22★★);
}

</pre>

このようにくくります。

わかりやすいように★に番号をつけました。


1,369ポイント を手に入れた。

Name: Yuki  ..中級者(12,084ポイント)   Date: 2007/02/27(火) 18:02   No:5058     
Title: Re:二分木で簡易人工知能??    
>root=in(★★1★★);
>★★7★★(fp,★★8★★);

この箇所は、何をしたいかと、内部関数の仕様を見ればわかると思います。


43ポイント を落としてしまった。

Name: 管理人 [URL]  ..ハッカー(213,279ポイント)   Date: 2007/02/27(火) 18:11   No:5060     
Title: Re:二分木で簡易人工知能??    
<pre>と</pre>でソースコードを囲みます。
<>は半角で入力してください。
コードは編集しておきました。


32ポイント を手に入れた。

Name: holmes  ..かけだし(1,098ポイント)   Date: 2007/02/27(火) 18:25   No:5061     
Title: Re:二分木で簡易人工知能??    
管理人さん、Yukiさんありがとうございます!!


やはりこれだけの情報では穴埋めは厳しいですかね;


48ポイント を手に入れた。

Name: Yuki  ..上級者(16,082ポイント)   Date: 2007/02/28(水) 09:44   No:5079     
Title: Re:二分木で簡易人工知能??    
#include <stdio.h>

#include <string.h>
#include <conio.h>
#include <stdlib.h>

#include <stdio.h>
#include <stdlib.h>

#define NIL 0
#define YES 1
#define NO 0

struct OBJECT{
struct OBJECT *yn[2];
char *item;
};

typedef struct OBJECT NODE;

NODE *node_malloc();
NODE *add_node(NODE *kotae);
void out(FILE *fp,NODE *thing);
NODE *in(FILE *fp);


main(){
NODE *root,*p,*thing;
char ans[]="y",ansyn,file[256];
FILE *fp;

printf("ファイルからデータを読み込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='n'){
root=node_malloc();
printf("最初の質問は何ですか?\n");
scanf("%s",root->item);

thing=node_malloc();
root->yn[YES]=thing;
printf("'YES'の時の答えは何ですか?\n");
scanf("%s",thing->item);

thing=node_malloc();
root->yn[NO]=thing;
printf("'NO'の時の答えは何ですか?\n");
scanf("%s",thing->item);
}
else{
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"r"))==NULL){
printf("%sを開けません\n",file);
exit(0);
}
// root=in(★★★★);
root=in(fp);
fclose(fp);
}

ans[0]='y';
while(ans[0]=='y'){
// thing=★★★★;
thing=root;
while(thing->yn[0]!=NIL&&thing->yn[1]!=NIL){
// ☆☆☆☆=thing;
p=thing;
printf("%sか?[y/n]",thing->item);
scanf("%s",ans);
// ansyn=★★★★;
if(ans[0] == 'y'){
ansyn=YES;
}
else{
ansyn=NO;
}
thing=thing->yn[ansyn];
}
printf("それは%sか?[y/n]",thing->item);
scanf("%s",ans);
// if(ans[0]=='n')★★★★->yn[★★★★]=add_node(thing);
if(ans[0]=='n')p->yn[NO]=add_node(thing);
printf("続けますか?[y/n]");
scanf("%s",ans);
}
printf("データをファイルに書き込みますか?[y/n]");
scanf("%s",ans);
if(ans[0]=='y'){
printf("ファイル名:");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL){
printf("%sをオープンできない\n",file);
exit(0);
}
// ★★★★(fp,★★★★);
out(fp,root);
fclose(fp);
}
}
/*データの領域を確保する関数*/
NODE *node_malloc(){
NODE *n;
if((n=malloc(sizeof(NODE)))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
if((n->item=malloc(sizeof(char)*256))==NULL){
printf("MEMORY ERROR\n");
exit(0);
}
// n->[★★★★]=n->yn[★★★★]=NIL;
n->yn[YES]=n->yn[NO]=NIL;
return(n);
}
/*新しいデータを追加する関数*/
NODE *add_node(NODE *kotae){
NODE *quest,*child;
child=node_malloc();
printf("それは何ですか?\n");
scanf("%s",child->item);

printf("%sは%sとどこが違うのですか?\n",child->item,kotae->item);
quest=node_malloc();
// scanf("%s",quest_item); // quest_itemが何かわからないのでコメントアウト
// quest->yn[NO]=★★★★;
quest->yn[NO]=quest;
// quest->yn[YES]=★★★★;
quest->yn[YES]=kotae;
return(child);
}
/*ファイルへ書き込む関数*/
void out(FILE *fp,NODE *thing){
// fprintf(fp,"%d %s\n",thing->yn[YES]==NIL&&thing->yn[NO]==NIL,★★★★);
fprintf(fp,"%d %s\n",thing->yn[YES]==NIL&&thing->yn[NO]==NIL,thing->item);
// if(thing->yn[YES]!=NIL)out(fp,★★★★);
if(thing->yn[YES]!=NIL)out(fp,thing->yn[YES]);
// if(thing->yn[NO]!=NIL)out(fp,★★★★);
if(thing->yn[NO]!=NIL)out(fp,thing->yn[NO]);
}
/*ファイルから入力する関数*/
NODE *in(FILE *fp){
int n;
NODE *thing;

thing=node_malloc();
// fscanf(fp,"%d %s",&n,★★★★);
fscanf(fp,"%d %s",&n,thing->item);
if(n==0){
// thing->yn[★★★★]=★★★★(fp);
thing->yn[YES]=in(fp);
// thing->yn[★★★★]=★★★★(fp);
thing->yn[NO]=in(fp);
}
return(thing);
}




とりあえず埋めてみました。
quest_itemが何かわからないのでコメントアウトしました。
mallocした領域は使い終わったらfreeしないとダメですよ。


2倍のポイントを手に入れた! 3,998ポイント を手に入れた。

Name: holmes  ..かけだし(1,236ポイント)   Date: 2007/02/28(水) 23:20   No:5110     
Title: Re:二分木で簡易人工知能??    
Yukiさん本当にありがとうございます!!
おかげで、何とかプログラムを完成させることができました。
本当にありがとうございました。


55ポイント を手に入れた。

Name: holmes  ..かけだし(1,215ポイント)   Date: 2007/02/28(水) 23:20   No:5111 解決!     
Title: Re:二分木で簡易人工知能??    
マーク間違えました;解決!です!!

21ポイント を落としてしまった。

Name: 管理人 [URL]  ..ハッカー(221,173ポイント)   Date: 2007/02/28(水) 23:23   No:5112     
Title: Re:二分木で簡易人工知能??    
holmesさん、ありがとうございます。
記事やマークを間違えた時は「編集」から直す事が出来ますよ。


52ポイント を手に入れた。



Name: 黒猫  ..ぴよぴよ(366ポイント)   Date: 2007/02/28(水) 20:41   No:5095       
Title: 素朴(?な疑問    
ゲームプログラミングの館の「ジャンプの考え方」のところなどで出てくる物理の数式。

実は私はまったく物理を学んだことがなかったのですが、

これを機に物理を勉強しようと思っています。

そこで質問なのですが、もし物理を勉強するならどの程度まで勉強すればいいでしょうか?

もしくはC言語で必要な物理の公式・法則とはどんなものがあるのか教えてもらえませんか?



138ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(220,539ポイント)   Date: 2007/02/28(水) 22:03   No:5105 解決!     
Title: Re:素朴(?な疑問    
こんにちは黒猫さん。

物理を習った事無いと、なかなか入門程度でも難しいですよね。

物理には様々な分野がありますし、難しいイメージがありますからとっつきにくいと思いますが、
原子や電磁気の分野などは関係ありませんから、実際プログラムで普段使うのは

力学の中でも最初に出てくる「物体の運動」位のものです。

参考書を見ても、最初の何ページかで終わってしまうような少ない程度しか普通使いません。

ただ物理的なシュミレーションなどをしようと思えばそれ相応の知識がいるかもしれませんが、

ゲームで使う物理の知識は物体の運動のみでOKです。

こればかりはネットで勉強するより、参考書を買ってきて勉強した方がいいです。

普通の高校の物理の参考書と問題集があれば完璧です。

その中でも「力学」が今言っている分野です。

・放物線の運動
・物体のぶつかった時の速度の変化

位勉強すればOKです。
その気になれば3日もあれば基本的なところはマスター出来るでしょう。

今またゲームプログラミングの館の作成を再開したので、黒猫さんの質問を受け、物理の項目も充実させようかと思います。

今日ゲームプログラミングの館を更新したのですが、画像が古いデータしかないので、画像のリンクがはれてない部分があります・・。
明日修正しておきます。

物理の項目ですが、今日作ったら明日か明後日にはアップできると思うので、
よければ参考にしてください。

よければどの辺まで解説してほしいか、要望も教えていただければ参考になります。

とりあえずゲームでは放物線の運動と物体のぶつかり位しか出てきません。


425ポイント を手に入れた。



Name: 水月  ..ぴよぴよ(41ポイント)   Date: 2007/02/28(水) 17:39   No:5090       
Title: C言語について    
皆さんはどのくらいでC言語を使えるようになりましたか?

それとどんなもので覚えましたか?

お願いします


41ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(218,809ポイント)   Date: 2007/02/28(水) 17:51   No:5092     
Title: Re:C言語について    
こんにちいは水月さん、
逆にお聞きしたいのですが、

「どの程度できたらC言語を使える」

と判断されますか?

私は一通り入門書位の知識は付けましたし、ゲームもよく作りますが、
専門家として通用するのかと言われたら全く通用しないでしょう。
仮にアプリ作製の専門家であっても、通信プログラムには精通していないかもしれませんし、
プロとしてDirectXなどを駆使している方でもソートプログラムは知らないって人もいるかもしれません。

「C言語を全て理解した。これから先わからないことは一つもない」という人はおそらくほとんどいないのではないでしょうか。

「どの程度できたらC言語を使えるか」

がわかれば皆さんも回答しやすいと思います。


159ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(220,070ポイント)   Date: 2007/02/28(水) 18:06   No:5093     
Title: Re:C言語について    
C言語を学んだのはネットと入門書、解説書、問題集などです。

今の時代ネットがとても普及していますからその辺の安い入門書よりネットの解説の方が詳しかったりします。
ネットでもある程度、いや中級レベル位までやろうと思えば出来るんじゃないでしょうか。

私はある時を境にプログラムの面白さがわかり、熱中して入門書を読みました。
ピンとこないところがあれば、とにかく似たようなプログラムを書いてコンパイルしまくりました。

自分であれこれ書いているうちにあるべき「書き方」を見つけていきました。
なんで今の自分の書き方はほとんど我流です。

この方法には一長一短があるので良いかどうかはわかりませんが。

本で書いてある方法を真似するより、自分で見つけ出した方法の方が忘れないし、応用も利く
しかし自分で見つけ出した我流には本当はしてはならない手続きをふんでいたり、規格にあわない方法であったりする可能性もあり、
同じ処理をするにも「一般的」ではないと他の人がソースを見たときにみにくいかもしれません。
本には「最善の方法」がのっているわけですから自分が見つけるより効率はいいはずですし、自分で見つけた方法は最善ではないかもしれません。
しかし「お勉強が嫌い」な私は自分でガリガリプログラムを書いてみてみつけていきました。

基本的な関数の仕様やプログラムの手続きの方法に関してはやはり解説書を参考にするしかないですけどね。
例えばクイックソートやリストについての知識は解説書なしにはつかないでしょう。

私は情報を専攻しているのですが、大学3年の中期までは、全くプログラムに魅力がもてず、勉強しませんでした。
宿題も放置or人にやってもらうような始末でした。
しかし大学の3年の終わりにプログラムの魅力に気づきそれから勉強しはじめました。
勉強し始めて最初の3ヶ月位でHPで紹介している最初のRPGゲームを作りました。

今私は大学4年生の終わりです。まだプログラミングを初めた初心者ですが、プログラムで何かを作るのが楽しいと思えるようになりました。

水月さんは、何ヶ月でどこまでできるようになったか、知りたいのでしょうか?
習得するまでのエピソードを知りたいのでしょうか?

習得するまでの期間は人それぞれだと思います。
情報を専攻して3年、勉強し始めて3年とカウントすれば3年でしょうけど、興味が無かったので全くプログラムの知識は皆無でした。
興味を持ってからなら2週間でもゲームシステムは作れました。
ただの雑談としてのお話なら、別にいいと思いますが、
水月さんが、まだプログラム初心者さんで、
「いったいどれ位勉強したらいいんだろう」というお持ちの疑問から質問されているのでしたら

どこまでやる気を持つかでものすごく代わると思いますから、何かの基準にはならないように思います。

・・と私の勝手な意見ですがm(_ _)m
「プログラムの魅力を感じた人が勝ち」ですよ☆
好きこそ物の上手なれ。
好きならいつだってそれをやり続けていたいですからそうなれば上達も早いと思います。


1,261ポイント を手に入れた。

Name: asd  ..かけだし(1,362ポイント)   Date: 2007/02/28(水) 19:09   No:5094     
Title: Re:C言語について    
広くいろんな人に意見を聞きたい気持ちは分かりますが、掲示板の利用規約ぐらい読んではいかがでしょうか。
この掲示板ではマルチポストは禁止事項です。

マルチポスト先
http://www.shunzei.com/cgibin/lounge/kirifuda/wforum.cgi?mode=allread&no=361&page=0


97ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(220,114ポイント)   Date: 2007/02/28(水) 21:47   No:5104     
Title: Re:C言語について    
あぁ、またマルチポストだったんですか・・。

マルチポストはなるべく避けて欲しいものです><


44ポイント を手に入れた。



Name: ふぐお  ..入門者(2,986ポイント)   Date: 2007/02/28(水) 01:07   No:5070       
Title: よくわかりませn    
ソースをコンパイルすると
■C:\Documents and Settings\akemi\My Documents\C> bcc32 test.cpp
<CPad: CreateProcess() Failed!>
Class: TCompileAndRunExecuteThread
CommandLine: C:\WINDOWS\system32\cmd.exe /c bcc32 test.cpp
とゆう文字が出てコンパイルできません直し方教えてください


104ポイント を手に入れた。


Name: ぽん太  ..中級者(11,735ポイント)   Date: 2007/02/28(水) 01:45   No:5071     
Title: Re:よくわかりませn    
コンソールプログラムですか?

12ポイント を手に入れた。

Name: ふぐお  ..入門者(3,026ポイント)   Date: 2007/02/28(水) 02:20   No:5072     
Title: Re:よくわかりませn    
はい
コンパイルはできました
ですが実行ができません。コマンドプロンプトが何かに実行されてるみたいです


40ポイント を手に入れた。

Name: ぽん太  ..中級者(11,756ポイント)   Date: 2007/02/28(水) 02:32   No:5073     
Title: Re:よくわかりませn    
すみません
コマンドプロンプトが何かに実行されているという
状況が把握できませんでしたm(_ _)m


21ポイント を手に入れた。

Name: ふぐお  ..入門者(2,965ポイント)   Date: 2007/02/28(水) 02:51   No:5074     
Title: Re:よくわかりませn    
すいません
そこは関係ないかもしれません。
実行するときコマンド画面で実行されますよね。なのでなんとなくコマンドプロントを
開こうとしたら ほかのプログラムに実行されています。と、なりました


61ポイント を落としてしまった。

Name: ぽん太  ..中級者(11,766ポイント)   Date: 2007/02/28(水) 02:57   No:5075     
Title: Re:よくわかりませn    
よくわかりませんがそのプロセスを終わらせればいいのでは?
それか再起動するとか・・・
浅学非才お許し下さいm(_ _)m


10ポイント を手に入れた。

Name: バグ  ..プログラマー(28,901ポイント)   Date: 2007/02/28(水) 08:00   No:5077     
Title: Re:よくわかりませn    
プログラムをきちんと正常終了させてなかった場合に、以前に起動させた同名のファイルが実行中のままの状態で残っている事があります。その状態ですと、実行ファイルを作り直す事ができずにエラーになります。
もし、cmd.exeが起動中である事が原因であるならば、タスクマネージャーを使ってcmd.exeを終了させてみてはいかがでしょうか?


80ポイント を手に入れた。

Name: ふぐお  ..入門者(2,997ポイント)   Date: 2007/02/28(水) 20:56   No:5096     
Title: Re:よくわかりませn    
すいません
タスクマネージャの開き方がわかりません。
もし僕の状態がバグサンの言う状況なら再起動で直りますか?


32ポイント を手に入れた。

Name: ぽん太  ..中級者(11,790ポイント)   Date: 2007/02/28(水) 21:02   No:5097     
Title: Re:よくわかりませn    
@タスクバーを右クリック
Actrl + Alt + Delet
いずれかで出来ます


24ポイント を手に入れた。

Name: ふぐお  ..入門者(3,043ポイント)   Date: 2007/02/28(水) 21:12   No:5098     
Title: Re:よくわかりませn    
右クリックで出てくる表示にタスクマネージャというのがありますが、
クリックも何もおきません
すいません


46ポイント を手に入れた。

Name: ぽん太  ..中級者(11,820ポイント)   Date: 2007/02/28(水) 21:15   No:5099     
Title: Re:よくわかりませn    
クリックしてもタスクマネージャが起動しないということですか?
でしたらAでどうぞ。


2倍のポイントを手に入れた! 30ポイント を手に入れた。

Name: curthis  ..ぴよぴよ(14ポイント)   Date: 2007/02/28(水) 21:16   No:5100     
Title: Re:よくわかりませn    
ctrl + Alt + Delet で確実にでると思いますよ

14ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(61,309ポイント)   Date: 2007/02/28(水) 21:17   No:5101     
Title: Re:よくわかりませn    
 あんまり自信がないですが、ひょっとしてそのエラーは
CPadというアプリケーションからビルドしようとしていませんか?


 以下はそうである、と仮定して話を進めます。

 CPadの公式HPと思われるところの掲示板でも何度か
そのエラーメッセージが出たと報告がありました。
http://6005.teacup.com/kitobbs/bbs

 それによると CPadから bcc32アプリを起動しようとして失敗しているようです。
 残念ながらその掲示板では有効な解決策は提示されなかったようですが。

 で、バグさんやぽん太さんの提示された解決法で解決しないようでしたら、
とりあえずの解決策として、CPadからコンパイルしないで、
コマンドプロンプト上からビルドで当座をしのいで、
CPadの掲示板のほうにレポートをあげて回答を待つのが
一番だと思います。


293ポイント を手に入れた。

Name: curthis  ..ぴよぴよ(21ポイント)   Date: 2007/02/28(水) 21:19   No:5102     
Title: Re:よくわかりませn    
参考までに・・・


7ポイント を手に入れた。

Name: ふぐお  ..入門者(3,065ポイント)   Date: 2007/02/28(水) 21:36   No:5103 解決!     
Title: Re:よくわかりませn    
ありがとうございました、そのサイトでどうにかします。
結局2の方法でもできませんでした
ありがとうございました


22ポイント を手に入れた。



Name: ももた  ..中級者(11,564ポイント)   Date: 2007/02/27(火) 10:30   No:5024       
Title: たびたびすみません質問です    
[問題]
boxNO. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
データ 2 1 1 4 7 5 2 12 5 19 1 0 S M L

@x=boxNO3のデータ値+boxNo7のデータ値とする。
boxNO.Xにデータ[5]をセットする。

ANにboxNO.Xのデータ値の次に大きなデータをboxNO.1〜12の中から検索してセットする。
NはboxNO.8のデータ値が示すboxNO.にセットする。

BboxNO.3のデータ値と同じデータを持つboxNO.の加算をしてその値をboxNO.2にセットする

CboxNO.2のデータ値が示すboxNO.のデータを画面表示し、任意のデータを1バイト入力して、同じboxNO.にセットする。

D入力したデータがL〜Pの文字データなら、Fへジャンプする。
その他ならEへ

EboxNO.1のデータ値に1を加算し、その値のboxNO.のデータ値を画面に表示する。Hへジャンプする。

F入力データがLならboxNO.1〜12までのデータ値を別のワークエリアに移し、boxNO.1〜12までのデータ値を昇順にソートし画面にboxNO.1〜12の表示と、ワークエリアの表示をする。

G昇順表示とワークエリアのデータ値が同じboxNOで且つデータも同じなら、boxNO.とデータを画面表示する

HEND

この最後の課題なんですけど・・・@の部分からよくわかりません>_< 何か回答ではなくヒント見たいものがあれば教えて頂きたいんですが・・・@からつなづいてるので・・全然前に進めないので^^; こんな質問ですみません。


596ポイント を手に入れた。


Name: Yuki  ..中級者(9,811ポイント)   Date: 2007/02/27(火) 12:31   No:5025     
Title: Re:たびたびすみません質問です    

+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|boxNO.| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|
+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|データ| 2| 1| 1| 4| 7| 5| 2|12| 5|19| 1| 0| S| M| L|
+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+


>@x=boxNO3のデータ値+boxNo7のデータ値とする。
>boxNO.Xにデータ[5]をセットする。

課題の意図がよくわからないので、想像でしか答えられないのですが、
xという領域にboxNO3のデータ値+boxNo7のデータ値を代入する。
x=1+2
x=3
この計算で求められたboxNOのデータ値を5とする。


+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|boxNO.| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|
+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|データ| 2| 1| 5| 4| 7| 5| 2|12| 5|19| 1| 0| S| M| L|
+------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+


といった感じでしょうか。


2倍のポイントを手に入れた! 864ポイント を手に入れた。

Name: ももた  ..中級者(11,584ポイント)   Date: 2007/02/27(火) 12:35   No:5026     
Title: Re:たびたびすみません質問です    
そうです^^; そういう意味です。

20ポイント を手に入れた。

Name: Yuki  ..中級者(9,800ポイント)   Date: 2007/02/27(火) 12:44   No:5027     
Title: Re:たびたびすみません質問です    
とりあえず、前に進めそうですか?


11ポイント を落としてしまった。

Name: ももた  ..中級者(11,612ポイント)   Date: 2007/02/27(火) 12:48   No:5028     
Title: Re:たびたびすみません質問です    
まったくです>_< 今は@だけを考えてるんですが・・・今日までにしろと言われているので。ポインタを使うようなのですが、atoi()とか試してるんですが、何をどうすればいいのかわからないです・・・。

28ポイント を手に入れた。

Name: Yuki  ..中級者(9,712ポイント)   Date: 2007/02/27(火) 12:54   No:5029     
Title: Re:たびたびすみません質問です    
プログラムを作るのですか?
考え方がわからないのかと思いました。

どうやって作ろうとしているのかわからないので、
今できている分だけでも載せてもらえますか?
未完でかまいません。


88ポイント を落としてしまった。

Name: ももた  ..中級者(11,772ポイント)   Date: 2007/02/27(火) 12:58   No:5030     
Title: Re:たびたびすみません質問です    
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
char x[]={"2 1 1 4 7 5 2 12 5 19 1 0 S M L"};



return 0;
}
これだけしか書いてないんです>_< する事はわかるのですが、プログラム化できないですね。ここからどうするのかかなり悩んでます・・。


160ポイント を手に入れた。

Name: Yuki  ..中級者(9,889ポイント)   Date: 2007/02/27(火) 13:11   No:5031     
Title: Re:たびたびすみません質問です    
>char x[]={"2 1 1 4 7 5 2 12 5 19 1 0 S M L"};

このデータを格納する領域を考えるにあたりいくつか方法があると思いますが、
boxNOを配列の要素数のインデックスとして扱うのは良いと思いますが、
データ部が今のももたさんのやり方だと、後々の処理でかなり面倒になると思います。

char x[15][3]={"2","1","1","4","7","5","2","12","5","19","1","0","S","M","L"};

このようにしてみてはいかがでしょう。


177ポイント を手に入れた。

Name: ももた  ..中級者(11,702ポイント)   Date: 2007/02/27(火) 13:15   No:5032     
Title: Re:たびたびすみません質問です    
2次配列にするんですね・・。すみません。2次限配列にするメリットは何なんでしょうか? 次はどういう風になるのかも少しわからない状態です・・・。

70ポイント を落としてしまった。

Name: Yuki  ..中級者(10,106ポイント)   Date: 2007/02/27(火) 13:34   No:5034     
Title: Re:たびたびすみません質問です    
ももたさんは、配列の要素のインデックスをキーにデータを扱いたいのですよね?
2次元配列のほうが、使い勝手が良くないですか?

1次元配列だと、簡単にアクセスできないですよね?
char x[]={"2 1 1 4 7 5 2 12 5 19 1 0 S M L"}; 

for( i = 0; i < 15; i++ ){
printf( "%s\", x[i*2]);
}



2次元配列だと、簡単にアクセスできます。
char y[15][3]={"2","1","1","4","7","5","2","12","5","19","1","0","S","M","L"}; 

for( i = 0; i < 15; i++ ){
printf( "%s\", y[i]);
}





217ポイント を手に入れた。

Name: keichan  ..上級者(16,085ポイント)   Date: 2007/02/27(火) 13:35   No:5035     
Title: Re:たびたびすみません質問です    
こんな感じでしょうか?

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <malloc.h>
#include <memory.h>

#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))

/**
* 昇順ソート比較用関数
*/
int compare_greater_than(const void* in_rhs, const void* in_lhs)
{
int rhs = *((const int*)in_rhs);
int lhs = *((const int*)in_lhs);

if( rhs < lhs ) {
return -1;
} else if( rhs > lhs ) {
return 1;
}
return 0;
}

/**
* 説明:in_value よりも次に大きなデータを in_box_data の 0〜11 要素から検索してその値を返す
*/
int search_larger(const int in_box_data[], const int in_value)
{
int buffer = INT_MAX;
for( int i=0; i<12; ++i ) {
if( in_box_data[i] > in_value && buffer > in_box_data[i] ) {
buffer = in_box_data[i];
}
}
return buffer;
}

/**
* 説明:in_value と同じ値を in_box_data から探し出し、同じ値のインデックス合計を返す
*    但し、 in_ignore_index はインデックス合計には含めない
*/
int search_same_value(const int in_box_data[], const int in_data_size, const int in_value, const int in_ignore_index)
{
int total_index = 0;
for( int i=0; i<in_data_size; ++i ) {
if( i == in_ignore_index ) {
continue;
}
if( in_box_data[i] == in_value ) {
total_index += i;
}
}
return total_index;
}


/**
* 説明:メインエントリ
*/
int main()
{
int box_data[] = {2, 1, 1, 4, 7, 5, 2, 12, 5, 19, 1, 0, 'S', 'M', 'L'};
/// @
int x = box_data[3-1] + box_data[7-1];
box_data[x] = box_data[5-1];
/// A
int N = search_larger(box_data, box_data[x]);
box_data[box_data[8-1]] = N;
/// B
box_data[2-1] = search_same_value(box_data, ARRAY_SIZE(box_data), box_data[2], 2);
/// C
printf("boxNO.2 : %d\n", box_data[box_data[2-1]]);
printf("please input any data : ");
char input_data = 0;
scanf("%c", &input_data);
box_data[box_data[2-1]] = input_data;
/// D
if( 'L' <= input_data && input_data <= 'P' ) {
/// F
if( input_data == 'L' ) {
int* work_area = (int*)malloc(ARRAY_SIZE(box_data)*sizeof(int));
memcpy(work_area, box_data, ARRAY_SIZE(box_data)*sizeof(int));
qsort(box_data, ARRAY_SIZE(box_data), sizeof(int), compare_greater_than);
for( int i=0; i<ARRAY_SIZE(box_data); ++i ) {
printf("boxNo.%02d : %d\n", i, box_data[i]);
}
/// G 仕様が不明なので分かりません。
if( memcmp(box_data, work_area, ARRAY_SIZE(box_data)*sizeof(int)) == 0 ) {
}
free(work_area);
}
} else {
/// E
++box_data[1-1];
printf("boxNo.%d's value : %d\n", box_data[1-1], box_data[box_data[1-1]]);
}
/// H
printf("END\n");
return 0;
}


779ポイント を手に入れた。

Name: ももた  ..中級者(11,782ポイント)   Date: 2007/02/27(火) 13:45   No:5036     
Title: Re:たびたびすみません質問です    
keichanさん! 上のソースをもう少し初心者向けに書いて頂けないでしょうか^^;やっている事はわかるのですが、書き方が難しくて>_<

それと、質問をしたのですが、charでやってポインタを使えばすぐにできるといわれたのですが・・さっぱりわからず、参考書片手にしているんですが、まだ@からすすめないです。・・


80ポイント を手に入れた。

Name: Yuki  ..中級者(10,385ポイント)   Date: 2007/02/27(火) 13:59   No:5037     
Title: Re:たびたびすみません質問です    
>charでやってポインタを使えばすぐにできる

このやり方ではないかもしれませんが、

>xという領域にboxNO3のデータ値+boxNo7のデータ値を代入する。
>x=1+2
>x=3
>この計算で求められたboxNOのデータ値を5とする。

をプログラムにするとこんな感じです。


char y[15][3]={"2","1","1","4","7","5","2","12","5","19","1","0","S","M","L"};
int x;
int i;

printf( "@処理前\n" );
for( i = 0; i < 15; i++ ){
printf( "boxNO:%d データ:%s\n", i+1, y[i]);
}

x = atoi(y[3-1]) + atoi(y[7-1]);
sprintf( y[x-1], "5" );

printf( "@処理後\n" );
for( i = 0; i < 15; i++ ){
printf( "boxNO:%d データ:%s\n", i+1, y[i]);
}



279ポイント を手に入れた。

Name: ももた  ..中級者(11,848ポイント)   Date: 2007/02/27(火) 14:02   No:5038     
Title: Re:たびたびすみません質問です    
yukiさん! やはりatoi使うんですね!書かれておわれるソースの意味はわかります! この問題すごく難しいような気がして・・さっきから社内でため息連発です・・・

66ポイント を手に入れた。

Name: Yuki  ..中級者(10,615ポイント)   Date: 2007/02/27(火) 14:18   No:5039     
Title: Re:たびたびすみません質問です    
>やはりatoi使うんですね!

atoiを使いたそうにしていたので、こうしてみました。

keichanさんのようにintの配列でやるのでしたら、atoiは使わなくてもできます。

int box_data[] = {2, 1, 1, 4, 7, 5, 2, 12, 5, 19, 1, 0, 'S', 'M', 'L'};

int x = box_data[3-1] + box_data[7-1];
box_data[x] = 5;



>この問題すごく難しいような気がして・・

難しく考えようとすると、どツボにはまってどんどん難しくなってしまいます。
自分はこのやり方ならできるなというところまで、落とし込んで考えてみてください。


230ポイント を手に入れた。

Name: ももた  ..中級者(11,875ポイント)   Date: 2007/02/27(火) 14:24   No:5040     
Title: Re:たびたびすみません質問です    
少し考えてみます!またわからない部分があれば質問させて頂きます!

27ポイント を手に入れた。

Name: ももた  ..中級者(11,913ポイント)   Date: 2007/02/27(火) 14:46   No:5041     
Title: Re:たびたびすみません質問です    
条件Aの部分なのですが、どう考えればboxNO.Xのデータ値(=5)の次に大きなデータを見つける事ができるのでしょうか?次に大きなデータの部分で少し困ってます。

38ポイント を手に入れた。

Name: Yuki  ..中級者(10,683ポイント)   Date: 2007/02/27(火) 14:51   No:5042     
Title: Re:たびたびすみません質問です    
int data[] = { 1, 3, 5, 7, 9 }

というデータがあったとき、1番大きいデータを取得する方法を考えてみてください。

それができたら、2番目に大きいデータを取得する方法を考えてみてください。


68ポイント を手に入れた。

Name: keichan  ..上級者(16,117ポイント)   Date: 2007/02/27(火) 15:21   No:5043     
Title: Re:たびたびすみません質問です    
2007/02/27(火) 13:35 で投稿した、search_larger関数も参考になるかと思います。

32ポイント を手に入れた。

Name: ももた  ..中級者(11,918ポイント)   Date: 2007/02/27(火) 15:29   No:5044     
Title: Re:たびたびすみません質問です    
A番目難しいですね・・・>_< なかなか解くカギがみつからないですね。


5ポイント を手に入れた。

Name: Yuki  ..中級者(10,699ポイント)   Date: 2007/02/27(火) 16:08   No:5045     
Title: Re:たびたびすみません質問です    
処理の流れはどのように考えていますか?

まずフローを考えてみると良いですよ。


16ポイント を手に入れた。

Name: ももた  ..中級者(12,017ポイント)   Date: 2007/02/27(火) 16:35   No:5046     
Title: Re:たびたびすみません質問です    
色々考えてるんですが・・・さっぱりできないです。
for(i=0; i<12; i++){
if(y[x-1]<y[i]){
printf("%s ", y[i]);
}
}
これで、データ5より大きい値を表示しようと思ったのですが・・・


99ポイント を手に入れた。

Name: Yuki  ..中級者(10,704ポイント)   Date: 2007/02/27(火) 16:39   No:5047     
Title: Re:たびたびすみません質問です    
>if(y[x-1]<y[i]){

yは2次元配列のものを使用していますか?
2次元配列内にデータは文字列として格納されていますよね。

文字列の"1"と数値の1は異なります。


5ポイント を手に入れた。

Name: ももた  ..中級者(11,953ポイント)   Date: 2007/02/27(火) 16:42   No:5048     
Title: Re:たびたびすみません質問です    
はい・・・わかるのですが・・・。2次元配列を使ってます。 よくわからなくなってきました。
やってる事はわかるんですが、それをソースでは書けないですね。。。


64ポイント を落としてしまった。

Name: Yuki  ..中級者(10,677ポイント)   Date: 2007/02/27(火) 16:46   No:5049     
Title: Re:たびたびすみません質問です    
まずは、数値として比較してみてはいかがでしょう。


27ポイント を落としてしまった。

Name: 管理人 [URL]  ..ハッカー(213,490ポイント)   Date: 2007/02/27(火) 18:29   No:5062     
Title: Re:たびたびすみません質問です    
横槍失礼します。
一番大きなデータを探すところですよね?
一番大きなデータを探すには

変数 最大値 を最初に用意します。
「最大値」に最初の値ををセットします。
次の値が現在の最大値より大きければ、その値を最大値とします。
最大値より調べている値が小さければ何もしません。
こうして最後まで調べていけば、最大値が本当の意味での最大値となります。

この要領で行けば2つ目も可能ですが、めんどくさかったらソートプログラムをどこかからとってきて、
代入してしまうのも手です。
そうすれば最大値も2番目の最大値も特に考えることなく見つけられるでしょう。


211ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(213,908ポイント)   Date: 2007/02/27(火) 18:34   No:5063     
Title: Re:たびたびすみません質問です    
ちょっとドツボにはまりかけてしまっているようですので、答えと照らし合わせながら見てください。

まずは、数値が入っているとして考えます。

int a[4]={3,2,9,6};

>変数 最大値 を最初に用意します。

int max;

>「最大値」に最初の値ををセットします。

max = a[0];

>次の値が現在の最大値より大きければ、その値を最大値とします。

if(a[1]>max)
  max=a[1];

>こうして最後まで調べていけば、最大値が本当の意味での最大値となります。

if(a[2]>max)
  max=a[2];
if(a[3]>max)
  max=a[3];

これをループで書くと、

for(i=0;i<4;i++)
if(a[i]>max)
max=a[i];

こんな感じでしょうか。

難しくないでしょう?
「あ〜難しそうだ」と思うと本当にわからなくなってきます。
「わかるところから少しずつ」考えると案外わかってきます。
上記コードでそれがつかんでいただけるといいのですが・・。


数値として比較するにはatoiで数値にする必要がありますのでそこから拡張してください。


418ポイント を手に入れた。

Name: ももた  ..中級者(12,017ポイント)   Date: 2007/02/27(火) 18:38   No:5064 解決!     
Title: Re:たびたびすみません質問です    
何度もすみません。なんか、ポインタを使えとさいさん言われるのですが、何がなんだかわかりません。また最初から考えています>_<

64ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(214,561ポイント)   Date: 2007/02/27(火) 18:47   No:5066     
Title: Re:たびたびすみません質問です    
えぇと、もうネットにつながらない家に帰らなければならないので(_ _||)
手身近でホントすみません。


Aにおいてポインタを使用しないといけないのでしょうか?
配列の調査の仕方は、2通りあります。

a
と書けばどこのアドレスをさすか、わかりますか?
a[0]
のアドレスです。

aのアドレスの1つ先はどこのアドレスをさすかわかりますか?
a[1]
のアドレスです。

これはchar型が1バイトであるために、こうなっています。
int型は4バイトなので、1まとまりが4つの領域を使用するため、アドレスは4つ先ということになりますので
混合されませんよう。

また、配列は連続で領域が確保されます。
2次元配列であってもそうです。

char a[5];

と宣言すると、aの先頭アドレスが1000だったとした時、

&a[0] は 1000
&a[1] は 1001
&a[2] は 1002
&a[3] は 1003
&a[4] は 1004

となります。

char a[2][5];

と宣言すると

&a[0][0] は 1000
&a[0][1] は 1001
&a[0][2] は 1002
&a[0][3] は 1003
&a[0][4] は 1004
&a[1][0] は 1005
&a[1][1] は 1006
&a[1][2] は 1007
&a[1][3] は 1008
&a[1][4] は 1009

となります。ですので、[0][0]の次に[1][0]のアドレスをさそうとしたら、
宣言で使った

char a[y][x];

のx分だけ、たしてやればいいことになります。わかりますか?xは5ですから、
1000+5で1005が[1][0]のアドレスになっていますね?

なにがなんだかわからない!
と思ってしまった時は入門書の最初からわからない部分の内容に読み落とさないようじっくり読んでみるのがいいと思います。


653ポイント を手に入れた。



Name: ナガタ  ..入門者(4,100ポイント)   Date: 2007/02/22(木) 04:30   No:4799       
Title: 文字認識について    
管理人様お久しぶりです.

最近修論が終わり時間が出来たので,何かゲームでも作ろうかなーって思ってます.

そこで,NintendoDSみたいなゲームを作ってみたいんですけど,文字認識ってどのようにやってるんですかねー?


112ポイント を手に入れた。


Name: asd  ..ぴよぴよ(312ポイント)   Date: 2007/02/22(木) 10:35   No:4816     
Title: Re:文字認識について    
管理人様ではないですがお役に立てればと思い書き込みます。

数字やアルファベットであればゾンデ法を使うと実現できるのではないでしょうか。
数字については実際にやったこともあります(ただしJava環境でですけど)

手書き文字ですと人それぞれ癖もありますのでパターン認識よりはよいのかなと思います。

検索するとすぐ出てくると思うので詳しくは載せません。
#もっといい方法があるかもしれませんしね^^;


156ポイント を手に入れた。

Name: ナガタ  ..入門者(4,163ポイント)   Date: 2007/02/22(木) 15:00   No:4854     
Title: Re:文字認識について    
asdさんありがとうございます.

ゾンデ法っていうのは,7本の線の上を通るか通らないかで数字を認識するんですね.
これなら簡単な処理で実現できそうです.




63ポイント を手に入れた。

Name: asd  ..ぴよぴよ(379ポイント)   Date: 2007/02/22(木) 16:55   No:4867     
Title: Re:文字認識について    
お役に立てたようでよかったです^^
ゾンデ(線、触手のこと)の置き方や本数によってはアルファベットも可能かと思いますので、
いろいろと試してみるとよいかと思います。

あからさまに極端な文字だとゾンデ法でも失敗しますけど^^;


67ポイント を手に入れた。

Name: ナガタ  ..入門者(4,181ポイント)   Date: 2007/02/22(木) 17:04   No:4869     
Title: Re:文字認識について    
書き順も考慮して判定したら,認識精度が上がるんですかねー?

18ポイント を手に入れた。

Name: asd  ..ぴよぴよ(486ポイント)   Date: 2007/02/22(木) 21:35   No:4876     
Title: Re:文字認識について    
そうですね。上がると思いますよ^^

MS-IMEにて手書き入力で文字を検索できる機能がついていますが、
ここで”わざと”書き順を間違えて漢字を書くと認識率は格段に落ちますし。

#MS-IMEの手書き入力がゾンデ法を使っている確証はないですけれど^^;


107ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(202,732ポイント)   Date: 2007/02/22(木) 23:59   No:4884     
Title: Re:文字認識について    
ナガタさん、お久しぶりです!!

すみません、ネットにつながらない環境で生活しているので、大学かインターネット喫茶で掲示板を見る始末です(/~\)
お返事遅れてごめんなさい;

修論お疲れ様です♪
私も先日卒論を終えたところでホッとしているところです。



ニンテンドーDSは持ってないんですけど、友達のをよくやらせてもらいました。
・脳を鍛える・・
・英検
・漢検
など遊びました。
実際に遊んでみると、書き順を考慮していないゲームと考慮しているゲームを見かけますが、
後者の方が圧倒的にやりやすいですよ。
ただリッシンベン(漢字知らない・・)とかって中央から書く人と外から書く人とかいるし、
「右」と「左」で部首の書き順が違う事知らない人結構いると思いますし、
漢字をテーマにしたようなゲームじゃないのなら正規の書き順以外でも間違いそうな書き順でも判定してあげたほうが
ゲームしやすくなるように思います。

手書き入力の知識が無いので、実際に遊んでみて誰にでもわかるこんなアドバイス位しか出来ません^^;


301ポイント を手に入れた。

Name: Justy  ..熟練のプログラマー(59,318ポイント)   Date: 2007/02/23(金) 00:09   No:4888     
Title: Re:文字認識について    
 今時の手書き認識は詳しくはないですが、
昔ベクトルベースでやる、と聞いたことがあります。

 ペンを置いて次に離した時の2点間のベクトルと
ペン離したときから次に置いた時までのベクトル情報のデータベースを持たせて
判定するとか。

 実際にはペンを置いてから曲がるケースもあるのでそういうのも考慮に入れつつ
やることになります。

 又、この場合は書き順準拠になりがちですが、数百人とかの規模でデータを採取すれば
誰か一人は間違えて書く人もいるので、多少間違えやすい書き順でも正答できそうです。

 今時のはどうなんでしょうね。
 複数の認識法を併用しつつ、確率の高いものを選び出しているのかもしれません。


198ポイント を手に入れた。

Name: ナガタ  ..入門者(4,550ポイント)   Date: 2007/02/24(土) 07:39   No:4961     
Title: Re:文字認識について    
>修論お疲れ様です♪
本当に大変でした.久しぶりに会った友達に,何かやつれてない?って言われました↓

>間違いそうな書き順でも判定してあげたほうがゲームしやすくなるように思います。
そうですね.とりあえず数字を判定するようにしたいんで,あまり書き順に違いがないですかねー.
違いが出そうなのが5ぐらいですかね.
はじめに横に棒を伸ばすか,下に伸びてから最後に横棒をつけるかぐらい.

>ペンを置いて次に離した時の2点間のベクトルと
ペン離したときから次に置いた時までのベクトル情報のデータベースを持たせて
判定するとか。
頭の中で漠然とどうやったら文字が判別できるかなーって考えてたときは,線がどういう風に動いていったか
で出来るかなーって考えていたので,それがJustyさんの言われているベクトルを使った判定に近いですね.
ただ難しいそうだなーって思って断念しましたw




369ポイント を手に入れた。

Name: むつ  ..入門者(2,696ポイント)   Date: 2007/02/24(土) 18:28   No:4975     
Title: Re:文字認識について    
Windows Vistaにはペン入力機能が標準搭載されているようです。
ttp://arena.nikkeibp.co.jp/col/20060915/118668/

”音声認識”なら少々経験がありますが、
文字認識精度をあげるのは苦痛・・。
モーションにアクションを割り当てた方が断然面白いし、
難しい認識部分は、OSに任してしまうという手も・・。


88ポイント を手に入れた。

Name: ナガタ  ..入門者(4,808ポイント)   Date: 2007/02/24(土) 19:39   No:4980     
Title: Re:文字認識について    
むつさん,こんばんは.
>難しい認識部分は、OSに任してしまうという手も・・。
これはどうやったらできるんですか?

asdさん,一応ゾンデ法のアルゴリズムは完成したんですけど,4と9が区別をつけれないんですけど,
asdさんが実際に行ったときはどのようにしましたか?あと1が誤認識しやすいです↓


2倍のポイントを手に入れた! 258ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(210,103ポイント)   Date: 2007/02/24(土) 19:44   No:4982     
Title: Re:文字認識について    
めちゃくちゃ素人の発言で申し訳ないんですけど、
配置から書き順まで似ている9と4ですが、
一筆書きと、そうでないという唯一の違いがあるように思います。
4は一回離さないとかけないので、そういうので判定できないんでしょうかね^^;


99ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,577ポイント)   Date: 2007/02/24(土) 20:03   No:4987     
Title: Re:文字認識について    
>>難しい認識部分は、OSに任してしまうという手も・・
これはどうやったらできるんですか?
Tablet PC Edition Development Kit。
http://www.microsoft.com/downloads/details.aspx?FamilyId=B46D4B83-A821-40BC-AA85-C9EE3D6E9699&displaylang=en

 これでしょうかね。これなら無償配布してますよ。
 Tablec PC Edition向けの SDKですが、一部の機能を除いて普通の XPでも動きます。



150ポイント を手に入れた。

Name: むつ  ..入門者(2,917ポイント)   Date: 2007/02/24(土) 20:59   No:4991     
Title: Re:文字認識について    
Justyさんが紹介しているTabletPC SDKのIncludeから、
#include <msinkaut.h>
#include <msinkaut_i.c>

#include <inked.h>
#include <inked_i.c>
をインクルードする事により開発できるようです。

Ink Recognition Sampleが文字認識サンプルだろうと思いますが、
当方の環境では、エラーがでてしまいます。

ストロークした時のイベントが取得できるようですから、
モーションにアクションを割り当てる事も可能だろうと思います。

*追記:
Windows Platform SDKに収録されている一部のファイルが必要なようです。
また、TabletPC SDKはWindows Platform SDKに収録されています。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/tpcsdk10/lonestar/managed_ovw/tbconapisampmultirecognizers.asp

環境:WindowsXP Professional SP2, Wacom CTE-630


221ポイント を手に入れた。

Name: ナガタ  ..入門者(4,681ポイント)   Date: 2007/02/24(土) 21:34   No:4993     
Title: Re:文字認識について    
>4は一回離さないとかけないので、そういうので判定できないんでしょうかね^^;
それいただきです.ちょっとそれを入れてみます.

Justyさんの言われているサイトのcontinueからダウンロードするんですよね?
WGAPluginInstall.exeというのをインストールしても何も起きないんです.

>TabletPC SDKのIncludeから、
これってどこかにフォルダが作られてるんですか?


127ポイント を落としてしまった。

Name: むつ  ..入門者(3,015ポイント)   Date: 2007/02/24(土) 22:04   No:4994     
Title: Re:文字認識について    
WGAPluginInstall.exe とあるので、IE以外でアクセスしたのでしょう。
再度、IEでアクセスしてください。

>これってどこかにフォルダが作られてるんですか?
TabletPC SDKのインストールフォルダにあります。


98ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,652ポイント)   Date: 2007/02/24(土) 22:05   No:4995     
Title: Re:文字認識について    
当方の環境では、エラーがでてしまいます
 うちも出ますね、エラー。
 認識エンジンがないからだと思って、それを入れようとしたら XP Homeは対応していない・・・。


75ポイント を手に入れた。

Name: ナガタ  ..入門者(4,715ポイント)   Date: 2007/02/24(土) 22:17   No:4996     
Title: Re:文字認識について    
>XP Homeは対応していない・・・。
うちもXPのHomeです….


34ポイント を手に入れた。

Name: asd  ..ぴよぴよ(946ポイント)   Date: 2007/02/26(月) 10:33   No:5000     
Title: Re:文字認識について    
お返事が遅くなりました&既に解決していそうですが^^;

私の場合は以下のページを参考にしました。

画像処理実験のページ
http://www.teu.ac.jp/chiit/Image/?%C2%E81%B2%F3#content_1_14

二つの点を意識して書くように促すのと、「1」対策で二つの点からゾンデを離しています。
これで1の認識率は格段に上がりました♪

管理人さんの「一度離す」情報を使うのはナイスアイディアですね^^
私の場合は既に書かれている数字画像を与えて認識させるタイプだったので(ページ上のと一緒)
書き順やペンの動き情報を使えず結構苦労しました〜。


2倍のポイントを手に入れた! 460ポイント を手に入れた。

Name: ナガタ  ..入門者(4,779ポイント)   Date: 2007/02/27(火) 01:46   No:5017     
Title: Re:文字認識について    
asdさん,自分も縦に2点を書いてきれいに数字を書いてもらうようにしてあります(^^)

asdさん,いろいろとありがとうございましたm(__)m


64ポイント を手に入れた。

Name: asd  ..かけだし(1,265ポイント)   Date: 2007/02/27(火) 09:33   No:5023     
Title: Re:文字認識について    
どういたしまして^^私のほうこそ勉強になりました。
久々にゾンデ法文字認識をいじりたくなってきました(笑)

ゾンデの本数やら配置やらでも認識率が変化するのでいじりがいがありそうです。
リアルタイムに入力をしてもらう方式ならば、書き順(ベクトル)、ペンを離した回数なども盛り込んで
よりよくなりそうですね〜。

でもなかなか忙しくて時間が取れないですけどorz


107ポイント を手に入れた。



Name: 組木紙織  ..ぴよぴよ(815ポイント)   Date: 2007/02/26(月) 21:18   No:5012       
Title: VC++でのライブラリのリンク方法    
2回目になります。組木紙織です。
質問させていただきます。

timeGetTimeの関数を使うためにはwinmm.libをリンクさせる必要があるようですが、その方法がいろいろと
触ってみたのですが見つかりませんでした。
ライブラリのリンク方法を知っていたら教えてもらえませんでしょうか?

環境は
OS:windows XP
コンパイラ:VC Express
です。

VCに関しての書籍も探す必要があるのかな。


154ポイント を手に入れた。


Name: Justy  ..比類無きプログラマー(60,719ポイント)   Date: 2007/02/27(火) 00:10   No:5014     
Title: Re:VC++でのライブラリのリンク方法    
・ PlatformSDKが入っていない
 →ググって調べて入れてみて下さい。

・ PlatformSDKは入っている
 →とりあえずソースのどこかに
#pragma comment(lib, "winmm.lib")
 と書いてみて下さい。


67ポイント を手に入れた。

Name: 組木紙織  ..ぴよぴよ(979ポイント)   Date: 2007/02/27(火) 08:21   No:5021 解決!     
Title: Re:VC++でのライブラリのリンク方法    
PlatformSDKは頑張って入れて使えるようにしています。ので大丈夫です。

#pragmaを使う方法で、うまくリンクできました。
てっきりプロジェクトの設定をいじってリンクをするのかなと思っていたのでプロパティで
それらしいのを探していたのですが、プリプロセッサでリンクをするというのは想定外でした。

ありがとうございます。


164ポイント を手に入れた。

Name: Blue  ..ぴよぴよ(33ポイント)   Date: 2007/02/27(火) 09:07   No:5022     
Title: Re:VC++でのライブラリのリンク方法    
プロジェクトの設定でリンクさせるには、

構成プロパティ→リンカ→入力→追加の依存ファイル

で指定すればできます。


33ポイント を手に入れた。



Name: ナナシ  ..ぴよぴよ(13ポイント)   Date: 2007/02/26(月) 14:14   No:5002       
Title: 導入について    
導入部分で説明されている画像の表示プログラムなんですが、
なぜかそのままでは表示されず、キーを押すと、
ウィンドウが消える際にちらっと一瞬だけ
表示されるようになってしまいます。
パソコンの性能が問題なのでしょうか?
あるいはなんらかの設定に異常があるのでしょうか?

CPU:700MHz程度
メモリ:128MB RAM
DirectX9.0c
ハードディスクのあきは7GB
BorlandC++5.5 のコンパイラを使用しています

申し訳ありませんがよろしくお願いいたします


13ポイント を手に入れた。


Name: 管理人  ..ハッカー(211,379ポイント)   Date: 2007/02/26(月) 14:39   No:5003     
Title: Re:導入について    
OSはXPでしょうか?

13ポイント を手に入れた。

Name: ナナシ  ..ぴよぴよ(86ポイント)   Date: 2007/02/26(月) 15:20   No:5005     
Title: Re:導入について    
はい、ノートパソコンでXPを使ってます。

そのあとの講座を進めていって、4回目の講座での
back.bmpは表示されました。
が、char.pngのほうは同様にキーを押した後に一瞬だけ表示される状態です。

また、5回目の講座でも
キーを押さないと図形は表示されません。


73ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(211,577ポイント)   Date: 2007/02/26(月) 15:29   No:5006     
Title: Re:導入について    
>キーを押さないと図形は表示されません。

となると、画像の保存場所が悪いという事ではなさそうですね。

・スペック不足
・ビデオカードのドライバが古い

などが考えられると思います。
お使いのグラフィックドライバを最新のものに更新しても、直らない場合は、
本家DXライブラリで聞いてみてください。
実際にDXライブラリを作成された方でとてもこの分野に精通していらっしゃいますので。

http://homepage2.nifty.com/natupaji/DxLib/


175ポイント を手に入れた。

Name: ナナシ  ..ぴよぴよ(197ポイント)   Date: 2007/02/26(月) 17:47   No:5009 解決!     
Title: Re:導入について    
ドライバなど更新してみましたがどうもダメでした…
ちょっと調子が悪いデスクトップでがんばります。
こっちなら上記のような問題は起こらないみたいですので。
お手数をおかけしまして申し訳ありません、
回答ありがとうございました。


111ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(212,962ポイント)   Date: 2007/02/27(火) 05:15   No:5020     
Title: Re:導入について    
いえいえ、不具合についてのご報告はむしろありがたいです。

プログラムが悪いのか、私の設定の説明が悪いのか、ドライバが悪いのか、DXライブラリに問題があるのか・・

今後同じような質問があった時に、参考にさせていただく事が出来ますので、

解決されましたら、もしよろしければ原因を教えていただけないでしょうか。

逆に頼んでしまって申し訳ないですm(__)m


146ポイント を手に入れた。



Name: くれす  ..かけだし(1,392ポイント)   Date: 2007/02/26(月) 23:56   No:5013       
Title: -    
申し訳ないですが自己解決しました。<!--12-->

1,392ポイント を手に入れた。


Name: しっぽ  ..入門者(3,938ポイント)   Date: 2007/02/27(火) 01:22   No:5016     
Title: Re:このプログラムの修正箇所を教えてください。    

消去されてしまった質問を私が要約すると、
掲載したコードでコンパイルエラーが出たのですが、ソースを見て
どう修正したらよいか教えてください
になってします。次回質問をなさるときには注意して欲しいことがあります。

------------------------------------

基本なことが不足
字下げして(見る気がしない)。
C++であることを明記すること。
どのようなことを実現したいプログラムなのか説明すること。

問題点の説明不足
コンパイラには何を使用しているのか。
どのようなエラーがどこに出たのか。

スタイルが古すぎ
#include <iostream.h> ではなく #include <iostream> を使うこと。
main() ではなく int main() を使うこと。



307ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(212,816ポイント)   Date: 2007/02/27(火) 05:12   No:5019 解決!     
Title: Re:このプログラムの修正箇所を教えてください。    
間違いそうなので、題名を変更しておきますね。

しっぽさんのおっしゃる事を参考に、今後規約に付け加えていきたいと思いますm(_ _)m


62ポイント を手に入れた。



Name: ge-mu  ..ぴよぴよ(76ポイント)   Date: 2007/02/26(月) 16:18   No:5007       
Title: ゲームを作りたいのですが・・    
ゲームを作ってみたいのですが、その経験が全くありません。

ゲームプログラミングの館は重宝しています。
初めの何章か試してみました。
とてもわかりやすいので、全く今まで作れそうな気配すらなかったのですが、少し雰囲気がつかめました。

そこで調子に乗ってゲームを作ってみたくなったんですが、
何から作っていけばいいのかわかりません。

そこでアドバイスしていただけないでしょうか。
よろしくお願いします。


76ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(212,457ポイント)   Date: 2007/02/26(月) 16:29   No:5008 解決!     
Title: Re:ゲームを作りたいのですが・・    
ge-muさん、こんにちは^^

ゲームプログラミングの館を読んで頂いたようでありがとうございます☆

まず、ge-muさんがどのようなジャンルに興味をお持ちかわかりませんけど、
難しすぎると思わない程度のものなら何でもチャレンジしてみてはいかがでしょうか?
少々その分野が難しいとしても、「これが作りたいんだ!」って興味があれば
壁も打開できるはずです☆

私が勝手に、思うジャンルの難易度は


易←----------------------------------→難
サウンドノベルゲーム
  アドベンチャーゲーム
     RPGゲーム
       シューティングゲーム
         アクションゲーム
           アクションRPGゲーム


といった感じではないかと思っています。
落ち物ゲームやパズルゲームも入門時にはいいかもしれません。
ただ落ち物ゲームには再帰関数の知識が不可欠のようですので、その辺の知識を有している必要があります。
私はRPGから作り始めました。
FF1やドラクエ1のようなゲームなら入門者にでも簡単に作れると思いますよ^^

要はやる気の問題なので、下手に簡単でも興味のない分野をやるより、少々難しくても自分が「コレがやりたい!」って分野を作ってみる事をお勧めします。

アクションゲームをシューティングげーむより難しいと書いてあるのは、
格闘ゲームで言えば「ハドウケン」、アクションゲームで言えば「マリオのファイア」などのプログラムは
シューティングの知識が必要です。

しかし、それはシューティングの作品を1つ作り上げる必要はなく、
必要に応じてその都度その必要な知識をつけたらいいだけですので、
突然一番難しいとされているジャンルに挑んでもそれはそれでいいと思います。
「学びながら作る」というスタイルをとればどれでも作れるんじゃないでしょうか。
あれこれ試行錯誤して作っているうちに「最適な方法」が自分でわかってくるんですね。
ですから、とにかく試行錯誤して実際にあれこれ作ってみるのが一番だと思います^^
自分が興味ある分野なら自分で意欲的に調べるでしょうし、その方がより自分の身に付くでしょう☆

とりあえず、ゲームプログラミングの館を最後まで読んで頂けたら、
どのようなジャンルでも挑戦できる土台は完成すると思います。

ゲームって要は関数の組み合わせですから、効率のよしあしはあれども、
とりあえずどんなゲームでも完成には持っていけると思いますよ^^
途中で躓いたら聞いていただけたらいいですしね☆

シューティングを作成したいって場合は、途中までですがシューティングゲームの館で作り方を紹介しているので、是非参考にしてください☆

ゲーム作り頑張ってくださいね♪


880ポイント を手に入れた。

Name: バグ  ..プログラマー(28,821ポイント)   Date: 2007/02/26(月) 21:00   No:5011     
Title: Re:ゲームを作りたいのですが・・    
落ち物パズルは確かに、再帰関数があった方が楽に組めますが、無くても根性でなんとかなったりします(笑)
実際、私も再帰関数に出会うまでは、全消去パターンをif文で全ての箇所の判定を繰り返すという最も遅くなる方法を使ってましたからねぇ(苦笑)
こういう時期って、効率のいい方法を教えてもらうよりも、効率が悪くても自分で考えて、ひたすらプログラムを書きまくるってのが一番だと思いますよ(^-^)


195ポイント を手に入れた。



Name: ももた  ..初心者(7,768ポイント)   Date: 2007/02/23(金) 14:21   No:4925       
Title: 質問です!    
このソースを見て頂きたいのですが(作成途中のものです)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct busho{ /*構造体bushoの型枠の宣言*/
char b_name[41]; /*char型の配列b_name 要素数41*/
struct busho *next; /*次のbushoの構造体を指すポインタ変数next*/
struct shain *sentou; /*shainの構造体shainを指すポインタ変数sentou*/
}busho;

typedef struct shain{ /*構造体shainの型枠の宣言*/
char s_name[30]; /*char型の配列s_name 要素数30*/
char tel[12]; /*char型の配列tel 要素数12*/
char sex[1]; /*char型の配列sex 要素数1*/
struct shain *next; /*次のshainの構造体を指すポインタ変数next*/
}shain;


int main(void)
{
busho dmy; /*構造体busho型の変数dmyの宣言*/
busho *start = &dmy; /*構造体dmyのアドレスをstartに格納*/
busho *wkdata; /*データ設定用のポインタ変数wkdataの宣言*/
busho *wp; /*作業用のポインタwpの宣言*/
char b_name[20] = " "; /*char型の配列b_nameの宣言 要素数20*/
char buf[10]; /*char型の配列bufの宣言 要素数1*/

/*struct song *wkdata2;
struct song *wp2;
char s_name[15] = " ", buf2[10];
char tel[12];
char sex[1];
struct busho *tmp;
struct shain *tmp2;
*/

int num, i; /*int型の変数num,iの宣言(num:選択時の数字格納用),i:ループカウンタ*/
int len;


start->next = NULL; /*最初はデータがないのでNULLに設定*/

while(1)
{
printf("\n");
printf("[1][2][9]のどれかを選んでください!\n"); /*選択処理*/
printf("[1]:部署名登録\n");
printf("[2]:社員登録\n");
printf("[9]:システム終了\n");

printf("\n");
printf("[選択番号]:");
gets(buf);
num=atoi(buf);

switch(num){ /*部署名の追加処理*/
case 1:
while(1){
printf("[部署名(全角20文字)]:"); /*部署名をキーボード入力*/
gets(b_name);
len=strlen(b_name);
if(strcmp(b_name, " ")== 0){
break;
}
if(len>40){
printf("文字数オーバーです\n");
len=0;
continue;
}
else{
break;
}
}
wkdata=(struct busho *)malloc(sizeof(struct busho));
if(wkdata==NULL){
printf("メモリを確保する事ができません。\n");
return 1;
}

/*確保した構造体に部署名を設定する*/

strcpy(wkdata->b_name, b_name);

for(wp=start,i=0; wp->next != NULL; wp=wp->next,i++);

if(i==5){
printf("これ以上追加できません!!\n");
break;
}

if(wp->next == NULL){
wp->next = wkdata;
wkdata->next = NULL;
}







/*チェインの構造体の内容を表示*/
printf("**** 部署名リスト ****\n");
printf("\n");
for(wp=start->next,i=1; wp != NULL; wp = wp-> next, i++){
printf("[部署名%d]:%s\n", i, wp->b_name);
}
printf("\n");
break;

case 2:
if(start->next==NULL){
continue;
}
printf("[部署選択]:");
gets(buf);
num=atoi(buf);


printf("\n");
while(1){



}



case 9:
printf("[システム終了します!]\n");
return 0;
}
}
}

このソースで部署名を記入する時に全角、半角関わらず20桁以上打ち込むと再入力にできるのですが、次に正しいものを打ち込むとなぜか、画面がばぐってしまいます。何故だから分かる方おられましたら教えて頂きたいです>_<
よろしくお願いします。


787ポイント を手に入れた。


Name: Yuki  ..初心者(8,936ポイント)   Date: 2007/02/23(金) 15:00   No:4926     
Title: Re:質問です!    
>for(wp=start,i=0; wp->next != NULL; wp=wp->next,i++);
とありますが、1件目入力時startはNULLですよね?
wp->nextの参照は大丈夫ですか?

バグとは関係ありませんが、
>wkdata=(struct busho *)malloc(sizeof(struct busho));
の部分は
wkdata=(busho *)malloc(sizeof(busho));
で良いと思います。

ソースを載せるときは、インデントをして、<pre>タグでくくってもらえると
見やすいのでありがたいです。(<>は半角でお願いします。)


printf( "ここまでは通った。%d行目\n", __LINE__ );
といったようなデバックログを追加しておくと、どこに問題があるのかが
見つけやすくなります。


106ポイント を手に入れた。

Name: ももた  ..初心者(7,835ポイント)   Date: 2007/02/23(金) 15:10   No:4927     
Title: Re:質問です!    
そうです!最初はNULLにしてます!また、1件目の入力時に文字数をオーバーさせて、再入力時に正確なものを打ち込むとバグします。他の場合は大丈夫でした^^; なぜかまだ分からないです・・・。

67ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,193ポイント)   Date: 2007/02/23(金) 15:13   No:4928     
Title: Re:質問です!    
 早い話が、gets内でスタックを破壊しています。

 全角20文字といいながら、対象の変数に
20文字を十分格納できるサイズがないのに格納してしまい、
その結果スタックを壊し、その他のローカル変数が壊れて
しまったのではないでしょうか。


125ポイント を手に入れた。

Name: ももた  ..初心者(7,868ポイント)   Date: 2007/02/23(金) 15:17   No:4929     
Title: Re:質問です!    
そうなんですか^^; Justyさん!それならどうすればいいのでしょうか?

33ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,308ポイント)   Date: 2007/02/23(金) 15:30   No:4930     
Title: Re:質問です!    
 とりあえず、b_nameの配列サイズを大きく(256以上)すれば当座はしのげるかと。

 ちゃんと対応するのであれば、b_nameの配列を 42以上に。
 gets(b_name) はやめて scanf("%41s", b_name) に。
 で、len>40だったら rewind(stdin) を実行するようにする。
 これで「この問題」の部分は大丈夫です。


115ポイント を手に入れた。

Name: ももた  ..初心者(7,936ポイント)   Date: 2007/02/23(金) 15:56   No:4933     
Title: Re:質問です!    
問題は解決しました!ありがとうございました! また、先ほど出てきたrewind(stdin)が何かわからずサイトを調べてるんですが、イイサイトないですね^^;

68ポイント を手に入れた。

Name: ももた  ..初心者(7,977ポイント)   Date: 2007/02/23(金) 16:47   No:4935     
Title: Re:質問です!    
すみません。。。やはり無理でした・・・1回目に全角で文字を30文字以上打つと登録されてしまうんですが^^;

41ポイント を手に入れた。

Name: Yuki  ..初心者(8,947ポイント)   Date: 2007/02/23(金) 16:56   No:4936     
Title: Re:質問です!    
ムリだったソースを載せてください。


11ポイント を手に入れた。

Name: ももた  ..中級者(9,135ポイント)   Date: 2007/02/23(金) 16:58   No:4937     
Title: Re:質問です!    
/************************************
* *
* 社員名簿作成プログラム *
* *
*************************************/




#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct busho{ /*構造体bushoの型枠の宣言*/
char b_name[42]; /*char型の配列b_name 要素数41*/
struct busho *next; /*次のbushoの構造体を指すポインタ変数next*/
struct shain *sentou; /*shainの構造体shainを指すポインタ変数sentou*/
}busho;

typedef struct shain{ /*構造体shainの型枠の宣言*/
char s_name[30]; /*char型の配列s_name 要素数30*/
char tel[12]; /*char型の配列tel 要素数12*/
char sex[1]; /*char型の配列sex 要素数1*/
struct shain *next; /*次のshainの構造体を指すポインタ変数next*/
}shain;


int main(void)
{
busho dmy; /*構造体busho型の変数dmyの宣言*/
busho *start = &dmy; /*構造体dmyのアドレスをstartに格納*/
busho *wkdata; /*データ設定用のポインタ変数wkdataの宣言*/
busho *wp; /*作業用のポインタwpの宣言*/
char b_name[20] = " "; /*char型の配列b_nameの宣言 要素数20*/
char buf[10]; /*char型の配列bufの宣言 要素数1*/



/*struct song *wkdata2;
struct song *wp2;
char s_name[15] = " ", buf2[10];
char tel[12];
char sex[1];
struct busho *tmp;
struct shain *tmp2;
*/

int num, i; /*int型の変数num,iの宣言(num:選択時の数字格納用),i:ループカウンタ*/
int len;
char buf3[1];

start->next = NULL; /*最初はデータがないのでNULLに設定*/

while(1)
{
printf("\n");
printf("[1][2][9]のどれかを選んでください!\n"); /*選択処理*/
printf("[1]:部署名登録\n");
printf("[2]:社員登録\n");
printf("[9]:システム終了\n");

printf("\n");
printf("[選択番号]:");
gets(buf);
num=atoi(buf);

switch(num){ /*部署名の追加処理*/
case 1:
while(1){
printf("[部署名(全角20文字)]:"); /*部署名をキーボード入力*/
/*gets(b_name);*/

scanf("%41s", b_name);
gets(buf3);
len=strlen(b_name);



if(strcmp(b_name, " ")== 0){
break;
}
if(len>40){
printf("文字数オーバーです\n");
rewind(stdin);
continue;

}
else{
break;
}
}
wkdata=(busho *)malloc(sizeof(busho));
if(wkdata==NULL){
printf("メモリを確保する事ができません。\n");
return 1;
}

/*確保した構造体に部署名を設定する*/

strcpy(wkdata->b_name, b_name);

for(wp=start,i=0; wp->next != NULL; wp=wp->next,i++);

if(i==5){
printf("これ以上追加できません!!\n");
break;
}

if(wp->next == NULL){
wp->next = wkdata;
wkdata->next = NULL;
}


printf("**** 部署名リスト ****\n"); /*チェインの構造体の内容を表示*/
printf("\n");
for(wp=start->next,i=1; wp != NULL; wp = wp-> next, i++){
printf("[部署名%d]:%s\n", i, wp->b_name);
}

printf("\n");
break;




case 2:
if(start->next==NULL){
continue;
}



case 9:
printf("[システム終了します!]\n");
return 0;
}
}
}


1,158ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,427ポイント)   Date: 2007/02/23(金) 17:03   No:4938     
Title: Re:質問です!    
 いやもうなんというか。

 要素数が 20しかありませんよ、b_name。


2倍のポイントを手に入れた! 112ポイント を手に入れた。

Name: box  ..熟練のプログラマー(52,524ポイント)   Date: 2007/02/23(金) 17:29   No:4939     
Title: Re:質問です!    
文字列長などに対しては #define を使ってみてはいかがでしょうか。
同じ性格を持っている文字列の長さが異なっているのは不自然です。


67ポイント を手に入れた。

Name: ももた  ..中級者(10,664ポイント)   Date: 2007/02/23(金) 23:21   No:4942     
Title: Re:質問です!    
すみません!また教えて頂きたいです。
性別の部分の表示にバグがあるんですが・・理由がわかりません。教えてください>_<
[ソースコード]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct busho{
char b_name[41];
struct busho *next;
struct shain *sentou;
};

struct shain{
char s_name[30];
char tel[12];
char sex[1];
struct shain *next;
};


int main(void)
{
struct busho dmy;
struct busho *start = &dmy;
struct busho *wkdata;
struct busho *wp;
char b_name[41] = " ";
char buf[41];

struct shain *wkdata2;
struct shain *wp2;



int num,i;
char b_name_cmp[41];

start->next = NULL;

while(1)
{
printf("\n");
printf("@AHのどれかを選んでください!\n");
printf("[1]:部署名登録\n");
printf("[2]:社員登録\n");
printf("[9]:システム終了\n");

printf("\n");
printf("[番号入力]:");
gets(buf);
num=atoi(buf);


switch(num){
case 1:

printf("[部署名]:");
gets(b_name);
if(strcmp(b_name, "")== 0){
break;
}

wkdata=(struct busho *)malloc(sizeof(struct busho));
if(wkdata==NULL){
printf("メモリを確保できません\n");
return 1;
}

/**/

strcpy(wkdata->b_name, b_name);

for(wp=start,i=0; wp->next != NULL;wp=wp->next,i++);

if(4<i){
printf("これ以上追加できません\n");
break;
}

if(wp->next == NULL){
wp->next = wkdata;
wkdata->next = NULL;
}




wkdata2=(struct shain *)malloc(sizeof(struct shain));
wkdata->sentou=wkdata2;
wkdata2->next=NULL;



printf("****[部署名リスト]****\n");
for(wp=start->next,i=1; wp != NULL; wp = wp-> next, i++){
printf("[部署名%d]:%s\n", i, wp->b_name);
}
printf("\n");
break;


case 2:
while(1){
wp=start;
if(wp->next == NULL){
printf("部署名が登録されていません\n");
break;
}

printf("[部署名]:");
gets(b_name_cmp);
if(strcmp(b_name_cmp, "")== 0){
break;
}

for(wp=start->next ; wp != NULL ; wp=wp->next){
if(strcmp(wp->b_name,b_name_cmp) == 0){
break;
}
}
if(wp==NULL){
continue;
}

wp2=wp->sentou;

wkdata2=(struct shain *)malloc(sizeof(struct shain));
if(wkdata2==NULL){
printf("メモリを確保する事ができません\n");
return 1;
}

while(1){
printf("[社員名]:");
gets(buf);
strcpy(wkdata2->s_name, buf);
if(strcmp(wkdata2->s_name,"")== 0){
continue;
}
else{break;}
}

while(1){
printf("[TEL]:");
gets(buf);
if(strcmp(buf,"")==0){
continue;
}
if(strlen(buf)>12){
continue;
}


for(i=0; 47<(int)buf[i] && (int)buf[i]<58 ; i++);
if(i==strlen(buf)){
break;
}
else if((int)buf[i]<48 || 57<(int)buf[i]){
continue;
}
}
strcpy(wkdata2->tel,buf);

while(1){
printf("[性別](男=1,女=0): ");
gets(buf);

if(strcmp(buf,"1")==0){
strcpy(wkdata2->sex,"男");
}
else if(strcmp(buf,"0")==0){
strcpy(wkdata2->sex,"女");
}
else{
printf("入力エラーです!(0か1を押してください!)\n");
continue;
}
break;
}
printf("\n");


for(wp2=wp->sentou; wp2->next != NULL; wp2=wp2->next);



if(wp2->next == NULL){
wkdata2->next = NULL;
wp2->next = wkdata2;

}

for(wp2=wp->sentou,i=1 ; wp2->next != NULL ; wp2=wp2->next,i++){
printf("[%d]部署名:%s\n", i,wp->b_name);
printf("名前:%s\n", wp2->next->s_name);
printf("TEL:%s\n", wp2->next->tel);
printf("性別:%s\n\n", wp2->next->sex);

if(i>10){
printf("これ以上追加できません!(CRを押してください)\n\n");
break;
}
}
}
break;
case 9:
printf("[システムを終了します]\n");
return 0;
}
}
}


1,529ポイント を手に入れた。

Name: box  ..熟練のプログラマー(52,607ポイント)   Date: 2007/02/23(金) 23:31   No:4944     
Title: Re:質問です!    
> 性別の部分の表示にバグがあるんですが・・理由がわかりません。教えてください>_<

"男"または"女"という、終端の'\0'を含めて
3バイトの領域の格納先が1バイトしかないのは、
まずいでしょうね。

ソースの貼り付けの際、前後をなかなか<pre>と</pre>タグ(不等号は半角)で
はさんでいただけないのは残念なことです。


83ポイント を手に入れた。

Name: バグ  ..プログラマー(28,626ポイント)   Date: 2007/02/23(金) 23:31   No:4945     
Title: Re:質問です!    
"男"や"女"は2バイト文字なのに、メンバに割り当てられているのは1バイトしかありませんね。文字列の終端を示す'0'を含めて最低でも3バイトは確保しておかないと危険ですよ。
それにたしか、原則として1個の配列は認められてなかったように思います(;^_^A


73ポイント を手に入れた。

Name: ももた  ..中級者(10,714ポイント)   Date: 2007/02/23(金) 23:34   No:4946     
Title: Re:質問です!    
すみません。よくわからないです>_< どの部分をどのように変更すればいいのでしょうか^^; よくわからなくてすみません。。。

50ポイント を手に入れた。

Name: ももた  ..中級者(10,746ポイント)   Date: 2007/02/23(金) 23:36   No:4947     
Title: Re:質問です!    
あっ!わかりました!sex[1]→sex[3]に変えるとゴミの表示がなくなりました^^;

32ポイント を手に入れた。

Name: ももた  ..中級者(10,857ポイント)   Date: 2007/02/24(土) 00:33   No:4951     
Title: Re:質問です!    
すみません。また質問です!部署名(全角20文字)、社員名(全角15文字)という条件があるんですが、全角21文字,全角16文字以上は繰り返し再入力にしたいんですが、どのように書けばいいのでしょうか? 全然できないのでどなたか教えてください>_<

111ポイント を手に入れた。

Name: box  ..熟練のプログラマー(52,756ポイント)   Date: 2007/02/24(土) 00:44   No:4952     
Title: Re:質問です!    
全然できない、と判断されるまでに、
ご自分の頭でどのくらいの時間お考えになりましたか?
また、書籍やネット上の情報をどの程度お調べになりましたか?

もしも、ほとんど考えたり調べたりしないで、脊髄反射的に「わからん!掲示板だ!」という
お考えをお持ちだとすると、ちょっといかがなものかと思います。


80ポイント を手に入れた。

Name: ももた  ..中級者(10,899ポイント)   Date: 2007/02/24(土) 01:02   No:4953     
Title: Re:質問です!    
そうですね^^; 3,4時間位色々ためしたり、また利用できる関数はないかと調べてるんですが、できなかったので。。。何も考えないですぐに質問みたいな事はしないです。

42ポイント を手に入れた。

Name: box  ..熟練のプログラマー(52,832ポイント)   Date: 2007/02/24(土) 01:13   No:4954     
Title: Re:質問です!    
ということは、先ほどの性別の件などと
同時にお考えになっていたようですね。
投稿時刻から推測して。

一つの問題が片づいてから次に取りかかる方が、
トータルでは効率的だと思います。


76ポイント を手に入れた。

Name: ももた  ..中級者(10,968ポイント)   Date: 2007/02/24(土) 01:20   No:4956 解決!     
Title: Re:質問です!    
性別の問題はなんとか解決したんですが、文字数部分にかなり苦戦をしてますよ>_<
色々サイトでヒントになりそうな部分はないかと調べてるんですが、まだまだ初心者なのでわからないことだらけですね^^;


69ポイント を手に入れた。

Name: asd  ..かけだし(1,158ポイント)   Date: 2007/02/26(月) 10:46   No:5001     
Title: Re:質問です!    
>全角21文字,全角16文字以上は繰り返し再入力にしたいんですが

1.入力を受け付ける
2.入力された文字のサイズを調べる
3.サイズが全角21文字(半角42文字)、全角16文字(半角32文字)以上だったら1.から繰り替えす

こういう処理が必要だと言うことはお分かりになりましたでしょうか?
やりたいことに対して出来るだけ部分部分の処理に分解していくと作りやすいですよ。
上の処理はそれぞれ該当する関数があるかと思いますし^^


212ポイント を手に入れた。



Name: ken  ..ぴよぴよ(0ポイント)   Date: 2007/02/22(木) 10:48   No:4820       
Title: プログラムメモリのアドレスを指定する方法    
はじめまして

早速質問なのですが、アセンブラでは擬似命令「ORG」でプログラムメモリの先頭番地を指定して命令を書き込むことが出来ますが、同様の処理を(つまりプログラムメモリに書き込み始める番地を指定する)行うプログラムをC言語で記述することは可能でしょうか?

CPU:PIC16F84A
開発環境:MPLAB7.40 もしくは ソースブースト6.0
コンパイラ: PIC-C



Name: 管理人 [URL]  ..ハッカー(202,682ポイント)   Date: 2007/02/23(金) 00:12   No:4889     
Title: Re:プログラムメモリのアドレスを指定する方法    
アセンブラを知らないので、よくわかりません><;
アドレス指定はポインタ位しかわかりません、お力になれず申し訳ないm(_ _||)m


Name: Justy  ..比類無きプログラマー(60,068ポイント)   Date: 2007/02/23(金) 02:00   No:4914     
Title: Re:プログラムメモリのアドレスを指定する方法    
 標準のC言語ではできません。
 プログラムの各セクションのアドレスはリンカ(ないしはOS)が自動的に決めてしまいます。

 しかし、使うコンパイラ・リンカによっては機能が拡張されていて、
コードセクションの位置を自由に決められたり、リンカオプションの設定で、
ORGと同じ事ができるかもしれません。
 でももうそれは機種依存なので、できるかどうかは、コンパイラのマニュアルを見るか、
コンパイラベンダーに問い合わせるしかないと思います。


189ポイント を手に入れた。

Name: ken  ..ぴよぴよ(27ポイント)   Date: 2007/02/26(月) 09:43   No:4998     
Title: Re:プログラムメモリのアドレスを指定する方法    
ご回答ありがとうございます。

やはり標準のC言語ではできないのですか。
確かに、私が探した有料のコンパイラの中に#pragmaでORGという命令ができるものあり、プログラムメモリ位置の指定ができるようでした。
しかし、#pragmaはコンパイラ依存のプリプロセッサ命令なので、コンパイラに依存しない方法はないのだろうかと模索していましたが、やはりできないということなんですね。

いや〜結論が出てスッキリしました。

本当にありがとうございました。

※ちなみに使用しているコンパイラはPIC-Cではなく下位バージョン(フリーソフト)のPICCLITEでした。PIC-Cでは上記の命令が出せるようです。(しかし有料・・・)


27ポイント を手に入れた。

Name: ken  ..ぴよぴよ(48ポイント)   Date: 2007/02/26(月) 09:45   No:4999 解決!     
Title: Re:プログラムメモリのアドレスを指定する方法    
解決マークにチェックし忘れてしまいました。

21ポイント を手に入れた。



Name: ゆきもちこ  ..ぴよぴよ(830ポイント)   Date: 2007/02/24(土) 00:12   No:4949       
Title: 二分木中の要素数を求める    
大学の課題でどうしても作成できないプログラムがあります。
どうか力を貸してください!!!
[二分木中の要素数の個数を求める関数 int tree_size(struct _node* tree);を定義せよ。]
と言う問題なんです。

プログラム全体を作る必要はなく、tree_sizeの関数内を
作成すれば良い形になっています。
/*oct10_1.c二分木*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>


/*二分木のデータ構造*/
struct _node
{
struct _node *left;
int data;
struct _node *right;
};

/*プロトタイプ宣言*/
struct _node* new_node(struct _node* left, int data, struct _node* right);
int tree_size(struct _node* tree);

/*main関数*/
int main(void)
{


struct _node* test = new_node(new_node(new_node(NULL, 1, NULL), 6, new_node(NULL, 11, NULL)),
4,
new_node(new_node(NULL, 4, NULL), 5, new_node(NULL, 0, NULL)));

struct _node* test1 = new_node(test, 8, test); // tree_size(test1) の要素数は15になる
struct _node* test2 = new_node(test1, 9, test1); // tree_size(test2) の 要素数は31
struct _node* test3 = new_node(test2, 10, test1); // tree_size(test3) の 要素数は47



printf("要素数:%d", tree_size(test3));

return 0;
}

/*新しいノードを追加*/
struct _node* new_node(struct _node* left, int data, struct _node* right)
{
struct _node* ret = (struct _node*)malloc(sizeof(struct _node));
ret->left = left;
ret->data = data;
ret->right = right;
return ret;
}


/*二分木中の要素数を求める関数*/
int tree_size(struct _node* tree)
{
/*この部分を考える。*/

}

どうすれば要素数を求められるのでしょうか?
どうか教えてくださいお願いします(uc_,u*)


830ポイント を手に入れた。


Name: box  ..熟練のプログラマー(52,676ポイント)   Date: 2007/02/24(土) 00:30   No:4950     
Title: Re:二分木中の要素数を求める    
二分木をなぞっていく方法には
 ・行きがけ順(preorder)
 ・通りがけ順(inorder)
 ・帰りがけ順(postorder)
の3種類があります。

このあたりの話を聞かれたことはありますか?


69ポイント を手に入れた。

Name: ゆきもちこ  ..かけだし(1,035ポイント)   Date: 2007/02/24(土) 01:19   No:4955     
Title: Re:二分木中の要素数を求める    
コメントありがとうございます!

二分木のトラバーサルの話は聞いたことがあります。
このプログラムの場合は、(帰りがけ順で表すと)
tree_size(tree->left);
tree_size(tree->right);
printf("%d\n", tree->data);
となると考えています。
この探っていくなかで、どのように要素をカウントすればよいのか分かりません。

質問する前に、大域変数やstatic変数を使って要素数をカウントするように作ったのですが
これは使ってはいけませんと言われました。


205ポイント を手に入れた。

Name: box  ..熟練のプログラマー(53,153ポイント)   Date: 2007/02/24(土) 08:18   No:4962     
Title: Re:二分木中の要素数を求める    
> このプログラムの場合は、(帰りがけ順で表すと)
> tree_size(tree->left);
> tree_size(tree->right);
> printf("%d\n", tree->data);
> となると考えています。

大筋の考え方は正しいです。
ただ、左部分木や右部分木をなぞるには1つ条件を加えることが必要です。
それは、「左右の部分木は、いつかはNULLになることを考慮する」です。
この点を考慮しないと、NULLの先をなぞろうとしてプログラムが異常終了します。

> この探っていくなかで、どのように要素をカウントすればよいのか分かりません。

上記のprintfでノードのデータを参照しているところで、
そのノードに立ち寄ったことになります。
今回はメンバーdataは特に参照する必要がなさそうですので、参照するかわりに
要素数のカウントを1増やせばよいです。

また、左右の部分木をなぞった結果、各々の部分木にいくつ要素があったかが
返ってくるようにする必要もあります。

後は、要素数のカウントの初期化や、呼び出し元にカウント値を返す文を加えれば、完成します。
大域変数やstaticを使わなくてもできます。

なお、要素数のカウントの場合、部分木のなぞり方は
行きがけ順・通りがけ順・帰りがけ順のどれでも同じ結果を得ます。
当たり前のことですけれど。
例えば、帰りがけ順でなぞった結果、
・左部分木には4個の要素があった
・右部分木には7個の要素があった
・自分の分は1個
という場合、全部で4+7+1=12個の要素があることになります。


321ポイント を手に入れた。

Name: ゆきもちこ  ..かけだし(1,093ポイント)   Date: 2007/02/24(土) 13:50   No:4966     
Title: Re:二分木中の要素数を求める    
分かりやすい説明大変感謝します。

次のポイント、
>それは、「左右の部分木は、いつかはNULLになることを考慮する」です。
>今回はメンバーdataは特に参照する必要がなさそうですので、参照するかわりに
要素数のカウントを1増やせばよいです。
>また、左右の部分木をなぞった結果、各々の部分木にいくつ要素があったかが
返ってくるようにする必要もあります。
>後は、要素数のカウントの初期化や、呼び出し元にカウント値を返す文を加えれば、完成します。
大域変数やstaticを使わなくてもできます。
を踏まえて考えてみた結果

/*二分木中の要素数を求める関数*/
int tree_size(struct _node* tree)
{
/*要素数のn, 自分の分n1,左分木n2,右分木n3*/
int n, n1=0, n2,n3;
/*データが存在しない場合*/
if(tree==NULL){
return 0;
/*データが存在する場合*/
}else{
n2=tree_size(tree->left);
n3=tree_size(tree->right);
n1++;
}

n=n1+n2+n3;

return n;
}

となりました。
結果、要素数は47となり、上手く実装できました。
大変ありがとうございます!!!!

このプログラムで、特にもう問題はないでしょうか?


58ポイント を手に入れた。

Name: box  ..熟練のプログラマー(53,528ポイント)   Date: 2007/02/24(土) 15:41   No:4970     
Title: Re:二分木中の要素数を求める    

> このプログラムで、特にもう問題はないでしょうか?

はい。問題ありません。
参考までに、「こんな書き方もある」というのを提示いたします。

int tree_size(struct _node *tree)
{
return (tree) ? tree_size(tree->left) + tree_size(tree->right) + 1 : 0;
}

ゆきもちこさんのコードを簡略化できないか?について
考えているときに思いつきました。



105ポイント を手に入れた。

Name: ゆきもちこ  ..かけだし(1,250ポイント)   Date: 2007/02/24(土) 19:37   No:4979 解決!     
Title: Re:二分木中の要素数を求める    
お力添え本当にありがとうございました。


>参考までに、「こんな書き方もある」というのを提示いたします。

boxさんの書き方はとても簡略化されていて素晴らしいです。
大変勉強になりました。
まだまだ私は勉強不足だと痛感しました。

おかげさまで今日無事に課題を提出することが出来ました。
ありがとうございました!!!!!


157ポイント を手に入れた。



Name: 名無し  ..ぴよぴよ(62ポイント)   Date: 2007/02/21(水) 19:15   No:4793       
Title: 画像の明るさについて    
指定した画像の明るさを変えて
フェードインさせたりフェードアウトさせる方法を教えてください。


46ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(202,822ポイント)   Date: 2007/02/23(金) 00:01   No:4885     
Title: Re:画像の明るさについて    
お返事遅れてすみません。

それはDXライブラリを使った方法でしょうか?
ゲームプログラミングの館にまさにそのほうほうが書いてありますので、参考にしてみてください。
http://dixq.net/g/#35

この方法は本家DXライブラリにも書いてあります。
http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N9


90ポイント を手に入れた。

Name: 名無し  ..ぴよぴよ(66ポイント)   Date: 2007/02/23(金) 20:54   No:4941 解決!     
Title: ありがとうございます!    
すいません、ゲームプログラミングの館を見たらよくわかりました;
おさわがせいたしましたm(_ _)m


4ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(209,169ポイント)   Date: 2007/02/24(土) 15:48   No:4972     
Title: Re:ありがとうございます!    
いえいえ、実際どこに書いてあるのか探すのメンドクサイ時もありますし、
気軽に聞いてくださいね〜^^


25ポイント を手に入れた。



Name: akikun  ..ぴよぴよ(55ポイント)   Date: 2007/02/24(土) 13:03   No:4965       
Title: プログラムの実行について教えてください。    
はじめまして。 超初心者なのですが、今 サイトの順序に従ってやってみています。
BCC Developer に サンプルのプラグラムをコピー&ペーストしてみたのですが、
全く反応がありません。 実行するにはどうすれば良いのか、どなたか教えてください。
宜しくお願いします ^^


55ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(209,144ポイント)   Date: 2007/02/24(土) 15:43   No:4971 解決!     
Title: Re:プログラムの実行について教えてください。    
こんにちは。管理人です。

えぇと、反応がないというのは具体的にどんな症状ですか?

画面はきちんと生成されていますか?
何かエラーが出るのですか?
画面は出るけど、画像が表示されないのですか?
画像が表示されない時の対策プログラムは実行してみましたか?


2倍のポイントを手に入れた! 260ポイント を手に入れた。



Name: 大工  ..中級者(12,173ポイント)   Date: 2007/02/24(土) 02:12   No:4958       
Title: ポインタの質問    
1次元配列へのポインタと2次元配列って似てるけど違うと良く聞きます。

手持ちの本で解説している部分があるのですがその『差』というグレーゾーンの話ははっきりとは書かれていませんでした。。。

すみません、解説していただけないですか?


73ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(205,924ポイント)   Date: 2007/02/24(土) 03:45   No:4960     
Title: Re:ポインタの質問    
違うというのがよくわかりませんけど、アドレスの配置は以下のようになっています。

int a[5];
と宣言した場合、

aつまりa[0]のアドレスを先頭に[0][1][2][3][4]と連続で用意されます。
例えば
&a[0]が12000だとしたらint型は4バイトなので
12000 12004 12008 12012 12016

という感じで用意されます。
一方2次元配列は

int a[2][2];と宣言した場合

aつまりa[0][0]のアドレスを先頭に[0][0] [0][1] [1][0] [1][1]と連続で用意されます。
例えば
&a[0][0]が12000だとしたらint型は4バイトなので、
12000 12004 12008 12012

という感じで用意されます。
もしご存知でしたらごめんなさい。

それ以外に特定の場所に用意される違いがあるなどの性質がもしあるのでしたら存じません。


319ポイント を手に入れた。

Name: box  ..熟練のプログラマー(53,423ポイント)   Date: 2007/02/24(土) 09:14   No:4963     
Title: Re:ポインタの質問    
> 1次元配列へのポインタと2次元配列って似てるけど違うと良く聞きます。

いわゆる2次元配列は「配列の配列」です。
つまり、各要素が配列であるような配列です。
一方、1次元配列へのポインタは、当該配列の先頭要素を指すポインタです。
配列とポインタは、あくまで異なる概念です。

ただ、いわゆる2次元配列を関数の引数とする場合、
呼ばれた側では1次元配列へのポインタとして扱います。
int a[3][5]という配列があるとします。これを、ある関数の引数とする際、例えば
void func(int (*arr)[5], int n);
のように宣言します(nは元の配列の第1次元の数)。
func関数には、a[3][5]の他、int b[2][5]やint c[100][5]など、
第2次元が5であるような配列を問題なく渡すことができます。
第2次元、つまり列数が5である配列は、横方向に要素が5つ並んだ図を想像するとよいでしょう。
このとき縦方向、つまり第1次元の数はいくつであるかをfunc関数は直接知ることができません。
そこで、func関数の第2引数として2とか100とかいう、
元の配列の第1次元の数を渡しています。

すでにご存じのことばかりでしたら読み捨ててください。


270ポイント を手に入れた。



Name: sign  ..かけだし(2,382ポイント)   Date: 2007/02/22(木) 03:50   No:4798       
Title: 累乗を行うとき    
数値を処理するプログラムにおいて、xnを行いたいとき、
x が整数で、n が非負整数であることを前提にしているような場合、その結果も整数になりますが、

特に実数型を用いないような処理(プログラム)において累乗を扱うには、
value = (int)pow(x, n);
のように毎度キャストするのが妥当なのでしょうか。

x2などと指数が決まっていれば、x*xのように書いても良いのかもしれませんが。
仮に2乗の場合にx*xと記述することを決めたとすると、何乗までをそのように書くのかということも考えてしまいます。

x^n や x**n のような表記ができれば越したことはないのですが、Cに関しては一般的にどうなのでしょうか。


別件ですが、
ある自然数を、3乗して、4乗根の整数部を求めて、2乗する、
というようにpow関数を連続した場合、プログラムの処理は著しく遅くなるでしょうか?
この程度の処理をさせて、入力される自然数に対して求めたい値を算出するようなプログラムを書いたのですが、
別のプログラムに比べると、100個程度のデータ入力に対して出力が終わるまでに数秒かかったので気になりました…。

回答いただければ幸いです。


271ポイント を手に入れた。


Name: ぽん太  ..中級者(10,846ポイント)   Date: 2007/02/22(木) 05:31   No:4801     
Title: Re:累乗を行うとき    
xが非0整数でnが非負整数の場合の冪乗計算でnが大きい場合は
こんなのが早かったりします.

vaule=1;
for(;n>0;n>>=1){
if(n%2)
value*=x;
x=x*x;
}


46ポイント を手に入れた。

Name: box  ..熟練のプログラマー(52,457ポイント)   Date: 2007/02/22(木) 16:57   No:4868     
Title: Re:累乗を行うとき    
> 別のプログラムに比べると、100個程度のデータ入力に対して出力が終わるまでに数秒かかったので気になりました…。

どのようなコードを書かれましたか?


10ポイント を手に入れた。

Name: sign  ..入門者(4,181ポイント)   Date: 2007/02/23(金) 08:19   No:4919     
Title: Re:累乗を行うとき    
返信が遅くなり申し訳ありません。

>ぽん太さん
なるほど。
具体値で追跡して概ね理解できました。
途中で n が奇数になったときにそれまでの x を value に乗算するところがうまく理解できていませんが;
これに関してですが、「xが非0整数」と書かれていますが、x=0 だと理想値は得られないのでしょうか…。

>boxさん
「 n>=3 のとき、x^n + y^n = z^n を満たす自然数の組 x, y, z は存在しない」というフェルマーの最終定理に関して、
2以上の自然数 z が与えられたとき、
x^n + y^n < z^n を満たす x^n + y^n が最大となるとき、『 z^n - (x^n + y^n) 』を求める。
といった内容です。
プログラムを書く上で、さらに条件として n=3, (1<)z<1000 を加えます。

実際はファイル入力ですが、以下のソースではfor文で z を回したものを示します。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void){
const int n=3;
int x, y, z, t;
int zn, xy, max;
for(z=900; z<=999; z++){
/* z^n を zn に代入 */
zn = (int)pow(z, n);
/* (x^3)+(x^3) < z となる最大のxを t に代入 */
t = (int)pow(zn/2, 1.0/n);
/* x と y に t をに代入 */
x = y = t;
/* (x^3)+(y^3) を max に代入 */
max = 2 * (int)pow(t, n);
/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
/* y を t から デクリメント */
/* (x^3)+(y^3) が zn 以下になったら抜ける */
for(y=t; (xy=(int)(pow(x, n)+pow(y, n)))>zn; y--);
/* 最新の (x^3)+(y^3) が 今までの max より大きかったら max を更新*/
if(max < xy) max = xy;
}
printf("%d\n", zn-max);
}
return(0);
}

テストデータが1000近くの場合に、x, y のループが多くなるせいで処理に時間がかかっているのですね…;

と書いたのですが、冗長な処理を見つけました。

/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
/* y を t から デクリメント */
/* (x^3)+(y^3) が zn 以下になったら抜ける */
for(y=t; (xy=(int)(pow(x, n)+pow(y, n)))>zn; y--);
/* 最新の (x^3)+(y^3) が 今までの max より大きかったら max を更新*/
if(max < xy) max = xy;
}

y のループの中では不変の x が引数のpow関数を動かしていました…。

/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
xn = (int)pow(x, n);
/* y を t から デクリメント */
/* (x^3)+(y^3) が zn 以下になったら抜ける */
for(y=t; (xy=(int)(xn+pow(y, n)))>zn; y--);
/* 最新の (x^3)+(y^3) が 今までの max より大きかったら max を更新*/
if(max < xy) max = xy;
}

と変更したら随分速くなりました…。
自己解決してしまいましたが、boxさんの回答がなければ気付くまで検証しなかったかもしれません;
回答ありがとうございました。

誠に勝手ではございますが、もしこのプログラムに関して改善可能な点が見受けられるようでしたらご指摘お願いします。


※ font 要素を pre 要素の内容とすることはできませんが、可読性を考慮して文法無視で色を変えています…。


1,799ポイント を手に入れた。

Name: ぽん太  ..中級者(11,723ポイント)   Date: 2007/02/23(金) 08:33   No:4920     
Title: Re:累乗を行うとき    
あのプログラムで
x=0
n=0
とすると
0^0=1 になります。
しかし0^0は不定であるという見解もある
ようなので非0整数と書いておきました。


68ポイント を手に入れた。

Name: sign  ..入門者(4,206ポイント)   Date: 2007/02/23(金) 16:11   No:4934     
Title: Re:累乗を行うとき    
そういう考慮でしたか。
理解いたしました。
ありがとうございました。


25ポイント を手に入れた。

Name: しっぽ  ..入門者(3,553ポイント)   Date: 2007/02/23(金) 23:30   No:4943     
Title: Re:累乗を行うとき    
> 誠に勝手ではございますが、もしこのプログラムに関して改善可能な点が見受けられるようでしたらご指摘お願いします。



無意味なコードがあります。

/* x と y に t をに代入 */
x = y = t;



yの初期値を変えてみたらどうでしょうか。

/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
xn = (int)pow(x, n);
s = (int)pow((zn - xn), 1.0/n);
/* y を s+1 から デクリメント */
/* (x^3)+(y^3) が zn 以下になったら抜ける */
for(y=s+1; (xy=(int)(xn+pow(y, n)))>zn; y--);
/* 最新の (x^3)+(y^3) が 今までの max より大きかったら max を更新*/
if(max < xy) max = xy;
}



下記でも良いような気がしますが、未確認。

/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
xn = (int)pow(x, n);
y = (int)pow((zn - xn), 1.0/n);
xy=(int)(xn+pow(y, n));
max = xy;
}



2倍のポイントを手に入れた! 620ポイント を手に入れた。

Name: しっぽ  ..入門者(3,631ポイント)   Date: 2007/02/24(土) 00:09   No:4948     
Title: Re:累乗を行うとき    
私の三番目のコードには明らかな誤りがあるので訂正します。


/* x を z-1 から t+1 まで */
for(x=z-1; x>t; x--){
xn = (int)pow(x, n);
y = (int)pow((zn - xn), 1.0/n);
xy=(int)(xn+pow(y, n));
if(max < xy){
max = xy;
}
}



78ポイント を手に入れた。

Name: sign  ..入門者(4,494ポイント)   Date: 2007/02/24(土) 01:23   No:4957 解決!     
Title: Re:累乗を行うとき    
>しっぽさん

> 無意味なコードがあります。
完全にデバッグ用の記述でした…。(コメントの助詞も誤記;)
ご指摘ありがとうございます。

> yの初期値を変えてみたらどうでしょうか。
確かに仰るとおりですね。
ここまで読んで確認したら、まさに s が そのときの x に対する y だと気付き…
> 下記でも良いような気がしますが、未確認。
まさに仰られる通りになりました。
ありがとうございます。

このような(数学的観点から)効率の良いプログラム(アルゴリズム)に気付けるようになりたいです…;

ありがとうございました。
一応…解決マークにさせていただきます。


2倍のポイントを手に入れた! 288ポイント を手に入れた。



Name: 組木紙織  ..ぴよぴよ(127ポイント)   Date: 2007/02/22(木) 09:30   No:4802       
Title: printfとscanfについて    
はじめまして、組木紙織です。
時々掲示板で、printfとscanfは使わないほうがよいという話を聞くのですが、その理由を今まで聞いたことがありません。
速度が遅いということは知っているのですが、それ以外にこれらの関数を使わない理由があるのでしょうか?
知っている方がいたら教えてください。


127ポイント を手に入れた。


Name: box  ..熟練のプログラマー(50,992ポイント)   Date: 2007/02/22(木) 10:15   No:4809     
Title: Re:printfとscanfについて    
> 時々掲示板で、printfとscanfは使わないほうがよいという話を聞くのですが、その理由を今まで聞いたことがありません。

scanfは、例えば数値の入力を求めている場合に数値以外を入力すると
平気で暴走してしまう、というような問題点があります。
fgetsとsscanfの組み合わせで、ある程度は回避できます。

絶対に暴走しないとわかっている場合や、
暴走した場合の影響が狭い範囲にとどまる(例:自分だけが使うプログラム)
のであれば、scanfで十分だと思います。

printfについては、私からのコメントはありません。


160ポイント を手に入れた。

Name: 組木紙織  ..ぴよぴよ(257ポイント)   Date: 2007/02/22(木) 10:42   No:4818     
Title: Re:printfとscanfについて    
コメントありがとうございます
/**************/
<p>
#include<stdio.h>
#include<stdlib.h>


int main(void)
{
int i;
scanf("%d",&i);
printf("%d",i);


return EXIT_SUCCESS;
}

//input
/*as*/
//output
/*9445828*/
</p>
/*****************/

>scanfは、例えば数値の入力を求めている場合に数値以外を入力すると
>平気で暴走してしまう、というような問題点があります。
というのは上記のようなことになるということでしょうか?

プログラムが不正終了したり、フリーズすることはないのですか?





130ポイント を手に入れた。

Name: box  ..熟練のプログラマー(51,197ポイント)   Date: 2007/02/22(木) 10:53   No:4822     
Title: Re:printfとscanfについて    
> >scanfは、例えば数値の入力を求めている場合に数値以外を入力すると
> >平気で暴走してしまう、というような問題点があります。
> というのは上記のようなことになるということでしょうか?

不正な結果を得てしまう、という点では、提示された内容はそのとおりですね。
その他、for文やwhile文などで構成するループの中でscanfを使っていて、
想定しない入力のために無限ループに陥ってしまう場合もあります。

> プログラムが不正終了したり、フリーズすることはないのですか?

入力内容によっては、ユーザープログラムがアクセスできない領域に
アクセスしようとした結果、そうなってしまうことがあるかもしれません。
そういうおそれがある、という話で、絶対そうなるとも絶対そうならないともいえません。


146ポイント を落としてしまった。

Name: 組木紙織  ..ぴよぴよ(331ポイント)   Date: 2007/02/22(木) 11:09   No:4824 解決!     
Title: Re:printfとscanfについて    
>入力内容によっては、ユーザープログラムがアクセスできない領域に
>アクセスしようとした結果、そうなってしまうことがあるかもしれません。

私はこれを配列やポインタを利用したときのことだと想定しますが、
そのあたりはコードを記述するときに気をつければ問題はないと思います。

例えば
void sample(int i)
{
if(!i){
abort();
}
}
というような状況がscanf関数を使うことによって存在する。ということが気になったので先ほどの質問をさせていただきました。
このような状況は存在するのでしょうか?



74ポイント を手に入れた。

Name: box  ..熟練のプログラマー(51,375ポイント)   Date: 2007/02/22(木) 11:20   No:4827     
Title: Re:printfとscanfについて    
> というような状況が

これが、scanfを使うこととどのように結びつくのか、よくわかりませんでした。
sample関数のコードは、引数 i の値によってはabort関数を実行する、というだけですよね。


69ポイント を手に入れた。

Name: 組木紙織  ..ぴよぴよ(578ポイント)   Date: 2007/02/22(木) 18:06   No:4870     
Title: Re:printfとscanfについて    
説明の仕方が悪くてすみません。

int i = 1, j =0;
i/j;

としたり

char ch[2];
int i= 3;
ch[3] = '1';

というようなプログラムが正しく動かない可能性のある状況が、
scanf("%d",&i);
ch[i] = '1';
ということをせずに、

int main(void)
{
char ch;
scanf("%c", &ch);//ここの中身は必要に応じて変える。

return EXIT_SUCCESS;
}

というプログラムを実行して入力をすることによって正しく動かない可能性のある状況を作り出せるのかどうかを前回の質問ではたずねたつもりです。

これでも意味が通じなかったらどうしよう。




247ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(203,599ポイント)   Date: 2007/02/23(金) 00:39   No:4895     
Title: Re:printfとscanfについて    
boxさんのおっしゃる、
fgetsとsscanfの具体的な説明が書いてあるサイトを紹介します。

http://www.kyoto-su.ac.jp/~kbys/proC/fileio/stdin-out.html

scanfを用いない方がよいのは、バッファのオーバーフローを全く考慮していない関数だからです。
つまり
scanfによって、1万文字でも2万文字でもバッファにつめようとしてしまうのです。
ch型1万文字なら1万バイトですが、1万バイト内に使用してはいけない領域があったとしたら、不具合が生じてしまいます。

ですから大量の文字列を入力したら不具合が出る可能性があります。
printfに関して使っては成らない利用は良く知りません。


174ポイント を手に入れた。

Name: Justy  ..熟練のプログラマー(59,795ポイント)   Date: 2007/02/23(金) 01:46   No:4909     
Title: Re:printfとscanfについて    
scanfを用いない方がよいのは、バッファのオーバーフローを全く考慮していない関数
 必ずしもそんなことはないかと。

 char str[10];
 scanf("%9s", str);

 なら何文字入力しても9文字分しか格納されません。

 結局のところ、scanfを避けた方がいいのは後述した理由と、
正しい使い方・・・バッファを制限する、入力が正しく行われたか
(整数のところでアルファベットを入力したとか)のチェックをする、
不正なら入力バッファをクリアする、など・・・を知らない人が多いから、なのでは
ないでしょうか。

 参考書とかでも scanfで入力した後、エラーチェックしたり、
ストリームをクリアしたりしてるのを見たことがないですし・・・。


printfとscanfは使わないほうがよいという
 多分どちらも、可変引数であるのもそう言われる要因ではないでしょうか。
 可変引数は型安全ではないので、使い方を間違えると参照するアドレスがずれたりして、
結果不正なプログラムが実行される事になりかねません。



400ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,453ポイント)   Date: 2007/02/23(金) 01:49   No:4910     
Title: Re:printfとscanfについて    
はい、Justyさんに以前教えて貰いましたね
scanf("%9s", str);
この書き方^^;

正しく使わないと、エラーを起こしかねない関数ということですね><;

あ、関係ないですけど、昇進おめでとうございますヽ(*^∇゜)oC□☆□Do(゜∇^*)ノ
ランク最高まで後1つですねw


54ポイント を手に入れた。

Name: 組木紙織  ..ぴよぴよ(661ポイント)   Date: 2007/02/23(金) 20:01   No:4940 解決!     
Title: Re:printfとscanfについて    
皆様書き込みありがとうございます。
ようやくscanfを使わないほうがよい理由が分かりました。

普段はC++を使っているのであまり関係はなかったのですが、気になっていることが解消できてよかったです。


83ポイント を手に入れた。



Name: tower  ..入門者(3,386ポイント)   Date: 2007/02/22(木) 18:22   No:4871       
Title: キー入力について    
前後左右のカーソルの判定は

    if( DXUTIsKeyDown( VK_RIGHT ) )
    {
 gameflag2 = 1;
    }

等のようにすれば良いのは分かるのですが、SやTなどのカーソル以外のキー入力は
どうすれば良いんでしょうか?
すみませんが、急ぎなのでできるだけ早くお願いします。


88ポイント を手に入れた。


Name: Justy  ..熟練のプログラマー(58,508ポイント)   Date: 2007/02/22(木) 19:46   No:4874     
Title: Re:キー入力について    
 'S'とか 'T'でどうですか?


7ポイント を手に入れた。

Name: tower  ..入門者(3,480ポイント)   Date: 2007/02/23(金) 15:34   No:4931 解決!     
Title: Re:キー入力について    
いや、

if( DXUTIsKeyDown( VK_'S' ) )
{
gameflag = 1;
}

として実行すると、

error C2065:'VK_': 定義されていない識別子です。

となりますね(^^;A)
私も色々やってるんですが、まだ分かっていません。
他にもどなたか分かる方がいたら、よろしくお願いします(__)<!--12-->


94ポイント を手に入れた。

Name: Justy  ..比類無きプログラマー(60,315ポイント)   Date: 2007/02/23(金) 15:45   No:4932     
Title: Re:キー入力について    
 いや、DXUTIsKeyDown('S')

7ポイント を手に入れた。



Name: 超初心者  ..ぴよぴよ(731ポイント)   Date: 2007/02/20(火) 14:35   No:4742       
Title: 学校の課題なのですが・・・    
課題はCTの生データ切り出しプログラムを作成するというものなんですが、まったくわかりません。
流れとしては1.raw-fileをオープン。2.切り出し開始ビューまでファイルポインタをシーク。3.繰り返し処理
4.読み込み位置までシーク。5.切り出しサイズ分読み込み。6.出力ファイル名決定。7.出力ファイルオープン。8読み込んだデータを出力ファイルへ書き込み。9.出力ファイルクローズ10.rawファイルをクローズ。
という流れなんですが、まったく考えが浮かんできません。

丸投げはいけないとわかっているのですが、どうしても解決できません。よろしくお願いします。


182ポイント を手に入れた。


Name: Yuki  ..初心者(6,974ポイント)   Date: 2007/02/20(火) 15:03   No:4744     
Title: Re:学校の課題なのですが・・・    
>丸投げはいけないとわかっているのですが

1〜10の流れの、1から全て分からないということですか?

単純にファイルをコピーするプログラムは作れますか?




2倍のポイントを手に入れた! 124ポイント を手に入れた。

Name: keichan  ..中級者(13,852ポイント)   Date: 2007/02/20(火) 15:08   No:4745     
Title: Re:学校の課題なのですが・・・    
まずは1〜10までで自身でできるところ、出来ないことを一つずつ確認してください。

1.ファイルオープン処理
2.ファイルのシーク処理
3.繰り返し処理(何の繰り返しか説明がないので分かりません)
4.2.と同様シーク処理
5.ファイルの読み込み(fread等)
6.これもどこからの情報でファイル名を決定するのか明記されていないのでわかりません
7.ファイルオープン処理
8.ファイルの書き込み(fwrite等)
9〜10.ファイルクローズ処理

どれもわからないって事はない?ですよね??


147ポイント を手に入れた。

Name: 超初心者  ..ぴよぴよ(616ポイント)   Date: 2007/02/20(火) 15:24   No:4746     
Title: Re:学校の課題なのですが・・・    
申し訳ありません。ほとんど理解できていないです。
ファイルのオープンとクローズくらいしか分かりません。

シークなどはまったく理解していないです。
さらにファイルはランダム、バイナリについても厳しいです。
ファイル名はRAWファイルのパスを入力すると言っていました。

1チャネル2バイト。
1024が1行にある。(2048個)
×列数で1ビューになることぐらいしかわかりません。

こんな質問で本当に申し訳ありません。ちなみにファイルのコピー
ぐらいなら作成できます。


115ポイント を落としてしまった。

Name: keichan  ..中級者(14,123ポイント)   Date: 2007/02/20(火) 16:45   No:4747     
Title: Re:学校の課題なのですが・・・    
超初心者さんの仰っている RAWファイル というものが
どのようなフォーマットであるのか明記されていませんので、具体的なアドバイスができません。
もしかしてRAW graphics formatかな?と思いましたが、判断をつきかねます。

オープン:fopen
クローズ:fclose
シーク:fseek
バイナリ用読み込み:fread
バイナリ用書き込み:fwrite
テキスト用書き込み:fputc, fputs 等

現状提示されている仕様では上記関数を調べてやってみてください。
としか、言えません。

もっと突っ込んだアドバイスが欲しいと思うのであれば、
情報の出し惜しみをせずに全て開示してください。


ex)
>ファイル名はRAWファイルのパスを入力すると言っていました。
実行時に入力させるのか、実行時パラメータで入力するのか?

RAWファイルのフォーマットは?

>2.切り出し開始ビューまでファイルポインタをシーク。
切り出し開始地点はどうやって決めるの?

>3.繰り返し処理
何を"繰り返し"て処理するの?

.
.
.

等、不明な点を全て提示お願いします。


271ポイント を手に入れた。

Name: Yuki  ..初心者(7,352ポイント)   Date: 2007/02/20(火) 17:29   No:4748     
Title: Re:学校の課題なのですが・・・    
>シークなどはまったく理解していないです。

簡単に説明すると、シークとは指定された位置にファイルポインタを移動することを指します。

例えば、「abcdefg」というデータのファイルが存在した場合、
ファイルをオープンし、そのままデータを読み込むと「abcdefg」が取得できますよね。

ファイルをオープン後、【ファイルポインタをファイルの先頭から3バイト移動する】(シークする)処理後
そのファイルポインタからデータを読み込むと「defg」というデータが取得できます。


/* サンプルソース */
int main(void)
{
FILE *fp = NULL;
char buf[64];

memset( buf, 0x00, sizeof(buf));
fp = fopen( "test.txt", "rb" );
if( fp ){
fread( buf, sizeof(buf), 1, fp );
printf( "シーク無し:%s\n", buf );
fclose( fp );
fp = NULL;
}

memset( buf, 0x00, sizeof(buf));
fp = fopen( "test.txt", "rb" );
if( fp ){
fseek( fp, 3, SEEK_SET );
fread( buf, sizeof(buf), 1, fp );
printf( "シーク有り:%s\n", buf );
fclose( fp );
fp = NULL;
}

return 0;
}



これを応用して、今回の課題のファイルフォーマットから取得したいデータを抽出する方法を考えてみてください。

>1チャネル2バイト。
>1024が1行にある。(2048個)
>×列数で1ビューになることぐらいしかわかりません。

まず、このファイルフォーマットのイメージをつかむことが必要です。
切り出し開始ビューを区別できるものはありますか?


378ポイント を手に入れた。

Name: 超初心者  ..かけだし(1,036ポイント)   Date: 2007/02/20(火) 18:13   No:4758     
Title: Re:学校の課題なのですが・・・    
皆さんありがとうございます。

現在分かっていることは、、、

総ビュー数       (tviews)
セグメント数 (segment)
切り出し開始ビュー (start_view)
切り出し個数 (raw_n)
切り出しサイズ (size_view)
切り出しピッチ (pitch_view)

を引数として扱うということです。
切り出し開始ビューまでファイルポインタを
シークとは、読み出したファイルに対してです。

ピッチは開始ビュー+ピッチ×0(開始位置)
次からは×1、×2となっていきます。
この数字を変数として使い繰り返せと言われました。

コマンドRaw Divait raw_file outraw_file tviews
segment raw_n start_view pitch_viewとなっており

raw_file 生データのファイル名をパスで入力
outraw_file 出力ファイル名をパスで入力します。

繰り返し処理とは切り出した個数の数
(0〜raw-n)になるらしいです。

わかりにくくて本当に申し訳ありません。


2倍のポイントを手に入れた! 420ポイント を手に入れた。

Name: Yuki  ..初心者(7,833ポイント)   Date: 2007/02/21(水) 08:02   No:4769     
Title: Re:学校の課題なのですが・・・    
>総ビュー数       (tviews)
>セグメント数 (segment)
>切り出し開始ビュー (start_view)
>切り出し個数 (raw_n)
>切り出しサイズ (size_view)
>切り出しピッチ (pitch_view)
>を引数として扱うということです。

これは関数の仕様ですよね?
関数の前に、シークするためのファイルの仕様は把握していますか?
プログラムが正しくできているか検証するためにも、テスト用のファイルを用意する必要があります。

ピッチとかコマンドとか言われても、超初心者さんがどこで何をしたいのかがわかりません。

>raw_file 生データのファイル名をパスで入力
このファイルの中に処理対象のファイルパスが入力されているということですか?

>outraw_file 出力ファイル名をパスで入力します。
このファイルの中に出力ファイルパスが入力されているということですか?

>(0〜raw-n)になるらしいです。
raw-nはどこから求められるのですか?


回答者は質問者が抱えている問題を解決するお手伝いしかできません。
何が分からなくて、何が分かれば解決するのか自分の中で整理してみてください。
もし、超初心者さんが元々の課題の仕様を理解していないのでしたら、
出題者のかたに質問していただくか、課題をそのまま載せてください。



481ポイント を手に入れた。

Name: 超初心者  ..かけだし(1,906ポイント)   Date: 2007/02/21(水) 10:09   No:4774     
Title: Re:学校の課題なのですが・・・    
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <io.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>

int getfsize( path );

int main(void) {

int fdi,fdo;
short *rawdata;

// 生データ(in)
char *rawfile = "D:\\CT\\RawData256\\Case605\\Case_605_F13.raw";
// カットした生データ(out)
char cutRawfile[200] = "D:\\CT\\RawData256\\Case605\\Case_605_F13_Cut";

long fsize ; //ファイルサイズ
long cutsize;//カットサイズ

//何ビュー目を切り出すか
int viewNo;
char s[5];
printf("何ビュー目(1-3240)を切り出しますか?-->");
scanf("%d", &viewNo);
/* if(viewNo > 3240) {
printf("!!error!!\n");
exit(1);
}*/
sprintf(s,"%04d", viewNo);
strcat(cutRawfile, s);
strcat(cutRawfile, ".raw");

//ファイルサイズ取得 // 必要なくなったけど、残しておきます
if( (fsize = getfsize( rawfile )) < 0 ) {
printf("cannot get file size\n");
return -1;
}

// 生データファイルオープン
if( ( fdi = open( rawfile, _O_RDONLY | _O_BINARY ) ) < 0 ) {
printf("open error: read\n");
return -1;
}

// 書き込み用ファイルオープン
if((fdo = open( cutRawfile, _O_CREAT|_O_TRUNC|_O_WRONLY|_O_BINARY, _S_IREAD|_S_IWRITE)) < 0) {
printf("open error: write\n");
close(fdi);
return -1;
}

printf("Now Processing...: malloc \n");
//1view(1曝射) = 2048 * 256ということなので、そのサイズ分、読み出すことにする
cutsize = 2048 * 256;

if( ( rawdata = (short*)malloc( (size_t)cutsize) ) == 0 ){
printf("malloc error\n");
close( fdi );
close( fdo );
return -1;
}
memset(rawdata, 0, (size_t)cutsize);

_lseeki64(fdi, (viewNo-1)*2048*256, SEEK_SET);

printf("Now Processing...: read file \n");

if( read( fdi, rawdata, (size_t)cutsize ) < cutsize ){
printf("read error\n");
free(rawdata);
close( fdi );
close( fdo );
return -1;
}

printf("Now Processing...: write file\n");

if( write( fdo, rawdata, (size_t)cutsize ) < cutsize ){
printf("write error\n");
free(rawdata);
close( fdi );
close( fdo );
return -1;
}

printf("!! Complete !! \n");

close( fdi );
close( fdo );
return 0;
}

int getfsize( path )
char *path ;
{
struct stat statbuf ;

if( stat( path, &statbuf ) == -1 )
return -1 ;

return( statbuf.st_size ) ;
}

自分の不甲斐なさで皆様にご迷惑をおかけして
すみません。よろしくお願いいたします。


870ポイント を手に入れた。

Name: Yuki  ..初心者(8,366ポイント)   Date: 2007/02/21(水) 10:33   No:4775     
Title: Re:学校の課題なのですが・・・    
>すみません。よろしくお願いいたします。
え〜っと、なにをすれば良いでしょうか?
やりたいことは、このプログラムを関数化することですか?


46ポイント を手に入れた。

Name: 超初心者  ..かけだし(2,364ポイント)   Date: 2007/02/21(水) 14:18   No:4779     
Title: Re:学校の課題なのですが・・・    
/* description

NAME
CutOneR-R.c : rNo番目の心拍をcartblとrawfileから切り出す

SYNOPSIS
% CutOneR-R cartbl(in) cartbl(out) rawfile(in) rawfile(out) views ttlviews rNo
*/
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <string.h>

#define SEG 256
#define ONESEGSIZE 2048
#define ERROR 0

typedef struct {
int TubePos ; /* tube position (header[0]) */
int CarData ; /* cardiac data (header[9]) */
float CarPhase ; /* cardiac phase (0% - 100%) */
int CarTime ; /* offset from center phase */
} CARTBL ;

CARTBL CarTbl[200 * 1800] ; /* maximum 200 rotations */

void main( argc, argv )
int argc ;
char *argv[] ;
{
int fdi_raw, fdi_cartbl, fdo_raw, fdo_cartbl; // ファイルハンドル
int viewCnt = 0; // ビュー数をカウントする
int rr[30]; // 見つかったRのビュー数を格納
int startView, endView; //切り出し位置
int rCnt = 0; // Rをカウントする
int Ron = 0; // Rが見つかったとき1を立てる
int viewNum; // ビュー数
int ttlviews; // 総ビュー数
int rNo = 0; // 何番目のRかを指定

short *rawdata; // 切り出した生データを格納
long rawdataCutSize; // 切り出す生データのサイズ

// 引数の個数チェック
if(argc != 8) {
printf( "usage: %s cartbl(in) cartbl(out) rawfile(in) rawfile(out) views ttlviews rNo\n", argv[0] ) ;
exit( 1 ) ;
}
// ビュー数を取得
viewNum = atoi( argv[5] );
ttlviews = atoi( argv[6] );
// 何番目のRか
rNo = atoi( argv[7] );
if(rNo < 1) {
printf( "%s: error rNo\n", argv[0]) ;
exit(1);
}

// ファイルオープン(cartbl)
if( ( fdi_cartbl = open( argv[1], _O_RDONLY | _O_BINARY ) ) < 0 ) {
printf( "%s: can't open %s\n", argv[0], argv[1] ) ;
exit(1);
}
if((fdo_cartbl = open( argv[2], _O_CREAT|_O_TRUNC|_O_WRONLY|_O_BINARY, _S_IREAD|_S_IWRITE)) < 0) {
printf( "%s: can't open %s\n", argv[0], argv[2] ) ;
close(fdi_cartbl);
exit(1);
}

// 初期化
memset(rr, 0, sizeof(rr)) ;

// cartblの切り出し
//printf("No\t TubePos\t CarData\t CarPhase\t CarTime\n");
while( read(fdi_cartbl, &CarTbl[viewCnt], sizeof(CARTBL)) == sizeof(CARTBL) ) {

// printf("%2d\t %04x\t %04x\t %f\t %04x\n", viewCnt+1,
// CarTbl[viewCnt].TubePos, CarTbl[viewCnt].CarData,
// CarTbl[viewCnt].CarPhase, CarTbl[viewCnt].CarTime);

if( (Ron == 0) && ((CarTbl[viewCnt].CarData & 0x3000) == 0x3000) ) {
printf("R==0: viewCnt = %d\n", viewCnt);
Ron = 1;
rr[rCnt++] = viewCnt;
}
else if( (Ron == 1) && ((CarTbl[viewCnt].CarData & 0x3000) == 0) ){
Ron = 0;
}

viewCnt++;
}
// Rが見つからなかった場合
if(rCnt < 2 || rCnt <= rNo) {
printf( "%s: can't find R\n", argv[0]);
exit(1);
}

// 1つ目のR - 半回転 のビュー数を求める
if(rr[rNo-1] - (int)viewNum/2 < 0)
startView = 0;
else
startView = rr[rNo-1] - (int)viewNum/2;

// 2つ目のR + 半回転 のビュー数を求める
if(rr[rNo] + (int)viewNum/2 > ttlviews)
endView = ttlviews;
else
endView = rr[rNo] + (int)viewNum/2;

printf("cut range: startView = %d, endView = %d\n", startView, endView);

// 書き込み
if (write(fdo_cartbl, &CarTbl[startView], sizeof(CARTBL) * (endView - startView + 1) )
!= (int)(sizeof(CARTBL) * (endView - startView + 1)) ) {
printf("%s: can't write cartble\n", argv[0]);
close(fdi_cartbl);
close(fdo_cartbl);
exit(1);
}

close(fdi_cartbl);
close(fdo_cartbl);

// ファイルオープン(raw)
if( ( fdi_raw = open( argv[3], _O_RDONLY | _O_BINARY ) ) < 0 ) {
printf( "%s: can't open %s\n", argv[0], argv[3]) ;
exit(1);
}
if((fdo_raw = open( argv[4], _O_CREAT|_O_TRUNC|_O_WRONLY|_O_BINARY, _S_IREAD|_S_IWRITE)) < 0) {
printf( "%s: can't open %s\n", argv[0], argv[4]) ;
close(fdi_raw);
exit(1);
}

// ファイルの先頭からstartView分、読み飛ばす
_lseeki64(fdi_raw, ONESEGSIZE*startView, SEEK_SET);
// 切り出すサイズ
rawdataCutSize = (endView-startView)*ONESEGSIZE;

// メモリ確保
if( ( rawdata = (short *)malloc((size_t)rawdataCutSize) ) == ERROR ){
printf("%s: alloc error : rawdata\n", argv[0]) ;
goto exit;
}
// メモリ初期化
memset(rawdata, 0, (size_t)(rawdataCutSize));

// 読み出し
if( read(fdi_raw, rawdata, rawdataCutSize) != rawdataCutSize) {
printf("%s: can't read rawdata\n", argv[0]) ;
free(rawdata);
goto exit;
}

// 書き込み
if( write(fdo_raw, rawdata, rawdataCutSize) != rawdataCutSize ) {
printf("%s: can't write rawdata\n", argv[0]);
free(rawdata);
goto exit;
}
exit:
close(fdi_raw);
close(fdo_raw);
exit(0);
}
これらのソースを参考にしろと言われました。


458ポイント を手に入れた。

Name: keichan  ..上級者(15,092ポイント)   Date: 2007/02/21(水) 14:51   No:4781     
Title: Re:学校の課題なのですが・・・    
#昔の規格で記述されたソースですね

参考ソースは分かりましたが、
2007/02/21(水) 10:33 にYukiさんが質問されてる内容を答えていませんよ。


42ポイント を手に入れた。

Name: 超初心者  ..入門者(2,566ポイント)   Date: 2007/02/21(水) 16:33   No:4790     
Title: Re:学校の課題なのですが・・・    
>Yukiさん

>raw_file 生データのファイル名をパスで入力 。
>outraw_file 出力ファイル名をパスで入力します。
Yukiさんの考えの通りです。

ちなみに0〜raw-nではなく0〜raw_nでした。すみません。

すみません。関数化ではなく、生データ(rawデータ)の
切り出しプログラムを作りたいです。

切り出し場所はファイルの先頭=0で、ピッチは切り出し開始位置の幅で、
もし次の切り出し幅がなら20ならピッチは20になるということだそうです。

この場合、最初に各々の引数に値を格納するプログラムを作る
ことが必要だと思うのですが(違っていたらスミマセン)イメージが全くつかめません。

うまく説明できず本当に申しわけないです。


202ポイント を手に入れた。

Name: Yuki  ..初心者(8,831ポイント)   Date: 2007/02/22(木) 11:20   No:4828     
Title: Re:学校の課題なのですが・・・    
ファイルのフォーマットを教えてください。

+----------------------+--------------------+----------------------+--------------------+--------------------+
|開始ビュー1(?バイト)|ピッチ1(?バイト)|開始ビュー2(?バイト)|ピッチ2(?バイト)|・・・
+----------------------+--------------------+----------------------+--------------------+--------------------+


たぶん違うと思いますが、ファイルの仕様がないとプログラムがあっているのかもわかりません。

ちなみに2007/02/21(水) 10:09 のソースは何のソースですか?


209ポイント を手に入れた。

Name: 超初心者  ..入門者(2,605ポイント)   Date: 2007/02/23(金) 13:29   No:4924 解決!     
Title: Re:学校の課題なのですが・・・    
すみません。分からないです。ここまで
質問に答えていただき本当にありがとうございました。


39ポイント を手に入れた。



Name: magu  ..ぴよぴよ(46ポイント)   Date: 2007/02/23(金) 01:10   No:4899       
Title: ||について (おまけもあります)    
||という論理演算子について質問です。
例えば
if(a<0||b<0||a>480||b>800)

if((a<0||b<0)||(a>480||b>800))
という条件は違うのでしょうか。

また全く別の質問なのですが、
for(i=1;i<=4; i++)
for(j=2;j<=8; j++){
...
if(a==0)
continue;
...
}
という処理はjについてのforだけが飛ばされるのでしょうか。



46ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(204,569ポイント)   Date: 2007/02/23(金) 01:15   No:4901     
Title: Re:||について (おまけもあります)    
if(@||A||B||C)
ということは、@かAかBかCどれかが満たされたら真です。
if((@||A)||(B||C))
ということは、@かAのどちらか、または、BかCのどちらかが満たされたら真。

つまり両者とも、どれか一つでも満たされたら真になりますから、どちらも同じ意味ですね。


continue;

breakで飛ぶのは1つのループだけです、
ですので2重ループの場合、breakやcontinueだけでは、最初に戻れません。
最初に戻すには、
goto文を使うか、それ自体を関数化してreturnで抜けるしかないと思います。


129ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,100ポイント)   Date: 2007/02/23(金) 01:24   No:4904     
Title: Re:||について (おまけもあります)    
関数化するとこうなります。
continueやbreakでは抜けられなかったループもこれなら抜けられます。


int roop(){
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(○○)
return 1;
return 0;
}

int main(){

roop();

return 0;
}


こんな感じでしょうか?


int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(○○)
goto ex1;

ex1:
//処理
return 0;

gotoを使うとこんな感じでしょうか。


310ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,293ポイント)   Date: 2007/02/23(金) 01:34   No:4906     
Title: Re:||について (おまけもあります)    
flagを用意して、flag=-1なら処理を抜けるって言う風にするやり方もあると思いますが、ややこしいので省略します。

41ポイント を手に入れた。

Name: GPGA  ..上級者(19,101ポイント)   Date: 2007/02/23(金) 10:18   No:4921     
Title: Re:||について (おまけもあります)    

for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (○○) {
i = 10;
break;
}
}
}
 
jのループの終了の直後に、iのループの終了があるのであれば
flagを使用せずに、上記のような方法で抜けることもできます。


93ポイント を手に入れた。

Name: magu  ..ぴよぴよ(85ポイント)   Date: 2007/02/23(金) 11:32   No:4922 解決!     
Title: Re:||について (おまけもあります)    
なるほど分かりました!
丁寧に例を挙げてくださって有難うございます!


39ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,605ポイント)   Date: 2007/02/23(金) 13:20   No:4923     
Title: Re:||について (おまけもあります)    
>flagを使用せずに、上記のような方法で抜けることもできます。

な、、なるほど、、。目からウロコです。
知りませんでした。是非利用させてもらいますw


77ポイント を手に入れた。



Name: ぽん太  ..中級者(9,485ポイント)   Date: 2007/02/16(金) 01:01   No:4579       
Title: どうもです    
お久しぶりですm(_ _)m

覚えておられますか? ぽん太です。

師匠へ

バイク買ったみたいですね かなりイカしてますよ
さては写真何度も撮り直しましたね
190万も稼ぐとは会社も右肩上がりのようですね
30kmのところを100kmで走るとは・・・
さすが師匠 あっぱれデス(@`▽´@)


89ポイント を手に入れた。


Name: 管理人 [URL]  ..ハッカー(191,434ポイント)   Date: 2007/02/16(金) 16:30   No:4599     
Title: Re:どうもです    
お〜ぽん太さんお久しぶりです^^ もちろん覚えてますよ♪

ぽん太さん、確か2日位でありえないほど掲示板ランクあがったのに、すっかり停滞してらっしゃるじゃないですか^^;
いつでも遊びに来てくださいね^^

しかし190万は稼いでないですよ^^;

比叡山ドライブウェイの件はやられました・・・まさかドライブウェイが原付と同じ速度制限だとは思わないですよ;

写真は其の通りなんども撮り直しましたw ほしいバイクはR1なんですけどね・・・高くて買えないから^^;


172ポイント を落としてしまった。

Name: ぽん太  ..中級者(9,542ポイント)   Date: 2007/02/16(金) 22:45   No:4605     
Title: Re:どうもです    
留年の危機を感じ、ネットを自粛してました^^;

ようやくテストも一段落つきました ふーっ

3年からは気合入れてがんばらなくちゃ〜




57ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(191,655ポイント)   Date: 2007/02/17(土) 16:40   No:4611     
Title: Re:どうもです    
私も卒業できるかひやひやしていましたが、なんとかなりそうです^^;

いや〜卒論が思った以上に大変だったので、院ではもうちょっと計画的にやろうと思います(_ _||

今は、春休みの時間を利用して新しくゲームプログラム等を色々ためしていますよ(^-^)


89ポイント を落としてしまった。

Name: ぽん太  ..中級者(9,928ポイント)   Date: 2007/02/17(土) 19:18   No:4614     
Title: Re:どうもです    
卒論お疲れ様です〜 大変そうだけどちょっぴり面白そうですね

卒論って勝手にテーマとか決めちゃっていいんですか?

無謀なテーマにして卒業できなくなったりして^^;

いやぁ それにしても大学院進学おめでとうございますm(_ _)m

ぼくもできることなら院行きたいです。

成績が悪いので試験を受けるしかないと思います・・・

自分の大学の院は他より入りやすいですか?

勉強とかはたくさんしないとだめですか?

就職先はどちらになさるんですか? 地元ですか?

長い長い春休みちゃんがやってきたわけですが

ぼくもこの休みを無駄にしないように昨日、基本情報を申し込みました。

果たして受かるのか・・・  

精一杯がんばろうと思います!

師匠、新作ソフト期待してますよ! 

今夜も冷えますね(゛д゜) ブルブル


386ポイント を手に入れた。

Name: 管理人  ..ハッカー(192,935ポイント)   Date: 2007/02/18(日) 16:40   No:4623     
Title: Re:どうもです    
もちろん卒論は皆自由に設定しますよ☆
私はソフトウェア開発に興味があるのでそちらの研究をしました。
詳しく知りたければ私の書いた卒論の報告書位おみせしますよo(^-^)o

>無謀なテーマにして卒業できなくなったりして^^;

それはありますね〜。研究しても結果が表れそうにない事もありますし、1年で成果が出るようなものに設定しないといけないし、今まで誰も提案しなかったような事を提案しなきゃならないし、、。

同じ学年で二足歩行ロボットを作ったやつがいて、考察に「二ソク歩行は不安定で倒れやすい事がわかった」なんて発表会で言ってしまったやつがいて、「そんな事研究しなくてもわかるだろう!」って怒られてました。

>成績が悪いので試験を受けるしかないと思います・・・

いや〜私も筆記ですよ☆
1年の時は相当ボンクラだったんで、そのつけがまわって平均点後「0.1点」足りませんでした(笑)

>自分の大学の院は他より入りやすいですか?

そうでもない気がします。筆記ならテストの点が大半ですし。あ、でも授業で習った事がでるので勉強はしやすいです。

>勉強とかはたくさんしないとだめですか?

私は大学受験の半分位勉強したかな?と思います。まぁ授業でやった事がでるわけですから大学受験ほどは苦労しませんでした。英語は絶対あると思うので英語は勉強しておきましょう。
「品質評価基準」とか「システムの信頼性」とか専門用語は高校で習わないので押さえておきましょう。専門書の洋書を普段から読んでおくのがいいです。

>ぼくもこの休みを無駄にしないように昨日、基本情報を申し込みました。

お〜私はソフトウェア開発技術者の参考書を買ってきましたo(^-^)o
やはり難しそうですねf^_^;
受かった方がいらっしゃったら体験談も聞いてみたいですね☆

>師匠、新作ソフト期待してますよ! 

今はボンバーマン作ってるんですがまた素材を現物からコピーしているので配布できない作品に仕上がりそうf^_^;
後から画像だけ差し替えたらいいかもしれませんね。

あ、思ったんですけど、ボンバーマンという名で自作ゲームを公開してはいけなさそうですね。名前と画像、音楽が自作ならゲームシステムはそっくりパクリでもいいんでしょうか?
これがダメならテトリスとかのプログラム紹介してる類のものは全部ひっかかると思うんですが、、。


740ポイント を手に入れた。

Name: 管理人  ..ハッカー(193,116ポイント)   Date: 2007/02/18(日) 16:53   No:4624     
Title: Re:どうもです    
>就職先は、、。

地元は中国山地の山の上で、何もないとこなんで、関西に就職するつもりです。
魅力的なとこがあれば全国規模で考えてます。
しかし就職したくないんですよね、、。
プログラムは好きですが、それとは関係なくやりたい事があって、どこかに雇われるのではなく、自ら計画してやっていきたいんです。
総社員2人でもいいから自分の思ったとおり行動して会社を大きくしたいです。
まぁ安定もしないだろうし将来の保証もない、今まで勉強した事が活かせない、という理由から普通の企業就職を考えていますが、今猛烈に悩んでいますm(__)m


181ポイント を手に入れた。

Name: ぽん太  ..中級者(9,606ポイント)   Date: 2007/02/18(日) 20:03   No:4627     
Title: Re:どうもです    
卒論の報告書見てみたいです!! でも多分理解できないと思いますけど うぎゃ〜

たしかUMLとかユースケース?やってらしたんですよね??

非常に興味があります☆

院行くつもりでも内定とやらは取っといたほうがいいんですか?(内定の意味も知らないんですけど^^;)

ソフトウェア開発技術者は難しいみたいですねぇ ひぃ〜

フリーソフトで「基本情報技術者は俺に聞け」とかいうのがありました^^

ソフトウェア開発技術者の問題もありましたよ!

これでゲーム感覚で勉強してます^皿^v

ボボボ、ボンバーマンをつくってるんですか??

ハドソンもびっくりですね!

ぼく、ファミコンとGBのボンバーマンもってます。

敵を爆弾で閉じ込めて爆破するのがたまりませんね。

ベンチャー企業をつくるんですか???

師匠ならできると思います!

というかすでにお金を稼いでらっしゃるので。

ぼくがリストラされて路頭にさまよっているときは是非社員にして下さい!!

トイレ掃除でも何でもしますね。

○姉妹みたいにお金は絶対持ち逃げしませんから^^

あ、そうえいば ワイヤレスレーザーマウスが即効こわれやがりました・・・

しかも、急に・・・

確か4000円台だったような・・・

おまけに間違えてPS/2のキーボード買ってしまい、新たにUSBのキーボードを買いました・・・

とほほ・・・



322ポイント を落としてしまった。

Name: 管理人 [URL]  ..ハッカー(193,565ポイント)   Date: 2007/02/19(月) 00:07   No:4634     
Title: Re:どうもです    
内定は、院の1年後半で取るのが普通じゃないでしょうか?
シュウカツは院では学部生よりかなり早いみたいです。

ボンバーマンは現在こんな感じでしょうか^^
(以下画像2枚)
オンライン対戦が出来て、ゲーム中チャットも出来ます。
ゲーム中はチャットしている暇がないでしょうから、ショートカットキーで
「しまった!!」「そこだ〜!!」などと発言できるようにするつもりです^^
しかし、ボンバーマンの動きは案外複雑ですねぇ。
単純に見えるのに。
炎が重なった時キレイにみえるように工夫するのも色々試しました。

リストラされないように頑張ってくださいw
団塊の世代だから就職はまだマシでしょう^^

レーザーマウス人気ですね☆
私はトラックボール以外のマウスは使わないのでコードレストラックボール使ってます^^
1万円もしましたw
人によっては、「なんだこの使いにくいマウスは!」と言われますが、私は一番これが使いやすいんですw


309ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(193,616ポイント)   Date: 2007/02/19(月) 00:08   No:4635     
Title: Re:どうもです    
↑クリックで画像が拡大↑

右上の開いている部分は、アイテム取得数や、時計、勝ち数などを表示しようと思います^^


51ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(193,634ポイント)   Date: 2007/02/19(月) 00:08   No:4636     
Title: Re:どうもです    
↑クリックで画像が拡大↑

あ、こっちの画像が先です^^;
画像中にかいてある文章的にw


18ポイント を手に入れた。

Name: ぽん太  ..中級者(9,832ポイント)   Date: 2007/02/19(月) 00:52   No:4638     
Title: Re:どうもです    
おぉぉぉ! これはかなり本格的ですね!

ボムを蹴れるようにもするんですか??


27ポイント を手に入れた。

Name: 管理人  ..ハッカー(193,680ポイント)   Date: 2007/02/19(月) 02:19   No:4641     
Title: Re:どうもです    
そうですね〜、キックはわりと簡単そうですが、パンチがうっとうしそうですね〜加速度付きで計算せんとだめですしf^_^;

46ポイント を手に入れた。

Name: ぽん太  ..中級者(9,788ポイント)   Date: 2007/02/19(月) 02:33   No:4642     
Title: Re:どうもです    
あ、パンチなんてあったんすか・・・ 存じませんでした。

特殊能力とかも作るんですか?

塀を越えたり、走るのが速くなったり。


44ポイント を落としてしまった。

Name: 大工  ..中級者(9,869ポイント)   Date: 2007/02/19(月) 03:07   No:4643     
Title: Re:どうもです    
なんか会話を聞いてるとすごいですね^^; まだ、1回生なんですけどゲームとかって(オセロなど)作れますかね・・・・?

45ポイント を手に入れた。

Name: ぽん太  ..中級者(9,834ポイント)   Date: 2007/02/19(月) 03:12   No:4644     
Title: Re:どうもです    
師匠が愛してらっしゃるDXライブラリを用いればC言語でも比較的簡単に
作成できるみたいですよ。


46ポイント を手に入れた。

Name: 大工  ..中級者(9,902ポイント)   Date: 2007/02/19(月) 03:20   No:4645     
Title: Re:どうもです    
そうなんですか!ありがとうございます(・ω・)/ こんな時間に返事が来るなんて驚きです

33ポイント を手に入れた。

Name: ぽん太  ..中級者(9,875ポイント)   Date: 2007/02/19(月) 03:30   No:4646     
Title: Re:どうもです    
ほぼ春休み状態なので夜更かし中です。

数学が好きなので色んな数学板を巡っています♪


41ポイント を手に入れた。

Name: 大工  ..中級者(9,948ポイント)   Date: 2007/02/19(月) 06:34   No:4647     
Title: Re:どうもです    
そうなんですか!?すごいですね。僕はアルゴリズムのサイトを回りますよ(・ω・)/

いろんなソートがありますがいくつ位必要になるんでしょうか?


46ポイント を手に入れた。

Name: ぽん太  ..中級者(10,075ポイント)   Date: 2007/02/19(月) 13:29   No:4661     
Title: Re:どうもです    
いくつくらい必要になるかですかぁ

どうなんでしょうね。

一般的なものは最低限書けるようにしておけばいいんではないでしょうか。

ぼくはアルゴリズムより計算機の内部に興味があります。

各言語で内部的にどんなことを行っているだとか。

コンパイラの講義があるなら絶対取ったほうがいいですよ。

やっぱりいくら文法マニアでもコンパイラを制覇した人間には勝てませんからね。

3年でCコンパイラ作るみたいなので楽しみです。

あと言語はC以外にもやった方がいいと思います。

新たな言語を学習すると前にやっていた言語がすごく理解できますし

言語自体もわかってきます。ただ2つの言語を知っているということ以上のものが

得られるのではないでしょうか。

寒いですが1コマだけ真面目に講義受けてきます。

行ってきま〜す。


200ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(194,587ポイント)   Date: 2007/02/19(月) 15:39   No:4666     
Title: Re:どうもです    
>ぽん太さん

今現在、ネットにつながらない所で生活しているので、すぐに返事が出来ず、すみません(T_T
いや〜昨日はせっかく8時までおきてたのにな(イツノダヨ)

パンチってありますよ^^
爆弾をけるのは、壁は越えられませんが、パンチは壁をこえて放り投げられます☆

私独自の考えた特殊能力として「スカウター」ってつくろうかなと思います。
bボタンを押せば、爆発前の爆弾がどこまで炎が伸びるのか確認できるものです。

ま、色々考え中ですよ^^
mixi日記でも、色々書いています☆
あ、ぽん太さんmixiやってないんですか?やってたらマイミクになりましょうよ♪
ぽん太さん、数学お好きなんですね。
大学受験時代、数学の神秘的な部分を感じてしまって、一時期数学に魅力を感じていました。
物理にしても、数学にしても、つきつめていけばすごく神秘的に思えてきますよね。
運動量は積分すると何故エネルギーになるんだ・・とか。

大学では線形代数をえっさほいさとやりました。
今度それを院で学部生に教える側になるので、おさらいしとかなきゃと思ってます><;


>大工さん

もう、めちゃくちゃ簡単に出来ますよ^^
現在携帯でみていらっしゃるようですが、PCで一度ここのHPをご覧になったことあります?
当HPではDXライブラリを使ったゲームプログラミングについて少々紹介していますので、是非参考にしてみてください^^
DXライブラリはホントに簡単です。DirectXを機能を最小限落とさずに、超簡単にしたかんじです^^
なんたって私が使えるんですから誰にでも使えるはずですw

ソートについてですが、私も何ソート何ソートと色々勉強しました。
しかし現在はバブルソートかクイックソートしか使いません。
私は、という限定された状況の話なので、参考程度に聞いてください。

知識としてどこまで知っておくべきか、それは全部でしょう。

日常の使用範囲としてどこまで知っておくべきか、それは一番簡単なソートと、一番早いソートでしょう。

最初から後者しか知らない場合は拡張性がありませんが、一度前者のようにすべて勉強してから使用範囲を限定したほうが賢いでしょうね。
実際は普通ソートを使い分けることは無いんじゃないかと思います。
そういう専門的に仕事をしている人や、ソートを何度も行う必要のある状況にある人はわかりませんが、
趣味でやってる範囲でそこまでソートの種類を意識したことはありません。

コードを単純にさせたいとき、ソートの対象が少ない時(1000個以下とか)などは単純なソートを使用します。

コードが少々長くなってもいいとき、ソートの対象が多いときなどはクイックソートなど高速なものを使用します。

あくまで私の場合はですよ。

参考までに☆


907ポイント を手に入れた。

Name: 大工  ..中級者(9,979ポイント)   Date: 2007/02/19(月) 18:00   No:4697     
Title: Re:どうもです    
管理人さま>>>

ミクシィやってるんですか!!!よかったらマイミクどうですか?(笑)


31ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(198,378ポイント)   Date: 2007/02/19(月) 18:03   No:4698     
Title: Re:どうもです    
是非☆
かなり私の個人情報までわかってしまうので、ここでは公開できません^^;
メルアドにメール送っていただければご案内いたします^^


2倍のポイントを手に入れた! 132ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(198,426ポイント)   Date: 2007/02/19(月) 18:09   No:4701     
Title: Re:どうもです    
あ、すみません、MAILが古い情報になっていました(_ _||)

dixqhp@gmail.com

こちらによろしくお願いします^^


40ポイント を手に入れた。

Name: 大工  ..中級者(9,994ポイント)   Date: 2007/02/19(月) 18:12   No:4702     
Title: Re:どうもです    
今、携帯なんで家に帰ったら連絡します。えと、私だと分かってもらうためにどうしたらいいですかね??偽物(?)とかいたら嫌なんで

15ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(198,493ポイント)   Date: 2007/02/19(月) 18:20   No:4703     
Title: Re:どうもです    
公の場で私と大工さんしかわからないキーワードをお伝えすることは無理でしょう^^;
設定した時間ちょうど
例えば19:30ちょうどに連絡してもらえるとかしていただければ、はっきりするのではないでしょうか^^

その時間に2通来たらおかしいことがわかりますし☆


67ポイント を手に入れた。

Name: 大工  ..中級者(10,048ポイント)   Date: 2007/02/19(月) 18:23   No:4704     
Title: Re:どうもです    
そうですね。今日、21時にメールを送ります。あと、私だと分かってもらえるような内容を送ります。僕のメールアドレスは面白いですよ。(笑)

54ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(198,515ポイント)   Date: 2007/02/19(月) 18:24   No:4705     
Title: Re:どうもです    
何ですかそれは^^;
期待しておきますw


22ポイント を手に入れた。

Name: ぽん太  ..中級者(10,263ポイント)   Date: 2007/02/19(月) 19:11   No:4708     
Title: Re:どうもです    
mixiですかぁ

聞いたことはあるんですけど一体全体なんのことかわかりません。

姉がよくやってる現場を見ます。

たしか紹介されないとできないやつでしたっけ?

スカウター機能いいですね!より戦略が練れそうで。

う〜 ぼくも何か作りたくなってきました。

あ、師匠TAになるんですか??

すごいっすね あれ時給いくらくらいなんでしょう。

たまにやる気のないTAもいますが学部生から見ればたよりになる存在で

憧れます。

と、ところでネットがない環境とは一体どこにおられるのですか?!



188ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(199,384ポイント)   Date: 2007/02/19(月) 22:08   No:4713     
Title: Re:どうもです    
mixiはコミュニティサイトですよ^^
4年位前はコアなサイトだったのに、今では大学生ならみんなやってるようなありきたりな物になってしまいました^^;
まぁ、ネットの友達通し、日記やコミュニティを通じて情報伝達しましょうって感じのサイトですよ^^
HPのブログがおろそかなのは、いつもmixiに日記をかいているからです^^;
メルアドさえわかればご招待しますよ♪

>う〜 ぼくも何か作りたくなってきました。

ぽん太さんなら、3日あれば小さなゲーム位作れてしまいますよ^^
是非チャレンジしてみてください♪

>あ、師匠TAになるんですか??
>すごいっすね あれ時給いくらくらいなんでしょう。

そうそう、TAです。
自給は・・・3500円だったかな?
下手なキャバクラで働くよりいいですよ(いや私は男ですがw

TAは頼りになりますね^^
私が頼りにしていたTAを目指して成ろうと思いました。
クイックソートとか、関数使ったグラフの書き方等の授業が多いので、任せとけって感じです☆

ネットに繋がらないとことは・・。
色々あるんですよリアルにはw


401ポイント を手に入れた。

Name: ぽん太  ..中級者(10,273ポイント)   Date: 2007/02/19(月) 22:56   No:4714     
Title: Re:どうもです    
3500円?! !!!!!!!!!!!!!!!!!!!

まじっすかぁ!! 1コマ3500円ですよね??

てことは演習とか2コマのやつは7000円!?

これはたまげましたねぇ 

招待してくださいー 日記読みたいでごわすーm(_ _)m


10ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(199,406ポイント)   Date: 2007/02/19(月) 23:00   No:4715     
Title: Re:どうもです    
特に私の大学は院生が第一期生なので、TAに引っ張りだこです^^;
院生は全員何かのTAにならないといけないという嬉しい状態ですw

1週間に2回働くだけで、普通にバイトしてる奴より稼げます^^;


22ポイント を手に入れた。

Name: ぽん太  ..中級者(10,322ポイント)   Date: 2007/02/19(月) 23:13   No:4716     
Title: Re:どうもです    
なに〜

強制的に金を稼がされるということですか・・・

すばらしすぎます キッーーーー

院生が第1期生ってどういう意味ですか??


49ポイント を手に入れた。

Name: 管理人  ..ハッカー(199,439ポイント)   Date: 2007/02/19(月) 23:16   No:4717     
Title: Re:どうもです    
新設って事です。
先輩がいないって事です。
4年前まで情報学科が今までなかったんですよね。
私達が一期生です☆


33ポイント を手に入れた。

Name: ぽん太  ..中級者(10,389ポイント)   Date: 2007/02/19(月) 23:31   No:4719     
Title: Re:どうもです    
あ そうなんですか!!!

スッゲー まじすごいっすよぉ

新鮮なカンジがしていいですね!

じゃあ師匠たちはTAいなくて大変でしたか??


67ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(199,592ポイント)   Date: 2007/02/20(火) 17:33   No:4749     
Title: Re:どうもです    
私の時は、違う大学院生をやとっていました。
しかし、実際にその授業を受けた人たちではないので、ちょっとぎこちなかったですね。
私達は、実際に授業を受けているわけですから、受け答えしやすいと思います^^

・・・が!
昨日先生からいやな知らせが・・・。
JAVAの授業があるんですが、そのTAが足りないらしくて、私に出てほしいということで・・
その言い方が「もう決定しましたから」と言う感じで断れませんでした;
「○○さん(私の名前)はJAVAは苦手だって言っていましたけど、まぁ後2ヶ月あるから勉強し解いてください。ハッハッハ」
って・・・、マジですか〜(T_T


153ポイント を手に入れた。

Name: ぽん太  ..中級者(10,581ポイント)   Date: 2007/02/20(火) 18:50   No:4761     
Title: Re:どうもです    
でもJAVAってことは演習ですよね??

演習って2コマとかあるから7000円じゃないですか!!

うわぁ おいしすぎるぅ〜^Г^

師匠ならきっと大丈夫ですよ

ぼくの授業のときは助手1人とTA2人でやってました。

でもほとんどみんな質問してませんでした。

なんかかなりヲタクなかおりがぷんぷんなTAだったんですけど

師匠は背も高くてマッチョマンなかっこいいTAだから質問ぜめにあうかもしれませんね^^

ファイトです!! 



158ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(200,932ポイント)   Date: 2007/02/20(火) 19:29   No:4763     
Title: Re:どうもです    
ぽん太さん、褒めても何も出ませんよ(笑


しかしそんな人いましたね〜、うちのとこにも演習中に美少女ゲームの声優誰が好きかとか、
アニメの○○ちゃんが好きだとか、話してました・・・ヲタすぎる・・。
その人大学に雇われている助手ですよ〜いいのかこんな奴正規の助手として雇って( ̄Д ̄;)


2コマですけど、1コマ90分だから、3500x3ですね^^

ん〜普段のバイト代と合わせたら裕福になりそうだw
そして、せっかく貯めた学費も今度は全額払わないといけないから貧乏になりそうだw
まぁ親から生活費送ってくれるだけでも十分幸せなんですけどね(´〜`)
学費+月十数万も払ってたら干からびてしまいますよ・・。
2LDKで月3万っていう化けもんでも出るんじゃないかと言うくらい安い物件あるんですが、
そこに引っ越そうかな・・。


336ポイント を手に入れた。

Name: ぽん太  ..中級者(10,727ポイント)   Date: 2007/02/20(火) 22:37   No:4766     
Title: Re:どうもです    
確かに干からびてしまいそうですね・・・

2LDKで3万?? お恥ずかしいことに家賃とかに関して全く知識が

ないのですが3万は格安物件なのですか??1日1000円だから安いのかなぁ

安いですね! 

バイクとかの維持費も大変そうですねー 

うぅ 寒いw


113ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(201,181ポイント)   Date: 2007/02/21(水) 15:39   No:4786     
Title: Re:どうもです    
いやいや、普通にワンルームマンション私のところは6万ですよ^^;
2LDKっていうのは、部屋が2つもあって、ダイニング、キッチンがついてるってことですよ!?
普通は8万以上するかと^^;

しかも3点セパレート!(風呂・洗面所・トイレが別)
ホントに何か出るんじゃないかとおもうような物件ですw

いや〜しかしネットにつながらないと掲示板も見れないし、mixiもかけないし、プログラムやっててつまったときに、ネット参考にすることもできないし素材とってくることもできないし・・

普段いかにネットに依存しているかがわかります^^;

バイクの維持費かかりますねぇ・・・。
ガソリン代だけでも結構バカにならないのに、安いバイク買うからよく壊れるし、もう限界ですw


209ポイント を手に入れた。

Name: ぽん太  ..中級者(10,800ポイント)   Date: 2007/02/21(水) 22:12   No:4795     
Title: Re:どうもです    
師匠の家6万もするんですか!? 家賃って高いんですねぇ 知りませんでした・・・

ネットができないところって・・・ まさかどこかに監禁されてるんですか??

ところでケータイはネット使い放題のやつに加入してるんですか??



73ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(202,935ポイント)   Date: 2007/02/23(金) 00:04   No:4886     
Title: Re:どうもです    
そうです・・監禁されてて・・・誰か助k・・・・。


家は6万ですが、どこもそんなものですよ^^;
10帖+ロフトで3点セパレートなんで、学生にしてはかなり贅沢させてもらってますが、
6万はそんなに高い方では無いように思います。

ところでぽん太さんはどこにお住まいです?


携帯は加入2ヶ月は無制限無料なのでその間に利用しまくっています^^;


113ポイント を手に入れた。

Name: ぽん太  ..中級者(11,310ポイント)   Date: 2007/02/23(金) 00:17   No:4891     
Title: Re:どうもです    
確かに3点セパレートは贅沢ですねぇ
ある友達はユニットバスって言ってました。
それまでユニットバスたるものが何か知りませんでした・・・。
それより誰に監禁されているのですかぁぁぁ??
まさか監禁王子に? あいつはヤバイですよ
ぼくは生まれも育ちも名○屋です。
なので1人暮らししたことないです。
してみたいものですね。
でも1人だと寂しすぎてパニックに陥りそうなので向いてないかもしれません。
ぼくのケータイもう26ヶ月目です。ボロボロです。アンテナがあります。
うぅ 今日までの課題が終わりそうにない・・・
これは徹夜確定なようです とほほ・・・ 


2倍のポイントを手に入れた! 288ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(203,425ポイント)   Date: 2007/02/23(金) 00:29   No:4894     
Title: Re:どうもです    
ユニットバスだけは、いやですね〜><;
ホテルによくありますけど、あれだけは絶対にいやだな〜と思いながら使ってました;

監禁王子ってそれ、監禁してる側じゃないですか^^;

大学、、、専門でしたっけ?
家から通っているんですか?
エライですねぇ、私はうちにいたくなかったので飛び出してきました^^;
いや〜何時に帰れ、どこにいくなという親がいない環境は気楽でいいですw

26ヶ月目って年期はいっていますね^^;
しかしソフトバンクだからそれくらい使わないといけないはめになってしまうんだろうな・・。

課題があるんですかぁ、頑張ってください^^;
私はもう春休みですが、まだ春休みじゃないんですか?

明日は修士の論文発表会なんで、見に行くつもりです^^


209ポイント を手に入れた。

Name: ぽん太  ..中級者(11,420ポイント)   Date: 2007/02/23(金) 00:41   No:4896     
Title: Re:どうもです    
あ、大学です。家からえんやこっらとチャリンコで通ってます。
40分くらいなんですけど自転車って急ぐと疲れるんですけど
普通にこげば以外に全然疲れないんですよ。
うちの親はあんまり口出ししません。
何時に帰ろうが何も干渉してきません^^
というか夜中に帰らないし^皿^
そういえば師匠の大学は私大でしたっけ?
孫社長はあまり好きではないんですよぉ
なんかね・・・
でもすごいですよね 大学生の時にシャープに1億円で
自分の作った機械を売ってそれを資本金にソフトバンクを作ったとか
修論の論文発表会なんてあるんですか→ 
誰でも見れるんですか??
あ、あと課題を1つ提出しに行けば春休み到来デス☆
そういえば師匠クレカもってるんでしたっけ?
なんか学生証がICカードに移行するみたいでクレカ(visa)やらなければ
いけなくなってしまいました。なんだか怖いですw 


2倍のポイントを手に入れた! 110ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(204,440ポイント)   Date: 2007/02/23(金) 00:56   No:4898     
Title: Re:どうもです    
名古屋大ですか〜、賢い♪
40分って遠いですね〜^^;
バイク買いましょうよ♪
バイク買ってツーリングしますか?(笑

夜中に家に帰らないんですか?!
私なんか、大学1年の時はそれはそれは毎日朝帰りで・・
朝帰りといっても、そういう朝帰りじゃないですよw
友達と遊びふけってました^^;
カラオケで朝までいたこともあれば、ボーリング投げ放題で12ゲーム連続でやったこともあるし、ビリヤード10時間やったこともあるし、
とにかく遊びまくりました^^;
高校まで親が厳しかったから反動でしょうかw

孫社長は嫌いなんですが、料金プランは好きなんですw
だって月々980円ですよ?ありえません☆
実際の請求も月々1980円〜2980円以内ですし、激安です♪

>大学生の時にシャープに1億円で
>自分の作った機械を売ってそれを資本金にソフトバンクを作ったとか

そうなんですか!初めて聞きました。
へ〜あの人えらいんだ〜(そりゃそうだろうけど

クレカなんかもう5枚以上持ってますよ^^;
クレカを敬遠することないですよ^^
最近はセキュリティもしっかりしているし、見覚えのない請求は払わなくていいことになっているし、
損害補償もつくし、こちらに被害が来る事はありませんよ^^

以前、私のクレカを友達が勝手に使ってて、それを知らずに「見覚えのない請求がきてるぞ!」って電話したら
チャラになってしまいました^^;
あのままになっているんですけど、いいのかなw

だから見覚えのない請求に対して責任負われることもないですから、安心してください☆

クレカは登録するだけで1000円くれたり、特典ありますから、そういうのには積極的に入ってみましょう!


726ポイント を手に入れた。

Name: ぽん太  ..中級者(11,597ポイント)   Date: 2007/02/23(金) 01:13   No:4900     
Title: Re:どうもです    
いえいえ、とんでもないです。
名工大です・・・ゴミダメです うぅ、この記事読んだら消してくれますか??


師匠の大学もなんとなくわかっていますよ〜^^ 立命館ですね☆
脱帽です 立命館だったら親も喜んで仕送りしてくれますよ^^

実はカラオケ行ったことないです ヘッヘッヘー

クレカは1回3000円までしか使えないようになってるみたいなんです
あと月に3万までだそうです 盗まれても安心です^^

バイクほしいですけどマネーが・・・






177ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(204,790ポイント)   Date: 2007/02/23(金) 01:20   No:4902     
Title: Re:どうもです    
私の大学はmixiをやれば判明しますよw

名工大ですか〜。入試の問題集してる時によくみかけたと思います^^

カラオケ行ったこと無いんですか?!
行きまくりでした、、、というか最近も良く行きます^^;

クレカは1回に3000円って・・・。
それ使い勝手悪すぎませんか?^^;
まぁクレカ使わないで持っているだけならいいかもしれませんね、安心だし☆

バイクはちょい古いのなら安くてありますよ^^
10万も出せば見掛け結構いいやつかえますよ!
Cb400SFって一番メジャーなバイクあるんですが、95年式位なら10万位ですよ^^


221ポイント を手に入れた。

Name: ぽん太  ..中級者(11,677ポイント)   Date: 2007/02/23(金) 01:24   No:4903     
Title: Re:どうもです    
検索してみたらカナリかっこいいですね
教習所のやつに似ていました。これが10万??
安いですねー でも今は10万でもイタイかもしれません・・・
mixiで何をすればわかるんですか??



80ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,252ポイント)   Date: 2007/02/23(金) 01:31   No:4905     
Title: Re:どうもです    
すみません、mixiには私の個人情報が満載なんで奥まった話はメールに送ってもらえますか^^;

mixiは登録しないと見ることも出来ませんので、興味があれば登録してみては☆

CB400は教習所の教習車ですよ^^

私は

・レッツ(笑
・GPX250R
・XJR400
・FZR400
・CB400SF

と、乗ってきました。FZR400は大好きな愛車なんですが、よく壊れてしまうので、先ほどお話した安いCB400に乗っています^^;
FZR400は試験の日に動かなくなって大変でした;

FZRはレース系のバイクなんで、CB400とは用途が違うんで、手放せないんですよね。
レプリカにはまると抜け出せなくなる(´〜`)


152ポイント を手に入れた。

Name: ぽん太  ..中級者(11,532ポイント)   Date: 2007/02/23(金) 01:37   No:4907     
Title: Re:どうもです    
こんなにも乗ってきてるんですか??
全部自分で買ってるんですか??
どこからそんなにお金が沸いてくるんですかー><
おしえてください。。
いかにもレース系ってかんじのバイクですね!
試験は間に合いましたか?^^

メール送れるか実験してみます!!
ちなみにメール設定できなくてフリーメールしかない状況です・・・


145ポイント を落としてしまった。

Name: 管理人 [URL]  ..ハッカー(205,399ポイント)   Date: 2007/02/23(金) 01:45   No:4908     
Title: Re:どうもです    
ぽん太さん、バイトしていますか?
月5万も稼げたら2ヶ月で10万たまりますし、
2ヶ月分のバイト代でバイクを買うのは別に珍しい話じゃないのではないでしょうか^^;

友達は頑張って月10万バイトで稼いでいますよ^^

レプリカっていうCBとはハンドルの違うバイクなんですよね。
レースではたいていレプリカしか見ません。
私の欲しいR-1もそのレプリカなんですよね〜。
ただ130万もするからなかなか買えない(T_T
就職したらボーナスで買ってやると日々思っていますw

http://www.bikebros.co.jp/A1401.doit


ちなみにフリーメールでも全然OKですよ^^


106ポイント を手に入れた。

Name: ぽん太  ..中級者(11,599ポイント)   Date: 2007/02/23(金) 01:56   No:4912     
Title: Re:どうもです    
今はバイトは週1でやってるだけなんです・・・

バイトやめてしまって というか店が閉店してしまって・・・

個人情報満載ですね! 仕組みがよくわからないので

じっくり読んでみます!! なんだかおもしろそうです!!!


67ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,516ポイント)   Date: 2007/02/23(金) 01:59   No:4913     
Title: Re:どうもです    
み、店が閉店・・^^;

プロフィールの設定はあとからどうとにもなりますから、
IDさえきめたら後は適当でいいですよ^^

とりあえず登録だけしたら大丈夫です☆


63ポイント を手に入れた。

Name: ぽん太  ..中級者(11,610ポイント)   Date: 2007/02/23(金) 02:01   No:4915     
Title: Re:どうもです    
登録してみます! ワクワク ドキドキ



11ポイント を手に入れた。

Name: ぽん太  ..中級者(11,615ポイント)   Date: 2007/02/23(金) 02:06   No:4916     
Title: Re:どうもです    
しました!!

5ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(205,528ポイント)   Date: 2007/02/23(金) 02:08   No:4917     
Title: Re:どうもです    
お、マイミクに一人増えている^^
メッセージ送りますね〜☆


12ポイント を手に入れた。

Name: ぽん太  ..中級者(11,655ポイント)   Date: 2007/02/23(金) 02:11   No:4918     
Title: Re:どうもです    
使い方よくわからないですけどガンバリマス!!

こんな世界が繰り広げられていたとは・・・


40ポイント を手に入れた。



Name: tower  ..入門者(2,976ポイント)   Date: 2007/02/21(水) 15:16   No:4784       
Title: 配列なんですが。    
配列で本を見ても良く分からないことがあるんですが、
このように、
charb[][3] = { "1, 3, 5, 7, 9, 11, 13, 15" };
と記述した場合、何行、何列の2次元配列になりますか?

また、b[2][2]とした場合には¥0でしょうか?それとも0が入るんでしょうか?
基本の範囲内ですみませんが、よろしくお願いします。


108ポイント を落としてしまった。


Name: Yuki  ..初心者(8,622ポイント)   Date: 2007/02/21(水) 15:46   No:4787     
Title: Re:配列なんですが。    
>charb[][3] = { "1, 3, 5, 7, 9, 11, 13, 15" };
その前に、本当にこのように宣言されていますか?

頭がこんがらがってきたら、1番簡単なところから考えてみると良いですよ。


char a[3] = { '1', '3', '5' };
char c[3][3] = { {'1', '3', '5'}, {'7', '9', '2'}, {'4', '6', '8'} };

printf( "%c %c %c\n", a[0], a[1], a[2] );
printf( "%c %c %c\n", c[0][0], c[0][1], c[0][2] );
printf( "%c %c %c\n", c[1][0], c[1][1], c[1][2] );
printf( "%c %c %c\n", c[2][0], c[2][1], c[2][2] );




256ポイント を手に入れた。

Name: box  ..熟練のプログラマー(50,903ポイント)   Date: 2007/02/21(水) 15:47   No:4788     
Title: Re:配列なんですが。    
> charb[][3] = { "1, 3, 5, 7, 9, 11, 13, 15" };
> と記述した場合、何行、何列の2次元配列になりますか?

charとbとの間は空白ですね?
また、初期化子の中にあるダブルクォーテーションは不要ですね?
以上の前提条件の下において、bはchar型の3行3列の配列です。

> また、b[2][2]とした場合には¥0でしょうか?それとも0が入るんでしょうか?

0x00が入ります。
\0が入るのか0が入るのかは、それらの前後に''を付けるつもりだったのか
付けないつもりだったのかがあいまいですので、何とも言えません。


2倍のポイントを手に入れた! 224ポイント を手に入れた。

Name: 管理人 [URL]  ..ハッカー(202,431ポイント)   Date: 2007/02/21(水) 15:53   No:4789     
Title: Re:配列なんですが。    
え、本にそんな書き方してあるんですか?
だとしたらその本は間違っていると思いますが・・。
コンパイルしたとき
「 'b' : 指定された配列には、初期化子が多すぎます。」
とかエラーが出ませんか?
ご自分でそのコードを書いてコンパイルしてみましたか?

3つしか1まとまりの配列要素を宣言していないのに、8個も代入しようとしているのでエラーになっています。
まず、2次元配列についておさらいしましょう。



int b[2][2];

このように宣言したときは

[0][0] [0][1]

[1][0] [1][1]

このような4つの配列要素が確保できます。

int b[2][3];

このように宣言したときは

[0][0] [0][1] [0][2]

[1][0] [1][1] [1][2]

このような6つの配列要素が確保できます。

int b[4][2];

このように宣言したときは

[0][0] [0][1]

[1][0] [1][1]

[2][0] [2][1]

[3][0] [3][1]

このような6つの配列要素が確保できます。

つまり
int b[x][y];
と宣言した時に、xというまとまりのなかに、y個配列要素があるので、
総計はx*y個になるんですね。
1つのまとまりは括弧で囲んで初期化できます。

int b[3]={1,2,3};

こんな風に初期化できますね。2次元配列でも

int b[2][3]={{1,2,3},{4,5,6}};

このように初期化出来ます。

int b[3][3]={{1,2,3},{4,5,6},{7,8,9}};

2次元配列は2次元であることを意識するために、2次元方向に書いて初期化することもありますが意味は同じです。

int b[5][5]={
{0,3,0,0,0},
{1,1,1,3,1},
{2,2,1,4,1},
{3,1,1,1,1},
{4,1,1,5,1}
};

int型は、初期化の時、何もかかなかったら0で初期化
char旗は、初期化の時、何も書かなかったら\0で初期化されます。

int b[5]={};

こうすると全て0で初期化されています。明示的に示すために

int b[5]={0,};

と書いてあるものもありますが同じ意味です。しかし

int b[5]={1,};

と書いたからといって全て1で初期化されるわけではありません。書かなかったところは0で初期化されます。

また、配列要素数は省略出来ます。

int b[]={1,2,3,4,5};

これならb[5]で宣言したのと同じ事。

int b[][2]={{1,2},{3,4}};

これならb[2][2]で宣言したのと同じ事




上記説明でおわかりになりましたでしょうか?

よって[][3]としているにもかかわらず、8個も1まとまりの中に入れることは出来ません。


1,250ポイント を手に入れた。

Name: tower  ..入門者(2,789ポイント)   Date: 2007/02/22(木) 13:17   No:4838     
Title: 丁寧な回答をありがとうございます。    
>初期化子の中にあるダブルクォーテーションは不要ですね?
すみません。""は不要でした。

本当のプログラムは下記のものです。

#include <stdio.h>

main()
{
int b[][3] = { 1, 3, 5, 7, 9, 11, 13, 15 };

これを下記のように

printf(" %d ", b[0][0]);
printf(" %d ", b[0][1]);
printf(" %d ", b[0][2]);
printf(" %d ", b[0][3]);
printf(" %d ", b[0][4]);
printf(" %d ", b[0][5]);
printf(" %d ", b[0][6]);
printf(" %d ", b[0][7]);
printf(" %d\n ", b[0][8]);

と書いて実行したら最後のb[0][8]は、0でした。
その後、機会があって、知人にも確かめてもらいましたが、同じでした。

という事で解決はしたんですが、管理人さんが言うように本当はエラーなんでしょうか?
実行できる私のPCがおかしいんでしょうか?(^^;A)
嘘ではないんですけど…気になりますね。