C言語何でも質問掲示板


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

規約と使い方

 
   自然対数eを小数点第6 ....   
     ・[18131] たかぎ 
     ・[18132] L 
     ・[18133] lbfuvab 
     ・[18134] tkmakwins15 
     ・[18135] たかぎ 
     ・[18137] たかぎ 
     ・[18140] たかぎ 
     ・[18150] L 
     ・[18152] たかぎ 
     ・[18157] hoge 
     ・[18172] たいちう 
     ・[18173] やそ 
     ・[18174] たかぎ 
     ・[18175] たいちう 
     ・[18207] L 
     ・[18209] たかぎ 
     ・[18210] L 
     ・[18211] たかぎ 
     ・[18212] たいちう 
     ・[18213] L 
     ・[18215] 組木紙織 
     ・[18217] L 
     ・[18227] tkmakwins15 
     ・[18228] たいちう 
     ・[18229] L 
     ・[18230] L 
     ・[18237] lbfuvab 
     ・[18280] L 
     ・[18292] たいちう 
   自機の当たり判定につ ....   
     ・[18238] lbfuvab 
     ・[18244] 管理人 
     ・[18282] 誠氏 
   関数の定義に謎のエラ ....   
     ・[18275] box 
     ・[18277] tkmakwins15 
   .cppのインクルード?   
     ・[18226] たかぎ 
     ・[18232] J 
     ・[18233] box 
     ・[18234] J 
     ・[18235] box 
     ・[18248] toyo 
     ・[18250] たかぎ 
     ・[18254] hiroma 
     ・[18276] J 
   課題について質問です ....   
     ・[18256] たかぎ 
     ・[18257] Mist 
     ・[18258] バグ 
     ・[18259] たかぎ 
     ・[18265] バグ 
   キーの二度押し(?) ....   
     ・[18184] やそ 
     ・[18191] Mist 
     ・[18242] 西村 
     ・[18245] 管理人 
     ・[18252] やそ 
     ・[18253] 西村 
   配列について   
     ・[18156] Mist 
     ・[18158] かをこ 
     ・[18159] Mist 
     ・[18160] かをこ 
     ・[18176] かをこ 
     ・[18177] やそ 
     ・[18178] たいちう 
     ・[18179] やそ 
     ・[18181] やそ 
     ・[18183] Mist 
     ・[18185] やそ 
     ・[18231] かをこ 
     ・[18236] box 
     ・[18239] かをこ 
     ・[18246] たいちう 
     ・[18249] Mist 
     ・[18251] かをこ 
   無題   
     ・[18190] やそ 
     ・[18192] 骨鳴男 
     ・[18193] abc 
     ・[18194] abc 
     ・[18195] 骨鳴男 
     ・[18197] Mist 
     ・[18198] 骨鳴男 
     ・[18200] やそ 
     ・[18201] 骨鳴男 
     ・[18204] box 
     ・[18205] やそ 
     ・[18208] box 
     ・[18247] やそ 
   ゲーム   
     ・[18241] えみ 
     ・[18243] 管理人 
   実行ファイルから盗ま ....   
     ・[18218] Justy 
     ・[18219] たかぎ 
     ・[18221] たか 
     ・[18222] Justy 
     ・[18223] たか 
     ・[18224] Justy 
     ・[18225] たか 
   サウンドデータロード ....   
     ・[18050] Justy 
     ・[18088] ぴっぴ 
     ・[18089] Justy 
     ・[18171] ぴっぴ 
   強化学習のプログラミ ....   
     ・[18155] やそ 
     ・[18162] たかぎ 
     ・[18170] たいちう 
   printfについて   
     ・[18163] たかぎ 
     ・[18164] リク 
     ・[18169] box 
   少しおたずねします   
     ・[18145] グリフィス 
     ・[18146] Mist 
     ・[18147] グリフィス 
     ・[18148] Mist 
     ・[18149] グリフィス 
   C標準ライブラリにおけ ....   
     ・[18141] たかぎ 
     ・[18142] Tachiken 
     ・[18143] ゾン兵衛 
   初心者が作るゲームは ....   
     ・[18126] たかぎ 
     ・[18128] 管理人 
     ・[18136] 玲奈 
   画像読み込みについて   
     ・[18101] Mist 
     ・[18104] 迷える羊 
     ・[18124] Mist 
     ・[18129] 管理人 
   エクセルの課題作成に ....   
     ・[18087] 紅葉 
     ・[18099] やそ 
     ・[18127] 新参 
   C++の入門書   
     ・[18095] バグ 
     ・[18107] マキガミ 
     ・[18123] マキガミ 
   printfとputcharの違い ....   
     ・[18120] tkmakwins15 
     ・[18122] グラウナー 
   ■四聖龍神録Plusプロ ....   
     ・[18106] <kor 
     ・[18108] 翡翠 
     ・[18121] 管理人 
   配列の値の渡し方   
     ・[18114] Hermit 
     ・[18118] たかぎ 
   ゲームを作るのにあっ ....   
     ・[18115] 管理人 
     ・[18116] Justy 
     ・[18117] たかぎ 
   C言語の勉強方法につい ....   
     ・[18110] Justy 
     ・[18111] 庵 
   擬似的配列の動的確保 ....   
     ・[18031] 組木紙織 
     ・[18032] box 
     ・[18038] スプー 
     ・[18085] 組木紙織 
     ・[18092] スプー 
     ・[18094] 組木紙織 
     ・[18096] バグ 
     ・[18097] バグ 
     ・[18105] スプー 
   反復行動について   
     ・[17904] へろり 
     ・[17905] box 
     ・[17909] たかぎ 
     ・[17914] box 
     ・[17917] kazuoni 
     ・[17920] たかぎ 
     ・[17925] sousi 
     ・[18021] やそ 
     ・[18030] へろり 
     ・[18034] やそ 
     ・[18102] sousi 
     ・[18103] たいちう 
   avi動画の再生について ....   
     ・[18098] バグ 
   文字列表示に関する質 ....   
     ・[18078] Mist 
     ・[18079] やそ 
     ・[18084] 西村 
     ・[18086] 木霊 
     ・[18091] 西村 
   配列の動的拡張   
     ・[18067] Blue 
     ・[18068] tei 
     ・[18069] Blue 
     ・[18071] tei 
     ・[18082] 1 
   配列を使った簡単なソ ....   
     ・[18053] kazuoni 
     ・[18054] たまいら 
     ・[18057] フリオ 
     ・[18058] バグ 
     ・[18062] やそ 
     ・[18063] バグ 
     ・[18072] やそ 
     ・[18075] バグ 
     ・[18076] やそ 
     ・[18081] スレ主です 
   MS VC-STUDIOのプロパ ....   
   画像ファイルの有無を ....   
     ・[18070] Mist 
     ・[18073] ランド 
   strtok   
     ・[18036] バグ 
     ・[18037] Mist 
     ・[18040] Haru 
     ・[18042] バグ 
     ・[18059] Haru 
     ・[18060] Mist 
     ・[18061] Mist 
     ・[18064] Haru 
   キーを軽く押したら連 ....   
     ・[18004] 木霊 
     ・[18056] 狼肉 
   カメラをZ軸に   
     ・[18049] Justy 
     ・[18052] ま〜く 
     ・[18055] はね 
   どうしてもわからない ....   
     ・[18043] box 
     ・[18044] 環 
     ・[18046] box 
     ・[18047] 環 
   呼び出し履歴のフレー ....   
   言語習得度合いゲージ   
     ・[17849] tkmakwins15 
     ・[17850] たかぎ 
     ・[17868] 組木紙織 
     ・[17871] Justy 
     ・[17883] Mist 
     ・[17885] tkmakwins15 
     ・[17886] toyo 
     ・[17887] kazuoni 
     ・[17888] たかぎ 
     ・[17895] 管理人 
     ・[17901] 組木紙織 
     ・[17921] たかぎ 
     ・[17938] tkmakwins15 
     ・[17966] たかぎ 
     ・[17975] 雷 
     ・[17984] 管理人 
     ・[17988] たかぎ 
     ・[18008] 管理人 
     ・[18010] たかぎ 
     ・[18012] 組木紙織 
     ・[18013] たかぎ 
     ・[18014] たかぎ 
     ・[18016] 雷 
     ・[18017] たかぎ 
     ・[18024] tkmakwins15 
     ・[18026] たかぎ 
     ・[18027] 組木紙織 
     ・[18028] tkmakwins15 
     ・[18033] たかぎ 
   MSのコマンドプロンプ ....   
     ・[17986] toyo 
     ・[17987] へろり 
     ・[17989] picko 
     ・[17990] picko 
     ・[17992] toyo 
     ・[18011] picko 
     ・[18015] Mist 
     ・[18025] picko 
   時折、画像に縦線が入 ....   
     ・[17826] たいちう 
     ・[17828] なんとかな〜れ〜 
     ・[17831] Mist 
     ・[17834] 管理人 
     ・[17838] Justy 
     ・[17853] なんとかな〜れ〜 
     ・[17854] なんとかな〜れ〜 
     ・[17857] Mist 
     ・[17867] なんとかな〜れ〜 
     ・[17974] なんとかな〜れ〜 
     ・[17982] 管理人 
     ・[17995] tkmakwins15 
     ・[17996] kazuoni 
     ・[17997] 管理人 
     ・[17998] tkmakwins15 
     ・[18000] 管理人 
     ・[18001] tkmakwins15 
     ・[18002] なんとかな〜れ〜 
     ・[18005] 管理人 
     ・[18006] tkmakwins15 
     ・[18007] 管理人 
     ・[18023] tkmakwins15 
   ゲームプログラムの館 ....   
     ・[17994] Justy 
     ・[18022] 五郎 
   無題   
     ・[17797] ibis 
     ・[17799] きつね 
     ・[17801] ibis 
     ・[17804] きつね 
     ・[18018] やそ 
     ・[18019] tor 
     ・[18020] Mist 
   わかる方回答お願いし ....   
     ・[17977] バグ 
     ・[17978] box 
     ・[17979] える 
     ・[17980] たいちう 
     ・[17981] Mist 
     ・[17983] 管理人 
     ・[17999] tkmakwins15 
     ・[18009] える 
   文字列の先頭と末尾を ....   
     ・[17970] box 
     ・[17971] マキガミ 
     ・[17973] box 
     ・[17993] マキガミ 
   カードゲームを・・・   
     ・[17874] 木霊 
     ・[17876] バグ 
     ・[17877] kazuoni 
     ・[17879] バグ 
     ・[17882] kazuoni 
     ・[17884] バグ 
     ・[17889] フリオ 
     ・[17890] もんた 
     ・[17936] 木霊 
     ・[17972] もんた 
   ★ 四聖龍神録Plus本 ....   
     ・[17861] kazuoni 
     ・[17869] 組木紙織 
     ・[17875] こめかみ 
     ・[17892] 管理人 
     ・[17894] 組木紙織 
     ・[17896] 管理人 
     ・[17939] tkmakwins15 
     ・[17943] メル 
     ・[17955] tkmakwins15 
     ・[17961] 翡翠 
     ・[17968] 管理人 

Name: L  ..ぴよぴよ(687ポイント)   Date: 2008/07/06(日) 18:15   No:18130       
Title: 自然対数eを小数点第60位で表示    
はじめまして。
学校の課題で
マクローリン展開を用いて
自然対数のeを小数点第60位で表示しろという課題がでました。

マクローリン展開自体は学校で習ったのでそこでのつまづきはなかったですが、
小数点第60位で表示 というのがわかりません。


マクローリン展開
e= 1 + 1/1! + 1/2*1 + 1/3*2*1 + 1/4*3*2*1 +・・・+1/60!


よろしくお願いします


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


Name: たかぎ [URL]  ..熟練のプログラマー(46,331ポイント)   Date: 2008/07/06(日) 18:20   No:18131     
Title: Re:自然対数eを小数点第60位で表示    
> 小数点第60位で表示 というのがわかりません。

私も分かりませんが、おそらく「小数第60位まで表示」のことではないでしょうか?


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

Name: L  ..ぴよぴよ(754ポイント)   Date: 2008/07/06(日) 18:28   No:18132     
Title: Re:自然対数eを小数点第60位で表示    
ぁ 書き間違えました;;
まで です。

どうやって表示すればよいのでしょう?



long double
で表示可能ですか?


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

Name: lbfuvab  ..ぴよぴよ(708ポイント)   Date: 2008/07/06(日) 18:32   No:18133     
Title: Re:自然対数eを小数点第60位で表示    
出来なければ
http://www5.airnet.ne.jp/tomy/cpro/mpa.htm
とかを参考にするしかないですね。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(81,176ポイント)   Date: 2008/07/06(日) 18:45   No:18134     
Title: Re:自然対数eを小数点第60位で表示    
どうもdouble型を含む通常の型では不可能な気がします。
浮動小数点数、もしくは固定小数点数を実装する必要がありそうです。



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

Name: たかぎ [URL]  ..熟練のプログラマー(46,394ポイント)   Date: 2008/07/06(日) 18:58   No:18135     
Title: Re:自然対数eを小数点第60位で表示    
> long double
> で表示可能ですか?

表示可能かどうかは、表示用のデバイスを搭載しているかどうかなど、実行環境に依存します。
long doubleで計算できるかどうかについては翻訳環境に依存します。


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,573ポイント)   Date: 2008/07/06(日) 19:13   No:18137     
Title: Re:自然対数eを小数点第60位で表示    
今気づいたのですが、課題を文面どおりに解釈すれば、マクローリン展開による計算は机上で行い、結果だけを表示させればよい気がします。
例えば、桁数は足りませんし、表示ではなく標準出力への出力ですが、
#include <stdio.h>

int main()
{
puts("2.7182818284590452353602874713527");
return 0;
}


といった具合でよいのではないですか?
そうでなければ、マクローリン展開自体もプログラムで計算する必要がありますね(例えばn階導関数を求めるとか...)。


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,721ポイント)   Date: 2008/07/06(日) 21:10   No:18140     
Title: Re:自然対数eを小数点第60位で表示    
一応、小数点以下60桁までのネイピア数を書いておきます。61桁目で四捨五入しています。

2.718281828459045235360287471352662497757247093699959574966968


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

Name: L  ..ぴよぴよ(805ポイント)   Date: 2008/07/07(月) 17:03   No:18150     
Title: Re:自然対数eを小数点第60位で表示    
みなさんありがとうございます!

課題は計算まで含まれるそうです;;
for文で計算してその結果を
表示すればいいのだと思いますが、
やはりlong doubleでは不可能でした。
途中から000000といった具合に。。

double < long double < ?
?に相当するものってありますか?

最近関数を習ったのですが、もしかして関数でけいさんするとか??


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,918ポイント)   Date: 2008/07/07(月) 17:19   No:18152     
Title: Re:自然対数eを小数点第60位で表示    
> 課題は計算まで含まれるそうです;;

くどいようですが、

Σ f(n)(0)/n! * xn
n=0


自体の計算はしなくてもよいのですか?
これを机上でやってもよいのであれば、最後までやっても五十歩百歩だと思うのですが...

> double < long double < ?
> ?に相当するものってありますか?

ありません。
どうしても数値計算をやりたいのであれば、多倍長演算が必須です。


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

Name: hoge  ..かけだし(1,895ポイント)   Date: 2008/07/07(月) 18:14   No:18157     
Title: Re:自然対数eを小数点第60位で表示    
> double < long double < ?
> ?に相当するものってありますか?

標準にはありません。
lcc-win32ならqfloatがあり、100桁程度の精度があるようです。

http://www.cs.virginia.edu/~lcc-win32/




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

Name: たいちう  ..入門者(4,844ポイント)   Date: 2008/07/08(火) 09:47   No:18172     
Title: Re:自然対数eを小数点第60位で表示    
> 自体の計算はしなくてもよいのですか?
> これを机上でやってもよいのであれば、最後までやっても五十歩百歩だと思うのですが...

横からすみません。たかぎさんの意図が分からないのですが、
ご説明いただけないでしょうか?

私がこの課題をやるとしたら、多倍長のクラスを用意して、
Lさんが最初に書いた式で必要桁数を計算するプログラムを提出します。

その前段階としては、eのマクローリン展開が、その式になることの証明をすれば十分と
思いますが、たかぎさんの考えでは、eのn階導関数がeであることも使わない方が
良いということでしょうか?


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

Name: やそ  ..比類無きプログラマー(76,223ポイント)   Date: 2008/07/08(火) 11:21   No:18173     
Title: Re:自然対数eを小数点第60位で表示    
横から失礼。
この課題、課題としてどうなんだろう???

もし私が講師だとしたら、このような出し方はしないです。
「long doubleの限界を超える数値の計算」を主題にしているのでしょうか?
マクローリン展開をプログラミングさせたいのが主題なのでしょうか?

後者なら普通は型の限界を超えるような値まで計算させることはしませんし、不毛です^^;
前者なら、「多倍長演算」について補足をしなければ、課題としては不適切なように思えます・・・

わたしが学生の立場なら「60桁って教えられた型の限界に収まるんですか?」と講師に質問したいです。

有効桁数についての参考ページ
http://web.hc.keio.ac.jp/~fujimura/lang/page-7-3.html


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

Name: たかぎ  ..熟練のプログラマー(47,429ポイント)   Date: 2008/07/08(火) 11:43   No:18174     
Title: Re:自然対数eを小数点第60位で表示    
> その前段階としては、eのマクローリン展開が、その式になることの証明をすれば十分と
> 思いますが、たかぎさんの考えでは、eのn階導関数がeであることも使わない方が
> 良いということでしょうか?

どうするのがよいのかは、Lさん、または出題者にしか分かりません。
ただ、

> 課題は計算まで含まれるそうです;;

とのことなので、それがマクローリン展開自体の計算を行う必要はないのですか、と確認しているのです。
課題の内容が、例えば、外部から与えたxに対して、exを小数第60位まで求めるということであれば、机上で計算できるところまで計算して、残りを実行時に行うのが普通でしょう。
ところが、今回は最終的な結果まで机上で計算できてしまいます。
だとすると、どこまでを机上で計算して、どこからを実行時に計算させるのかが不明確です。
また、展開後の数値計算だけを行うにしても、階乗の逆数だけでも机上で計算してよいのであれば、多倍長の除算を実装しなくても済むため、非常に楽になります。

> 私がこの課題をやるとしたら、多倍長のクラスを用意して、
> Lさんが最初に書いた式で必要桁数を計算するプログラムを提出します。

私も、自分でネイピア数を61桁まで求めるのであればそうすると思います。
しかし、この課題を解く場合、それが題意に沿っているのかどうかはやはり確認が必要です。


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

Name: たいちう  ..初心者(5,033ポイント)   Date: 2008/07/08(火) 13:22   No:18175     
Title: Re:自然対数eを小数点第60位で表示    
to たかぎさん:

> ところが、今回は最終的な結果まで机上で計算できてしまいます。
> だとすると、どこまでを机上で計算して、どこからを実行時に計算させるのかが不明確です。

なるほど、納得しました。私は私の常識に従いどこを実行時に計算させるべき、と補完していました。
補完があっているかどうかは別として、たかぎさんはその点を確認されたわけですね。


to やそさん:

> この課題、課題としてどうなんだろう???
>
> もし私が講師だとしたら、このような出し方はしないです。

Lさんに与えられた課題がこれだけだったらかなり不親切ですね。

# 色々憶測すると、講義か他の課題で多倍長について触れていたのか、
# 高度な要求をしている課題なのでしょう。


お2人ともありがとうございました。


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

Name: L  ..かけだし(1,008ポイント)   Date: 2008/07/08(火) 20:27   No:18207     
Title: Re:自然対数eを小数点第60位で表示    
みなさんありがとうございます

見たことがない難しい言葉が出てたりしていて答えにくいのですが、


課題の内容を(黒板に書かれたまま)書くと、
マクローリン展開を用いて自然対数eを小数点代60位まで表示するプログラムを作りなさい。
です。
机上での計算はしないと考えていいと思います。
で、「longでは表示できないからネットなどで調べて表示できるようにしなさい。」
と、言ってました。

これまでもネットで調べたり、教科書の後半のほうを見ないと答えられないような、応用問題が結構あって、
今回の課題も前期で最終のものなのでやはり、難しいものでした。





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

Name: たかぎ [URL]  ..熟練のプログラマー(47,127ポイント)   Date: 2008/07/08(火) 20:34   No:18209     
Title: Re:自然対数eを小数点第60位で表示    
> 机上での計算はしないと考えていいと思います。

ということは、やはり微分の計算もプログラムで行う必要があるということですね。


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

Name: L  ..かけだし(1,119ポイント)   Date: 2008/07/08(火) 20:44   No:18210     
Title: Re:自然対数eを小数点第60位で表示    
ぁ あと、なんとかが1ともいってました。(難しい言葉使われた気がします。)
たぶん分子が1という意味だと思うのですが。(周りの友達もそう解釈してました。)
だから分子は1で答えが2.718...になるようにすればいいのだと思います。


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

Name: たかぎ [URL]  ..熟練のプログラマー(47,179ポイント)   Date: 2008/07/08(火) 20:47   No:18211     
Title: Re:自然対数eを小数点第60位で表示    
> たぶん分子が1という意味だと思うのですが。

それは計算結果ですよね。
机上で計算しないということは、分子が1になることをプログラムで計算する必要があります。


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

Name: たいちう  ..初心者(5,320ポイント)   Date: 2008/07/08(火) 20:52   No:18212     
Title: Re:自然対数eを小数点第60位で表示    
既に書きましたが、

> 私がこの課題をやるとしたら、多倍長のクラスを用意して、
> Lさんが最初に書いた式で必要桁数を計算するプログラムを提出します。

これで十分及第点は取れると思いますよ。
私の解釈ですので、勿論保証はできませんが。
多倍長のクラスと書いたのは、私がC++に慣れているためですので、
C言語で書くならば、多倍長の必要な演算の関数群となるでしょうか。

・整数 => 多倍長(整数で初期化)
・多倍長 + 多倍長 => 多倍長
・多倍長 / 整数 => 多倍長
・多倍長を表示

これらの関数があれば解けるでしょう。
それで、今、何か分からないことはありますか?


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

Name: L  ..かけだし(1,204ポイント)   Date: 2008/07/08(火) 21:00   No:18213     
Title: Re:自然対数eを小数点第60位で表示    
e^xのマクローリン展開だったかもしれません=3
で、x=1の場合を小数点第60位までで表示。
そして、公式をつかうと

e=1/0!+1/1!+1/2!+1/3!....1/n!



ややこしくしてごめんなさい。



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

Name: 組木紙織  ..熟練のプログラマー(55,727ポイント)   Date: 2008/07/08(火) 21:17   No:18215     
Title: Re:自然対数eを小数点第60位で表示    
まずは、課題の詳細を詳しく課題を出した人に聞くことをした方がいいのかもしれませんね。

今までの流れとは少し変わるのですが、
課題の内容に
「小数第60位まで表示」
とあります。
実際の計算は置いておいて、マクローリン展開の第何項まで計算することになるんでしょうかね。
一番初めは61項までみたいでしたが、61項まで計算したら小数第60位までの値が確定すると、
いうわけではないと思うので、数値の下限はマクローリン展開で求まっても上限をどのように扱うのか
ということも問題になってくるような気がします。

単純に「小数第60位まで表示」だけなら1項だけ計算して、1.000…というのもありじゃないのかと思うのですが、その辺はどうなっているのでしょうか。


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

Name: L  ..かけだし(1,297ポイント)   Date: 2008/07/08(火) 21:35   No:18217     
Title: Re:自然対数eを小数点第60位で表示    
>多倍長の必要な演算の関数群
↑さっぱりです;;

組木紙織さん
>マクローリン展開の第何項まで計算することになるんでしょうかね
たしかにそうなんですよね
上にあげた式でnをなんまで増やせばいいかはわからないんですよね。

とりあえず作ってみて、0以外の数が入った時点で終わらせるように
作ってからnをいっこずつ減らしていこうかなって思ってます。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(81,222ポイント)   Date: 2008/07/08(火) 22:23   No:18227     
Title: Re:自然対数eを小数点第60位で表示    
多倍長演算をビットレベルから実装するよりも、四則演算に関しては筆算と同じ考え方で文字列で計算するというのはどうでしょうか。
たぶんそっちのほうが楽なので…


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

Name: たいちう  ..初心者(5,399ポイント)   Date: 2008/07/08(火) 22:25   No:18228     
Title: Re:自然対数eを小数点第60位で表示    
予め第n項の大きさを計算してもいいですし、10^(-60)と比べて十分小さくなったら
終了しても良いでしょう。厳密にやろうと思えば、もう少しやりようはあると思いますが。

ところで、多倍長のイメージはつかめましたか?


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

Name: L  ..かけだし(1,652ポイント)   Date: 2008/07/08(火) 22:26   No:18229     
Title: Re:自然対数eを小数点第60位で表示    
とりあえず作ってみました!!
細かいところでいろいろ訂正すべき点はあると思いますが・・・。

あとはnの数を増やして小数点第60位まで表示できれば完成です。



#include<stdio.h>
int main(void)
{
long double sum,sum2;
int n,i;

sum2=1;/*1/0!=1を始めから入れておく*/

printf("自然対数の底e を計算します。\n");
for (n=1;n<=10;n++){/*nは項数を表す*/
sum=1;/*sumを毎回1に直す*/
for(i=1;i<=n;i++){/* n!=n*(n-1)*(n-2)... */

sum=sum/i;/* =(1/i)*sum iは項の数だけ増えていく*/

}
printf("%lf\n",sum);/*一旦たす数を表示*/
sum2=sum2+sum;/*1/0! + 1/1! + 1/2! + 1/3!...+1/n!を表す式*/
}
printf("%lf\n",sum2);
return (0);
}



このあとを教えてください。


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

Name: L  ..かけだし(1,751ポイント)   Date: 2008/07/08(火) 22:34   No:18230     
Title: Re:自然対数eを小数点第60位までで表示    
多倍長・・・わからなかったんで今調べてきました。
ふつーよりも多く表示できるということですね。
>・多倍長 / 整数 => 多倍長
これを見るとint と doubleの関係と同じ感じですかね?

どうやって扱うんでしょうか?


ソース?コード?を見てもらえばわかると思いますが、
使っている言語はCです。(今更ですが^^;)



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

Name: lbfuvab  ..ぴよぴよ(783ポイント)   Date: 2008/07/08(火) 23:18   No:18237     
Title: Re:自然対数eを小数点第60位までで表示    
@ttp://www5.airnet.ne.jp/tomy/cpro/mpa.htmをライブラリにして使う。
A自分で定義する
どちらかです。
どちらにしても@のサイトは役に立つと思います。


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

Name: L  ..かけだし(1,966ポイント)   Date: 2008/07/09(水) 22:08   No:18280     
Title: Re:自然対数eを小数点第60位までで表示    
ありがとうございます
今見てきましたが、
多倍長というのは関数を使うんですね。

いろいろ型があるようでどれをどのように使ったらいいかわからないのですが。。。


ちなみに上にあるコードで後半を抜き出して少し修正したのが

	printf("%.60f\n",sum);/*一旦たす数を表示*/

sum2=sum2+sum;/*1/0! + 1/1! + 1/2! + 1/3!...+1/n!を表す式*/
}
printf("%.60f\n",sum2);
return (0);
}


これなんですが、
(%lf→%.60fに変更)

sumのほう(各項)を表示した場合は小数点第60位までしっかり表示されるのですが
sum2のほう(各項をたしたもの)は20桁くらいまで表示されその後0000000となってしまいます。


今のとこわかっているのは
関数を使う
#inclede<mpa.h>
を使うということだけです。。



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

Name: たいちう  ..初心者(5,942ポイント)   Date: 2008/07/10(木) 09:02   No:18292     
Title: Re:自然対数eを小数点第60位までで表示    
多倍長の例

int pi[N];
pi[0] = 3;
pi[1] = 14159;
pi[2] = 26535;
pi[3] = 89793;
pi[4] = 23846;
...

これでイメージがつかめますか?
最初に実装すべきは、初期化と表示。
初期化は配列の全てを0にすればよいでしょう。
先頭の要素に整数を入れると、その整数で初期化することになります。

次は、多倍長どうしの足し算。小学校で習った足し算の筆算を参考に、
繰り上がりを実装してください。小学校で習ったのは、10進数の筆算。
上の例は、100000進数の筆算です。

次は多倍長/整数。

これで必要なものは揃いましたので、最後にeを計算しましょう。
一歩ずつやってください。


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



Name: makotyan  ..ぴよぴよ(104ポイント)   Date: 2008/07/08(火) 21:20   No:18216       
Title: 自機の当たり判定について    
はじめまして、C言語初心者です。
大体の基本的なプログラムが出来たんですが、自機の当たり判定をつける事ができません…。
敵の当たり判定はつけれたのに、自機はどのようなプログラムを組んだらよいでしょうか?

初心者的な質問ですみません…。よろしくお願いします。

環境:
Windows Vista
VC++ 2008


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


Name: lbfuvab  ..ぴよぴよ(844ポイント)   Date: 2008/07/08(火) 23:20   No:18238     
Title: Re:自機の当たり判定について    
抽象的過ぎますね。
まぁ、ttp://homepage2.nifty.com/natupaji/DxLib/lecture/lecture1_6.html
を参照してください。ここがわかりやすいです。


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

Name: 管理人 [URL]  ..伝説のハッカー(614,473ポイント)   Date: 2008/07/09(水) 03:07   No:18244     
Title: Re:自機の当たり判定について    
とりあえずDXライブラリということでいいのでしょうか。
私のサイトにも当たり判定の説明はかいてあるのでよければ参考にして下さい
http://dixq.net/g/#s11


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

Name: 誠氏  ..ぴよぴよ(30ポイント)   Date: 2008/07/09(水) 22:56   No:18282     
Title: Re:自機の当たり判定について    
ありがとうございます。
ちょっと難しいですが頑張ってみたいとおもいます。

まだ解決はしませんが…うん、頑張る。


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



Name: tkmakwins15 [URL]  ..比類無きプログラマー(81,994ポイント)   Date: 2008/07/09(水) 19:28   No:18274       
Title: 関数の定義に謎のエラーがでます。    
VC2005とBCCで、次のコードを実行すると、それぞれその下のようなエラーが出るのですが…

ファイル名:main.c

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

#define ARRAY_SIZE 100

unsigned max(unsigned *data,unsigned size)
{
unsigned temp_max=0;
int i=0;
for(i=0;i<size;i++){
if(temp_max<data[i])temp_max=data[i];
}
return temp_max;
}

unsigned min(unsigned *data,unsigned size)
{
unsigned temp_min=*data;
int i=0;
for(i=0;i<size;i++){
if(temp_min>data[i])temp_min=data[i];
}
return temp_min;
}

int main(void)
{
unsigned data[ARRAY_SIZE];
int i;

srand((unsigned)time(0));
for(i=0;i<ARRAY_SIZE;i++){
data[i]=rand();
}
printf("最大:%u,最小:%u",max(data,ARRAY_SIZE),min(data,ARRAY_SIZE));
return 0;
}

エラーメッセージ:

<VC>

1>------ ビルド開始: プロジェクト: testbccorerror, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.c
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(7) : error C2059: 構文エラー : '型'
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(17) : error C2059: 構文エラー : '型'
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: '>' : 間接参照のレベルが 'unsigned int [100]' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: ':' : 間接参照のレベルが 'unsigned int *' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: '<' : 間接参照のレベルが 'unsigned int [100]' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: ':' : 間接参照のレベルが 'unsigned int *' と 'int' で異なっています。
1>ビルドログは "file://c:\programfile\VC++\testbccorerror\testbccorerror\Debug\BuildLog.htm" に保存されました。
1>testbccorerror - エラー 2、警告 4
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

<BCC>

> C:\borland\bcc55\Bin\make.exe -fDebug\natural.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -WC -WM -3 -Od -w -AT -ps -H -k -Q -b- -v -y -DDEBUG -nDebug -IC:\programfile\Tools\DxLib_Bcc -c C:\programfile\BCC\natural\main.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
c:\programfile\bcc\natural\main.c:
プリコンパイルヘッダの読み込み
エラー E2040 c:\programfile\bcc\natural\main.c 7: 宣言が正しく終了していない
*** 1 errors in Compile ***

** error 1 ** deleting Debug\main.obj

Make End !! (Elapsed time 0:00.234)

というエラーがでてコンパイルできないのですが、これをCygWinのgccで次のようなコマンドでコンパイルすると、全く問題なくコンパイルできました。これはなぜでしょうか?
<コマンドライン>
gcc main.c -omain.exe

一応改行コードの変換だけはしましたが、ファイル名は同じですし、VC上で書いたものをコピペしたコードをBCCやGCCでコンパイルしただけなので、なぜこのような差異が出てくるのかが不思議です。

これはこのコードのどこに問題があるのでしょうか?ずっと格闘しているのですが、全く分かりません。
どうか教えてください、よろしくお願いします。


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


Name: box  ..ハッカー(115,533ポイント)   Date: 2008/07/09(水) 19:47   No:18275     
Title: Re:関数の定義に謎のエラーがでます。    
ある処理系においては
maxやminがマクロか何かとして
定義済みだからではないでしょうか。

別の名前を付けてみてはいかがでしょう。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(82,079ポイント)   Date: 2008/07/09(水) 20:53   No:18277 解決!     
Title: Re:関数の定義に謎のエラーがでます。    
ありがとうございます。関数名を変更したところ、うまい事コンパイルが通りました。
どうしてもエラーが分からなかったものですから…最初はVCのバグかと思っていましたが、BCCでも通らなかったので…ずっと悩んでいました。


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



Name: J  ..入門者(3,299ポイント)   Date: 2008/07/08(火) 21:45   No:18220       
Title: .cppのインクルード?    
こんにちは。
一つのプログラムを複数のヘッダーファイルと複数のcppファイルで構成する場合はどのような記述をすればよいのでしょうか?ヘッダーファイルのインクルードは分かるのですが、cppファイルはどのようにすればよいのでしょうか?初歩的なことでしたらすみません。


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


Name: たかぎ [URL]  ..熟練のプログラマー(47,228ポイント)   Date: 2008/07/08(火) 22:01   No:18226     
Title: Re:.cppのインクルード?    
元のソースを補足してください。
現状では、あまりにも漠然としているので、一般論でしか回答できません。


Name: J  ..入門者(3,535ポイント)   Date: 2008/07/08(火) 22:43   No:18232     
Title: Re:.cppのインクルード?    
うーん、どんな形で補足すれば・・・

こんな構成となっています。

main.cpp・・・ゲームのメインのファイルです。
field.h・・・ゲームのフィールドに関するクラスと関数のプロトタイプ宣言
field.cpp・・・fieldクラスのメンバ関数の実体(?)
item.h・・・ゲームのアイテムに関するクラスと関数のプロトタイプ宣言
item.cpp・・・itemクラスのメンバ関数の実体(?)
master.h・・・ゲームのプレイヤーとエネミーの情報に関するクラスと関数のプロトタイプ宣言
master.cpp・・・masterクラスのメンバ関数の実体(?)

main.cppから各クラスのメンバ関数を呼びつつゲームを進行していく形となっています。
これでどうでしょうか?


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

Name: box  ..ハッカー(115,138ポイント)   Date: 2008/07/08(火) 22:51   No:18233     
Title: Re:.cppのインクルード?    
何というコンパイラを使っていますか?

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

Name: J  ..入門者(3,551ポイント)   Date: 2008/07/08(火) 22:55   No:18234     
Title: Re:.cppのインクルード?    
Borland C++ 5.5.1 for Win32です。

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

Name: box  ..ハッカー(115,394ポイント)   Date: 2008/07/08(火) 23:02   No:18235     
Title: Re:.cppのインクルード?    
Borland C++ 5.5.1 を裸で(何らかの開発支援ツールと組み合わせずに、という意味)
使っているとすると、自分でmakefileを書いてmakeすることになると思います。

開発支援ツールを使うと、アプリケーション作成を「プロジェクト」という概念でとらえます。
当該プロジェクトの中に(複数の)ソースファイルや(複数の)ヘッダファイルを
含ませておき、当該開発支援ツールの機能(ボタン押下など)で
コンパイル〜実行ファイル作成を行ないます。このとき、同時に適切なmakefileを
作成してくれます。
コンパイルの際、毎回すべてのソースファイルをコンパイルするわけではなく、
前回実行ファイル作成から修正が加わったソースファイルだけをコンパイルすることもできます。

当該コンパイラ用の開発支援ツールとして、例えば
BCC Developer
というのがあります。
下記URLで、先頭のhは意図的に外してあります。アクセス時は補ってください。

ttp://www.hi-ho.ne.jp/jun_miura/bccdev.htm

他にも、窓の杜やベクターあたりで探せば、何かいいものが見つかるかもしれません。


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

Name: toyo  ..中級者(12,860ポイント)   Date: 2008/07/09(水) 09:35   No:18248     
Title: Re:.cppのインクルード?    
分割コンパイルでは各 .cpp ファイルごとにコンパイルしてオブジェクトファイルを作り
リンカで各オブジェクトファイルをリンクして実行ファイルを作成します。
これをいちいちコマンドラインから打ち込むのは面倒なのでmakefileなり統合開発環境なり使います。


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

Name: たかぎ [URL]  ..熟練のプログラマー(47,298ポイント)   Date: 2008/07/09(水) 10:59   No:18250     
Title: Re:.cppのインクルード?    
> うーん、どんな形で補足すれば・・・

ファイル名だけ並べられても、必要な内容を必要なファイルに書いてください。
コンパイルの方法は環境に依存します。
としか書けません。

もとになった

> 一つのプログラム

のソースを貼り付けるなり、添付してください。


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

Name: hiroma  ..ぴよぴよ(930ポイント)   Date: 2008/07/09(水) 15:13   No:18254     
Title: Re:.cppのインクルード?    
Borland C++ 5.5.1 で BCC Developer を使っているなら、
メニューバーの [プロジェクト] > [プロジェクトに追加]で.cppファイルを追加していけば、
(あるいは新規作成等ですでにプロジェクト内に入っていれば)
特に#include <---> などと記述しなくても勝手に参照されます。

こういう事ですか?
別のことを聞いていたんだったらすみません。


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

Name: J  ..入門者(3,593ポイント)   Date: 2008/07/09(水) 20:19   No:18276 解決!     
Title: Re:.cppのインクルード?    
hiromaさん、boxさん、まさにその通りです!
なるほど〜プロジェクトに追加しておけば、特に記述しなくても勝手に参照されるのですね?
よく分かりました、ありがとうございます。

答えてくれた皆さん、本当にありがとうございました!


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



Name: OF  ..ぴよぴよ(263ポイント)   Date: 2008/07/09(水) 15:19   No:18255       
Title: 課題について質問です。    
学校の課題なんですが、どうやればいいかいまいちわかりません。
なので、全体の流れだけでもいいので教えてくれませんか?

以下、課題の内容です。

200x200ピクセルの画像の中に三角形、四角形、円、楕
円を用いて絵を作成しよう。その際、関数を用いて作成し
ましょう。
􀂄 ファイル名:12art.c (プロジェクト名:12art)
􀂄 図形の作成、移動、回転などには関数を用いること。
􀂄 効率よく関数を使って、絵を作成しましょう。
􀂄 main関数は画像配列の確保と関数の呼び出しで作成する。
􀂄 出力ファイル名(art.bmp)


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


Name: たかぎ [URL]  ..熟練のプログラマー(47,668ポイント)   Date: 2008/07/09(水) 15:43   No:18256     
Title: Re:課題について質問です。    
処理系不明なので、一般論として...

1. 図形をどのように描くのか、紙でもよいですし、ペイントなどの画像編集ソフトを使ってもよいので、とにかく描いてみる(できれば、その画像ファイルを添付してください)。

2. 図形の描画アルゴリズムを調べ、関数として実装する。
 具体的には、円の描画はMichenerのアルゴリズム、線分の描画はBresenhamのアルゴリズムなど。
 線分に関しては、水平線と垂直線は専用の処理に切り替えた方が高速です。

3. 2.で実装した関数を用いて、1.で作ったイメージどおりの画像を、200×200の配列に書き込む。

4. ビットマップファイルのフォーマットを調べ、そのフォーマットに合うように3.で作った配列の内容を変換する。

この流れでできるはずです。
そんなに難しいわけではありませんが、結構盛りだくさんな内容が含まれていますね。



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

Name: Mist  ..上級者(15,128ポイント)   Date: 2008/07/09(水) 15:47   No:18257     
Title: Re:課題について質問です。    
規約に書かれているとおり課題の丸投げは禁止です。
何がわからないのか、あなたがどこまでできるのか、開発環境などを詳細に書いてください。

この課題をクリアするには最低限BMPファイルフォーマットを理解している必要がありますが、それは大丈夫ですか?


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

Name: バグ  ..比類無きプログラマー(95,007ポイント)   Date: 2008/07/09(水) 15:57   No:18258     
Title: Re:課題について質問です。    
せめて開発環境や使用可能なライブラリくらいは書いてもらわないと誰も返答できませんよね(^_^;)

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

Name: たかぎ [URL]  ..熟練のプログラマー(47,691ポイント)   Date: 2008/07/09(水) 16:09   No:18259     
Title: Re:課題について質問です。    
> せめて開発環境や使用可能なライブラリくらいは書いてもらわないと誰も返答できませんよね(^_^;)

規約違反は別として、規格厳密合致プログラムで書けますよ。


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

Name: バグ  ..比類無きプログラマー(95,036ポイント)   Date: 2008/07/09(水) 18:11   No:18265     
Title: Re:課題について質問です。    
あ、そうか…画像ファイルの中身を直接いじってやればいいだけだから、可能ですね。失礼しました(^_^;)

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



Name: 西村  ..かけだし(1,276ポイント)   Date: 2008/07/08(火) 16:11   No:18180       
Title: キーの二度押し(?)の質問    
 ノベル風のゲームを作ろうとしているのですが、詰まったところがあったので質問させていただきます。
 とりあえず、『タイトル画面でEnterを押したらマップ画面に入り、そこで場所を選んでもう一度Enterを押し
たら選んだ場所の背景画面が表示される』という風にしようと思っているのですが、最初のタイトルでEnterを
押しただけでマップ画面を飛ばして背景画面に飛んでしまいます。以下がそのプログラムです。

if(a == 0){
DrawGraph(0,0,Title_Gr_Handle,FALSE); //タイトル表示
if(b == 0){
DrawGraph(310,275,Yajirusi_Gr_Handle,TRUE);   //ゲーム開始か終了を選ぶ矢印
if(Key[KEY_INPUT_RETURN] == 1){
a = 1; //マップ画面へ
b = 0;
}
}
if(Key[KEY_INPUT_DOWN] == 1 || b != 0){
DrawGraph(310, 400,Yajirusi_Gr_Handle,TRUE);  //矢印表示
b = 1;
if(Key[KEY_INPUT_RETURN] == 1)
break;
else if(Key[KEY_INPUT_UP] == 1)
b = 0;
}
}

if(a == 1){
DrawGraph(0,0,Map_Gr_Handle,FALSE);
if(b == 0){
DrawGraph(200, 50,Yajirusi_Gr_Handle,TRUE);
if(Key[KEY_INPUT_DOWN] == 1)
b = 1;
else if(Key[KEY_INPUT_LEFT] == 1)
b = 2;
else if(Key[KEY_INPUT_RIGHT] == 1)
b = 3;
else if(Key[KEY_INPUT_RETURN] == 1)
a = 2; //背景画面へ
}



 と、こんな感じなのですが、原因は自分でもなんとなく解ります。タイトルでのEnterがマップ画面でも反映
されているんだろうなとは思うのですが、どう Key[KEY_INPUT_RETURN] を 0 に戻せばいいのかが解りません。
途中で Key[KEY_INPUT_RETURN] = 0 とすればいいのかなーなどと思っていたのですが、そうしたらマップ画面
Enterを押しても反応しなくなりました。どうしたらタイトル画面とマップ画面の間で Key[KEY_INPUT_RETURN]
を 0に戻せるのでしょうか?
 あと、プログラム自体へのアドバイスなども下されば嬉しいです。説明が下手で長い文章になってすみません。
 よろしくお願いします。


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


Name: やそ  ..比類無きプログラマー(76,612ポイント)   Date: 2008/07/08(火) 16:43   No:18184     
Title: Re:キーの二度押し(?)の質問    
タイトル画面でエンターを押した場合はフラグ(a,b)をセットした後、マップ画面の表示を行うに留めて次のキー入力ループまで飛びましょう。
(continue?)


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

Name: Mist  ..中級者(14,511ポイント)   Date: 2008/07/08(火) 17:19   No:18191     
Title: Re:キーの二度押し(?)の質問    
やそさんの回答にプラスしてキーの押し続けは無視するような処理を追加すればいいと思います。

if (Key[xx] == 1) { // 押されている
if (on_flg[xx] == 1) {
// 押しっぱなしで無視
} else {
// ここでキーが押されたときの処理をする

on_flg[xx] = 1;
}
} else { // 押されていない
on_flg[xx] = 0;
}


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

Name: 西村  ..かけだし(1,355ポイント)   Date: 2008/07/09(水) 00:55   No:18242 解決!     
Title: Re:キーの二度押し(?)の質問    
 やそさん、Mistさん、回答ありがとうございます。
教えていただいた通り、continue を導入したところ無事解決しました。いままで一度も使用したことないcontinue だったので未だにその原理を理解し切れていないところもありますが、そこはこれから勉強しようと思います。
 Mistさんの教えて下さった処理はまだ導入していませんが、今後にも役に立ちそうな処理なのでこれからプラスしてみます。
 では、またよろしくお願いします。


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

Name: 管理人 [URL]  ..伝説のハッカー(614,557ポイント)   Date: 2008/07/09(水) 03:09   No:18245     
Title: Re:キーの二度押し(?)の質問    
キーをどれ位押したのかということは結構ゲームの中で大事になってくるので、
どれ位キーを押しているかチェックする関数も大事だと思います。
こちらにその関数が書いてありますのでよければ利用して下さい。

http://dixq.net/g/#40


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

Name: やそ  ..比類無きプログラマー(77,770ポイント)   Date: 2008/07/09(水) 12:37   No:18252     
Title: Re:キーの二度押し(?)の質問    
continue文の説明
ttp://www9.plala.or.jp/sgwr-t/c/sec06-7.html



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

Name: 西村  ..かけだし(1,463ポイント)   Date: 2008/07/09(水) 14:33   No:18253 解決!     
Title: Re:キーの二度押し(?)の質問    
 管理人さん、やそさん、返答ありがとうございます。
 僕が持っている参考書では continue に関しては殆どスルーだったので、さっそく参考にさせていただきました。
 『ゲームプログラミングの館』では勉強させていただいているのですが……なるほど、そこが使えるのを完全に忘れていました。ご指摘ありがとうございます。


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



Name: かをこ  ..ぴよぴよ(22ポイント)   Date: 2008/07/07(月) 17:36   No:18154       
Title: 配列について    
お初にお目にかかります。C言語初心者かをこと申します。
先日、学校にてC言語の課題をだされ自分なりに出来るところまで作成いたしました。
その課題が
「最も残金が多かった月だけでなく、少なかった月、最も収入の多かった月も表示するプログラムを作れ。また金額が等しかった場合にはその全ての月を表示せよ」
とのことで、最も収入の多かった月まで表示するプログラムは出来たのですが、金額が等しかった場合にはそのすべての月の表示の仕方がわかりません。

if(rest[n] > maxrest){

maxrest = rest[n];
maxn = n;
}


この辺りを変更するのだろうとは思うのですが、どう変更すれば良いのかが手詰まりです。
解説して頂ければと…どなたか宜しく御願いします。


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


Name: Mist  ..中級者(14,183ポイント)   Date: 2008/07/07(月) 18:00   No:18156     
Title: Re:配列について    
1.maxnを配列にする
2.maxnにいくつ記憶しているかを表す変数num_maxnを追加
3.判定ソース変更

if(rest[n] > maxrest){ // 超えている場合
maxrest = rest[n];
maxn[0] = n;
num_maxn = 1;
} else if (rest[n] == maxrest){ // 同じ場合
maxn[num_maxn] = n;
num_maxn++;
}


どう表示するかは考えてみてください。



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

Name: かをこ  ..ぴよぴよ(108ポイント)   Date: 2008/07/07(月) 18:34   No:18158     
Title: Re:配列について    
早速のご回答ありがとうございます。
お聞きしたいことがあるのですが、

num_maxn = 1;

の意味をご解説して頂けませんか?
代入という意味で捉えるのでしょうか?


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

Name: Mist  ..中級者(14,290ポイント)   Date: 2008/07/07(月) 19:02   No:18159     
Title: Re:配列について    
> maxnにいくつ記憶しているかを表す変数num_maxn
と書いたとおりなんですが、最大の値が更新されたときmaxnにはひとつ分の月しか入っていませんね。
だからnum_maxnに1を入れています。
最大値が同じ月が二つ以上ある場合は、そのたびにmaxnに記憶する月が増えるので+1ずつしています。

これでわかりますか?


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

Name: かをこ  ..ぴよぴよ(156ポイント)   Date: 2008/07/07(月) 19:10   No:18160 解決!     
Title: Re:配列について    
お早い解答ありがとうございます。
理解できました。本当にありがとうございます。

一旦解決とさせて頂きますが、わからないことがあると思うので、その時は宜しく御願いします。


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

Name: かをこ  ..ぴよぴよ(304ポイント)   Date: 2008/07/08(火) 13:59   No:18176     
Title: Re:配列について    
すみません。
先日教えていただいた通りやったのですが。なぜが無効な間接参照としか表示されません。
それが、
maxn[0] = n;


部分と

maxn[num_maxn] = n;


の部分なんですが、どうすれば良いでしょうか…
解決策を教えていただけないでしょうか?



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

Name: やそ  ..比類無きプログラマー(76,336ポイント)   Date: 2008/07/08(火) 14:39   No:18177     
Title: Re:配列について    
Mistさんはmaxnに月を”複数”格納出来るように配列で
maxn[0]
maxn[num_maxn]
と書かれています。
ので
宣言の段階でmaxnを maxn[13]とする必要があるのではないでしょうか。
(なんで12ではなく13なのかな?良く見てないけど^^;)


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

Name: たいちう  ..初心者(5,166ポイント)   Date: 2008/07/08(火) 14:51   No:18178     
Title: Re:配列について    
Mistさんの書いている、

> 1.maxnを配列にする

の部分の変更はしていますか?
しているなら、変更後のソースコードを載せてください。


別の方法を提示します。Mistさんの方法と両方を行う必要はありません。
(残金が多かった月についてのみ考える)

1.ループを回して残金の最大値を求める。それが何月かは今は問わない。
2.ループをもう一度回し、残高が最大値と等しい場合に出力する。


>(なんで12ではなく13なのかな?良く見てないけど^^;)

多分、次の書き方のためですね。

> printf("%d月の収入は?", n);
> scanf("%d", &income[n]);


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

Name: やそ  ..比類無きプログラマー(76,375ポイント)   Date: 2008/07/08(火) 15:00   No:18179     
Title: Re:配列について    
>多分、次の書き方のためですね。

> printf("%d月の収入は?", n);
> scanf("%d", &income[n]);

I'm understand!!

そっか、[1]=1月としているからなのね^^;


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

Name: やそ  ..比類無きプログラマー(76,532ポイント)   Date: 2008/07/08(火) 16:17   No:18181     
Title: Re:配列について    
Mistさんのソースをパクって作成^^;


int num_maxn=0, maxn[13];//他の変数宣言と同じ場所で

 ・
 ・
 ・

if(rest[n] >= maxrest){ // 同額か超えている場合
maxrest = rest[n];
maxn[num_maxn] = n;
num_maxn++;
}
for(i=num_maxn;i>=0;i--){
printf("\n最も残金の多かった月は %d月で、その金額は %d円です", maxn[i], maxrest);
}

同額の時もmaxrestにセットしているのでMistさんのより効率が悪いかもしれませんが、
見易さ優先で(笑)


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

Name: Mist  ..中級者(14,397ポイント)   Date: 2008/07/08(火) 16:39   No:18183     
Title: Re:配列について    
ツッこむぜ!

> I'm understand!!

understandは動詞なのでbe動詞はいりません。
ついでに他動詞なので目的語が必要です。

I understand this question.

>if(rest[n] >= maxrest){ // 同額か超えている場合
> maxrest = rest[n];
> maxn[num_maxn] = n;
> num_maxn++;
>}
バグってないかな?
1月:100
2月:1000
3月:1000
4月:10000
の場合、上の判定だと正しく動かないと思う。


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

Name: やそ  ..比類無きプログラマー(76,767ポイント)   Date: 2008/07/08(火) 16:50   No:18185     
Title: Re:配列について    
確かに!(笑)

やそは understandの使い方を覚えた!(ドラクエ風)

確かに!(笑)
金額が同じ場合にしか通用しないじゃないか!m(。。)m

最大残金を上回る残金が来たら最大残金配列の[0]にセットしなおさなきゃいけないね^^;

初歩的なミスだ(笑)
わはははー。(わらってごまかす)


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

Name: かをこ  ..ぴよぴよ(606ポイント)   Date: 2008/07/08(火) 22:43   No:18231     
Title: Re:配列について    
皆様、ご回答のほうありがとうございます!
大変お勉強になります…!
かをこ宅にコマンドプロンプトがないため、学校でしか作動することができないので
明日、学校にて作成してみます。(課題が明日までという中でなんとか皆様のお力を頼りにやってみます。)

たいちうさんの言う、maxnを配列にしたかという問いには、私はしていませんでした…。
配列ということ自体が先生から詳しく教わっておらず、色々なサイトでみましたが、学校での内容とは違い、理解することが出来ませんでした。
その配列にするというのはどういうことか教えて頂けませんか?

また、やそさんのいう最大残金配列を[0]にし直さなければならないというのは、宣言のmaxn[13]を[0]にへの書き換えのことでしょうか?

本当、無知で申し訳ない気持ちでいっぱいです…


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

Name: box  ..ハッカー(115,431ポイント)   Date: 2008/07/08(火) 23:03   No:18236     
Title: Re:配列について    
> 配列ということ自体が先生から詳しく教わっておらず

素朴な疑問が一つ。
習っていない概念を使うような課題って、出るものなのでしょうか。


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

Name: かをこ  ..ぴよぴよ(662ポイント)   Date: 2008/07/08(火) 23:53   No:18239     
Title: Re:配列について    
大雑把な説明しか教えて頂いてないため、詳しいことは聞かされてないんです。
質問するにも、ここをこうすれば良いとかは教えて頂けなくて…
兄も昔、C言語をやっていたということでそのテキストを観たのですが、どうもそのテキストの言っていることが先生の説明とは違うし、観たこともないものもありまして…
全て言い訳に聞こえるかもしれませんが…。
決して習っていないというわけではないのです。


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

Name: たいちう  ..初心者(5,767ポイント)   Date: 2008/07/09(水) 07:46   No:18246     
Title: Re:配列について    
教える側がちゃんと教えたと認識している事と、
教わる側がちゃんと教えてもらったと認識している事は違います。

また、テキストや講師によって説明の仕方が違うこともありますが、
普通は違う表現をしているだけで、十分理解すれば同じ事を説明していたと
わかると思います。
(講師かテキストの著者がその資格が疑われるほど未熟だったりする場合もあるけど)

まー誰が悪いかは知りませんが、かをこさんが今しなければならないのは
配列を応用できる位に理解することだと思うのですが。
添付してあるソースコードも十分理解できていないのではないですか?

とりあえず初心者用にやさしい説明のある信頼できるサイトを紹介します。
テキストや講師の説明ともまた違うかもしれませんが、
少なくとも十分正しいです。
http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-3
『2-3.配列』の最後に演習もありますので、それもやると良いでしょう。

# 課題が増えてしまうようなものですが急がば回れです。
# もう少し配列について理解してから本来の課題を考えれば、
# いくつかの疑問は自然と解けるでしょう。


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

Name: Mist  ..上級者(15,038ポイント)   Date: 2008/07/09(水) 09:49   No:18249     
Title: Re:配列について    
う〜ん、最初に提示されたソースはかをこさんが一から作られたものではなかったのでしょうか?
最初のソースの時点ですでに配列をたくさん使われているので、あの説明で十分理解できるものと思ったのですが。

> また、やそさんのいう最大残金配列を[0]にし直さなければならないというのは、宣言のmaxn[13]を[0]にへの書き換えのことでしょうか?

盛大に勘違いされているようですので具体的に説明します。

例として各月の収入が以下のような場合

1月:100
2月:1000
3月:100
4月:1000
5月:10000
6月:10000

1月の時点(最初なのでそのままセット)
maxrest = 100, maxn[0] = 1, maxn_num = 1

2月の時点(最大が更新される)
maxrest = 1000, maxn[0] = 2, maxn_num = 1

3月の時点(最大ではないので更新しない)
maxrest = 1000, maxn[0] = 2, maxn_num = 2

4月の時点(最大と同じなので覚えている月の数を増やす)
maxrest = 1000, maxn[0] = 2, maxn[1] = 4, maxn_num = 2

5月の時点(最大が更新され、覚えている月の数もひとつに戻す)
maxrest = 10000, maxn[0] = 5, maxn_num = 1

6月の時点(最大と同じなので覚えている月の数を増やす)
maxrest = 10000, maxn[0] = 5, maxn[1] = 6, maxn_num = 2

というような感じになります。
見てもらえるとわかるとおり、maxnの配列にはその時点での最大収入の月を配列の0番目から順番に記憶するようにしています。
だから、最大収入が更新されたときは0番目から記憶しなおさなければならないということです。

やそさんのいう「最大残金配列」は「最大収入の月配列」のことだと思います。


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

Name: かをこ  ..ぴよぴよ(885ポイント)   Date: 2008/07/09(水) 11:05   No:18251 解決!     
Title: Re:配列について    
お二方、ご回答のほうありがとうございます。

たいちうさん
そうですね…私はまだ十分にすべてを理解できていないので、それとなくしかソースを理解できていないんです。
サイト紹介のほうありがとうございます。お返事を書き次第、拝見します。

Mistさん
なるほど…そういうことだったんですね。
詳しい説明ありがとうございました。

現段階で、一応解決という風にさせていただきます。
これから紹介して頂いたところに行き、学んできますね。
わからないことがまたあると思うので、その時にはよろしくお願いします。


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



Name: 骨鳴男  ..ぴよぴよ(293ポイント)   Date: 2008/07/08(火) 17:10   No:18189       
Title: 無題    
初めまして。
早速ですがプログラムが作成できなくて困っています。
以下のような二つの整数の計算式(加減乗除)を入力し結果を得るプログラムです。
QUITが入力されるまで繰り返します。

./keisan
計算式を入力して下さい
1+2[Enter]
計算結果:3
計算式を入力して下さい
1-5[Enter]
計算結果:-4
計算式を入力して下さい
aa[Enter]
入力が違います
計算式を入力して下さい
QUIT[Enter]
プログラムを終了しますか(y/n):n[Enter]
計算式を入力して下さい
プログラムを終了しますか(y/n):y[Enter]
プログラムを終了します

以上のような入力例を示すプログラムです。
どうしても分からないのでよろしくお願いします。


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


Name: やそ  ..比類無きプログラマー(77,102ポイント)   Date: 2008/07/08(火) 17:16   No:18190     
Title: Re:無題    
何が分からないのでしょう?
文字(文字列)の入力は出来ますか?

文字の判定や変換は別として、

変数や計算結果の出力はどのような関数を使うか分かりますか?

お使いの環境(os、コンパイラ)は何でしょう?


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

Name: 骨鳴男  ..ぴよぴよ(367ポイント)   Date: 2008/07/08(火) 17:37   No:18192     
Title: Re:無題    
環境はLINUXです。
EMACSで作ってます。
printfやfgetsでは、ないのでしょうか?
str関数を使用するのでは、ないかと思うのですが、いかがでしょうか?
回答よろしくお願いします。


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

Name: abc  ..かけだし(1,544ポイント)   Date: 2008/07/08(火) 17:39   No:18193     
Title: Re:無題    
計算式を入力して下さい →printf
1+2[Enter] →scanf 変数2つ用意して足す。(例c=a+b)
計算結果:3 →printf cを表示
計算式を入力して下さい →printf
1-5[Enter] →scanf 変数2つ用意して引く。(例c=a-b)
計算結果:-4 →printf cを表示
計算式を入力して下さい →scanf aaを入力
aa[Enter] →if文で判定する(例if(a == 'aa')など)
入力が違います
計算式を入力して下さい
QUIT[Enter]
プログラムを終了しますか(y/n):n[Enter]
計算式を入力して下さい
プログラムを終了しますか(y/n):y[Enter]
プログラムを終了します
while文でまわすのがよい

もしかして、、、入力されてから足し算とか引き算判定します??笑なら考え方違います


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

Name: abc  ..かけだし(1,588ポイント)   Date: 2008/07/08(火) 17:47   No:18194     
Title: Re:無題    
法則ありなら文字列から”+−*/”を検索してその前と後ろの値をatoiとかで変換して
できないかな笑
strstrだっけなー文字列検索標準関数もあるし(名前違うかも)


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

Name: 骨鳴男  ..ぴよぴよ(460ポイント)   Date: 2008/07/08(火) 18:00   No:18195     
Title: Re:無題    
文字列を配列に格納し、それが文字列か数字かを判断すると思うのですが、
その判断をどのように書けば良いのかがわかりません。
そして、QUITを入力した時、プログラムを終了させるかどうかを問うコメントを表示させる方法と実際にプログラムを終了させる方法を教えて頂ければうれしいです。


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

Name: Mist  ..中級者(14,584ポイント)   Date: 2008/07/08(火) 18:13   No:18197     
Title: Re:無題    
> それが文字列か数字かを判断すると
isdigit関数を使う

> QUITを入力した時、プログラムを終了させるかどうかを問うコメントを表示させる方法
strcmp関数を使って入力された文字列が"QUIT"と一致するか判断する
一致したらコメント表示

> 実際にプログラムを終了させる方法
入力された文字がyかnかをチェックする。
yだったらexitでプログラム終了。


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

Name: 骨鳴男  ..ぴよぴよ(552ポイント)   Date: 2008/07/08(火) 18:29   No:18198     
Title: Re:無題    
皆さんありがとうござました。
皆さんの言葉を参考にして作ってみます。
より分かりやすいプログラム作成方法があるかたは書いて頂けるとうれしいです。


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

Name: やそ  ..比類無きプログラマー(77,229ポイント)   Date: 2008/07/08(火) 18:55   No:18200     
Title: Re:無題    
うむ。骨鳴男 さんが作ってみるというので、現状待ち状態かもしれませんが、

式の入力は
”1+2”などと全部一度に入力するタイプなのか?

”1”エンター
”+”エンター
”2”エンター
エンター

なのかによって処理の仕方がだいぶ変わると思います。
後者のほうが何倍も楽^^
また、1行目の
「./keisan 」
は・・・もしかして・・・
//keisan
のコメントを書きたかった?


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

Name: 骨鳴男  ..ぴよぴよ(597ポイント)   Date: 2008/07/08(火) 18:58   No:18201     
Title: Re:無題    
計算は数字も演算子も一括入力するものです。
一行目の./keisanはコンパイルしたものを実行すると言うことです。


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

Name: box  ..ハッカー(115,020ポイント)   Date: 2008/07/08(火) 19:37   No:18204     
Title: Re:無題    
> また、1行目の
> 「./keisan 」

UNIX系のOSでよくある、
カレントディレクトリのkeisanを実行する
という意味です。


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

Name: やそ  ..比類無きプログラマー(77,522ポイント)   Date: 2008/07/08(火) 19:39   No:18205     
Title: Re:無題    
>計算は数字も演算子も一括入力するものです。

それならばfgetsでまとめて文字列(配列)に入れてしまえば良いでしょう。

あとは1文字ずつ読んでは判定していく。
isdigitで数字かどうか判定
演算子は読んだか?
まだならば1番目の数字
読んでいれば2番目の数字
変数に入れる

演算子ならば
演算の確定

数字でも演算子でもない文字ならばエラー処理
文字列が終わるまでループ

演算子を判断して、演算&結果表示

といった流れでしょうか。
エラー処理を追及すると一気に処理が長く(複雑に)なりそうですが。


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

Name: box  ..ハッカー(115,128ポイント)   Date: 2008/07/08(火) 20:32   No:18208     
Title: Re:無題    
> 二つの整数の計算式(加減乗除)

二つの整数は一桁に限定ですか?
二桁以上も扱いたいのだとすると、
fgets()で数式全体を文字列として受け、
sscnaf()あたりで3つの要素(2つの数値と1つの演算子)に分解し
(3つの要素を獲得できなかったらエラーとする)、
演算子の内容に応じた四則演算を行なう、
という考え方はいかがでしょう。


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

Name: やそ  ..比類無きプログラマー(77,738ポイント)   Date: 2008/07/09(水) 09:24   No:18247     
Title: Re:無題    
> 「./keisan 」

>UNIX系のOSでよくある、
>カレントディレクトリのkeisanを実行する
>という意味です。

あ、なんだ、実行ファイルを書いただけですか。
納得しました^^

>boxさん

整数部分の桁数によっても処理の仕方が多少変わりますね。

あとは整数のリミットをどうするかで変数の型もかわるでしょうし、
(まあintの範囲程度で十分だと思いますが)
0除算のチェックやマイナスを扱うかどうか、
全角文字(数字)は・・・やっぱりはじく?
etcetc・・・
追求していくと結構な手間かもしれません^^;


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



Name: えみ  ..ぴよぴよ(32ポイント)   Date: 2008/07/09(水) 00:50   No:18240       
Title: ゲーム    
もぐらたたきを作るときに
モグラが指定した領域から出てきたり引っ込んだりするプログラムは
rand()とfor()を使ってどのように作ればよいでしょうか??


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


Name: えみ  ..ぴよぴよ(70ポイント)   Date: 2008/07/09(水) 00:52   No:18241     
Title: Re:ゲーム    
すみません。
ゲームはmicrosoft visual studio .net 2003で作ろうと思っています。


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

Name: 管理人 [URL]  ..伝説のハッカー(614,433ポイント)   Date: 2008/07/09(水) 03:05   No:18243     
Title: Re:ゲーム    
<pre>
ちょっとあまりにも説明が大雑把過ぎてアドバイスのしようがありませんが、
まず、何で作るのですか?DXライブラリですか?
また、ゲームシステム全般はもうご存知だとして、その部分的なアルゴリズムだけでいいのでしょうか?
それから、出てきたり引っ込んだりする時に、モーションを使うのか、それとも
出てるだけか引っ込んでるだけかでいいのか、でもまた実装の仕方は違いますし、
具体的に言っていただけないとアドバイス出来ないと思います。

一般的な話をするならば、

typedef struct{
int x,y;
int flag;
}mogura_t;

のようにモグラのデータを持った構造体を用意し、モグラの数だけ

mogura_t mogura[MOGURA_MAX];

こんな感じでつくり

○○○
○○○
○○○

もしこんな9つのモグラがいるのなら、(x,y)=(0,0)〜(x,y)=(2,2)まで代入して初期化しておき、
flagが0なら引っ込んでいる、1なら出ているなどとフラグ管理すればいいと思います。

叩いた瞬間、その範囲が有効な範囲内であれば
例えば

x=叩いた座標/100;
y=叩いた座標/100;

のようにすれば、xy座標が0,0〜99,99の範囲は0,0に入る・・といったように範囲わけできるので、

for(i=0;i<MOGURA_MAX;i++){
if(mogura[i].x==x && mogura[i].y==y && mogura[i].flag==1){
叩いた!;
}
}

とかすれば叩けたかどうか判定出来るでしょう。
rand関数はモグラが出現する時に使いたいのでしょうか。

それなら普通にrand()%MOGURA_MAXとかで値を生成し、
flagが0なら有効、1ならもう一回乱数を作り直す、全部flagが1なら生成しない・・とすればいいと思います。


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



Name: たか  ..かけだし(1,546ポイント)   Date: 2008/07/08(火) 21:12   No:18214       
Title: 実行ファイルから盗まれるデータについて    
実行ファイルから盗まれるデータについて質問します。

ゲームプログラミングの館にもあるように、
コンパイル場所がバイナリエディタで見られてしまうのですよね。
これを防ぐことはできるのでしょうか?

〜開発環境〜
Visual C++ 2008 Express Edition
DXライブラリ

ゲームプログラミングの館のページと同じ方法でコンパイルしています。


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


Name: Justy  ..ハッカー(197,692ポイント)   Date: 2008/07/08(火) 21:40   No:18218     
Title: Re:実行ファイルから盗まれるデータについて    

>コンパイル場所がバイナリエディタで見られてしまうのですよね。
>これを防ぐことはできるのでしょうか?

 VisualStudioならデバッグ情報を生成しないでリンクすれば(リンカオプションの /DEBUGを外す)、
コンパイル場所・・・というかプログラムデータベースファイルへのパスが exeの中に
記録されなくなりますよ。


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

Name: たかぎ [URL]  ..熟練のプログラマー(47,228ポイント)   Date: 2008/07/08(火) 21:42   No:18219     
Title: Re:実行ファイルから盗まれるデータについて    
デバッグ情報を外しただけでは不十分では?
直接的・間接的に、__FILE__マクロを使用した部分も潰さないといけません。


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

Name: たか  ..かけだし(1,569ポイント)   Date: 2008/07/08(火) 21:46   No:18221     
Title: Re:実行ファイルから盗まれるデータについて    
/DEBUGを外す・・ということは、
ソリューション構成をReleaseに変えるということでいいのでしょうか?


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

Name: Justy  ..ハッカー(197,741ポイント)   Date: 2008/07/08(火) 21:47   No:18222     
Title: Re:実行ファイルから盗まれるデータについて    

>直接的・間接的に、__FILE__マクロを使用した部分も潰さないといけません

 あー、たしかに。
 これも潰さないとソースコードのファイル名(あるいはパスの一部・全部も)がバレますね。


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

Name: たか  ..かけだし(1,586ポイント)   Date: 2008/07/08(火) 21:50   No:18223     
Title: Re:実行ファイルから盗まれるデータについて    
では、#defineで切り替えて__FILE__を使わないようにします。

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

Name: Justy  ..ハッカー(197,829ポイント)   Date: 2008/07/08(火) 21:50   No:18224     
Title: Re:実行ファイルから盗まれるデータについて    

>ソリューション構成をReleaseに変えるということでいいのでしょうか?

 そちらがどういプロジェクト構成なのかわからないので、Releaseにしただけ
解決するかどうかはわかりません。

 構成プロパティ「リンカ」-> 「デバッグ」の「デバッグ情報の生成」の項目がどうなっているかを
確認して下さい。


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

Name: たか  ..かけだし(1,638ポイント)   Date: 2008/07/08(火) 21:53   No:18225 解決!     
Title: Re:実行ファイルから盗まれるデータについて    
Justyさん
そこで/DEBUGを外すことができました。
簡単に解決してしまいました。
ありがとうございました。


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



Name: ぴっぴ  ..ぴよぴよ(603ポイント)   Date: 2008/07/02(水) 21:48   No:18048       
Title: サウンドデータロードについて    
以前、atan関数について質問させて頂いたものです。
あのときは有り難う御座いました。

そこで、現在勉強でシューティングを作成(DXライブラリとBC++)しているのですが、
LoadSoundMemでステージ音を5面分(ogg形式で約3分)起動時に読み込ませているのですが、
かなり時間が掛かってしまいます。起動から初期化なども含めて約30秒位掛かっています。
他の方々のゲームですとそんなに掛かりませんが、どのようにしたら良いのでしょうか?
ゲームの途中で読み込むと他の処理が止まってしまいテンポが悪くなってしまいます。
どなたか知恵をお貸し下さい。
宜しくお願い致します。


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


Name: Justy  ..ハッカー(195,764ポイント)   Date: 2008/07/03(木) 00:48   No:18050     
Title: Re:サウンドデータロードについて    

>LoadSoundMemでステージ音を5面分(ogg形式で約3分)起動時に読み込ませているのですが、
>かなり時間が掛かってしまいます。起動から初期化なども含めて約30秒位掛かっています。
>どのようにしたら良いのでしょうか

 ゲームの起動時間はテクスチャの読み込みとか諸々の初期化もあるでしょうから、
サウンドにどれくらいの時間がかかっているのかはちゃんと調べた方がいいかと思います。

 で、本当にサウンドが原因になっているのであれば、

    SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);

 の1行をロード前に入れると、ストリーミング再生のフラグが立ちますので、
ひょっとしたらこれで起動が早くなるかもしれません。


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

Name: ぴっぴ  ..ぴよぴよ(784ポイント)   Date: 2008/07/04(金) 00:09   No:18088     
Title: Re:サウンドデータロードについて    
Justyさん
有り難う御座います。
テクスチャなどの3Dはまだ全然勉強していないので使用していません。
教えて頂いた関数で解決致しました。リファレンスも読みました。
しかしわからない点が1点あります。
ステージ音を5面分読み込んでいるのですが、関数を1回呼び出すだけで
その後全ての曲はストリーミング再生になるのでしょうか?
試したところ読み込み時間が変わらなかったので、1回呼び出せば以後
ストリーミング再生になっているようなので、関数は1度のみで良いのでしょうか?
また、途中からストリーミング再生をやめたい時の関数などはあるのでしょうか?


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

Name: Justy  ..ハッカー(196,098ポイント)   Date: 2008/07/04(金) 01:12   No:18089     
Title: Re:サウンドデータロードについて    

 >ステージ音を5面分読み込んでいるのですが、関数を1回呼び出すだけで
 >その後全ての曲はストリーミング再生になるのでしょうか?

 そう思っていいと思います。
 
 この関数を呼んだ時点で、内部のサウンドフラグがファイルからの
逐次読み込みモードになります。
 このモードになった後、LoadSoundMem()で音声ファイルを読み込むと
それら全てにストリーミングフラグがつきますので、実際の再生時も
そのように動作します。



 >途中からストリーミング再生をやめたい時の関数などはあるのでしょうか?

 DxLib.h"DX_SOUNDDATATYPE_FILE"で検索すると、
 「ストリームサウンド再生データタイプのマクロ」というコメントが見つかります。

 このあたりにあるマクロを SetCreateSoundDataType()に引き渡せば
それぞれそのように動作するはずです。


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

Name: ぴっぴ  ..ぴよぴよ(819ポイント)   Date: 2008/07/08(火) 09:39   No:18171 解決!     
Title: Re:サウンドデータロードについて    
Justyさん
遅くなり申し訳ありません。親切丁寧なご回答ありがとう御座いました。


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



Name: しお  ..ぴよぴよ(139ポイント)   Date: 2008/07/07(月) 17:10   No:18151       
Title: 強化学習のプログラミング    
強化学習のプログラミングをしようと思うのですが、いざプログラムを書こうとすると、よくわかりません。
例えば追跡問題で3×3を状態入力として、行動を決定するというプログラムの設定のところが分かりません。
何のプログラムでも良いので、強化学習の状態入力のプログラムの書き方を教えてください。


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


Name: やそ  ..比類無きプログラマー(76,009ポイント)   Date: 2008/07/07(月) 17:50   No:18155     
Title: Re:強化学習のプログラミング    
いきなり答えを例で良いから教えてくれ・・・って言われても解答が付きにくいと思いますよ。

強化学習?
追跡問題?
3×3?
行動を決定?

なにをどう想定されているのか。また、どのような環境でのプログラミングなのか?
ここを閲覧している回答者(や管理人さん)らは神様でもエスパーでもありません。

課題なのでしたら、もう少し前提条件が提示されていなかったでしょうか?






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

Name: たかぎ [URL]  ..熟練のプログラマー(46,969ポイント)   Date: 2008/07/08(火) 00:48   No:18162     
Title: Re:強化学習のプログラミング    
http://okwave.jp/qa4158420.html
↑でも同じ質問をしている人がいるようです。
参考にしてください。


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

Name: たいちう  ..入門者(4,683ポイント)   Date: 2008/07/08(火) 09:26   No:18170     
Title: Re:強化学習のプログラミング    
> 強化学習のプログラミングをしようと思うのですが、
> いざプログラムを書こうとすると、よくわかりません。

まずは強化学習のアルゴリズムを理解し、紙の上で「学習」してみましょう。
乱数が必要ならばサイコロを振るなりして下さい。
3×3程度ならば、正しい学習手順と根気があれば、学習の効果が得られるでしょう。
正しい学習手順で学習の効果が確認できたら、その手順をプログラムにします。


別の方法として、上述の機械的な根気を必要としないアプローチも提案します。
こっちの方が本来の形だと思います。機械的な根気はプログラマの仕事ではなく、
プログラムの仕事ですから。

アルゴリズムを理解してそれをプログラムにする力が身についてないのでしょうから、
その実力を身に付けましょう。各種ソートなどが、アルゴリズムの解説も
ソースコードも丁寧な説明が見つけやすいです。
GAでナップサック問題やTSPを解くことなども、強化学習の関連分野なので、
直接役に立つでしょう。


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



Name: リク  ..かけだし(1,943ポイント)   Date: 2008/07/07(月) 23:26   No:18161       
Title: printfについて    
今、ライブラリのstrcpyとかそういう関数を自作して勉強してみています。
二つのアドレスを受け取ってコピーしていって、ヌルなら抜けて・・とすれば
自分で文字列コピーの関数が実装出来ますよね。

しかしprintfとかはどうやって実装したらいいのでしょうか?
標準関数って全部は自分で自作することはできないのでしょうか?


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


Name: たかぎ [URL]  ..熟練のプログラマー(47,053ポイント)   Date: 2008/07/08(火) 00:50   No:18163     
Title: Re:printfについて    
> しかしprintfとかはどうやって実装したらいいのでしょうか?

#include <stdio.h>

#include <stdarg.h>

int printf(const char *format, ...)
{
va_list ap;
int result;

va_start(ap, format);
result = vfprintf(stdout, format, ap);
va_end(ap);
return result;
}


でOK。


> 標準関数って全部は自分で自作することはできないのでしょうか?

あなたの実力次第です。


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

Name: リク  ..かけだし(2,026ポイント)   Date: 2008/07/08(火) 01:45   No:18164     
Title: Re:printfについて    
なにやらみたことのないものが並んでいて戸惑っていますが、一つずつぐぐって確認してみようと思います。
ありがとうございました。

あと、引数の「...」は本来何がはいるのでしょうか?


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

Name: box  ..ハッカー(114,858ポイント)   Date: 2008/07/08(火) 06:35   No:18169     
Title: Re:printfについて    
可変個の引数が入る場合の、決まった書き方です。

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



Name: グリフィス  ..ぴよぴよ(93ポイント)   Date: 2008/07/07(月) 11:14   No:18144       
Title: 少しおたずねします    
下の添付ファイルは,文字列を入力してそれを大文字と小文字とそれ以外の文字(+,-など)にわけて,
それぞれをカウントするプログラムなのですが、どうも結果を表示するところでうまくいきません。
どうすればよいのでしょうか?


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


Name: グリフィス  ..ぴよぴよ(104ポイント)   Date: 2008/07/07(月) 11:18   No:18145     
Title: Re:少しおたずねします    
最後に入力した文字列だけが出るんです。

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

Name: Mist  ..中級者(13,196ポイント)   Date: 2008/07/07(月) 11:51   No:18146     
Title: Re:少しおたずねします    
文字配列というものについての理解が足りないように思いますが、
ソースからでは細かい部分で何をしたいのかが見えないので質問します。

> どうも結果を表示するところでうまくいきません。
あなたの考えるうまくいったきの表示状態を具体的に提示してください。
最終的にどう表示したいのかがわからないと答えにくいです。

> for(i=0; i<5; i++){
> gets(str);
> }
ループで5回getsを実行している理由は何ですか?
5行分読み込みたいというのであっても、1文字づつ5文字読み込みたいというのであっても現状では間違いだらけです。


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

Name: グリフィス  ..ぴよぴよ(189ポイント)   Date: 2008/07/07(月) 12:13   No:18147     
Title: Re:少しおたずねします    
最終的に、
大 小 その他
1 0 1
2 1 0

のような表示状態にしたいんです。

ループで5回getsをしてるのは、5行分のデータを入力したいんです。
ですが、入力もうまくいきません。どうすればいいのでしょうか?


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

Name: Mist  ..中級者(14,072ポイント)   Date: 2008/07/07(月) 13:00   No:18148     
Title: Re:少しおたずねします    
入力と出力部分だけソースを修正しました。(@が付いているところ)
ただし、このプログラムは大文字、小文字、その他の文字の判定の仕方が間違っている部分についてはわざと修正していません。
ネット等でisupper、islowerの仕様(入力と戻り値)を調べて修正してください。


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

int main(void)
{
char str[5][20]; // @
int i, j, count1, count2, count3;


// @ 変数の初期化
memset(str, 0, sizeof(str));
count1 = count2 = count3 = 0;
// @

printf("文字列を入力してください(一行19文字まで)\n"); // @

//文字列の入力
for(i=0; i<5; i++){
printf("%d行目を入力してください : ", i+1); // @
fgets(str[i], 20, stdin); // @
}
printf("\n");

//入力した文字列の表示
for(j=0; j<5; j++){
printf("%s\n", str[j]); // @
}
printf("大 小 その他\n");

// @ 文字数のカウント
for(i=0; i<5; i++){
count1 = count2 = count3 = 0;
for (j = 0; j < 20; j++) {
if ((str[i][j] == '\0') || (str[i][j] == '\n')) break; // 文字列の終わり
if(isupper(str[i][j]) == 0){ //大文字の場合
count1++;
}else if(islower(str[i][j]) == 0){ //小文字の場合
count2++;
}else{ //その他の場合
count3++;
}
}
printf("%-8d %-8d %-8d\n", count1, count2, count3);
}
// @

return 0;
}


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

Name: グリフィス  ..ぴよぴよ(220ポイント)   Date: 2008/07/07(月) 16:22   No:18149 解決!     
Title: Re:少しおたずねします    
Mistさん、大変ありがとうございました。おかげで何とかなりました。

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



Name: Tachiken  ..ぴよぴよ(812ポイント)   Date: 2008/07/06(日) 21:09   No:18139       
Title: C標準ライブラリにおけるqsortの外部仕様についての質問    
初めまして。表記の件について質問させて頂きます。

C標準ライブラリにqsort関数というのがあるかと思いますが、この関数の
第4引数に与える比較関数について要求される仕様について、不明な点が
ありましたのでご教授お願いします。

http://www.bohyoh.com/CandCPP/C/Library/qsort.html
の記述によれば、比較関数は
「第1引致が第2引数より小さい/等しい/大きいとみなされるとき、
それぞれ0より小さい/等しい/大きい整数を返すこと。」
と規定されていると読み取れます。
しかし、この記述のみからだと、比較関数が推移律を満たすこと…
すなわち、「任意の比較対象A,B,Cに対し、
A<BかつB<CならばA<C」が成立することを要請していないように読み取れます。
(例えば、『グー、チョキ、パー』という比較対象に対し、比較関数の戻り値を
「じゃんけんにおける勝敗(勝ち=1、引き分け=0、負け=−1)」と定義すれば
比較関数自体は(プロトタイプ宣言に反しない形式で)定義可能かと思われます。)

以上を踏まえた上で質問です。
1.qsort関数は、「比較関数に対し、推移律を満たすことを要請する」ことが
  関数の外部仕様として定められているのでしょうか?
  定められている場合、その記述がある資料もご提示頂けると助かります。

2.qsort関数が「比較関数に対し、推移律を満たすことを要請しない」場合、
  推移的でない比較関数とレコード群に対し、実行結果はどのように
  定義されているのでしょうか?
  (1)明示的な未定義(仕様上「未定義」と記述されている。)
  (2)暗黙的な未定義(どこにも記述がないため、どう動くかは実装次第である。)
  (3)不定(どのように動いてもよいと仕様で定められている。)
  (4)「こう動くべき」という規定がある。
  こちらも、該当する資料がありましたらご提示頂けると助かります。

#自分なりにネット上で検索して調べてみたのですが、BohYoh.comのページ位しか
#見つけることが出来ませんでした…。

以上、お手数ですが回答のほうよろしくお願いします。





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


Name: たかぎ [URL]  ..熟練のプログラマー(46,767ポイント)   Date: 2008/07/06(日) 21:14   No:18141     
Title: Re:C標準ライブラリにおけるqsortの外部仕様についての質問    
ISO/IEC 9899またはJIS X3010を読んでください。
そこに記された内容が仕様のすべてです。それ以上は、各処理系の事情に過ぎません。


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

Name: Tachiken  ..かけだし(1,109ポイント)   Date: 2008/07/06(日) 21:48   No:18142 解決!     
Title: Re:C標準ライブラリにおけるqsortの外部仕様についての質問    
>>たかぎ さん
素早い回答ありがとうございます。
ご指摘の通り、JIS X3010を調べてみたところ、以下の記述がありました。

以下引用
=============================================================================================
(sizeバイトから成る)同じオブジェクトの組(配列中でのその時点での位置には関係なく)が複数
回比較関数に渡される場合、その結果は、毎回一貫していなければならない。すなわち、qsort関数に対
する比較関数は、配列の全順序を定義しなければならず、bsearch関数に対する比較関数では、同じオブ
ジェクトとキーとの比較結果は、常に同じでなければならない。
=============================================================================================
引用ここまで

この記述によれば「比較関数は配列の全順序を定義しなければならない」とありますので、
推移律を満たさない比較関数は上記の条件を満たしていない(=動作は未定義)ことに
なりそうです。

#ただ、「結果が毎回一貫していなければならない」ということと、「配列の全順序を定義する」
#の間には論理的なギャップがある(例えば、じゃんけんの例では「結果は毎回一貫している」が
#「配列の全順序は定義しない」)ので、個人的には接続語「すなわち」に違和感を感じます…

ネット上でqsortの使い方を説明したサイトは色々拝見したのですが、「qsort(やbsearch)を
使用する際は、比較関数が全順序を正しく定めることに気をつけないといけない」ということを
記述しているサイトが見つからず、個人的に疑問に思ったために質問させて頂きました。


ひとまず、回答ありがとうございました。


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

Name: ゾン兵衛  ..ぴよぴよ(878ポイント)   Date: 2008/07/07(月) 00:42   No:18143     
Title: Re:C標準ライブラリにおけるqsortの外部仕様についての質問    
 
>じゃんけんの例では「結果は毎回一貫している」が「配列の全順序は定義しない」

 違います。
"パー" > "グー"
"グー" > "チョキ" -> この時点で、"パー" > "チョキ"である。
"チョキ" > "パー" -> ここで結果が逆になっている。
よって、じゃんけんの場合は"結果が毎回一貫していない"です。
 


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



Name: 玲奈  ..ぴよぴよ(113ポイント)   Date: 2008/07/06(日) 15:13   No:18125       
Title: 初心者が作るゲームは・・・・    
初めまして、C言語を学び始めたばっかりの初心者です;;
ゲームプログラミングの館を見て私もゲームを作ってみたいと思っているのですが、初心者がRPGやシミュレーションゲームなどを作るのは無謀でしょうか;;?やはり初めはもっと簡単なゲームから作り始めた方が良いのでしょうか?
助言していただけるとありがたいです(> <;;)


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


Name: たかぎ [URL]  ..熟練のプログラマー(46,304ポイント)   Date: 2008/07/06(日) 15:31   No:18126     
Title: Re:初心者が作るゲームは・・・・    
> 初心者がRPGやシミュレーションゲームなどを作るのは無謀でしょうか;;?

失敗しても特に実害はないので、やってみてもよいかと思います。
上手くいかなければ、その時点で考え直しても遅くありません。
ただし、他のスタッフを巻き込んだり、多額の投資を行うのであれば、少し慎重になった方がよいでしょうね。



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

Name: 管理人 [URL]  ..伝説のハッカー(613,365ポイント)   Date: 2008/07/06(日) 15:42   No:18128     
Title: Re:初心者が作るゲームは・・・・    
こんにちは。
C言語の経験がある程度あって、ゲームを作るのが初めてなのと、C言語の経験も、ゲーム制作の経験も無いのでしたら少しハードルを下げた方が、
逆に近道だと思います。
難しい事に挑戦した方が、得るものが大きいのは確かですが、人間ですから
うまく出来ていっていたり、自分が思うとおりに動作したりするたびに、喜びを感じ、
作製意欲がわいていくものだと思います。
最初に難しいものを選びすぎて、やれどもやれどもうまく行かないと、さすがにやる気がそがれてしまう
場合もあるかと思います。
それなら、思いっきり簡単なものから作った方が逆に楽しいと思いますよ。
例えばジャンケンから作ってみて下さい。
最初はコンソール画面で行うものでいいと思います。

printfで「ジャンケン・・」と表示して、scanfでグーチョキパーに対応した数字1,2,3のどれかを入力したら乱数で生成したジャンケン結果が表示される・・。

こんな単純なものでも、Cの経験がないと案外難しく感じるものでしょう。
こういう処理はゲームでは本当に基本になってくると思います。

これが出来たら今度はDXライブラリではどうやって実装するのだろうと考えます。
裏画面処理や、キー入力監視、リアルタイム処理の仕方など、学ばないといけない事は沢山あるはずです。
少しずつと言っても、勉強しないといけない事は色々あります。

しかしこれらはやる気を維持する為の提案ですから、もちろん「自分はRPG作製したいんだ!」「どんな壁にぶつかろうと、作りたいものを制作できるなら打ち勝てる!」というガッツがあればそちらから
制作して行ってもいいと思います。
好きこそものの上手なれ、です。
それが好きならどんな努力でも惜しまないと思います。頑張って下さい。


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

Name: 玲奈  ..ぴよぴよ(226ポイント)   Date: 2008/07/06(日) 19:11   No:18136 解決!     
Title: Re:初心者が作るゲームは・・・・    
たかぎさん、管理人さん返信ありがとうございますm(_ _)m
趣味で作ろうと思っているだけなので投資とかはないのですが、基本から初めてみようと思います。ある程度出来るようになってからRPGなどに挑戦してみることにします!
ありがとうございました!


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



Name: 迷える羊  ..入門者(3,970ポイント)   Date: 2008/07/04(金) 16:11   No:18100       
Title: 画像読み込みについて    
画像読み込みについてなのですが,通常私は画像をメモリに一度読み込んで使用しています.その場合,メモリに読み込む画像が多すぎると,読み込まれない画像が出てくることは無いでしょうか?

現在起こっている問題は,宣言した配列に画像をそれぞれ入れていき,表示するという動作時に発生します.


int img_gazou[10];

img_gazou[0] = LoadGraph("aaa/aaa.png");
img_gazou[1] = LoadGraph("aaa/bbb.png");
img_gazou[2] = LoadGraph("aaa/ccc.png");
img_gazou[3] = LoadGraph("aaa/ddd.png");
img_gazou[4] = LoadGraph("aaa/eee.png");


この方法で同じようにメモリに画像をたくさん取り込んでいった後,img_gazou[n]を呼び出します.するとnの値が0の時は描画されるのに,1の時は描画されないという問題が発生しました.同じ方法で読み込んだにもかかわらず,その配列に読み込まれている画像が描画されないというのはなぜなのでしょうか?こちらではなぜ描画されないのか分かりません.

ご返答よろしくお願いいたします.


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


Name: Mist  ..中級者(13,063ポイント)   Date: 2008/07/04(金) 16:33   No:18101     
Title: Re:画像読み込みについて    
表示されないときのimg_gazou[n]に入っている値を確認してください。
−1になっていたらLoadGraphの時点で画像の読み込みに失敗しています。
画像のファイル名やパスが間違っていないかを確認してください。


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

Name: 迷える羊  ..入門者(4,126ポイント)   Date: 2008/07/04(金) 20:17   No:18104     
Title: Re:画像読み込みについて    
img_gazou[n]などのように,配列ではなくgazouのように,ただの変数であっても同じ現象が起こるので,nの値は関係ないかもしれません.
パスは確実に合っています.なぜなら,読み込める変数と読み込めない変数で同じパスを入力した場合,読み込める変数ではしっかり読めこめるからです.

gazou = LoadGraph("image/aa.png");
gazou1= LoadGraph("image/aa.png");

DrawGraph(0,0 ,gazou,FALSE);//表示できる
DrawGraph(0,100,gazou1,FALSE);//表示できない


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

Name: Mist  ..中級者(13,132ポイント)   Date: 2008/07/06(日) 07:58   No:18124     
Title: Re:画像読み込みについて    
現象を再現できる最小限のソースを提示することは出来ますか?

現状では、何らかのバグによってエリア破壊が発生しているのでは?というような憶測の回答しか出来ません。


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

Name: 管理人 [URL]  ..伝説のハッカー(613,667ポイント)   Date: 2008/07/06(日) 15:50   No:18129     
Title: Re:画像読み込みについて    
沢山画像を読み込んだら、前のが無効になることはありません。

img_gazou[0] = LoadGraph("aaa/aaa.png");
img_gazou[1] = LoadGraph("aaa/bbb.png");
img_gazou[2] = LoadGraph("aaa/ccc.png");
img_gazou[3] = LoadGraph("aaa/ddd.png");
img_gazou[4] = LoadGraph("aaa/eee.png");

この後、

for(i=0;i<4;i++){
printfDx("%d\n",img_gazou[i]);
}

を書いて、中身を表示させてみて下さい。全て-1以外が表示されますか?
もしこれで正常なら、他の配列がオーバーフローなどを起こして要素の値が書き換わってるのかもしれません。
または、この配列自身、用意する要素数が足りていないとか。

どうしてもわからなければ、こちらがコンパイル出来る形にしてソースを投稿してもらえると解決し易いかと思います。
プロジェクトごと圧縮してもらえると助かります。


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



Name: 新参  ..ぴよぴよ(333ポイント)   Date: 2008/07/03(木) 21:24   No:18080       
Title: エクセルの課題作成について    
投稿内容はC言語に限らないでよいとのことなのでエクセルについて質問します。
もしエクセルのことなどは質問してはダメでしたらスルーしてください><

エクセル初級者の方(年齢は20〜40歳くらいの方、6人ほど)を対象とした課題を二日分(時間になおして10時間ほど)つくることになったのですが、どのような課題が向いているでしょうか?
長い時間をかけてやらねばならないので出来る限り楽しくできて飽きないものがよいとは思うのですが、
良い考えが思い浮かびません。またエクセルVBAは使用禁止です。

課題自体は私が作ります。
課題の内容というかテーマのようなものを挙げていただければうれしいです。
エクセルを学ぶ上で、こんな課題がおもしろかったみたいなものがあればお聞かせください。


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


Name: 紅葉  ..ぴよぴよ(50ポイント)   Date: 2008/07/04(金) 00:02   No:18087     
Title: Re:エクセルの課題作成について    
平均を求めるSUMなどの使い方などはどうでしょうか?
他にも余りの初級者さんでしたら
ctrl + C でコピー などよく使う物や
ctrl + E や B で オフィスが便利に使えるということを教えてあげてみてはどうでしょうか?


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

Name: やそ  ..比類無きプログラマー(75,864ポイント)   Date: 2008/07/04(金) 12:55   No:18099     
Title: Re:エクセルの課題作成について    
データの集計をおこなうSUMや平均を出すAVEは押えておくとして、

ttp://www.excel.studio-kazu.jp/
「エクセルの学校」のライブラリはそこそこ充実していて、テーマ別にピックアップしやすいと思います。

掲示板にも優秀な方が集まっているので、分からないことは何でも聞いちゃうと良いです^^
最近はご無沙汰ですが、以前は非常にお世話になっていました。

表を簡単なグラフ(棒、円、折れ線)に変換したり位は挑戦させてみると良いと思います。
結構グラフの見栄えとかって凝る人(おいら)もいますしね^^

ワンポイントテクニックとして、”フィルドラッグ"あたりは活用度も高くて便利さの実感もできるので
オススメです。

最近はマクロやVBとかに凝りだして、通常の表関数とかはお決まりの簡単なものばかりしか使っていないやそでした^^;


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

Name: 新参  ..ぴよぴよ(365ポイント)   Date: 2008/07/06(日) 15:41   No:18127 解決!     
Title: Re:エクセルの課題作成について    
遅くなってすいません
お二方のおかげでなんとか課題できました!
ありがとうございました(ペコリ


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



Name: マキガミ  ..初心者(6,950ポイント)   Date: 2008/07/03(木) 22:31   No:18083       
Title: C++の入門書    
こんばんは。
来週からの研修で、C++のクラスを作ることになりました。
C++の入門書を買うことにしたんですが、
どれを買っていいのかまだ決まってません。
よろしければ、オススメの入門書を教えていただけないでしょうか?


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


Name: バグ  ..比類無きプログラマー(94,716ポイント)   Date: 2008/07/04(金) 10:04   No:18095     
Title: Re:C++の入門書    
個人的には下記URLの本ですね。非常に分かり易いですよ。
ただ、C言語をある程度理解している事を前提として書かれているので、C言語とC++の共通部に関してはほとんど説明がありません。もし、C言語に全く触れた事がないというのであれば、勉強しておいた方がいいと思います。
あ、それから、基本的にSTLについての説明はありませんのでご注意ください。

http://www.amazon.co.jp/%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E5%85%A5%E9%96%80-%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%95%E3%81%8B%E3%81%8A-%E3%81%BE%E3%81%84/dp/4872835441/ref=sr_1_1?ie=UTF8&s=books&qid=1215133084&sr=1-1


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

Name: マキガミ  ..初心者(6,896ポイント)   Date: 2008/07/04(金) 23:34   No:18107     
Title: Re:C++の入門書    
返信ありがとうございます。
C言語の知識は、Cの入門書を一通り読み、ある程度は理解しています。
コメント書いている方もオススメしているので、一度書店で見てみます。


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

Name: マキガミ  ..初心者(6,963ポイント)   Date: 2008/07/05(土) 22:55   No:18123 解決!     
Title: Re:C++の入門書    
書店にバグさんが勧めてくれた入門書置いてなかったので、
他の入門書を買いました。
この入門書で頑張ってみます。
ありがとうございました。


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



Name: グラウナー [URL]  ..ぴよぴよ(202ポイント)   Date: 2008/07/05(土) 20:26   No:18119       
Title: printfとputcharの違い    
タイトルの通りprintfとputcharの違いがイマイチわかりません・・・
例えば本では
#include<stdio.h>
int main(void)
{
int a;
puts("整数を入力してください。");
printf("整数:");scanf("%d",&a);

while(a>=0)
{
printf("%d",a);
a--;
}
putchar('\n');
return(0);
}
となってるのですが下から3行目の部分を
printf("\n");
と変えても同じですよね?何でわざわざputcharという関数を使うのかがわかりません・・・


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


Name: tkmakwins15 [URL]  ..比類無きプログラマー(81,121ポイント)   Date: 2008/07/05(土) 20:37   No:18120     
Title: Re:printfとputcharの違い    
printfは、整数や小数などのデータを文字列として整えて出力する関数です。
putcharは、1バイト文字の一文字を出力する関数です。

この場合は、変えても問題ありません。(putcharのほうが文字列整形がないぶん少し高速かな?)


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

Name: グラウナー  ..ぴよぴよ(246ポイント)   Date: 2008/07/05(土) 22:28   No:18122 解決!     
Title: Re:printfとputcharの違い    
なるほど納得できました。
わかりやすい的確な解答ありがとうございました。
またわからない事がありましたら是非よろしくお願い致します。


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



Name: 管理人 [URL]  ..伝説のハッカー(611,976ポイント)   Date: 2008/07/04(金) 04:54   No:18093       
Title: ■四聖龍神録Plusプロモーション動画完成■    
四聖龍神録Plusのプロモーション動画完成しました!
現在ニコニコにうpしています。

四聖龍神録Plusに興味をお持ちくださっている方はもちろん、
「ゲームをするのはメンドクサイが、どんなゲームかは見てみたい」という方も是非チェックを!w

その1

その2


その2はかなりネタバレ含みますので、まだプレイ中、または今後プレイ予定の方はご用心を!!


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


Name: <kor  ..入門者(2,704ポイント)   Date: 2008/07/04(金) 21:24   No:18106     
Title: Re:■四聖龍神録Plusプロモーション動画完成■    
ニコニコとzoomeにもUPしたほうがいいですよ。
ニコニコは今MADとかが消えて荒れたり見に来る人少なくなってますから・・・
悲しいことです


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

Name: 翡翠  ..かけだし(2,331ポイント)   Date: 2008/07/05(土) 00:28   No:18108     
Title: Re:■四聖龍神録Plusプロモーション動画完成■    
 動画、見てきましたよ!
 かなりいい紹介動画ですね。ネタばれはありましたが、どんな弾幕があるのかがだいたいわかりました。私じゃファンタズムの最後の弾幕とか、見られそうにないのでありがたいです。
 視聴者の批評もなかなか良かったですよ。特に、おまけ弾幕と文字弾幕の受けが良いみたいですね。


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

Name: 管理人 [URL]  ..伝説のハッカー(612,846ポイント)   Date: 2008/07/05(土) 20:43   No:18121     
Title: Re:■四聖龍神録Plusプロモーション動画完成■    
><korさん
zoomeですか、利用した事がないですが、アップしてみます。
ニコニコは今見に来る人が減ってるのでしょうか?
確かに規制は厳しくなりましたね。

>翡翠さん
ありがとうございます!かなりネタバレしてますねw
ゲームはする気ないけど、見てみたいって人にも見て欲しかったので、あんな仕上がりになりました。
どうも、オマケの方に力を入れたほうがよさそうですね^^;
本編じゃふざけ弾幕を入れられないのである意味はっちゃけられて楽しいですw


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



Name: C初心者  ..ぴよぴよ(913ポイント)   Date: 2008/07/05(土) 13:40   No:18112       
Title: 配列の値の渡し方    
InitArrayという配列のData2の値をData1に移す関数を考えているのですが
下記ですと1番目しか入れ替えてくれません。
どうすればよいのでしょうか?
また同じことを2次元配列でする場合、どのようにすればいいのでしょうか?

void InitArray(int Data1[] , int Data2[]);

void InitArray(int Data1[] , int Data2[])
{
int A_MAX = sizeof(Data1)/sizeof(Data1[0]);
for(int i=0; i<A_MAX; i++){
Data1[i] = Data2[i];
}
}

//loop内
InitArray(z , x);


for(int i=0; i<10; i++){
DEB_TEXT(" Array = %d",(int)z[i]);
}


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


Name: Hermit  ..上級者(20,781ポイント)   Date: 2008/07/05(土) 14:04   No:18114     
Title: Re:配列の値の渡し方    
InitArray() は、渡されたポインタが、配列の要素がいくつであるか判断手段がありません。
それを実現するには、InitArray(int *,int *,size_t size) などの様に
配列のサイズか、配列の個数などを渡す必要があります。

現在は、InitArray(int *, int *) と同じ事だということはわかってますよね…。


別のやり方では、わざわざ InitArray() 関数を作らなくても、
配列である限りは、1次元であろうと2次元であろうと、連続した領域にある事は保証されている為、
memcpy() や、memmove() で、メモリー領域をコピーしてしまえばいいだけです。
当然ではありますが・・・これも配列のサイズは必要です。


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,231ポイント)   Date: 2008/07/05(土) 16:47   No:18118     
Title: Re:配列の値の渡し方    
C++でよければ、
template <typename T, std::size_t N>

void InitArray(T (&Data1)[N], T (&Data2)[N])
{
std::copy(&Data2[0], &Data2[N], &Data1[0]);
}


で済みます。
どうしてもCで、とうことであれば、やはりサイズを渡すしかありません。


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



Name: 木之元  ..ぴよぴよ(19ポイント)   Date: 2008/07/05(土) 13:44   No:18113       
Title: ゲームを作るのにあったら便利な関数    
2Dゲームを作るのにあったら便利な関数ってあるでしょうか?
例えば、物体Aと物体Bの当たり判定など、
皆さんの経験上で何かあったら教えてください><


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


Name: 管理人 [URL]  ..伝説のハッカー(612,698ポイント)   Date: 2008/07/05(土) 14:32   No:18115     
Title: Re:ゲームを作るのにあったら便利な関数    
沢山ありますよ。どんなゲームを作るかによって必要な関数はそれぞれ違うでしょうけど、
例えばDXライブラリで言えばどんなゲームでも必要になる関数の例でこんなものがあると思います。

http://dixq.net/g/#40

どれ位キーが入力されているかを監視しないと、メニュー選択判定や押しっぱなしの判定などが出来ないので。

私は他に「レインボー色を生成する関数」やSTGにかぎって言えば、弾番号を2つ渡せばその弾同士が成す角度や距離が返ったりする関数を愛用しています。

指定した色を取得するのは簡単ですが、レインボー(赤、橙、黄、緑、青、藍、紫等)をうまく変化させながら変化させた色を取得するのは少し難しいです。そこで、カウンタを渡せばその数字にあったレインボー色が取得できる関数があればキレイにレインボーを表現出来ます。

どんなゲームを作るかによって必要な関数は様々ですが、汎用的に使える関数を作るようにすれば後々楽になりますね。


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

Name: Justy  ..ハッカー(197,571ポイント)   Date: 2008/07/05(土) 16:20   No:18116     
Title: Re:ゲームを作るのにあったら便利な関数    
  >2Dゲームを作るのにあったら便利な関数ってあるでしょうか?

 そうですね、ゲームによるところが大きいので、使う必要もないものも
あるでしょうが、いくつか適当に挙げてみます。

¶ 数値補完
 やはり線形・スプラインなどの数値の補完系は必須といってもいいのでは
ないでしょうか。
 管理人さんが仰っていたような色もそうですし、座標、速度などなど
補完してあげないと滑らかな動きにはならないので、このあたりの関数は
大抵のゲームで必要になるかと思います。

百匹目の猿 ばねでイージング
ttp://100th.blog96.fc2.com/blog-entry-6.html


 こんなのも用意しておくと、パラメータ次第でいろんな動きに化けるので
重宝します。

 後は、乱数を有る程度の数を配列にぶち込んで、それぞれの間をなめらかに
補完するやつとか。
 地震とかカメラの手ぶれとか、マシンガンを撃つときの方向補正とかに
重宝します。


¶ 即時復帰型ファイルロード
 ファイルロードはデータ量によっては時間がかかることが多いので
非同期で行える関数があれば、ゲームの進行を止めることなくファイルを
読み込むことができます。


¶ デバッグ系
 ログだったり、パフォーマンスだったり、メモリアロケート状況を調べる
(リークしてないかとか)ものとか。


 細かく挙げればきりがないんですけど、まずはこんなところです。


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,199ポイント)   Date: 2008/07/05(土) 16:43   No:18117     
Title: Re:ゲームを作るのにあったら便利な関数    
どんなプラットフォームで、どんなゲームを作るかによりますが、ほぼすべてに共通していえるのは、性能のよい擬似乱数でしょうね。
既存のライブラリもそれなりにありますが、常にそれらが利用できるとは限らないので。


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



Name:  ..ぴよぴよ(15ポイント)   Date: 2008/07/05(土) 00:43   No:18109       
Title: C言語の勉強方法について    
皆さんこんばんわ^^
ゲームを作るためにC言語を勉強し始めたのですが、行き詰ってしまって・・・・
ゲームを作るために勉強をしている場合、作りながら必要な文を勉強して行くのがいいのか、
それともC言語を一通り勉強してから作り始めればいいのか他に方法があるのか^^;
ゲームを作るためだけに勉強して行く場合に、一番効率のいい勉強法をどなたか教えていただけませんか?
自分はこのようにして勉強していったとかあればお返事いただきたいです。
よろしくお願いいたします。


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


Name: Justy  ..ハッカー(196,902ポイント)   Date: 2008/07/05(土) 02:40   No:18110     
Title: Re:C言語の勉強方法について    
 こんばんわ。

 どこまで参考になるかわかりませんが。



 >ゲームを作るために勉強をしている場合、作りながら必要な文を勉強して行くのがいいのか、
 >それともC言語を一通り勉強してから作り始めればいいのか他に方法があるのか^^;

 基本的にはゲームだろうがゲーム以外だろうが同じで、どちらでもいいんじゃないでしょうか。
 どちらにしても、一通り学ぶには参考書を読むだけではだめで、
実際にプログラムを書かないと身に付かないので、作るのが「作りたいゲーム」なのか
「言語を覚えるためのサンプルプログラム」くらいの違いでしかないので、
さほど変わらないと思います。



 >一番効率のいい勉強法をどなたか教えていただけませんか?


1 良書を読む
 基本ですね。
 言語に基礎に関するものを読み終わったら、応用モノとか、プログラミングそのものに関する
ものも読むと更に良しです。

2 実践
 書いて、悩んで、調べて、試す。
 これも基本ですね。

3 人のソースコードを読解

 多くのケースで、他人のソースコードを読むのは非常に厄介なのですが
他人のソースコードを読み解くと、いろんな意味でいいプログラムの書き方、
自分では思いつきもしないようなテクニック、ソースコードの分析する能力等が学べます。

 これらを自分の中できっちり消化(実際に自分で書いて試す等)することが
できれば普通に参考書片手に勉強するだけよりかは遙かに効率良く学べると思います。

 特に優れたソースコードだと効果は倍増です。
 「ダメなソースコード」でも「ダメと判って読解する」なら、どこがどうダメなのかを
分析できるのでいろいろ勉強になります。

4 他人にレビューしてもらう

 書いたプログラムをできる人に見てもらって、ダメなところをビシバシ指摘して
もらって下さい。
 その指摘に納得できなければ、理由もちゃんと訊いて下さい。
 結構、キツいときもありますが、必ず自分の為になるはずです。



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

Name:  ..ぴよぴよ(0ポイント)   Date: 2008/07/05(土) 04:35   No:18111 解決!     
Title: Re:C言語の勉強方法について    
了解です(°ー°)ゞ
まずは、参考書が基本ですね^^
このサイトの別ページに出てきたDXの本家ページにCM載ってたのでそれ買って一度ゲームを作ってみます^^
基本を押さえながらコピペ&自分で考えためしに作る→本格的に書き始める
のようにやってみたいと思います。(game制作の良書があれば教えてください(><)
近くにC言語できる人がいないのでぜひここに添付させてビシバシ言ってもらえたらと思います。
あと、皆さんの若かれしころのソースが残っていたらまた見せてくださいね^^
今回は本当にありがとうございました。とてもわかりやすかったです。


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



Name: スプー  ..ぴよぴよ(407ポイント)   Date: 2008/07/02(水) 01:53   No:18029       
Title: 擬似的配列の動的確保とその解放    
目的の配列 er[301]を「double *er=NULL;」と宣言して
その後でcallocにより領域の動的確保、初期化をしました。
そしてファイルを読み込んで値を代入して最後にヒープ領域を解放するプログラムを作成しました。

初めはborland5.5で行っていたのですが配列を2次元に拡張するとうまくいかなくなりました。
自分なりに条件を変えながら変数を調べたりした結果
最初に確保したアドレスと代入した後のアドレスが変わっている事までは分かったのですが
それがなぜそうなるのかまでは分かりませんでした。

コンパイラを変えてVC++2008をインストールして試してみたところ1次元配列のプログラムで
一応目的の結果は達成しているものの最後のヒープ解放でエラーが出ました。以下エラー文です。

# WindowsによってDataCombine.exe(このプログラム名)でブレークポイントが発生しました。
# ヒープが壊れていることが原因として考えられます。
# DataCombine.exeまたは読み込まれたDLLにバグがあります。

ソースも載せておきます。

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

int main()
{
FILE *fp;
char buf[128];
double *freq=NULL, *er=NULL, *ei=NULL;
int i;

freq=(double *)calloc(301, sizeof(double));
if(freq==NULL) goto ErrorEnd;
er=(double *)calloc(301, sizeof(double));
if(er==NULL) goto ErrorEnd;
ei=(double *)calloc(301, sizeof(double));
if(ei==NULL) goto ErrorEnd;

if((fp=fopen("c:\\w001.prn", "r"))==NULL){
fprintf(stderr, "%sは存在しない\n", "w001.prn");
goto ErrorEnd;
}
fgets(buf, 128, fp); //ファイルの1行目はとばす
i=0;
while(!feof(fp)){
if(fgets(buf, 128, fp)!=NULL)
sscanf(buf, "%lf %lf %lf", &freq[i], &er[i], &ei[i]);
freq[i]/=1000000000;
i++;
}
fclose(fp);

for(i=0; i<301; i++) printf("%lf %lf %lf\n", freq[i], er[i], ei[i]);

ErrorEnd:
free(freq);
free(er);
free(ei);

getchar();
return 0;
}


読み込むファイルw001.prnは1行目は「freq er ei」というタイトル、
2行目からはタブで区切られた3つの数値が301行あるというものです。

私の環境としてOSはvista home premiumです。
どこに問題があるでしょうか。分かる方どうぞご教授お願いします。
よろしくお願いします。


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


Name: 組木紙織  ..熟練のプログラマー(53,282ポイント)   Date: 2008/07/02(水) 06:26   No:18031     
Title: Re:擬似的配列の動的確保とその解放    
正しく入力するファイルがあれば問題なく動くプログラムだと思います。

問題があるとすれば入力するファイルかな。
多分行数が301行を超えているとか、数値以外が入っているとか
そんな感じの問題だと思います。

#最後のgetchar()が気に入らないけど


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

Name: box  ..ハッカー(114,440ポイント)   Date: 2008/07/02(水) 07:23   No:18032     
Title: Re:擬似的配列の動的確保とその解放    
入力データを5個とか10個とか少ない数にして、
コード中の301を個数に対応するように修正してから
コンパイル〜実行したらどうなるでしょうか。

また、差し支えなければ、入力データの先頭数行分を見せていただけますか?
こちらでも同じ現象が起きるかどうか確認してみたいです。


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

Name: スプー  ..ぴよぴよ(912ポイント)   Date: 2008/07/02(水) 17:11   No:18038 解決!     
Title: Re:擬似的配列の動的確保とその解放    
返答ありがとうございます。

お二方の意見を元に配列の数と入力ファイルを
いろいろ変えて調べたところ原因が分かりました。

入力ファイルの一番最後は
1行目はとばしているため
302行目:25.0000 29.0168 34.8939[改行]
303行目:[EOF]
となっていました。
そのため、302行目をfgetsで読み込んだあとiはインクリメントされて301となり
ファイルポインタはまだEOFに到達していないのでwhileループは続行して
303行目でfgetsを行いEOF=-1なのでエラーとはならず、
定義していないfreq[301]にアクセスして書き込むため
ヒープが壊れてfreeで解放するときにエラーが出たのだと思います。

よって次のいずれかの方法で正常に動くようになりました。
1.ファイルの最後の改行を削除する。
2.callocによる領域確保を302個分とる。

fgetsによるファイルポインタの動きとEOFとNULLを混同していたために起きたミスでした。
ご助言していただきありがとうございました。


>組木紙織さん
>#最後のgetchar()が気に入らないけど
VC++は初めて使ったので勝手が良く分からなかったので
コンパイルしたあと直接実行ファイルから起動してました。
そのとき一瞬で閉じてしまうのでgetchar()を入れたのですが…。
汚くてすいません。
他に処理を一時停止するような便利なコマンドや関数があるのでしょうか。


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

Name: 組木紙織  ..熟練のプログラマー(55,256ポイント)   Date: 2008/07/03(木) 23:05   No:18085     
Title: Re:擬似的配列の動的確保とその解放    
>他に処理を一時停止するような便利なコマンドや関数があるのでしょうか。
bcc5.5を使っていたのならコマンドプロンプトから実行することができるはずなので、
コマンドプロンプトから実行してみてください。
VC++ならデバックなしで実行をしてみるのも一つの方法です。
そうすれば処理を一時停止にしなくても結果が見れるはずです。



以下エラー検査すべてした(はずの)ソースコード。
2次元動的配列も使っています。

/*
インクルードできなかったのでコメントアウト
#include <stdafx.h> */
#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 128 /*バッファサイズ*/
#define LINE_SIZE 3 /*数字列の行数*/
#define ROW_SIZE 3 /*列数*/

void myFree(double** pd)
{
int i;
for(i=0;i<ROW_SIZE;i++){
free(pd[i]);
}
free(pd);
}
int main(void)
{
FILE *fp;
char buf[BUF_SIZE];

double **freqs;
int i,j;
char* file_flag;

freqs = (double **) malloc(ROW_SIZE*sizeof(double*));

if(freqs == NULL ){
printf("erroe\n");
return 0;
}

for(i=0;i<ROW_SIZE;i++){
freqs[i] = malloc(LINE_SIZE*sizeof(double));

/*領域確保に失敗したら今までに確保した領域を解放して終了*/
if(freqs[i] == NULL){
printf("error:%d\n",i);
for(j=0;j<=i;j++){
free (freqs[j]);
free(freqs);
}
return EXIT_FAILURE;
}
}



/* if((fp=fopen("c:\\w001.prn", "r"))==NULL){ */
if((fp=fopen("w001.txt", "r"))==NULL){
fprintf(stderr, "%sは存在しない\n", "w001.txt");
myFree(freqs);
return EXIT_FAILURE;
}
fgets(buf, 128, fp); /*ファイルの1行目はとばす*/
i=0;



for(i=0;i<LINE_SIZE;i++){
while(!feof(fp)){
file_flag = fgets(buf,128,fp);
/*fgets()の読み込みが失敗したとき*/
if(file_flag == NULL){
printf("file error1\n");
myFree(freqs);
return EXIT_FAILURE;
}else{
/*数字が正しく入ってなかったとき*/
if(sscanf(buf, "%lf %lf %lf", &freqs[0][i], &freqs[1][i], &freqs[2][i])!=3){
printf("file error22\n");
myFree(freqs);
return EXIT_FAILURE;
}
}
goto FILENEXT;
}
/*fgets()の読み込みまでが正確だがファイルが短かった時*/
printf("file error2\n");
myFree(freqs);
return EXIT_FAILURE;

FILENEXT:
continue;
}
fclose(fp);




for(i=0; i<LINE_SIZE; i++) printf("%lf %lf %lf\n", freqs[0][i], freqs[1][i], freqs[2][i]);



myFree(freqs);

return EXIT_SUCCESS;
}


久々にCを触ったのでちょっと自信がありません。
突っ込みどころがあったらご自由にどうぞ。


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

Name: スプー  ..かけだし(1,303ポイント)   Date: 2008/07/04(金) 01:35   No:18092     
Title: Re:擬似的配列の動的確保とその解放    
組木紙織さん。
返信ありがとうございます。
なるべくコマンドプロンプトから呼んで余計なコードを増やさないように努力したいと思います。

また、改良したソースありがとうございます。
自分でも入力ファイルの改行を消したり、不要な配列要素を足したりするのは
なんだか汚いとは思ってはいたのですが…。
whileループをfor文で囲むところやそれぞれのエラー処理など参考にいたします。

一つ気になったのはmallocのところです。
私はmallocは領域を確保するだけで、callocだとプラス初期化もしてくれるものだと考えて、
何が入っているか分からないよりは0が入っていた方がいいだろうと、callocを使いました。
また、mallocの使い方を調べていると領域を確保したあと
memsetで明示的に0を代入しているソースコードを見たこともあります。

ところが、自分でmallocで領域を確保した直後の配列の中身を見てみるときちんと0が入っていました。
これは処理系によっては0になるとは限らないと考えていいのでしょうか。
そもそも、自分の環境で正常に動いていて自分だけが使うプログラムなら
処理系のことも関係なくどっちでも構わないという話なのでしょうか。

初期化に関連して配列のポインタ変数を宣言するときも「NULLを入れておいたほうがいい」と
どこかで聞いたことがあったので私はそうしていたのですが、これも好みによるのでしょうか。

質問ばかりですいません。


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

Name: 組木紙織  ..熟練のプログラマー(55,474ポイント)   Date: 2008/07/04(金) 08:32   No:18094     
Title: Re:擬似的配列の動的確保とその解放    
malloc()に関しては領域の確保のみなので、0が入っていたのはたまたまです。

文字列を扱うときに配列を0で初期化をしておくと文字列終端が'\0'と定義してるので
アルゴリズム的には問題があるのに、たまたまうまく動く場合があったりするので、
プログラムに問題があっても動くよりは、動かないほうがよいと考えて自分でプログラムを書くときには
malloc()を使うようにしているだけです。
(malloc()+menset()=calloc()を考えていいです)

配列のポインタに関してはNULLで初期化や、NULLを解放後に代入をしておくと、二重開放や確保していない領域の開放の
問題に対処することができるので、そのようにしたほうがいいという人もいますが、
これもきちんとプログラムを組めば対処できるので、自分でプログラムを書くときは上記のようにしています。

このあたりは好みの問題がおおいですけどね。


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

Name: バグ  ..比類無きプログラマー(94,854ポイント)   Date: 2008/07/04(金) 10:25   No:18096     
Title: Re:擬似的配列の動的確保とその解放    
VisualStudio2008をお使いでしたら、ブレークポイントが使用できると思います。
bccコンパイラをお使いでしたら、『Turbo Debugger』というデバッガがあったと思います。使い方が分かりづらいかもしれませんか非常に便利です。また、フリーの開発環境である『BCC Developer』という便利なソフトがあります(下記URL参照)。この環境にコンパイラとデバッガを両方共登録しておけば、更に開発が楽になりますよ(^-^)


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

Name: バグ  ..比類無きプログラマー(94,887ポイント)   Date: 2008/07/04(金) 10:26   No:18097     
Title: Re:擬似的配列の動的確保とその解放    
うわ、下記URLを書き忘れてましたw
http://www.hi-ho.ne.jp/jun_miura/bccdev.htm


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

Name: スプー  ..かけだし(1,434ポイント)   Date: 2008/07/04(金) 20:40   No:18105     
Title: Re:擬似的配列の動的確保とその解放    
いろいろ疑問が解決しました。
ありがとうございます。

バグさんの教えてくれた『Turbo Debugger』と『BCC Developer』は
名前は聞いたことがあるのですが使い方が良く分からなかったので敬遠してました。
これを機会に覚えて使ってみようかと思います。

回答してくださったみなさん、ほんとうにありがとうございました。
また分からなくなったら質問するかもしれませんがその時はよろしくお願いします。


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



Name: sousi  ..初心者(6,584ポイント)   Date: 2008/06/28(土) 16:02   No:17903       
Title: 反復行動について    
ゲームでは、反復行動にはwhile文が使われている事が多いと思うのですが勉強している間にひとつ疑問が;
(以降、反復行動=ループ)

・ループの中にループは作れるのかどうか?

ループの中にループが入れれるのであればどのようにすればいいのでしょうか?
いま、考えているのは


・仮に一番外側のループをAと言ったとき
 そのループの中に1と言うループを入れる(添付参照)



このとき、一番外のループAの処理は

ループ1(条件を満たしたら)→処理1→ループ2(条件を満たしたら)→ループ1

となるのでしょうか?


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


Name: へろり  ..初心者(7,779ポイント)   Date: 2008/06/28(土) 16:10   No:17904     
Title: Re:反復行動について    
言いたいことが今ひとつ分からないのですが。
とりあえず書いてみればいいんじゃないでしょうか?


int i = 0;

while(i++ < 10){
int j = 0, k = 0;
while(j++ < 10){
printf("j = %d\r\n", j);
}
printf("処理\r\n");
while(k++ <= 10){
printf("k = %d\r\n", k);
}
}


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

Name: box  ..ハッカー(114,073ポイント)   Date: 2008/06/28(土) 17:03   No:17905     
Title: Re:反復行動について    
ループの中にループの中にループの中にループ…、
いくらでも作れます。


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

Name: たかぎ [URL]  ..熟練のプログラマー(43,595ポイント)   Date: 2008/06/28(土) 17:49   No:17909     
Title: Re:反復行動について    
ブロック(繰返し文も含む)の入れ子は、少なくとも127段階まで保証されます。
ただし、C99に対応していない処理系の場合は15段階までです。


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

Name: box  ..ハッカー(114,088ポイント)   Date: 2008/06/28(土) 18:20   No:17914     
Title: Re:反復行動について    
> ブロック(繰返し文も含む)の入れ子は、少なくとも127段階まで保証されます。
> ただし、C99に対応していない処理系の場合は15段階までです。

無限段階ではなかったのですね。
勉強になりました。


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

Name: kazuoni  ..上級者(19,985ポイント)   Date: 2008/06/28(土) 18:32   No:17917     
Title: Re:反復行動について    
> ブロック(繰返し文も含む)の入れ子は、少なくとも127段階まで保証されます。
> ただし、C99に対応していない処理系の場合は15段階までです。

自分もしりませんでしたぁ〜!昔友達に「いくらでも書ける」なんて堂々と言ってしまった記憶があるんですが・・・^^;


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

Name: たかぎ [URL]  ..熟練のプログラマー(44,016ポイント)   Date: 2008/06/28(土) 19:01   No:17920     
Title: Re:反復行動について    
> 無限段階ではなかったのですね。

翻訳限界なので、あくまでも規格上保証される最低限のものです。
普通はもっと多いはずです。
メモリは有限なので、無限というのは原理的に無理ですね。



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

Name: sousi  ..初心者(6,600ポイント)   Date: 2008/06/28(土) 19:42   No:17925     
Title: Re:反復行動について    
ちょっと休憩してる間にこんなに・・・・・ありがとうございます。(涙
ループの中にループは作れるんですね、勉強になりました^^

ところで、もうひとつの質問、

一番外のループ内の処理
ループ1(条件を満たしたら)→処理1→ループ2(条件を満たしたら)→ループ1

というような考えで合っているのでしょうか?


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

Name: やそ  ..比類無きプログラマー(74,635ポイント)   Date: 2008/07/01(火) 17:43   No:18021     
Title: Re:反復行動について    
>一番外のループ内の処理
>ループ1(条件を満たしたら)→処理1→ループ2(条件を満たしたら)→ループ1

>というような考えで合っているのでしょうか?

添付の図をそのまま見た場合・・・残念ながら違います。

ループA

 ループ1
 ループ1終わり

 処理1

 ループ2
 ループ2終わり

ループA終わり

という構造になっているようです。

処理1をループ1に入れたい場合ループ1の枠線の中に処理1が入るような図になるはずです。



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

Name: へろり  ..初心者(8,001ポイント)   Date: 2008/07/02(水) 02:27   No:18030     
Title: Re:反復行動について    
>一番外のループ内の処理
>ループ1(条件を満たしたら)→処理1→ループ2(条件を満たしたら)→ループ1

>というような考えで合っているのでしょうか?

添付の図をそのまま見た場合・・・残念ながら違います。


これはどうでしょうね。

sousiさんの言う(条件を満たしたら)というのは、ループの終了条件を満たしたら。
という意味で言っているのだと。
つまり、(条件を満たしたら)という部分でループが終了すると解釈できませんか。

これだと、sousiさんの認識で間違いではないはずです。


#ループは条件を満たしている限り回り続けるので、ここでちょっと噛み合ってないような気がします。


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

Name: やそ  ..比類無きプログラマー(74,595ポイント)   Date: 2008/07/02(水) 08:59   No:18034     
Title: Re:反復行動について    
Whileについてだから「条件を満たしたら」というのは「ループの継続条件」のことだと思ってました。

その辺の意識のズレがあれば、意味が違ってきますね^^;


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

Name: sousi  ..初心者(6,722ポイント)   Date: 2008/07/04(金) 18:38   No:18102 解決!     
Title: Re:反復行動について    
返信遅れてごめんなさい。モデムが故障してしまいまして^^;
言いたかったことは へろり さんの説明通りです。

ですが、これをゲームで使うとなるとものすごく処理が重くなってしまうようですね。
処理が軽く反復行動をやりたい場合にはやはりif文を使うほうがいいみたいです。

たくさんの解答ありがとうございました。困ったら、また助けてください^^


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

Name: たいちう  ..入門者(4,477ポイント)   Date: 2008/07/04(金) 19:19   No:18103     
Title: Re:反復行動について    
> ですが、これをゲームで使うとなるとものすごく処理が重くなってしまうようですね。
> 処理が軽く反復行動をやりたい場合にはやはりif文を使うほうがいいみたいです。

質問の背景が分かりませんが、勘違いしていませんか?

仮に100回同じ処理を行うとして、繰り返しの処理をループでしてもifでしても、
実行時間は変わらないでしょう。100回という回数を減らすことができたり、
多くなってしまうならば、実行時間は変わりますが、これは無駄な処理が
あるかどうかなので、ifの使用や多重ループとは別の話です。


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



Name: かなで  ..ぴよぴよ(31ポイント)   Date: 2008/07/04(金) 01:21   No:18090       
Title: avi動画の再生について    
はじめまして><

さっそくですが質問です。
音楽を鳴らしたりはできるのですが
動画の再生はどのようにすればできるのでしょうか?



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


Name: バグ  ..比類無きプログラマー(94,964ポイント)   Date: 2008/07/04(金) 10:44   No:18098     
Title: Re:avi動画の再生について    
開発環境や使用ライブラリが分からないのですが…
もしWIN32APIを使用でしたら、下記URLに詳しく紹介されてますよ。

http://www.geocities.jp/ky_webid/win32c/048.html


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



Name: 西村  ..ぴよぴよ(163ポイント)   Date: 2008/07/03(木) 18:34   No:18077       
Title: 文字列表示に関する質問    
 はじめまして。C言語に関しては基本ぐらいしか分からない素人ですが、よろしくお願いします。
 ゲームプログラミングの館を見ながら勉強させていただいていたのですが、困ったことがあったので
質問させていただきます。
 『サウンドノベル風文字列表示法』を見て、自分でちょっとノベルゲーム風の画面を作って見たので
すが(背景になる絵と、キャラの立ち絵二体と、メッセージウィンドを裏画面処理で描画させて)、そ
うしたら文字の表示がものすごく遅くなってしまいました。どうすれば解決出来ますでしょうか?


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


Name: Mist  ..中級者(12,999ポイント)   Date: 2008/07/03(木) 19:27   No:18078     
Title: Re:文字列表示に関する質問    
処理速度に関する質問は、西村さんの作られたソースに依存するところが大きいのでソースを提示していただけないことには的確な回答は得られにくいかと思います。

その場合、規約にあるとおり開発環境の提示も忘れないでください。


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

Name: やそ  ..比類無きプログラマー(75,542ポイント)   Date: 2008/07/03(木) 20:31   No:18079     
Title: Re:文字列表示に関する質問    
文字を表示するタイミングの取り方、もしくはそのタイミングを計る変数の増減を行う位置
がおかしくなっている可能性があります。
(あくまで可能性^^)

的確な回答を得るためには・・・
Mistさんの言われるとおり、規約に従い、再現性のある最小限のソースプログラムをご提示願います。


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

Name: 西村  ..ぴよぴよ(447ポイント)   Date: 2008/07/03(木) 22:59   No:18084     
Title: Re:文字列表示に関する質問    
 素早い返信ありがとうございます。一日ぐらい返信こないかな、なんて暢気な見込みをしていました…
切り出し箇所はここでいいのか不安ですが、以下がソースです。



for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}

if(Key[KEY_INPUT_RETURN]==2){
i=0;
ch_i++;
if(ch_i==5)
break;
}
  
if(i<=80-2 && ch[ch_i][i]!='\0' && counter%5==0){
i+=2;
strncpy(disp,ch[ch_i],i);
disp[i]='\0';
}

LoadGraphScreen( 0 , 0 , "back.png" , FALSE ) ;
LoadGraphScreen( 10 , 0 , "hito1.png" , TRUE ) ;
LoadGraphScreen( 300 , 0 , "hito2.png" , TRUE ) ;
LoadGraphScreen( 0,200,"wind.png",TRUE);


DrawFormatString(35,330,White,"%s",disp);




counter++;
ScreenFlip();



 ソースコードの上げ方間違えていたら修正します。
 開発環境はBorandC++ Compiler 5.5 必要情報かは解りませんが、我が愛機はノートパソコンのWindowsXPno
五年ぐらい前の古い奴で、あまり性能はよろしくないような……


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

Name: 木霊  ..中級者(10,983ポイント)   Date: 2008/07/03(木) 23:41   No:18086     
Title: Re:文字列表示に関する質問    

> LoadGraphScreen( 0 , 0 , "back.png" , FALSE ) ;
> LoadGraphScreen( 10 , 0 , "hito1.png" , TRUE ) ;
> LoadGraphScreen( 300 , 0 , "hito2.png" , TRUE ) ;
> LoadGraphScreen( 0,200,"wind.png",TRUE);

この4行が原因だと思われます

    ・・・・
これだと毎ループごとに画像データを読み込んで描画しているので大変遅くなります
プログラムの最初の方で
int Back_Gr_Handle = LoadGraph ( "Back.png" );
として画像を一度だけ読み込んでおき、描画する時には
DrawGraph ( 0, 0, Back_Gr_Handle, FALSE );
として読み込んだ画像を表示するようにしてみてください


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

Name: 西村  ..ぴよぴよ(463ポイント)   Date: 2008/07/04(金) 01:35   No:18091 解決!     
Title: Re:文字列表示に関する質問    
 木霊さん、回答ありがとうございます。
 返信していただいた通りにしたところ、無事に文字の表示速度を上げることが出来ました。

 書き込みしてすぐさま返信を下さったやそさんとMistさんにも改めてお礼をさせていただき
ます。何も知らない初心者なので、またお世話になるかと思いますが、そのときはまたよろし
くお願いします。


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



Name: tei  ..ぴよぴよ(151ポイント)   Date: 2008/07/03(木) 11:51   No:18065       
Title: 配列の動的拡張    
はじめまして。VC++2003,Win32アプリケーション,XPで質問です。
配列のクラスオブジェクトを動的に確保したいのですが、ご存知の方はご教授お願いします。

具体的には、
----------------------------------------

class AAA{
※省略
}

〜 WINMAIN(〜)
{
int a=3;
AAA[a];

}
----------------------------------------
→エラー:AAA[]に定数式が必要です。


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


Name: Blue  ..初心者(6,311ポイント)   Date: 2008/07/03(木) 11:56   No:18067     
Title: Re:配列の動的拡張    
VC++2003は
>int a=3;
>AAA[a];
のような記述はできません。

new演算子を使って配列を確保するか、STLのvectorあたりを使ってみてはどうでしょうか?


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

Name: tei  ..ぴよぴよ(211ポイント)   Date: 2008/07/03(木) 12:00   No:18068     
Title: Re:配列の動的拡張    
さっそくお返事ありがとうございます。
>STL
…はよくわからないのですが、
>new
を使って確保できるのであれば、具体的なやり方を教えていただけないでしょうか?
new AAA[a];とかってできるわけじゃ…ないですよね。


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

Name: Blue  ..初心者(6,359ポイント)   Date: 2008/07/03(木) 12:03   No:18069     
Title: Re:配列の動的拡張    
検索エンジンを使いましょう。

Googleで「new 配列 C++」で検索すればC++の入門のサイトで解説つきのものを
見れますよ。


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

Name: tei  ..ぴよぴよ(291ポイント)   Date: 2008/07/03(木) 12:12   No:18071 解決!     
Title: Re:配列の動的拡張    
返信遅くなりました(Googleで「new 配列 C++」を調べていました)
その結果できました!
AAA *o1 = new AAA[a];
でいいらしいです。Blueさん、どうもありがとうございました!


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

Name:  ..ぴよぴよ(5ポイント)   Date: 2008/07/03(木) 21:38   No:18082     
Title: Re:配列の動的拡張    
delete演算子を忘れずに><

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



Name: 素人  ..初心者(7,873ポイント)   Date: 2008/07/03(木) 01:15   No:18051       
Title: 配列を使った簡単なソートを関数化    
配列を使った簡単なソートを関数として作ろうと考えています。

void ArraySort(・・・); という名前で

引数に入れた配列を大きい順にソートしてくれるようにしたいです。

関数化しなければやり方はわかるのですが、
関数化をして尚且つ引数に来る配列の大きさがわからないとなると、
やり方がわかりません。

どのような組み方がいいでしょうか?
わかりにくい質問で申し訳ないです。


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


Name: kazuoni  ..上級者(20,163ポイント)   Date: 2008/07/03(木) 02:43   No:18053     
Title: Re:配列を使った簡単なソートを関数化    
作ってる途中に気がつきました^^;ここ↓におもいっきりでてました^^;
http://dixq.net/sort.html#1

>関数化をして尚且つ引数に来る配列の大きさがわからないとなると
配列の大きさは,例えばint x[10];であるとすると、
sizeof(x);で配列の大きさが調べられます。


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

Name: たまいら  ..ぴよぴよ(480ポイント)   Date: 2008/07/03(木) 02:54   No:18054     
Title: Re:配列を使った簡単なソートを関数化    
ArraySort関数には配列(のポインタ)さえ渡してしまえば大丈夫だと思います。
配列はポインタで渡すので、別の関数に配列を渡しても、ダイレクトに値を変えることができますね。
なので、関数プロトタイプ宣言では
void ArraySort(int *arr);
または、
void ArraySort(int arr[]);
などとすればよいのではないでしょうか。
ちなみに、配列の要素数を知りたいのであればsizeof(配列名)/sizeof(型名)で出来ます。


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

Name: フリオ  ..上級者(23,664ポイント)   Date: 2008/07/03(木) 04:41   No:18057     
Title: Re:配列を使った簡単なソートを関数化    
 
 配列を引数として渡す場合は、その配列の要素数を同時に渡すか、
配列の終端にそれとわかるしるしをつける(文字列の'\0'のようなもの)しかありません。

 配列名は引数として渡した時点で、配列の先頭要素へのポインタに読み替えられるので、
関数内で、sizeof(配列名)としても判るのはそのポインタ型の変数の大きさであって、
配列の大きさではありません。
 


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

Name: バグ  ..比類無きプログラマー(94,400ポイント)   Date: 2008/07/03(木) 08:49   No:18058     
Title: Re:配列を使った簡単なソートを関数化    
とりあえず、ArraySort関数の引数に配列の要素数を追加すればいいのでは?

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

Name: やそ  ..比類無きプログラマー(74,760ポイント)   Date: 2008/07/03(木) 11:07   No:18062     
Title: Re:配列を使った簡単なソートを関数化    
>とりあえず、ArraySort関数の引数に配列の要素数を追加すればいいのでは?

ですね^^
関数に渡される時点で、格納されている要素数が分からないということはあまりないと思います。
が、
「尚且つ引数に来る配列の大きさがわからないとなると〜」
という文が引っかかります。
sortを開始する段階で要素数が確定していないのでしょうか?


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

Name: バグ  ..比類無きプログラマー(94,431ポイント)   Date: 2008/07/03(木) 11:10   No:18063     
Title: Re:配列を使った簡単なソートを関数化    
>>やそさん
あれ?それはsizeofで調べるという事で解決したのではなかったでしたっけ?(^_^;)


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

Name: やそ  ..比類無きプログラマー(75,300ポイント)   Date: 2008/07/03(木) 12:20   No:18072     
Title: Re:配列を使った簡単なソートを関数化    
ふむ、宣言した配列の大きさを調べるのにはsizeof(配列)でいいと思うんですよ。
ttp://ja.wikipedia.org/wiki/Sizeof ←うぃき参照

が、おいらが気になったのは
int arry[100];
が宣言されていたとして、
sizeof(arry)でint型のバイト数×100の数が出るものの、
実際にデータを格納した数ではないんじゃないかな?
と思ったんでさぁ・・・。

要素数100と”多めに”用意しておいて、実際には[35]までしかデータを入れていない場合、
どうでしたっけ?標準入力から手入力させる場合とか?
まあ、入力段階に数をカウントしておけばいいだけなんですが^^;
配列自体があまり大きくなければデータの入っている個数をソート直前に数えても良いけど^^;


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

Name: バグ  ..比類無きプログラマー(94,465ポイント)   Date: 2008/07/03(木) 13:23   No:18075     
Title: Re:配列を使った簡単なソートを関数化    
メモリ内部の管理はプログラマの仕事ですからねぇ…
そこまで考えていたらキリが無いように思いますよ(^_^;)


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

Name: やそ  ..比類無きプログラマー(75,454ポイント)   Date: 2008/07/03(木) 13:46   No:18076     
Title: Re:配列を使った簡単なソートを関数化    
そうなんですよね。
だけど、トピ主さんの質問の要点がもしかしたらそっちかも?
なんて思っちゃったりしたとかしないとか(どっちだ〜!)

ArraySort(配列,要素数);

でいいと思います。
配列を引数に指定した場合、自動的に先頭のポインタ値が渡されるので中身を直接いじれますし。
要素数も、気にならないならば配列の最大要素数(宣言したときの要素数)で良いでしょう。

あとは、ソート自体は組めるということですので、頑張って下さい。
分からなければ・・・
ソートのロジックは管理人さん自信作のクイックソートをばんばん活用すると良いんじゃないかな(笑)


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

Name: スレ主です  ..ぴよぴよ(68ポイント)   Date: 2008/07/03(木) 21:37   No:18081     
Title: Re:配列を使った簡単なソートを関数化    
みなさんありがとうございます><
sizeof使えばできましたねw

ここにいる人は説明もわかりやすく親切ですねw
本当にありがとうございます。


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



Name: MINI  ..ぴよぴよ(9ポイント)   Date: 2008/07/03(木) 12:33   No:18074       
Title: MS VC-STUDIOのプロパティページ    


MS VC-STUDIOのプロパティページの「構成プロパティ」のデバッグ「ローカルWindows デバッガ」に
次の2項目の意味分かりません

1. "アタッチ"
2. "マージ環境"

ご説明お願いします。



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




Name: ランド  ..かけだし(2,379ポイント)   Date: 2008/07/03(木) 11:56   No:18066       
Title: 画像ファイルの有無を調べる    
どうも、毎回お世話になってます。

最近、シミュレーションゲームを作っていて、極力ステージデータなどを
外部のテキストデータから読み込むようにしています。
それで、マスや建物の画像データを読み込む際に、
1.ステージデータのテキストファイルに画像の個数を追記しておく
2.その個数分の配列を確保
3.読み込む
としていたのですが、これでは画像を追加するたびにテキストファイルを調整する必要があります。

そこで、
1.int型の変数を1つ用意しておく
2.読み込みに失敗するまで読み込み続ける (LoadGraph()==-1)
3.2で個数がわかるので、配列を確保
4.読み込む
という方法を考えたのですが、2.で1度読み込んだものを4.でまた読み込むのが
不自然というか、スマートでないというか、率直に言えば気に入りません。

何か良い方法はないものでしょうか・・・
どなたか、よろしくお願いします。(環境はgccコンパイラ,DXライブラリを使用しています。)


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


Name: Mist  ..中級者(12,913ポイント)   Date: 2008/07/03(木) 12:10   No:18070     
Title: Re:画像ファイルの有無を調べる    
vectorを使えば良いと思います。

http://www.geocities.jp/ky_webid/cpp/library/002.html


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

Name: ランド  ..かけだし(2,483ポイント)   Date: 2008/07/03(木) 12:21   No:18073 解決!     
Title: Re:画像ファイルの有無を調べる    
お返事ありがとうございます。

なるほど、その手がありましたか。
マスデータなどでlistを使っていたりするのに、完全に呆けてました・・・
(その手があったー!? って気持ちになってますw)

お早い返事ありがとうございました。


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



Name: Haru  ..初心者(6,345ポイント)   Date: 2008/07/02(水) 13:42   No:18035       
Title: strtok    
いつもお世話になってます。Haruです。Strtokでスペースを区切り文字とし、文字列を分解する作業をしているのですが、スペースのみで入力した場合と、文字列の最後にスペースを入力した場合に、スペースを読み込んでしまうんですが、読み込まないようにするにはどうすればよいのでしょうか?私が考えている原因としては、上の二つの場合だと、スペースがNULLにかえってない(?)からだと思うのですが・・・。良い対処法を教えてください。お願いします。

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

int main(void)
{
int i,c = 0;
int argc;
int sentou = 0;
char *argv[256];
char *tp;
char str[256];

while((str[c++] = getchar()) != '\n'); /* 改行まで読み込み */
puts(str);

tp = strtok(str," "); /* 文字列strをスペースごとの字句(トークン)に分ける。一度目は分解対象の文字列を指定 */
i = 0;

printf("[%d] = [%s] \n",i,tp); /* i = 回数 tP = スペースで分解した文字列strの1番目 */

i = 1; /* 0は既に表示しているので1から */

while(tp != NULL) /* tp = NULLでなければループ */
{
tp = strtok(NULL," "); /* 2度目以降はNULLを指定 */

if((tp != NULL) && (tp != " ")) /* もしtp = NULLでなければ */

{
printf("[%d] = [%s] \n",i,tp);
i++;
}
}
printf(" %d \n",i);
return 0;
}




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


Name: バグ  ..比類無きプログラマー(94,353ポイント)   Date: 2008/07/02(水) 14:35   No:18036     
Title: Re:strtok    
このソースでも駄目ですか?


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

int main(void)
{
char string[256];
char* split = " ";
char* token;

strcpy(string, "I Like Programing");
printf("%s\n", string);

token = strtok(string, split);
while (token != NULL)
{
printf("%s\n", token);
token = strtok(NULL, split);
}

return 0;
}


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

Name: Mist  ..中級者(12,356ポイント)   Date: 2008/07/02(水) 14:57   No:18037     
Title: Re:strtok    
> スペースがNULLにかえってない(?)からだと思うのですが・・・。
思うだけじゃなくてデバッグで確認して欲しいところですが。
(tpの値を出力すればすぐにわかること)

修正したほうがいいところ
1.str配列は'\0'で初期化すべき
  strtokは文字列終端を\0で判断するから
  今のプログラムだと\nより後ろは不定値
2.区切り文字の判断には\nを追加しておいたほうがいい
  文字列の最後が\nになるから(\nもひとつのトークンとしてみなすのであれば別ですが)
3.(tp != " ") はたぶん間違ってる
  tpが指す文字列の先頭が空白でないかをチェックしたいのなら

  (*tp != ' ')


提示プログラムを動作確認出来たらまた回答します。


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

Name: Haru  ..初心者(6,535ポイント)   Date: 2008/07/02(水) 17:25   No:18040     
Title: Re:strtok    
>バグさん

そのソースコードでは、うまくできます!
キーボードで自由に文字列を入力させたときにスペースがはいっちゃうんですよ(^^;

>Mistさん

>> スペースがNULLにかえってない(?)からだと思うのですが・・・。
>思うだけじゃなくてデバッグで確認して欲しいところですが。
>(tpの値を出力すればすぐにわかること)

失礼しました。一応デバッグをして確認はしたのですが、自信がないものでつい、「〜と思う」
と言ってしまいました。
Mistさんの修正した方が良いところを注意して修正したいと思います!



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

Name: バグ  ..比類無きプログラマー(94,377ポイント)   Date: 2008/07/02(水) 19:24   No:18042     
Title: Re:strtok    
その文字は本当にスペースですか?改行文字ではありませんか?

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

Name: Haru  ..初心者(6,592ポイント)   Date: 2008/07/03(木) 09:09   No:18059     
Title: Re:strtok    
>バグさん
すいません。改行でした。
printf("DEBUG:%s,tp); としてたので、てっきりスペースだと思い込んでました。
申し訳ないです。。


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

Name: Mist  ..中級者(12,399ポイント)   Date: 2008/07/03(木) 09:42   No:18060     
Title: Re:strtok    
それならば、私の指摘の1と2で直るでしょう。
スタックな文字配列変数は初期化する癖つけておいたほうがいいと思います。


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

Name: Mist  ..中級者(12,884ポイント)   Date: 2008/07/03(木) 10:08   No:18061     
Title: Re:strtok    
私が作った修正ソースです。
参考までにどうぞ。(環境Xp + VC++2008EE)


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

int main(void)
{
int i,c = 0;
// int argc;
// int sentou = 0;
// char *argv[256];
char *tp;
char str[256];

memset(str, 0, sizeof(str)); // *-*

while((str[c++] = getchar()) != '\n'); /* 改行まで読み込み */
puts(str);

tp = strtok(str," \n"); // *-* /* 文字列strをスペースごとの字句(トークン)に分ける。一度目は分解対象の文字列を指定 */
i = 0;

if (tp != NULL) {
printf("[%d] = [%s] \n",i,tp); /* i = 回数 tP = スペースで分解した文字列strの1番目 */

i = 1; /* 0は既に表示しているので1から */

while(tp != NULL) /* tp = NULLでなければループ */
{
tp = strtok(NULL," \n"); // *-* /* 2度目以降はNULLを指定 */

if(tp != NULL) // *-* /* もしtp = NULLでなければ */
{
printf("[%d] = [%s] \n",i,tp);
i++;
}
}
}

printf(" %d \n",i);

// system("PAUSE");

return 0;
}


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

Name: Haru  ..初心者(6,648ポイント)   Date: 2008/07/03(木) 11:17   No:18064     
Title: Re:strtok    
>Mistさん
いつもありがとうございます!おかげでできるようになりました!!
文字配列変数を初期化するのも勉強になりました!


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



Name: 狼肉  ..かけだし(1,843ポイント)   Date: 2008/07/01(火) 01:18   No:18003       
Title: キーを軽く押したら連射みたいな機能になる。    
選択肢を作ってみました。
しかし、次のページに移動するボタンと、元のページに戻るボタンを同じボタンに設定してしまうと
進む→戻るが少しキーを押しただけで、何度か連続で入力されてしまうようになります。
これが原因で、選択肢を作っても、キーを軽く押しただけで3つ先の選択肢まで飛んだりしてしまいます。
解決策をお願いします。




ソース。


#include "DxLib.h"

int function_status=0,White;
char KeyBuf[ 256 ] ;

void A(){
DrawString(100,100,"選択肢A",White);
DrawString(300,100,"選択肢B",White);
if(KeyBuf[KEY_INPUT_A]==1)
function_status=1;
else if (KeyBuf[KEY_INPUT_B]==1)
function_status=2;
}

void B(){
DrawString(100,100,"選択肢C",White);
DrawString(300,100,"選択肢D",White);
if(KeyBuf[KEY_INPUT_A]==1)
function_status=0;
else if(KeyBuf[KEY_INPUT_B]==1)
function_status=2;
}



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了

White = GetColor( 255 , 255 , 255 ) ; //色の取得

SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定

while( 1 ){
ClearDrawScreen(); // 裏画面のデータを全て削除
GetHitKeyStateAll( KeyBuf ) ; // すべてのキーの状態を得る

switch(function_status){
case 0:
A();
break;
case 1:
B();
break;

default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}

if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了

ScreenFlip() ; // 裏画面データを表画面へ反映
}

DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}


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


Name: 木霊  ..中級者(10,806ポイント)   Date: 2008/07/01(火) 01:36   No:18004     
Title: Re:キーを軽く押したら連射みたいな機能になる。    
解決策
1:次のページに移動するボタンと元のページに戻るボタンを別のものにする

2:ページを移動した後、しばらく全ての入力を受け付けないようにする

3:ボタンの押しっ放しを無効にする


http://dixq.net/g/#40

こちらの方も参考になりそうです


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

Name: 狼肉  ..かけだし(1,884ポイント)   Date: 2008/07/03(木) 03:24   No:18056 解決!     
Title: Re:キーを軽く押したら連射みたいな機能になる。    
試行錯誤した結果。

『WaitTimer』
という指定した秒間だけ処理を止める関数を選択肢の間間に打ち込んでいくとなりました。
ヒントありがとうございました。


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



Name: はね  ..初心者(7,503ポイント)   Date: 2008/07/02(水) 20:48   No:18045       
Title: カメラをZ軸に    
お久しぶりです。
ご教授願いたく参上しました。

現在、上から見下ろすアングルの3Dゲームを作っています。


ですが、先生から「これだと奥行きはY軸なのでZ軸上を奥行きにしましょう」

とアドバイスされたのですが、いまいちピンときません。

上から見下ろすアングルの為、カメラの設定は以下の通りです。
カメラ位置 =(0,20,0)
注視点 =(0,0,0)
カメラ上方向 =(0,1,0)

確かにこれだと奥行きはY軸です。
しかし、Z軸に直す→カメラ位置=(0,0,20)などとすると
奥行きはZ軸になりますが、これでは上から見ているアングルにはなりません。


無理やりモデルを回転させれば上から見ているよう見えますし、Z軸が奥行きにもなります。
条件は満たしているように思いますが、
イチイチ回転させなければならないので、どうもスマートでは無い気がします。

もっと賢いやり方は無いのでしょうか?


分かりにくい質問で申し訳ありません。
よろしくお願いします。


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


Name: Justy  ..ハッカー(195,434ポイント)   Date: 2008/07/02(水) 21:56   No:18049     
Title: Re:カメラをZ軸に    
 あ、はねさんお久しぶりです。


>これだと奥行きはY軸なのでZ軸上を奥行きにしましょう
 うーん、たしかにコレは何の意味があるのか判らないですね。
 話を聞く限りではわざわざ直す必要はないように思えます。

 先生が勘違いしているか、何か別のことを指しているのかだと思います。
 先生にもう少し突っ込んで訊いてみてはどうでしょうか。


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

Name: ま〜く  ..初心者(6,451ポイント)   Date: 2008/07/03(木) 01:46   No:18052     
Title: Re:カメラをZ軸に    
XZ平面ではいけないのですかね^^;
先生はXY平面で考えたいとか?

もしかしたらカメラのアップベクトルを(0,1,0)->(0,0,1)にしろってこと
ですかね?


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

Name: はね  ..初心者(7,724ポイント)   Date: 2008/07/03(木) 03:09   No:18055 解決!     
Title: Re:カメラをZ軸に    
>>Justy様
>先生にもう少し突っ込んで訊いてみてはどうでしょうか。

そうですね。今日は詳しく聞く時間が無かったので今日にでも
もう少し詳しく聞いてみます。


>>ま〜く様
>先生はXY平面で考えたいとか?
今思い出しましたが、XZ平面だと紛らわしいので云々、と言っていました。

>アップベクトルを(0,1,0)->(0,0,1)に
なるほど、確かにこれだとできそうです。


何はともあれ、現状では情報が不足しているので、今回の回答を踏まえてもう一度聞いてみます。
不完全な情報で質問して申し訳ありませんでした。
迅速な回答をいただいたJusty様、ま〜く様ありがとうございました。


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



Name:  ..ぴよぴよ(142ポイント)   Date: 2008/07/02(水) 18:23   No:18041       
Title: どうしてもわからない場所があるのでお願いします.    
お初にお目にかかります,分からないことがありましたので質問をさせてもらいます.

学校の課題で,C言語での簡単なリバーシゲームを作成したのですが,COM用はしっかりと機能するのに対人用の動作をさせると途中でエラーが出たりして実行できません.
(添付したテキストファイルをご覧下さい)
もし良かったらどこをどう直せばいいかなどのアドバイスを頂ければ嬉しいです.
困っているので,よろしくお願いします.


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


Name: box  ..ハッカー(114,716ポイント)   Date: 2008/07/02(水) 20:03   No:18043     
Title: Re:どうしてもわからない場所があるのでお願いします.    
> 対人用の動作をさせると途中でエラーが出たりして実行できません.

エラーが出る前の話として、例えば先手を選んで
1手目に(3,4)に置いたとします。
そして、後手の番になったとき、後手が置けない(6,6)が
最善手であると言ってきます。
まずはここを修正する必要がありますね。

それから、最善手を選ぶアルゴリズムはどのようになっていますか?
COM用で試したところ、どうも「相手の石をいちばんたくさん裏返せる」
ところが最善であると判断しているようにお見受けしました。
それで間違いないですか?
もし、そういうアルゴリズムだとすると、見直した方がいいような気がします。
相手の石をたくさん裏返すよりも四隅に置いた方が後の展開が有利になる、
という場合があると思います。


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

Name:  ..ぴよぴよ(227ポイント)   Date: 2008/07/02(水) 20:17   No:18044     
Title: Re:どうしてもわからない場所があるのでお願いします.    
> エラーが出る前の話として、例えば先手を選んで
> 1手目に(3,4)に置いたとします。
> そして、後手の番になったとき、後手が置けない(6,6)が
> 最善手であると言ってきます。
> まずはここを修正する必要がありますね。

はい,そうなんです.でもどこがおかしいのかが分からなくて困っているのです.
あまりプログラミングが詳しくないもので……
もし良ければ具体的にどのように修正すればいいか教えて頂けませんか?
お願いします.


> COM用で試したところ、どうも「相手の石をいちばんたくさん裏返せる」
> ところが最善であると判断しているようにお見受けしました。
> それで間違いないですか?
> もし、そういうアルゴリズムだとすると、見直した方がいいような気がします。
> 相手の石をたくさん裏返すよりも四隅に置いた方が後の展開が有利になる、
> という場合があると思います。

やはりそうでしたか,四隅に置けるように改良しようと思います.
アドバイスありがとうございました!


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

Name: box  ..ハッカー(114,799ポイント)   Date: 2008/07/02(水) 20:55   No:18046     
Title: Re:どうしてもわからない場所があるのでお願いします.    
変数 now_player と now_player2, com と pc の関係を
整理してみてはいかがでしょうか。

人 vs 人の場合に、上記変数群の関係が整理し切れていないのかもしれません。


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

Name:  ..ぴよぴよ(246ポイント)   Date: 2008/07/02(水) 21:29   No:18047 解決!     
Title: Re:どうしてもわからない場所があるのでお願いします.    
アドバイスありがとうございます.
変数の関係などを洗いなおしてみます.


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



Name: アイダ  ..ぴよぴよ(217ポイント)   Date: 2008/07/02(水) 17:16   No:18039       
Title: 呼び出し履歴のフレームにシンボルはよみこまれません    
デバッグ途中のメッセージの意味

始めまして

MS-VC Studio 2005 で

デバッグ途中、F10を押して自動変数を以下のように定義しているところを実行しようとしたら

int a = (int)(s*10.0);

下記のようなメッセージが出されました:

「呼び出し履歴のフレームにシンボルはよみこまれません。ソースコードを表示できません。」

これは何を意味するのでしょうか。

ついでに、デバグで
定義し初期化したばかりの自動変数であっても、実行直後にもかかわらず、
ウオッチに変数名入力して中身を確認しようとしたらいつも、
"CXX0017:エラーです:シンボルがみつかりません"

というメッセージが表示されます。
原因は何ですか。

宜しくお願いします





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




Name: 組木紙織  ..熟練のプログラマー(52,474ポイント)   Date: 2008/06/26(木) 21:45   No:17843       
Title: 言語習得度合いゲージ    
ネタ元
東方算程譚:ブログ
http://blogs.wankuma.com/episteme/archive/2008/06/09/142383.aspx

↑スゴい
・ Cを遊べるひと
・ Cと遊べるひと
・ Cで遊べるひと
・ Cが遊んでくれないひと
・ Cに遊ばれるひと
・ Cに笑われるひと
・ Cに鼻で笑われるひと
・ Cに無視されるひと
↓スゴくない


あなたはどのレベルですか?

私はCに笑われるひとぐらいのレベルかなと思っています。


#ネタ元でC++のとこはここの掲示板に合わせてCにしてみました。



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


Name: tkmakwins15 [URL]  ..比類無きプログラマー(79,704ポイント)   Date: 2008/06/26(木) 23:52   No:17849     
Title: Re:言語習得度合いゲージ    
うーん、どこなんでしょうか?全く分かりません。

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

Name: たかぎ [URL]  ..熟練のプログラマー(43,039ポイント)   Date: 2008/06/27(金) 00:03   No:17850     
Title: Re:言語習得度合いゲージ    
具体例がないと分かりにくいですね。

# ネタ元にあったOSバージョンだと、少なくともOS魔王以上になってしまいますが...


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

Name: 組木紙織  ..熟練のプログラマー(52,725ポイント)   Date: 2008/06/27(金) 23:28   No:17868     
Title: Re:言語習得度合いゲージ    
>具体例がないと分かりにくいですね。

具体例ですか、、、、難しんですよね、具体例。
言語そのものの習得度合いと、アルゴリズムなどの設計に関する部分の
習得度合いを分ける部分で。

とりあえずここの常連さんを、私の独断と偏見で分けてみました。

・ Cを遊べるひと
Justyさん、たかぎさん
・ Cと遊べるひと
boxさん、バグさん、YuOさん
・ Cで遊べるひと
やそさん、管理人さん
・ Cが遊んでくれないひと
tkmakwins15さん、Mistさん
・ Cに遊ばれるひと
雷さん、toyoさん
・ Cに笑われるひと
kazuoniさん、組木紙織(私)
・ Cに鼻で笑われるひと
・ Cに無視されるひと


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

Name: Justy  ..ハッカー(195,194ポイント)   Date: 2008/06/28(土) 01:09   No:17871     
Title: Re:言語習得度合いゲージ    
 わっ、たかぎさんと同列だなんて、そんな・・・恐れ多いです!!

 じゃぁ具体的にどれだ? というと非常に難しいですが、
Cで遊べるくらいかなぁ、と思います(^^


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

Name: Mist  ..中級者(11,945ポイント)   Date: 2008/06/28(土) 09:55   No:17883     
Title: Re:言語習得度合いゲージ    
Cが遊んでくれないならDに浮気するからいいんだもんねw

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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(79,752ポイント)   Date: 2008/06/28(土) 10:19   No:17885     
Title: Re:言語習得度合いゲージ    
組木紙織さんより上って…、さすがにそれはないですよ。

どのあたりから上級者になってくるのでしょうか?


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

Name: toyo  ..中級者(12,618ポイント)   Date: 2008/06/28(土) 10:26   No:17886     
Title: Re:言語習得度合いゲージ    
バグが取れないときとか時々鼻で笑われているような気がするよ



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

Name: kazuoni  ..上級者(19,947ポイント)   Date: 2008/06/28(土) 10:29   No:17887     
Title: Re:言語習得度合いゲージ    
自分がランクインしてることに非常に抵抗を覚えています(笑)

Cには片思いですね。笑われるどころか振り向いてももらえないですよ・・・^^;

っというか組木紙織さんと同じ場所にいますっ!!・・・皆さん謙遜しまくってますねw


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

Name: たかぎ [URL]  ..熟練のプログラマー(43,440ポイント)   Date: 2008/06/28(土) 10:30   No:17888     
Title: Re:言語習得度合いゲージ    
YuOさんは少なくとも私と同等かそれ以上でしょう(線引きの仕方による)。
まあ、上位の3ランクぐらいは、能力というより、意識というか感覚というか、そんな感じですね。


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

Name: 管理人 [URL]  ..伝説のハッカー(609,172ポイント)   Date: 2008/06/28(土) 13:30   No:17895     
Title: Re:言語習得度合いゲージ    
すごい独断と偏見だ・・w
でも、順番はみんながきっと気にするところ・・^^;
私の中ではJustyさん、たかぎさん、Yuoさん、boxさん達は雲の上の人・・。
私の独断と偏見で言うと、boxさんだけ少し年齢が若い気がします^^;

Justyさんが何かとんでもないことを言っていらっしゃいますが
聞かなかったことにします(ノ▽`)b

なお、私よりtkさんの方がCにずっと精通されていらっしゃるかと・・。

まぁネット上じゃ具体的なことはわからないですし、自分の方が上だ!という人も中々居ないでしょうから、
順位は付けにくいですよね^^;

それにたかぎさんの仰るとおり
・ Cを遊べるひと
・ Cと遊べるひと
・ Cで遊べるひと
はこの順番でホントにいいのか微妙ですし。(特に2位と3位)

確かな事→掲示板ランクは全く関係ないということだけは確か



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

Name: 組木紙織  ..熟練のプログラマー(53,221ポイント)   Date: 2008/06/28(土) 15:04   No:17901     
Title: Re:言語習得度合いゲージ    
tkmakwins15>どのあたりから上級者になってくるのでしょうか?

[上級者]
・ Cを遊べるひと
・ Cと遊べるひと
・ Cで遊べるひと
[中級者]
・ Cが遊んでくれないひと
・ Cに遊ばれるひと
[初級者]
・ Cに笑われるひと
・ Cに鼻で笑われるひと
[初心者]
・ Cに無視されるひと


私の考える上位3ランクの違い
(言葉の雰囲気から考えただけなんですが)
・ Cを遊べるひと →Cの文法的な問題点利点などを指摘することができる。
・ Cと遊べるひと →Cの一般的ではない使い方(IOCCCに出るようなコード)を読み解き書けることができる
・ Cで遊べるひと →C言語で自分の作りたいプログラムを自由に書ける。

それ以下はもう具体例が思いつきませんでした。
というより、どの程度のアルゴリズムを実装できるとか、Cとは直接関係ない別の要因で区別したくなってくる


管理人さんは弾幕ゲームを作成したのでCで遊べる人の領域かなーと思います。


Mist>Cが遊んでくれないならDに浮気するからいいんだもんねw
遊んでくれないからって浮気しちゃ駄目でしょ。
二股ならまだいいと思うけど、遊んでくれるまで追いかけないとそのうち逃げられますよw


kazuoni>っというか組木紙織さんと同じ場所にいますっ!!・・・皆さん謙遜しまくってますねw
いや私は、Cは途中で捨ててC++にお呼ばれになったのでCは全然なんですよ。

#実際のスキルが掲示板ランクになったら回答する側はすごく楽そうです。


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

Name: たかぎ [URL]  ..熟練のプログラマー(44,092ポイント)   Date: 2008/06/28(土) 19:11   No:17921     
Title: Re:言語習得度合いゲージ    
管理人さん

> 雲の上の人・・。

私が普段付き合っている人たちには、OS創造神〜OS神のような存在がゴロゴロいます。
私が雲の上の人(飛行機に乗っている程度)なら、彼らは異星人ですね。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(79,888ポイント)   Date: 2008/06/28(土) 22:24   No:17938     
Title: Re:言語習得度合いゲージ    
>実際のスキルが掲示板ランクになったら回答する側はすごく楽そうです。

そんなことしたら、それこそ「ぴよぴよ」レベルに僕はなってしまいますよ。

>どの程度のアルゴリズムを実装できるとか、Cとは直接関係ない別の要因で区別したくなってくる

どちらかといえば「プログラマとしての習熟度」になってきそうですね。


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

Name: たかぎ [URL]  ..熟練のプログラマー(44,632ポイント)   Date: 2008/06/29(日) 18:16   No:17966     
Title: Re:言語習得度合いゲージ    
Cと比較的関係が深いところで別の判断基準を設けるとすると、何種類のプラットフォームの経験があるかというのもよいでしょうね。

Windowsのほか、LinuxとかMacとかμITRONとかOS無しとか。CygwinもWindowsとは別のプラットフォームのようなものです。
プラットフォームでなくても、Visual C++しかやったことがないひとより、VC++もGCCもやったことがある人の方が、一般的には習熟度が高いといえます。



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

Name:  ..プログラマー(31,792ポイント)   Date: 2008/06/30(月) 08:45   No:17975     
Title: Re:言語習得度合いゲージ    
ランクが高く書かれてる!
やほぃ!

tkさんがぴよぴよになってしまったら、僕ランク外かくじつなんですが(^^;

〉たかぎさん
そんなレベルの人がゴロゴロ居るんですか!?
恐ろしや…

今ふとした思い付きなんですが、一定ポイント以上の人が自分よりすごいと思う人を列挙してそれでけっていするとか
色々問題ありますが、どうでしょ?w


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

Name: 管理人 [URL]  ..伝説のハッカー(610,686ポイント)   Date: 2008/06/30(月) 13:18   No:17984     
Title: Re:言語習得度合いゲージ    
う、上を見るとキリが無いようですね^^;
多分、こういう業界は特に「習得した」「全てわかった」という段階は無いのでしょうね。
まぁそれは学問であっても、芸術であっても、医学であっても、何にでも言える事なのでしょうけど。
日々上へ上へと進めるよう精進するのみですねm(_ _)m


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

Name: たかぎ [URL]  ..熟練のプログラマー(44,970ポイント)   Date: 2008/06/30(月) 17:29   No:17988     
Title: Re:言語習得度合いゲージ    
雷さん
> 今ふとした思い付きなんですが、一定ポイント以上の人が自分よりすごいと思う人を列挙してそれでけっていするとか
> 色々問題ありますが、どうでしょ?w

猿の群れではないのですから、無理に順位付けする必要もないのでは?

管理人さん
> 多分、こういう業界は特に「習得した」「全てわかった」という段階は無いのでしょうね。

C言語の仕様に関する知識に限れば、「習得した」「全てわかった」という段階は存在しますね。
ただ、使いものになるかどうかでいえば、応用に関する技術が必要になってきます。
もっとも、ある程度以上の水準になると、ある分野では誰それが一番詳しいけれども、別の分野では他の人の方が詳しいということになります。
ですから、単純に一次元のランキング付けをするのはそう簡単ではありません(この辺がスポーツとかとは違うところです。)。

ところで、私もそろそろ昇進しそうです。
# この投稿で昇進するかも。


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

Name: 管理人 [URL]  ..伝説のハッカー(611,721ポイント)   Date: 2008/07/01(火) 03:40   No:18008     
Title: Re:言語習得度合いゲージ    
>ところで、私もそろそろ昇進しそうです。

おしい!
次に上がりそうと言う時にポイント落としたりすることも・・。

Cの仕様について言えば確かに100%解ったという段階もありますね。
また、どちらの方向に応用していくかにもよりますが、
プログラムを追求して行くとハードウェアの知識も必要になったり、数学の知識が必要になったり、
応用という面で言うと限りがありませんね。


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

Name: たかぎ [URL]  ..熟練のプログラマー(44,984ポイント)   Date: 2008/07/01(火) 10:44   No:18010     
Title: Re:言語習得度合いゲージ    
> プログラムを追求して行くとハードウェアの知識も必要になったり、数学の知識が必要になったり、
> 応用という面で言うと限りがありませんね。

そうなんですよね。
そんなに追求するところまで行かなくても、中学・高校で習う国語や数学などの基礎学力は不可欠です。
小学校で習う加減乗除にしても、本当に理解していないと多倍長演算を実装することができません。


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

Name: 組木紙織  ..熟練のプログラマー(53,323ポイント)   Date: 2008/07/01(火) 11:21   No:18012     
Title: Re:言語習得度合いゲージ    
>プラットフォームでなくても、Visual C++しかやったことがないひとより、VC++もGCCもやったことがある人の方が

プラットフォームの方はCの習熟度に関係することはわかるのですが、コンパイラの違いってそんなに
習熟度に関係するのかどうかが少し疑問です。
未定義とか、実装依存の部分を体感できるという意味で、習熟度に関係してくるという話なのかな。

>プログラムを追求して行くとハードウェアの知識も必要になったり、数学の知識が必要になったり、
>応用という面で言うと限りがありませんね。

この応用の部分が「(その分野でも)グラマーとしての習熟度」そのものであると考えています。

#朝から晩までソースコード弄ってると時々日本語を忘れそうな気分になって怖いときがあります。
#職業:プログラマー、趣味:プログラミングってある意味危険かも。


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

Name: たかぎ [URL]  ..熟練のプログラマー(45,418ポイント)   Date: 2008/07/01(火) 12:02   No:18013     
Title: Re:言語習得度合いゲージ    
> プラットフォームの方はCの習熟度に関係することはわかるのですが、コンパイラの違いってそんなに
> 習熟度に関係するのかどうかが少し疑問です。

単一の方言しか使えない場合と、複数の方言を使える場合、そして、それらに加えて標準語を使える場合では、明らかに言語の習熟度が違います。
Visual C++やGCCのようなメジャーな処理系の場合、自分が使っているのがあたかも標準であると誤認している人は少なくありません(東京弁を標準日本語だとか、米語を標準英語だと事実誤認しているようなものです)。

> この応用の部分が「(その分野でも)グラマーとしての習熟度」そのものであると考えています。

そうなのですが、今回の話題はあくまでも「言語習得度合いゲージ」ですよね。
例えていうなら、英語における英検やTOEICのようなもので、英語を用いて人を感銘させられるかとか、表現の根底にある知識・経験・思想等は問われていないはずです。それと同じではないでしょうか。


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

Name: たかぎ [URL]  ..熟練のプログラマー(45,922ポイント)   Date: 2008/07/01(火) 12:41   No:18014     
Title: Re:言語習得度合いゲージ    
複数のコンパイラを経験することについて、もう少し補足します。

> 未定義とか、実装依存の部分を体感できるという意味で、習熟度に関係してくるという話なのかな。

まあ、そうなのですが...

例えば、汎用的なライブラリ等を実装する場合、移植性に配慮しなければならないことがよくあります。
熟練したプログラマであれば、少し練習すれば規格厳密合致プログラムを書くことはそんなに難しくないかもしれません。
しかし、規格厳密合致プログラムでできることは非常に限られています(ディレクトリを操作することすら出来ない)。
そこで、(対象となる環境で利用可能な)現存する主要な処理系間での移植性に限定することで、現実的な落としどころを模索することになるわけです。
このとき、例えばWindows上で動けばよいということであれば、Visual C++, Turbo C++, MinGWなどの間で移植性を保てればよいのですが、それらを使ったことがないと、どこが共通で、どこが異なるのか、見当がつきません(Windowsならまだ楽な方です)。

もう一点、これも移植に関することですが、例えば過去にVisual C++で実装していたプログラムをBorland C++ Compilerに移植するような場合(具体的には、サクラエディタでそうしたことが起きたはずです)、両方のコンパイラの利用経験がないと移植作業はスムーズにいかないでしょう。
仮に、たまたまコンパイルがうまくいき、それっぽく動作したとしても、常に不安を抱え続けることになるはずです。


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

Name:  ..プログラマー(31,995ポイント)   Date: 2008/07/01(火) 15:09   No:18016     
Title: Re:言語習得度合いゲージ    
初心者の人が来たときすごい人が答えてるんだな〜と感じたり、二つのソースがあったときの目安にならないかな〜とか
自分はこの人よりしたとしか思えない…

とかそんな感じかな?
そもそもその場の思い付きだしw

ただ、猿は無いでしょwって思いましたが(もちろん意味は分かりますがw

#クズは黙ってろみたいに感じたんでここだけは反論します
#たかぎさんから見たらプログラムのぷの字さえ理解していないグズでしょうが、猿はないかと


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,164ポイント)   Date: 2008/07/01(火) 15:26   No:18017     
Title: Re:言語習得度合いゲージ    
> #クズは黙ってろみたいに感じたんでここだけは反論します
> #たかぎさんから見たらプログラムのぷの字さえ理解していないグズでしょうが、猿はないかと

すみません。そんな風に取りました?

猿でも犬でもよいのですが、群れる習性を持っている動物は必ず最初に順位付け行動を取ります。
誰がボスで、誰がNo.2で、誰がNo.3なのか、一部の長老と子供を除き、すべての個体またはすべてのオスに序列が発生します。

人間でも、命令系統を持った組織を編成する上では順位付けは必要ですが、ここのようなコミュニティはそんな組織ではありませんよね(「猿の群れ」ではない)。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,811ポイント)   Date: 2008/07/01(火) 19:18   No:18024     
Title: Re:言語習得度合いゲージ    
移植性とかというと、システム依存のコードとほぼ無条件で移植できる部分の分離とかいうことも考えなくてはいけませんよね。

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

Name: たかぎ [URL]  ..熟練のプログラマー(46,211ポイント)   Date: 2008/07/01(火) 20:49   No:18026     
Title: Re:言語習得度合いゲージ    
> 移植性とかというと、システム依存のコードとほぼ無条件で移植できる部分の分離とかいうことも考えなくてはいけませんよね。

はい。ただし、それはプラットフォームが異なる場合の話です。
実行環境が同じで翻訳環境だけが異なる場合には、そうした分離は不要か、かなり少なくなります。


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

Name: 組木紙織  ..熟練のプログラマー(53,186ポイント)   Date: 2008/07/01(火) 22:11   No:18027     
Title: Re:言語習得度合いゲージ    


>この応用の部分が「(その分野でも)グラマーとしての習熟度」そのものであると考えています

訂正
この応用の部分が「(その分野でも)プログラマーとしての習熟度」そのものであると考えています

グラマー(grammer):文法
ではなくて
プログラマーということでした。





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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(81,020ポイント)   Date: 2008/07/02(水) 01:19   No:18028     
Title: Re:言語習得度合いゲージ    
>グラマー(grammer):文法

うーん、期末試験が近いので、…どうしても英語のほうを連想してしまいます…。


プラットフォームが異なる移植といえば、Linuxで用いられていた「GIMP」がWindowsに移植された例とかがありますよね。
Windows間だったら、一応「Windows API」というある程度共通のソフト動作環境があったりしますから、9xとNTでもそんなに大差ないですよね(細かいところで違いがでてきたりしますが…)
しかしUnixとかだと、同じUnixでもかなり違いがでてきたりして同じプラットフォーム間でも移植は難しかったりするのでしょうか?


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

Name: たかぎ [URL]  ..熟練のプログラマー(46,099ポイント)   Date: 2008/07/02(水) 07:54   No:18033     
Title: Re:言語習得度合いゲージ    
私ははじめから「プログラマー」の意味だと解釈しましたが...
# 誤解を与えないためには、無用の省略はすべきではないですね。

> プラットフォームが異なる移植といえば、Linuxで用いられていた「GIMP」がWindowsに移植された例とかがありますよね。

そうした例は枚挙に暇がありません。
スクリプト言語なんかは大抵そうですね。
Perl, Tcl, Python, PHP, Ruby, ...

> Windows間だったら、一応「Windows API」というある程度共通のソフト動作環境があったりしますから、9xとNTでもそんなに大差ないですよね(細かいところで違いがでてきたりしますが…)

Windows CEなんかだと、CPUからして異なります。Intelだけでなく、MIPSやSuperHなどもありますから。

> しかしUnixとかだと、同じUnixでもかなり違いがでてきたりして同じプラットフォーム間でも移植は難しかったりするのでしょうか?

Unixは同じプラットフォームではありませんね。


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



Name: picko  ..ぴよぴよ(81ポイント)   Date: 2008/06/30(月) 13:33   No:17985       
Title: MSのコマンドプロンプトに入力    
始めまして
MSのコマンドプロンプトに要求されるデータ(文字列)にマッチファイルで自動入力できますか。

例えば、
> なまえを入力ください:

に対して、パイプ機能(?)等で "HNAKO"
パッチファイルの中なら自動的に入力してやるというやり方あるのでしょうか。

できるなら、具体的なやり方お願いいたします。


宜しくお願いします


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


Name: toyo  ..中級者(12,768ポイント)   Date: 2008/06/30(月) 15:46   No:17986     
Title: Re:MSのコマンドプロンプトに入力    
リダイレクトでファイルの内容を標準入力にすることならできます。
name.txtに
HANAKO
と書いておいて
a.exe < name.txt
とします。


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

Name: へろり  ..初心者(7,801ポイント)   Date: 2008/06/30(月) 16:17   No:17987     
Title: Re:MSのコマンドプロンプトに入力    
echo HNAKO | a.exe

ではダメですか。


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

Name: picko  ..ぴよぴよ(116ポイント)   Date: 2008/06/30(月) 19:03   No:17989     
Title: Re:MSのコマンドプロンプトに入力    
ご返答ありがとうございます

echo HNAKO | a.exe

は効かないですね。




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

Name: picko  ..ぴよぴよ(195ポイント)   Date: 2008/06/30(月) 19:13   No:17990     
Title: Re:MSのコマンドプロンプトに入力    

a.exe < name.txt

もだめですね。

a.exe XXYY < name.txt
a.exe < name.txt XXYY

全部だめ...

XXYYはmain()関数に要求される引数です。


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

Name: toyo  ..中級者(12,858ポイント)   Date: 2008/06/30(月) 19:33   No:17992     
Title: Re:MSのコマンドプロンプトに入力    
入力要求が標準入力からの入力じゃないのかもしれませんね
元のプログラムのソースを見ないとわかりませんが
getch( )やgetche( )だと直接キーボード入力なのでだめでしょう


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

Name: picko  ..ぴよぴよ(369ポイント)   Date: 2008/07/01(火) 11:14   No:18011     
Title: Re:MSのコマンドプロンプトに入力    
toyo様

ご教授ありがとうございます

>getch( )やgetche( )だと直接キーボード入力なのでだめでしょう

おっしゃる通り、プログラムの中ではgetch( )やgetche( )を使っているそうです。
これなら、自動入力できなくなるのでしょうか。

もし、自動入力できるC言語の関数あれば、ソースを修正してもらいたいのです。


どうぞ、宜しくお願い致します






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

Name: Mist  ..中級者(12,105ポイント)   Date: 2008/07/01(火) 13:09   No:18015     
Title: Re:MSのコマンドプロンプトに入力    
> プログラムの中ではgetch( )やgetche( )を使っているそうです。
「〜そうです。」ということは、pickoさんはそのプログラムソースを見ることが出来る立場には無いということでしょうか?

> ソースを修正してもらいたいのです。
fgetc(stdin)を使えばうまくいくと思いますが、具体的にどう修正するのかはpickoさんが元のソースを提示しなんともいえません。


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

Name: picko  ..ぴよぴよ(535ポイント)   Date: 2008/07/01(火) 20:03   No:18025     
Title: Re:MSのコマンドプロンプトに入力    
Mist様

ご返答ありがとうございます。

プログラマは別の人で、
ch = _getche();
を使っていたそうです。

ch = fgetc(stdin);
に変えてもらったら、今度は入力してリターンを押さなければならないです。

ただ、ファイルを用意して、

a.exe < file.txt
にすればうまく出来ました。

file.txtがなくても、できる方法もあるのでしょうか。

もう一度ご教授いただければ幸いです。








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



Name: なんとかな〜れ〜  ..ぴよぴよ(520ポイント)   Date: 2008/06/26(木) 17:23   No:17825       
Title: 時折、画像に縦線が入る    
どうもこんにちは。

ソースコードをコンパイルし、できたexeファイルを実行するわけですが、
そのプログラム実行の際に、添付した画像のように縦線の入ることがあるのです。
主な現象としては、複数の画像(自機、背景など)のうち、どれか一つの画像の左上部分に縦線がかかるようです。
右上の画像のように、デスクトップに飛び火することもあります(その際は壁紙の貼り直しで解除)。
ただよく分からないのは、毎実行時に起こるわけでもなく、また起こるにしても
どの画像に縦線が入るかはその時々で違うということです。

使用コンパイラはVisual C++ 2008 Express Edition及びBorland C++ Compiler 5.5で試してみましたが、
どちらも同じ結果でしたので、コンパイラの問題ではないのかなあ……と思っています。ちなみにOSはXPです。
使用したソースコードは本サイトからのサンプルによるものの他、別のソースによる画像でも同様の現象が起きた
ので、コードミスということでもないように思います。

どうも何度か試すうち、画面モードを全画面にしている時には縦線が入らないような気がしました。
逆に言うと、画面をウィンドウモード(ChangeWindowMode(TRUE);)にしている時に
この問題が立ち上がるような気がします。

個人的な動作環境に原因がありそうな感じですが、検索しても前例がなく、ちょっと途方に暮れています。
少々雲を掴むような感もありますが、このような症例について、何か心当たりのありそうなことなどありましたら、
助言等頂けたら幸いです。


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


Name: たいちう  ..入門者(4,213ポイント)   Date: 2008/06/26(木) 17:43   No:17826     
Title: Re:時折、画像に縦線が入る    
一般論として、真っ先に疑うべきなのは自分の書いたプログラムです。
複数のサイトのサンプルとありますが、「なんとかな〜れ〜」さんが
複数のサンプルを元にして同じ勘違いのコードを埋め込んでしまった
可能性があります。まず、この可能性を潰しましょう。

再現性が高くないようですが、再現することのある最も短いプログラムを
ここに載せてみてはいかがでしょうか。サンプルに従って作っているつもりでも、
自分では気付かないまずい点があるかもしれません。


プログラムに問題が無い場合ですが、次に怪しいのはOSですかね。
Windows Updateをしたり、可能ならば別の環境で試したりすると良いでしょう。

次はインストールされている他のソフトかな。


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

Name: なんとかな〜れ〜  ..ぴよぴよ(695ポイント)   Date: 2008/06/26(木) 18:30   No:17828     
Title: Re:時折、画像に縦線が入る    
>たいちうさん
レスありがとうございます。生来、遅筆の性質(たち)で、返答に少し時間のかかること、ご容赦ください。

まず、縦線の出たプログラムコードの件についてですが、恐縮ながら、
本サイトのサンプルコードをコピーしたもの(つまりまったく同一のもの)に過ぎません。
例えば右下の画像ですが、「ゲームプログラミングの館、13. 裏画面処理をして画像を動かす」
と同一のコードによる結果です。
それで、コードミスのせいではないんだなと思ったわけです。

となると確かに、他のソフトによる競合現象やOS周りということになるんでしょうかな。
ディスプレイがおかしいのだろうか……? うーん、パソコンってのは難しいですな。


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

Name: Mist  ..中級者(11,557ポイント)   Date: 2008/06/26(木) 18:52   No:17831     
Title: Re:時折、画像に縦線が入る    
DXライブラリをダウンロードするとサンプルプログラムが同梱されていますよね。
それをなんとかな〜れ〜さんの環境でコンパイルしてみてください。
サンプルソースは全画面なのでウィンドウモードへの変更は追記してください。

で、出来上がったexeを実行してみて
1.現象が再現する
 →PCに問題があるか、他のソフトの影響を受けているか、もしくは開発ツールの設定が間違っているか。。。
2.現象再現しない
 →現象が出るソースに問題ある(コピペしただけのつもりでもどっか間違えている)

今回の場合2の可能性は低そうな気もしますが、1だったらグラフィックスドライバを更新してみるといいかもしれませんね。
(グラフィックスドライバの更新方法はご使用のPCによって異なるのでメーカのHPなどで調べてください)


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

Name: 管理人 [URL]  ..伝説のハッカー(607,380ポイント)   Date: 2008/06/26(木) 19:01   No:17834     
Title: Re:時折、画像に縦線が入る    
DXライブラリの画面外にまで不具合が影響するのは、単純なコードの間違いではないかもしれません。
グラフィックうカードのドライバの問題ではないでしょうか。
ドライバの更新をしても、解決しない場合は、DXライブラリの本家の方で製作者さんに聞いてもらうほうがいいかもしれません。


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

Name: Justy  ..ハッカー(194,853ポイント)   Date: 2008/06/26(木) 20:59   No:17838     
Title: Re:時折、画像に縦線が入る    
 皆さんが書かれている通り、ドライバ絡みかなと思いますが、
もしそうだったとしたら、(ドライバの更新など環境の改善は別にして)
当面できる対策としては


・ DxLib_Init()より前に SetUse3DFlag(FALSE)を呼ぶ。

 或いは
 
・ DxLib_Init()より前に SetUseDirectDrawFlag(FALSE)を呼ぶ。

 このどちらかでパフォーマンスはかなり落ちることになりますが
ひょっとしたら正常に動くようになるかもしれません。

 一度お試し下さい。


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

Name: なんとかな〜れ〜  ..かけだし(1,331ポイント)   Date: 2008/06/27(金) 01:00   No:17853 解決!     
Title: Re:時折、画像に縦線が入る    
お返事遅れまして申し訳ありません。

まず、Mistさんの指摘にありました、DXライブラリ既存サンプルプログラムの実行ですが、
十数回試したところ、結局2、現象再現なしでした。うーん、何がトリガーになっているのか……。

そのような歯切れの悪い展開を抱えつつ、ともかく縦線の入るサンプル群に対し、
次にグラフィックドライバ及びDirectXの更新を試みましたが、効果はないようでした。

しかし、最後にJustyさんの書かれたSetUse3DFlag(FALSE);ですが、どうにも効いたようです。
本家の関数解説にあるように、動作が鈍くなるのを感じますが、どうも止まった……。

ドライバとの相性が悪いのか、何らかのソフトに変なひっかかりがあるのか……
ともかく、現時点での応急策としては、
・全画面モードで制作するか
・SetUse3DFlag関数を使うか、といったことになりそうです。

確かに、あまり突っ込んだ話は本家の製作者さんに聞いた方がいいかもしれませんね。
その場合少々マルチポストな感じであずましくない向きもありましょうし、判断の難しいところでは
ありますが、ここいらでこのトピックは解決マークを付け、一区切り付けた方がいいのかもしれませんね。
もう少し調べなおした上、改めてその必要があらば、製作者さんに話を伺ってみようと思います。
というわけで性急ではありますが、解決マークを付け、一区切りとしたいと思います。
皆さんありがとうございました。(ああ、それにしても私はあれですね、なんか硬いですね。)


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

Name: なんとかな〜れ〜  ..かけだし(1,436ポイント)   Date: 2008/06/27(金) 02:18   No:17854     
Title: Re:時折、画像に縦線が入る    
どうでもいい追記ですが……。
先程何気なく、ふと「四聖龍神録」をウィンドウモードで起動してみたら、ちょろっと縦線がかかりまして、
どうやらプログラミングの問題ではなかったようです。

つまりプログラミングには支障がないわけで、少し肩の荷が下りました。


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

Name: Mist  ..中級者(11,711ポイント)   Date: 2008/06/27(金) 09:43   No:17857     
Title: Re:時折、画像に縦線が入る    
SetUse3DFlag(FALSE)で改善されたとすると、結構古いPCをお使いなのでしょうか?
DXライブラリはDirectX7ベースなので少しぐらい古いグラボでもだいたい問題なく動くのですが、
結構古いビジネスユースノートPCとかだとDirectXのサポートが十分でないものもあるため、
その場合は、ご愁傷様ですが重いの我慢でSetUse3DFlag(FALSE)を使うか、PC買い換えるか・・・。

本家の管理人さんは忙しいようですぐには回答もらえないかもしれませんが、現象とご使用の
PCを書いて質問すれば何か対応してもらえるかもしれません。

#こちらのトピに本家質問のリンクだけ張ってもらえれば問題ないと思います。


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

Name: なんとかな〜れ〜  ..かけだし(1,676ポイント)   Date: 2008/06/27(金) 23:00   No:17867     
Title: Re:時折、画像に縦線が入る    
>Mistさん
承知しました。本家の掲示板に質問を貼りましたので、アドレスを載せておきます。
http://hpcgi2.nifty.com/natupaji/aska.cgi

私としては、これで解決しないのならそれはそれで仕方ないと、腹を括りました。
(考えようによっては)影響度も少ないと言えば少ないと言えますしね。
パソコンというのはこう、時に不条理な現象に見舞われるものだとも経験的に実感していますしね。

ちなみに私のパソコンはゲームに特化するでもない、そこいらの家電に(ローレベルとして)
売っているようなレベルのノートパソコンです(グラフィックデバイスSiS M760GX、メモリ64MB)。
とはいえ2005年式なので、3Dバリバリのゲームでもない限り
支障はないのではないかなと思うのですが、まあどんなものでしょうかね。


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

Name: なんとかな〜れ〜  ..かけだし(1,826ポイント)   Date: 2008/06/30(月) 01:28   No:17974 解決!     
Title: Re:時折、画像に縦線が入る    
今更ぶり返して書くほどのことでもないとは思うのですが、
管理人さんからのお答え、私の方針等決しましたので(詳細はアドレスの方を参照していただいて)、
けじめとして、ここでこのトピックは終了ということで締めさせていただきます。どうもお世話になりました。
今度はもっと実際的なプログラミングの話で質疑応答できたらいいですね。


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

Name: 管理人 [URL]  ..伝説のハッカー(610,521ポイント)   Date: 2008/06/30(月) 13:13   No:17982     
Title: Re:時折、画像に縦線が入る    
丁寧にご報告くださりありがとうございます。
リンク先拝見しました。
普段DXライブラリ管理人様にご報告や要望をすれば大抵の場合、解決するか、一時的に内容を変更したバージョンを下さったりするのですが、
今回の場合はどうにもならなかったようですね・・。

2005年製のPCということでそこまで古くないのに、使えないのは少し残念ですね。
もし本格的にゲームをお作りになるのなら、是非デスクトップPCの購入を検討してみてはいかがでしょうか。
ノートと違い、パーツが安くなった現代、3〜4万あればかなりハイエンドなPCが作れると思います。
私が言えるのはこの程度です;
今後ますますのご発展お祈りいたします。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,180ポイント)   Date: 2008/06/30(月) 23:26   No:17995     
Title: Re:時折、画像に縦線が入る    
3,4万!?

自作だとそんなに安くで作れるのですか?


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

Name: kazuoni  ..上級者(20,115ポイント)   Date: 2008/06/30(月) 23:34   No:17996     
Title: Re:時折、画像に縦線が入る    
自分は10万かけてそこそこのを作りましたがっ^^;って本題からそれてしまいますかね。。

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

Name: 管理人 [URL]  ..伝説のハッカー(611,066ポイント)   Date: 2008/06/30(月) 23:47   No:17997     
Title: Re:時折、画像に縦線が入る    
すみません、かなりハイエンドという言葉はふさわしくなかったですが
今主流となっているモデル位なら3万円代で作れるんじゃないでしょうか?
詳しい値段は調べてないですけど、だいたい

CPU E4600 13000円
HDD 500G 7000円
M/B 6000円
ケース 3000円
電源 3000円
メモリ 2GB 3200円
DVDドライブ 3500円

だとするなら3万代じゃないでしょうか?
グラフィックカードをどれにするかで大きく値段は変わるでしょうけど。
結構欲張ったモデルにしても5万代で作れるのではないかと。
先日友達にPCを作った時は5万代で結構いいもの作れましたよ。
もちろんどれも安いパーツですから、信頼性のあるパーツをそろえようとするといくらでも上がっていくと思います。
今クアッドコアCPUですら2万ちょっとですしね。
安くなったものです。
私がクアッド買った時は7万もしたのに・・・。
そしてクアッドは高いだけで、あまりクアッドに対応したソフトが無いので、あまり恩恵は受けられないという(´`;


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,195ポイント)   Date: 2008/07/01(火) 00:03   No:17998     
Title: Re:時折、画像に縦線が入る    
Pentium4だとどうなるのでしょう?

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

Name: 管理人 [URL]  ..伝説のハッカー(611,096ポイント)   Date: 2008/07/01(火) 00:13   No:18000     
Title: Re:時折、画像に縦線が入る    
今更Pen4を買う意味は無いと思いますが^^;
あえて買うにしても、3.4GHzが8千円位じゃないでしょうか?


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,825ポイント)   Date: 2008/07/01(火) 00:35   No:18001     
Title: Re:時折、画像に縦線が入る    
もう時代遅れってことですね…

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

Name: なんとかな〜れ〜  ..かけだし(2,029ポイント)   Date: 2008/07/01(火) 00:46   No:18002     
Title: Re:時折、画像に縦線が入る    
終わったと言っておいてレスするのもなんですが、それはそれ、時勢というものですな。

自作PCですか。それはまた熱いですね。
そんなに手ごろに(といっては語弊があるが)作れるものだとは知りませんでした。
こんなノートPCの端くれでも10万かかったことを考えると、次のパソコンは
もう少し慎重に選んでみても面白そうですなあ。
やはりパソコン使い(というのもなんですが)たるもの、一度はデスクトップ型が欲しいものです。
ノートだとメモリを増築するぐらいしかできませんしね。


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

Name: 管理人 [URL]  ..伝説のハッカー(611,342ポイント)   Date: 2008/07/01(火) 01:44   No:18005     
Title: Re:時折、画像に縦線が入る    
>tkさん
いや、pen4が悪いわけではないのですが、
それよりいいCPUが同じ位の値段で買えるのにわざわざpen4を選択される理由が何かあるのかなと^^;

>なんとかな〜れ〜さん
いや〜もうここは質問をすることだけの為の場ではないので、雑談でも何でもお気軽にどうぞ☆
他の質問に流れそうな時は他にトピを立ててもらった方がいいかもしれませんが、雑談ならぐだぐだに長くなってもOKですm(_ _)m

自作PCをし始めるともうメーカーのPCなんか買ってられなくなりますよねぇ。
そこにメンドクササを感じない人はもうメーカー品を買う理由がなさそう。
ノートはパーツが少ないですよね〜。
先日ノートPCも買ったんですが、1900x1200のモニタのノート買ったら重くて暗くて最悪でした・・orz

メモリは今1GB1800円とかで買えますし、安くなりましたよねぇ。
USBメモリなんか、2GBで800円とかで買えるんじゃないでしょうか。
32GBのUSBメモリなんかもありますし、ちょっと古いPCショップに行ったら昔の32MBのものと間違えそうですw


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,692ポイント)   Date: 2008/07/01(火) 02:08   No:18006     
Title: Re:時折、画像に縦線が入る    
>それよりいいCPUが同じ位の値段で買えるのにわざわざpen4を選択される理由が何かあるのかなと^^;

Core 2 Duoモデルはまだ3万を上回ってますよね?

となるとAMDのAthlonとかかな…

>自作PCをし始めるともうメーカーのPCなんか買ってられなくなりますよねぇ。
>そこにメンドクササを感じない人はもうメーカー品を買う理由がなさそう。

プログラミングをするくらいですからそれくらいは苦にならないのでは?

今はメーカー製ですが、次は自作する予定です。(いつになるのやら…)


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

Name: 管理人 [URL]  ..伝説のハッカー(611,546ポイント)   Date: 2008/07/01(火) 03:35   No:18007     
Title: Re:時折、画像に縦線が入る    
いやいや、Core2Duoなら1万ちょいから買えますよ。

Core2Duo
http://www.coneco.net/SpecList/01501010/op1/Core+2+Duo/spec_order/PRICE/

それに今Athlon買うならフェノムがいいですよ。
http://www.coneco.net/specList.asp?FREE_WORD=&LOWPRICE=&HIPRICE=&MAKER_NAME=&OP1=Phenom&OP2=&OP3=&OP4=&OP5=&DISPLAY=20&SPEC_ORDER=PRICE&SPEC=1&ORDER=&CATEGORY1=0150&CATEGORY2=10&CATEGORY3=10&SID=CO&SHOP_ID=&LIST_KIND=0

PCパーツなんて刻一刻と変わりますしね〜。
現在のハイエンドモデルを買うと必ず損するかと・・。
その時代のミドルモデルを買うのが一番ですねb
7万でクアッドコア買った直後に価格改定で半額になったときホント泣きましたorz


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,808ポイント)   Date: 2008/07/01(火) 19:04   No:18023     
Title: Re:時折、画像に縦線が入る    
そうですね。余裕があったら日本橋で勉強しましょうか…(秋葉原はさすがに無理です。地理的にありえません。)

うーん、Athlonのほうがクロック数が速い気がしますけど、Core 2 Duoのほうが速いのですよね。
ある程度グラボ性能いいのを用意したほうがゲームには向いているかも…


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



Name: 五郎  ..ぴよぴよ(461ポイント)   Date: 2008/06/30(月) 19:22   No:17991       
Title: ゲームプログラムの館-2.ウィンドウを表示させる。について    
はじめまして。
現在、このサイトのプログラムの館を見ながらゲームプログラムに挑戦している者です。
早速ですが、2番のウィンドウを表示させる。という内容を実際にやってみたのですが、実行しても何も起こりません。一応以下のコードを書いて試してみたところ、if( DxLib_Init() == -1 ) return -1;の段階でプログラムが終了していたことがわかりました。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);
if( DxLib_Init() == -1 ) {
ShowMessage(NULL,TEXT("error"),TEXT("error"),MB_OK);
return -1;
}

WaitKey() ;
DxLib_End() ;
return 0 ;
}

実行結果:errorのメッセージが出てプログラム終了。

元のソースコード自体は、このサイトから指示通りコピーしたものを使用したのでスペルミス等はないと思います。
また、一番最初のサンプル(全画面にして、キャラのイラストを表示する)はちゃんと実行できますので、ちゃんと設定等もできているとは思うのですが・・・。
わかる方がいらっしゃいましたらご助言よろしくお願いします。

開発環境
OS:Windows2000professional
CPU:intel セレロン500MHz
メモリ:192MB
開発ソフト:BCC Developer 1.2.21
コンパイラ:BorlandC++ Compiler 5.5


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


Name: Justy  ..ハッカー(195,297ポイント)   Date: 2008/06/30(月) 21:21   No:17994     
Title: Re:ゲームプログラムの館-2.ウィンドウを表示させる。について    
 DXライブラリはデバッグの為に Log.txtという内部の挙動を記したファイルを出力していますが、
その正しく実行が行われない時の Log.txtの中身はどうなっていますか?

 何か異常を検出していませんか?



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

Name: 五郎  ..ぴよぴよ(489ポイント)   Date: 2008/07/01(火) 18:11   No:18022 解決!     
Title: Re:ゲームプログラムの館-2.ウィンドウを表示させる。について    
Justyさん早速の返信ありがとうございます。
言われたとおり、Log.txtを見た所「DXライブラリは24ビット表示には対応していない」旨の記述があったのでパソコンの画面の色設定を24bit→16bitに設定しなおして実行したところ、うまく作動するようになりました。

ありがとうございました。
これからも、こんな些細なことで質問するかもしれませんが(なるべく自己解決できよう心がけますが)、そのときはまたよろしくお願いします。


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



Name: きつね  ..ぴよぴよ(596ポイント)   Date: 2008/06/25(水) 18:22   No:17796       
Title: 無題    
ウィンドウがアクティブかどうか調べる方法とマウスカーソルがウィンドウの外に出ないようにする方法
教えてください、お願いします


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


Name: ibis  ..中級者(10,645ポイント)   Date: 2008/06/25(水) 18:52   No:17797     
Title: Re:無題    
とりあえず環境を明記してくださいな。

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

Name: きつね  ..ぴよぴよ(619ポイント)   Date: 2008/06/25(水) 19:56   No:17799     
Title: Re:無題    
OSはwindowsXPで、BorlandC++コンパイラを使っています

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

Name: ibis  ..中級者(10,705ポイント)   Date: 2008/06/25(水) 20:10   No:17801     
Title: Re:無題    
ライブラリは何をお使いですか?
DXLibですかねぇ?
そういった処理を行うにはWindowsAPIとかが要りますけど。


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

Name: きつね  ..ぴよぴよ(591ポイント)   Date: 2008/06/25(水) 21:30   No:17804     
Title: Re:無題    
使ってるのはDXLibです、プログラミングもまだ少ししかやってないので
WindowsAPIってのもはじめて聞きました


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

Name: やそ  ..比類無きプログラマー(74,472ポイント)   Date: 2008/07/01(火) 16:29   No:18018     
Title: Re:無題    
ClipCursor()というAPI関数があります。それでウィンドウからでないように出来るようです。

参考(答え)サイト
ttp://www.geocities.jp/ky_webid/win32c/index.html

第7章  マウスカーソルの操作 '2007/4/7

にソースまで掲載されています。

やっとこさ調べることが出来ただよ^^;

頑張って下さい。


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

Name: tor  ..ぴよぴよ(10ポイント)   Date: 2008/07/01(火) 16:43   No:18019     
Title: Re:無題    
WM_ACTIVATE

wParam==WM_ACTIVE
で判定できそう?ボーランドのコンパイラではできないのかな?


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

Name: Mist  ..中級者(12,188ポイント)   Date: 2008/07/01(火) 16:49   No:18020     
Title: Re:無題    
DXライブラリの隠し関数

int GetWindowActiveFlag( void ) ;

で、アクティブかどうかわかります。
アクティブのときの戻り値がなんだったかはちょっと忘れてしまったので、実行して調べてみてください。


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



Name: える  ..ぴよぴよ(161ポイント)   Date: 2008/06/30(月) 09:31   No:17976       
Title: わかる方回答お願いします・・・    
課題が出たのですがよくわからないので回答していただける方お願いします。

# 次のようにキーボードから4桁の10進数の入力を2回受付ける.
Input the 1st value > 6479
Input the 2nd value > 1497

但し,4桁の各位の数は必ず互いに異なるものが入力されるとする.
# 入力された数値に対して,以下に定義する「ヒット数」と「ホームラン数」を求める.

* ホームラン数: 二つの数字を同じ位ごとに比較した時,何ヶ所の位について一致しているかを表す.
* ヒット数: 二つの数字を異なる位同士で比較した時,一致している組み合わせの数を表す.


1234と1234の場合,0ヒット4ホームラン
1234と4321の場合,4ヒット0ホームラン
6479と1497の場合,2ヒット1ホームラン


# ヒット数とホームラン数を次のように表示する.
2 hit(s) 1 home run(s)


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


Name: バグ  ..比類無きプログラマー(94,184ポイント)   Date: 2008/06/30(月) 09:57   No:17977     
Title: Re:わかる方回答お願いします・・・    
この課題の何が分からないのでしょうか?
質問はもう少し具体的にしていただかなければ、答えようがないです(^_^;)


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

Name: box  ..ハッカー(114,348ポイント)   Date: 2008/06/30(月) 10:06   No:17978     
Title: Re:わかる方回答お願いします・・・    
コンピュータ・プログラムによらずに
手でホームラン数とヒット数を求めるとしたら、
どういう手順を踏みますか?


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

Name: える  ..ぴよぴよ(409ポイント)   Date: 2008/06/30(月) 10:10   No:17979     
Title: Re:わかる方回答お願いします・・・    
とりあえずこのように作ったのですが
#include <stdio.h>
#define N 4

int main(void){
int first;
int second;
int fir[N];
int sec[N];
int hits;
int homeruns;
int i,j;
printf("Input the 1st value >");
scanf("%d", &first);
printf("Input the 2nd value >");
scanf("%d", &second);

for(i=0;i<N;i++){
fir[i]=first%10;
sec[i]=second%10;
first = first/10;
second = second/10;
}
このあとどうしていいかわかりません。
教えてください


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

Name: たいちう  ..入門者(4,347ポイント)   Date: 2008/06/30(月) 10:41   No:17980     
Title: Re:わかる方回答お願いします・・・    
> このあとどうしていいかわかりません。
> 教えてください

まずfir[0]について考えて見ましょう。
もしsec[0]と等しければホームラン、
sec[1]かsec[2]かsec[3]と等しければヒットです。

次にfir[1]、fir[2]、fir[3]と順に判定すれば、
全体のホームランとヒットの数がわかります。

普通は2重のforループを使ったプログラムになると思いますが、
もしイメージしにくいならば、冗長になりますが1重のループで作るとか、
fir[0]についてだけ正しく判定できるプログラムを作るとか、
できることからやってみてください。


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

Name: Mist  ..中級者(12,006ポイント)   Date: 2008/06/30(月) 11:43   No:17981     
Title: Re:わかる方回答お願いします・・・    
http://www.play21.jp/board/formz.cgi?action=res&resno=17779&page=20&lognum=&id=dixq&rln=17819

問題の内容がこのトピとまったく同じですね。
同じ学校の人でしょうか?
参考までにどうぞ。


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

Name: 管理人 [URL]  ..伝説のハッカー(610,559ポイント)   Date: 2008/06/30(月) 13:14   No:17983     
Title: Re:わかる方回答お願いします・・・    
ソースコードを投稿される場合は、プレタグをご使用下さい。
詳しくは規約をご覧下さい。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,807ポイント)   Date: 2008/07/01(火) 00:08   No:17999     
Title: Re:わかる方回答お願いします・・・    
作ってみました。ただ…、勢いだけで作ったので(動作確認はしてあるのですが…)下手くそなコードである事には間違いありません。

#include<stdio.h>

int main(void)
{
int firstnum[4];
int secondnum[4];
int input1,input2;
int hrcount,hitcount=0;

/*入力を受け付ける。*/
fputs("Input the 1st value >",stdout);
scanf("%d",&input1);
fputs("Input the 2nd value >",stdout);
scanf("%d",&input2);

/*それぞれの桁に分解する。*/
{
int i;
for(i=0;i<4;i++){
firstnum[i]=input1%10;
secondnum[i]=input2%10;
input1/=10;
input2/=10;
}
}

/*とりあえずホームランの数を勘定する。*/
hrcount=(firstnum[0]==secondnum[0])+(firstnum[1]==secondnum[1])+
(firstnum[2]==secondnum[2])+(firstnum[3]==secondnum[3]);

/*ホームランも含めたヒット数を勘定する。*/
{
int i;
for(i=0;i<4;i++){
int j;
for(j=0;j<4;j++){
hitcount+=(firstnum[i]==secondnum[j]);
}
}
}
hitcount-=hrcount;

/*結果を表示*/
printf("%d hit%s %d home run%s\n",hitcount,((hitcount!=1)?"s":""),hrcount,((hrcount!=1)?"s":""));

return 0;
}

意味は自分で考えてください(無責任〜

ある意味<pre>タグ要らなかったかな?…


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

Name: える  ..ぴよぴよ(445ポイント)   Date: 2008/07/01(火) 09:21   No:18009     
Title: Re:わかる方回答お願いします・・・    
みなさんありがとうございました。一応、参考にしながら少し頑張ってみます!つまづいたらまた助けてください(すぐ来るかもです)よろしくお願いします(^O^)

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



Name: マキガミ  ..初心者(6,164ポイント)   Date: 2008/06/29(日) 21:23   No:17969       
Title: 文字列の先頭と末尾を取り除くプログラム    
こんばんは。
また、行き詰ってしまいアドバイスをお願いします。

実行例の空白除去後のabc以外の文字を消すには、
どうしたらいいでしょうか?

実行環境は、
OS:windows XP
コンパイラ:VS
です。

問題
第1引数で渡された文字列の先頭と末尾の空白文字を取り除いた文字列を第2引数で
指定された領域に設定し、取り除いた空白文字の数を戻り地として返す関数を作成。
第2引数で指定された領域は、呼び出し元で空白を取り除いた文字列を格納するのに
十分なサイズの領域が指定されているものとする。


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

#define NUMBER 33

int TrimStr(char str[], char str0[])
{
int i = 0;
int j = 0;
int len = 0; /* 文字列長 */
int SPcounter = 0; /* 空白文字のカウンター */
int frontDelSP = 0; /* 先頭の空白文字数 */
int strEOF = 0; /* 第1引数の末尾の空白文字の開始場所 */

/* 文字列長を求める */
while (str[len] != '\0') {
len++;
}

/* 先頭空白文字をカウント */
while (str[i] == ' ') {
SPcounter = SPcounter + 1;
i++;
}
frontDelSP = SPcounter;

/* 末尾空白文字をカウント */
i = len - 1;
while (str[i] == ' ') {
SPcounter = SPcounter + 1;
i--;
}
strEOF = i;

/* 領域の確保 */
str0 = malloc(len - SPcounter);

/* 空白を取除き、順次格納 */
i = frontDelSP;
while (i <= strEOF) {
str0[j] = str[i];
j++;
i++;
}

free(str0);

return SPcounter;
}

int main(int argc, char* argv[])
{
char str[NUMBER] = {"0"};
char str0[NUMBER];
int SPnum = 0;

printf("文字列  :");
gets(str);

printf("空白除去前:\"%s\"\n", str);

SPnum = TrimStr(str, str0);

printf("空白除去後:\"%s\"\n", str0);

printf("空白文字数:%d\n", SPnum);

return 0;
}

実行例
文字列  : abc
空白除去前:" abc "
空白除去後:"フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ abc "
空白文字数:4


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


Name: box  ..ハッカー(114,274ポイント)   Date: 2008/06/29(日) 21:55   No:17970     
Title: Re:文字列の先頭と末尾を取り除くプログラム    

> /* 領域の確保 */
> str0 = malloc(len - SPcounter);
ここと

> free(str0);
ここの必要性について説明してください。




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

Name: マキガミ  ..初心者(6,184ポイント)   Date: 2008/06/29(日) 22:30   No:17971     
Title: Re:文字列の先頭と末尾を取り除くプログラム    
実行例のabcの文字列のみを格納するための領域を確保するためです。

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

Name: box  ..ハッカー(114,304ポイント)   Date: 2008/06/29(日) 23:13   No:17973     
Title: Re:文字列の先頭と末尾を取り除くプログラム    
main関数でstr0として領域を確保済みです。
それを使えばよいです。
TrimStr関数でのmallocとfreeは、いらないです。


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

Name: マキガミ  ..初心者(6,873ポイント)   Date: 2008/06/30(月) 20:32   No:17993 解決!     
Title: Re:文字列の先頭と末尾を取り除くプログラム    
領域確保のところ勘違いしていました。
ご指摘ありがとうございました。
何とか完成させることができました。


#include <stdio.h>
#define NUMBER 33

int TrimStr(char str[], char str0[])
{
int i = 0;
int j = 0;
int len = 0; /* 文字列長 */
int SPcounter = 0; /* 空白文字カウンター */
int frontDelSP = 0; /* 先頭の空白文字数 */
int strEOF = 0; /* 第1引数の末尾の空白文字の開始場所 */

/* 文字列長を求める */
while (str[len] != '\0') {
len++;
}

/* 先頭空白文字をカウント */
while (str[i] == ' ') {
SPcounter = SPcounter + 1;
i++;
}
frontDelSP = SPcounter;

/* 文字列長、先頭空白文字数が同じ場合 */
if (len == frontDelSP) {
str0[0] = '\0';
return SPcounter;
}

/* 末尾空白文字をカウント */
i = len - 1;
while (str[i] == ' ') {
SPcounter = SPcounter + 1;
i--;
}
strEOF = i;

/* 空白を取除き、順次格納 */
i = frontDelSP;
while (i <= strEOF) {
str0[j] = str[i];
j++;
i++;
}
str0[j] = '\0';

return SPcounter;
}

int main(int argc, char* argv[])
{
char str[NUMBER] = {"0"};
char str0[NUMBER];
int SPnum = 0;

printf("文字列  :");
gets(str);

printf("空白除去前:\"%s\"\n", str);

SPnum = TrimStr(str, str0);

printf("空白除去後:\"%s\"\n", str0);

printf("空白文字数:%d\n", SPnum);

return 0;
}


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



Name: もんた  ..ぴよぴよ(194ポイント)   Date: 2008/06/28(土) 02:00   No:17872       
Title: カードゲームを・・・    
始めまして、もんたです。
現在C言語の勉強をしていて、練習として自作のカードゲームを作ってみようと思っています。
そこで質問なのですが、構造体を使ってカードの情報を記録し、それを照らし合わせて役を判定する事は可能でしょうか?

例えばトランプには数字と模様の情報があります。
それを、

struct toranpu card1;

strcpy(card1.name,"card1")
card1.number = 8
card1.moyou = heart

と、

struct toranpu card2;

strcpy(card2.name,"card2")
card2.number = 5
card2.moyou = daiya

の二つ用意します。

そしてこの二つのカードを揃えて出すと役が完成・・・という様な事は可能でしょうか?
もし可能なら、詳しいやり方を教えて頂けないでしょうか?

また、構造体で作った配列をシャッフルし、手札として割り当てる方法も教えて頂けるとありがたいのですが・・・。
(↑これは面倒なら答えて頂かなくてもかまいません。)


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


Name: 木霊  ..中級者(10,344ポイント)   Date: 2008/06/28(土) 04:54   No:17874     
Title: Re:カードゲームを・・・    
はじめまして、もんたさん

え〜と、

構造体のメンバ「number」はint型ですよね
「moyou」の方もint型ならいいんですが、char型のポインタ("heart"や"daiya"が文字列ならば)なら
難しくなりそうです

自分はあまりできない方なので、もっとスマートなやり方がありそうですが、
役を全て事前に列挙しておき、if文でしらみつぶしに調べる、というのが確実でしょうか?
数字のペアだけならif ( card1.number == card2.number ) { /*ペア成立*/ }
みたいにできますが、模様と数字が決まっていて、規則性が無いならば自分ならそうします

ちなみに例だとif ( card1.number == 8 && card1.moyou = heart && card2.number == 5 && card2.moyou == daiya ) { /*ペア成立(ただしmoyouの中身が文字列のつもりでなければ)*/ }
ですね

現段階では、役がカード2枚以上でも成立するのか、それ以外の役は?とか不確定なことが
多いので(構造体の定義も)、そのものずばりな回答は得られにくいですよ
それに、もう少し情報があると、もっとすごい人に診てもらえますw


「name」でカードに名前をつけているということは・・・最終的に「遊戯○」っぽくなる、とかはないかな?


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

Name: バグ  ..比類無きプログラマー(94,355ポイント)   Date: 2008/06/28(土) 07:44   No:17876     
Title: Re:カードゲームを・・・    
あの書き方から察するに、moyouは列挙型じゃないですか?

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

Name: kazuoni  ..上級者(19,965ポイント)   Date: 2008/06/28(土) 08:20   No:17877     
Title: Re:カードゲームを・・・    
構造体の配列を使用したらもっと管理しやすくなるよな気がするのですが・・・(今回はカードの種類が二種類なんで効率的かどうかわかりませんが・・・。)

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

Name: バグ  ..比類無きプログラマー(93,804ポイント)   Date: 2008/06/28(土) 09:14   No:17879     
Title: Re:カードゲームを・・・    
主さんが提示したソースを参考にせずに、好き勝手に作ってみました(^_^;)


#include <stdlib.h>
#include <time.h>
#include <memory.h>

#define SHUFFLE 1000 /* デッキをシャッフルする回数 */

/* 構造体の定義 */
struct TRUMP
{
int mark; /* カードのマーク、1〜4の値が格納される */
int number; /* カードの数字、1〜13の値が格納される */
};

/* main関数 */
int main(void)
{
/* 変数の宣言 */
int cnt, a, b;
TRUMP trump[52], dummy;

/* デッキの初期化 */
for (cnt = 0; cnt < 52; cnt++)
{
trump[cnt].mark = cnt / 13 + 1;
trump[cnt].number = cnt % 13 + 1;
}

/* 乱数生成準備 */
srand((unsigned)time(NULL));

/* デッキのシャッフル */
for (cnt = 0; cnt < SHUFFLE; cnt++)
{
/* aとbの2つの乱数を用意する */
a = rand() % 52;
b = rand() % 52;

/* aとbの位置にある構造体変数の中身を入れ替える */
memcpy(&dummy, &trump[a], sizeof(TRUMP));
memcpy(&trump[a], &trump[b], sizeof(TRUMP));
memcpy(&trump[b], &dummy, sizeof(TRUMP));
}

return 0;
}


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

Name: kazuoni  ..上級者(20,063ポイント)   Date: 2008/06/28(土) 09:54   No:17882     
Title: Re:カードゲームを・・・    
>TRUMP trump[52], dummy;

struct TRUMP trump[52];
struct TRUMP dummy;

じゃありませんでしたっけっ^^;間違えてたらすみません・・・。あとついでにmemcpyの三つ目も・・間違えてたらすみません・・・


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

Name: バグ  ..比類無きプログラマー(94,140ポイント)   Date: 2008/06/28(土) 10:14   No:17884     
Title: Re:カードゲームを・・・    
最初の件は確かにそうですが、主さんのソースを見る限りC/C++コンパイラだと思って問題ないかと考えました。
二つ目のは完全に私のミスですね。引数が逆になってます(苦笑)


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

Name: フリオ  ..上級者(23,543ポイント)   Date: 2008/06/28(土) 11:32   No:17889     
Title: Re:カードゲームを・・・    
 
 急ごしらえですが、カードを準備してプレイヤー1に配り、
残ったカードをシャッフルしてプレイヤー2に配るプログラムです。

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

typedef struct card_t{
int num, suit;
}CARD;

typedef struct stock_t{
CARD card[52];
int remain;
}STOCK;

void SetStock(STOCK *stock)
{
const char *suitch = "SCHD";
int i;

for(i = 0; i < 52; i ++){
stock->card[i].num = i % 13 + 1;
stock->card[i].suit = suitch[i / 13];
}
stock->remain = 52;
}

void Swap(CARD *a, CARD *b)
{
CARD c = *a;
*a = *b;
*b = c;
}

void Shuffle(STOCK *stock)
{
int rnd, n = stock->remain;

while(n --){
rnd = (int)((n + 1) * (rand() / (RAND_MAX + 1.0)));
Swap(&stock->card[n], &stock->card[rnd]);
}
}

int Deal(STOCK *stock, CARD *player, int n)
{
int i;

if(n > stock->remain) return 0;
for(i = 0; i < n; i ++) player[i] = stock->card[-- stock->remain];
return 1;
}

void PrintCard(CARD *card, int n)
{
int i;

for(i = 0; i < n; i ++){
if(card[i].suit) printf("[%c%2d]", card[i].suit, card[i].num);
if(i % 13 == 12) putchar('\n');
}
if(i % 13) putchar('\n');
}

void Print(STOCK *stock, CARD *player1, CARD *player2)
{
printf("\nstock %d\n", stock->remain);
PrintCard(stock->card, stock->remain);
printf("player1 : ");
PrintCard(player1, 5);
printf("player2 : ");
PrintCard(player2, 5);
}

int main(void)
{
STOCK stock;
CARD player1[5] = {0}, player2[5] = {0};

srand((unsigned)time(NULL));
SetStock(&stock);
Print(&stock, player1, player2);
Deal(&stock, player1, 5);
Print(&stock, player1, player2);
Shuffle(&stock);
Deal(&stock, player2, 5);
Print(&stock, player1, player2);
return 0;
}

 


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

Name: もんた  ..ぴよぴよ(539ポイント)   Date: 2008/06/28(土) 11:55   No:17890     
Title: Re:カードゲームを・・・    
おお、こんなに返信が・・・・・・皆さんありがとうございます。
特にシャッフルは細かく書いてくださって、大感謝です。
シャッフルの方はこれを応用して何とかしてみようと思います。

役についてですが、もう少し詳しい情報を・・・とあったので、もう少しカードの情報を書いておこうと思います。

@ゲームはUNOの様に、デッキからカードを引いて出すタイプ
Aカードには、出すと相手を一回休みにしたりする様なものと、役を作るものの二つに分かれる
B役のカードは揃えてから出すのではなく、1ターンに最大一枚ずつ順番に出していく
C役は三枚の物を三種類作る

そして役を作るカードですが、色と数字の要素があります。
色は三種類あり、役を別の色と組み合わせる事はできません。
数字も三種類ありますが、これは出す事の出来る順番を示します。
例えば、1なら最初におくことが出来、3なら役の最後に置く事ができます。
つまり、1の赤、2の赤、3の赤、と順番に出す事になります。
ちなみに同じカードが2枚あります。


やたら長文になって申し訳ありません・・・。
色々と書いていますが、まずは3種類の役を作るプログラムを作ろうと思っています。
役に使うカード以外の事は後々考えようと思います。

やはり木霊さんの仰る通り、事前に役を列挙しておくやり方が良いのでしょうか?


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

Name: 木霊  ..中級者(10,677ポイント)   Date: 2008/06/28(土) 21:42   No:17936     
Title: Re:カードゲームを・・・    

(役に使えるカードの)色が3種類で数字も1〜3だけなら一枚出されるごとに色と数字をチェックすれば
いけそうです

・・・
// ----
if ( 今出したカードが役に使えるか == false ) { goto 次の処理;}
if ( カウント != 0 ) {
if ( ( 今出したカードの色 == 今まで出されてきたカードの色 ) &&
( 今出したカードの数字 > 前回出したカードの数字 ) ) {
カウント ++;
前回出したカードの数字 = 今出したカードの数字;
} else {
カウント = 0;
今まで出されてきたカードの色 = 今出したカードの色;
前回出したカードの数字 = 今出したカードの数字;
}
} else {
カウント = 1;
今まで出されてきたカードの色 = 今出したカードの色;
前回出したカードの数字 = 今出したカードの数字;
}
if ( カウント == 3 ) { /*役成立の処理へ*/ }
// ----
次の処理:// goto文のラベル
・・・


こんな感じで考えてみました、数字の上限が3以上に変更になった時も一応対応できます
(日本語部分は自分のプログラムに合わせて置き換えて見てください)
if文の入れ子が多くなるのであえてgotoを使ってますが関数化(//----の範囲)する時にはreturn文に
置き換えて下さい


> バグさん

#defineかenumとは思ったんですが、昔の自分が一度やってしまった間違いだったので・・・


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

Name: もんた  ..ぴよぴよ(482ポイント)   Date: 2008/06/29(日) 23:06   No:17972 解決!     
Title: Re:カードゲームを・・・    
おお・・・ありがとうございます。
これで何とか基本部分は作れそうです。
答えてくださった皆様、本当にありがとうございました。


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



Name: 管理人 [URL]  ..伝説のハッカー(607,601ポイント)   Date: 2008/06/27(金) 20:28   No:17860       
Title: ★ 四聖龍神録Plus本日リリース! ★    
四聖龍神録Plus、本日リリースしました!

今回、ファンタズムとオマケ弾幕を実装した四聖龍神録Plus。
初回限定はファンタズムを通常、EXクリアしていないくても初期状態で遊べます。

光と闇をテーマにした輝く弾幕をお楽しみ下さい☆



また、弾幕生成システムの搭載により、今までに無い複雑な弾幕を表現可能になりました!
シリアスなファンタズムステージから遊び心満載のオマケスペルプラクティスまで幅広く実装!



前回までのステージで残したストーリー。
あの村はどうなってしまうのか。アイシャの運命はこれからどうなってしまうのか。
EXで屍の残したリリアとは何だったのか。



フルボイスでお届けするファンタズムの世界!
四聖龍神録 完結編、是非プレイしてみて下さい^^


((((((製作時間は1から1500時間・・・。全力で作りましたっ><


DLはこちらから↓
http://dixq.net/sr/


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


Name: kazuoni  ..上級者(20,029ポイント)   Date: 2008/06/27(金) 21:27   No:17861     
Title: Re:四聖龍神録Plus本日リリース!    
本当にお疲れ様です^^;・・・尊敬しますわぁ〜!!自分もいつかは管理人さんみたいな完成度の高い作品作って、自分のHPなんかも作っちゃったりして、・・・なんてしたいです。

本当にお疲れ様でした。では、さっそくDLしてきますミ


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

Name: 組木紙織  ..熟練のプログラマー(52,853ポイント)   Date: 2008/06/27(金) 23:38   No:17869     
Title: Re:四聖龍神録Plus本日リリース!    
本当にお疲れ様です。
これだけのものが出来れば十分お金をとってもいいレベルと思います。

>弾幕生成システムの搭載により

実際のコードも見てみたいですが、一番気になるのはここかな。

#いったい全部でソースコード何行ぐらいになったのかな。


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

Name: こめかみ  ..入門者(2,656ポイント)   Date: 2008/06/28(土) 05:19   No:17875     
Title: Re:四聖龍神録Plus本日リリース!    
おめでとうございっ。
あー何かまともなゲーム作るまでなるべくROMでいようと思ってたんですが、
なんか自分まで嬉しくなってつい書き込んでしまいます。
なれなれしく感じられたら失礼します。


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

Name: 管理人 [URL]  ..伝説のハッカー(608,292ポイント)   Date: 2008/06/28(土) 13:12   No:17892     
Title: Re:四聖龍神録Plus本日リリース!    
>kazuoniさん

いかがだったでしょうか?!
毎日このSTG製作に力を注いできました^^;

>自分もいつかは管理人さんみたいな完成度の高い作品作って、自分のHPなんかも作っちゃったりして

完成度はまだまだ低いですが、今後より完成度の高いものが作れるように努力したいと思います!
もしkazuoniさんのHPでご自身のゲームが公開された時は是非拝見させてくださいね〜♪
私自身、2年前まではそんなこと考えもしなかったので、全く難しい事じゃないと思います!
私も追い抜かれてしまわれないよう、毎日精進するつもりですので、是非頑張って下さいっ!

>組木紙織さん

プレイして頂きありがとう御座います^^
弾幕生成システムというカッチョイイ名前をつけてしまいましたが、
実は画像から色付きのドットを取ってきて座標に埋めるだけというここの常連様には
そんなシステムすぐ出来るじゃんという感じのシステムです(汗





ある文字を書いた白黒の画像を用意します。bmpファイルです。
座標を端から調べていって、どこが、文字の線の中央であるか調べ、
文字の線の中央にピクセルデータを置いていきます。
ある程度はなれて、線上にピクセルデータを置いていきます。

このように画像をいれたら座標データがアウトプットされるシステムを作りました。
しかし、行書体だったりすると、なかなかどこが線の中央なのか判別しにくかったことと、
「書き順」を表現したかったので、今度はペイントみたいなソフトを作りました。
ペイントモドキソフトでなぞるとそのなぞった線が弾幕データになるというものです。

他には、絵画像->弾幕データコンバートシステムも作りました。
線でかかれている線画は、弾幕データに変換出来ます





上の絵は、緑青黒羽さんに弾幕に変換しやすい絵を描いて欲しいと頼んで描いて頂きました。

>#いったい全部でソースコード何行ぐらいになったのかな。

う〜ん、ファイルが沢山あるので、全部あわせて何行になるかはわからないですが・・。
6万行位でしょうか?
まぁ殆どが弾幕データですね^^;
1個100行でも、弾幕が400個あったら4万行ですし;


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

Name: 組木紙織  ..熟練のプログラマー(52,732ポイント)   Date: 2008/06/28(土) 13:27   No:17894     
Title: Re:四聖龍神録Plus本日リリース!    
弾幕生成システムは
汎用的な弾幕データを出力する弾幕生成システムを作って、
その弾幕データを使って弾幕を表示しているのかと勝手に思っていたら
弾幕のソースコードを書いていたのですか、それは大変ですね。

#ファイルに弾幕データを出力したらパラメータに何が必要なのかなとちょっと気になっていたので
#見てみたかっただです。


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

Name: 管理人 [URL]  ..伝説のハッカー(609,516ポイント)   Date: 2008/06/28(土) 13:36   No:17896     
Title: Re:四聖龍神録Plus本日リリース!    
単に「手入力で座標を指定出来ないデータを出力する」だけです^^;
バイナリファイルに沢山かかれた座標と書き順のセットのデータを弾幕前に読み込んでるだけです。

読み込んでるのはこんなデータですね。
座標は最大1000個、30枚の画像データだとこうなります。

#define FONT_MAX 30
#define FONT_REM_MAX 1000
typedef struct{
int n;//書き順の番号データ
double x,y;
}fontp_t;
fontp_t fontp[FONT_MAX][FONT_REM_MAX];

シューティング作製ツールでも作ろうか、または、弾幕を何とか外部ファイルのデータだけで表現出来ないかと
思ったんですが、うーん、中々複雑な軌道になると難しいです・・。


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(79,958ポイント)   Date: 2008/06/28(土) 22:35   No:17939     
Title: Re:四聖龍神録Plus本日リリース!    
リリースおめでとうございます。

うーん、僕はしばらくゲームソフトとは違うソフトの開発を目指す事にします。
作りたかったんですけどね…。


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

Name: メル  ..ぴよぴよ(919ポイント)   Date: 2008/06/29(日) 00:28   No:17943     
Title: Re:四聖龍神録Plus本日リリース!    
本当にお疲れさまです!早速遊んでみました!!
早速ファンタズムをプレイしましたが通常モードでいきなり撃沈し、イージーモードでクリアしましたw
色々と東方の小ネタが積み込まれてて細かい所も凄いなぁ。。。と思いましたw(後半が永夜抄4面道中とかボス後半の通常が幽々子様だとかゴニョゴニョ)
フルボイスは最初は驚きましたけどイメージピッタリで気持ちよくプレイすることができました!
その他にも、色々と時間を忘れて長く遊べるようになっていてとても楽しめました!!(プレイし始めて気が付けば2時間・・・

しかし凄いなぁ・・・管理人さんのゲームをやってると自分もこういうゲームを作ってみたい・・・と思いますw
色々と手はつけたいんですが大きい目標ゆえどこから手をつけたらいいのかまだ探り状態で・・・orz
自分も管理人さんを目指して頑張ってみたいと思います!

兎に角、お疲れさまでしたっ><


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

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,041ポイント)   Date: 2008/06/29(日) 10:41   No:17955     
Title: Re:四聖龍神録Plus本日リリース!    
そういえば、フルボイスはどのように録音したのでしょうか?

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

Name: 翡翠  ..かけだし(2,196ポイント)   Date: 2008/06/29(日) 15:45   No:17961     
Title: Re:四聖龍神録Plus本日リリース!    
 お疲れ様です!
 四聖龍神録Plusはまだやっておりませんが、前作は楽しませてもらいました。ノーマルがクリアできる程度で、EXステージはボムのごり押しでボスまで辿りついてやられる、といったパターンですが。
 ただ、パソコンの調子がおかしかったので復元してみたところ、四聖龍神録も含め、ゲームの実行ファイルが消えてしまうという事態に……
 なんにせよ、四聖龍神録Plus、楽しませて頂きます。
 いつかは私も、このようなゲームを作れるようになれれば……


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

Name: 管理人 [URL]  ..伝説のハッカー(610,309ポイント)   Date: 2008/06/29(日) 21:14   No:17968     
Title: Re:四聖龍神録Plus本日リリース!    
>メルさん

プレイしてくださりありがとうございます^^
今後もっと期待にお答えできるようパッチの追加などに努めたいと思いますm(_ _)m
アイテムや鍵によるオマケ追加などもよろしくです☆
私自身ついこの前までSTG作ったこと無い人間だったので、すぐに作れるようになりますよ!
頑張って下さい^^

>tkさん

ボイスは前回の龍神録公開の時に、参加したいと言ってくださったアマチュア声優さんがいらっしゃったので、
ネット上の友達ではありますが、参加して頂きました。
リアルの友達にも録音してもらったんですが、やっぱ声優みたいな練習してない人には無理でした^^;

>翡翠さん

前作からありがとうございますm(_ _)m
データは無くとも、ファンタズムは最初から遊べるのでお気軽にどうぞ☆
もし前のデータが見つかれば、セーブデータフォルダにおけば、自動コンバートし、受け継げるので、
その時は前のデータをお使い下さい。
もしよければアンケートに答えていただければ光栄です^^


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +