C言語何でも質問掲示板


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

規約と使い方

 
   続 flashゲームのHP ....   
     ・[274] 管理人 
     ・[275] 管理人 
     ・[276] ダッシュ 
     ・[277] 管理人 
     ・[278] 管理人 
     ・[279] ダッシュ 
     ・[280] 管理人 
     ・[281] 管理人 
     ・[282] ダッシュ 
     ・[283] 管理人 
     ・[284] ダッシュ 
     ・[285] 管理人 
     ・[286] ダッシュ 
     ・[287] 管理人 
     ・[288] 管理人 
   FlashゲームのHPを作っ ....   
     ・[236] 管理人 
     ・[237] 管理人 
     ・[238] ダッシュ 
     ・[239] 管理人 
     ・[241] ダッシュ 
     ・[243] 管理人 
     ・[248] ダッシュ 
     ・[249] 管理人 
     ・[253] ダッシュ 
     ・[254] 管理人 
     ・[255] ダッシュ 
     ・[257] 管理人 
     ・[260] ダッシュ 
     ・[261] 管理人 
     ・[262] ダッシュ 
     ・[263] 管理人 
     ・[266] ダッシュ 
     ・[268] 管理人 
     ・[269] ダッシュ 
     ・[270] 管理人 
     ・[271] 管理人 
     ・[272] ダッシュ 
   forの使い方について。 ....   
     ・[224] 管理人 
     ・[225] 管理人 
     ・[226] 管理人 
     ・[227] 管理人 
     ・[228] 管理人 
     ・[229] yukemuri 
     ・[233] 管理人 
     ・[235] yukemuri 
     ・[240] yukemuri 
     ・[242] 管理人 
     ・[245] yukemuri 
     ・[247] 管理人 
     ・[250] yukemuri 
     ・[251] 管理人 
     ・[252] 管理人 
     ・[256] yukemuri 
     ・[258] 管理人 
     ・[259] 管理人 
     ・[264] yukemuri 
     ・[265] yukemuri 
     ・[267] 管理人 
     ・[2221193184415] ヤン 
     ・[2221193184560] ヤン 
   三角関数のプログラム   
     ・[195] 管理人 
     ・[199] sin 
     ・[200] 管理人 
     ・[206] Justy 
     ・[207] Justy 
     ・[208] 管理人 
     ・[209] 管理人 
     ・[214] sin 
     ・[215] 管理人 
   宿題を教えてください ....   
     ・[213] 管理人 
   配列の受け渡しについ ....   
     ・[202] yukemuri 
     ・[203] yukemuri 
     ・[204] 管理人 
     ・[205] 管理人 
     ・[210] yukemuri 
     ・[211] 管理人 
   曲線はどうやって計算 ....   
     ・[197] 管理人 
     ・[198] 管理人 
   new演算子について   
     ・[166] yukemuri 
     ・[168] Justy 
     ・[169] yukemuri 
     ・[170] 管理人 
     ・[171] Justy 
     ・[172] yukemuri 
     ・[193] Justy 
   環境変数って何ですか ....   
     ・[189] 管理人 
     ・[192] とよ 
   掲示板を新しくしまし ....   
     ・[190] yukemuri 
     ・[191] 管理人 
   逆に私から皆様に質問 ....   
     ・[178] Justy 
     ・[179] 管理人 
     ・[180] ナガタ 
     ・[181] yukemuri 
     ・[182] 管理人 
     ・[183] kakasi 
     ・[184] 管理人 
     ・[185] Justy 
     ・[186] 管理人 
   文字列と参考書につい ....   
     ・[174] 管理人 
     ・[175] 管理人 
     ・[177] kakasi 
   宿題がわかりません。   
     ・[161] 管理人 
     ・[163] 管理人 
     ・[164] Zn 
   超初心的なことですが ....   
     ・[150] 管理人 
     ・[151] hikaru 
     ・[152] 管理人 
     ・[153] 管理人 
     ・[154] hikaru 
     ・[155] 管理人 
     ・[156] hikaru 
     ・[157] 管理人 
     ・[158] hikaru 
     ・[159] 管理人 
   入力と分岐について   
     ・[120] 管理人 
     ・[121] 管理人 
     ・[122] 管理人 
     ・[126] 湘南育ちのマンゴー 
     ・[127] Justy 
     ・[128] 管理人 
     ・[129] 湘南育ちのマンゴー 
     ・[130] Justy 
     ・[131] 管理人 
     ・[132] 管理人 
     ・[137] 湘南育ちのマンゴー 
     ・[138] 管理人 
     ・[140] Justy 
     ・[141] 管理人 
     ・[144] 湘南育ちのマンゴー 
     ・[145] 管理人 
     ・[146] 湘南育ちのマンゴー 
     ・[147] 管理人 
     ・[148] Justy 
   ご連絡   
     ・[142] 湘南育ちのマンゴー 
     ・[143] 管理人 
   文字コードを知ろう!   
     ・[134] 管理人 
     ・[135] 管理人 
     ・[136] 湘南育ちのマンゴー 
   入力キーと演算につい ....   
     ・[115] 管理人 
     ・[123] yukemuri 
     ・[124] 管理人 
     ・[125] 管理人 
   電卓プログラムについ ....   
     ・[117] 管理人 
     ・[118] 管理人 
   今日は原爆記念日。   
     ・[105] yukemuri 
     ・[106] yukemuri 
     ・[107] 管理人 
     ・[108] yukemuri 
     ・[109] 管理人 
     ・[110] yukemuri 
     ・[111] 管理人 
   クラクラ   
     ・[101] yukemuri 
     ・[102] 管理人 
     ・[103] 管理人 
   yukemuriさんへ   
     ・[95] 管理人 
     ・[98] yukemuri 
     ・[99] 管理人 
   無題   
     ・[97] 管理人 
   えっ   
     ・[88] 管理人 
     ・[91] yukemuri 
     ・[92] 管理人 
     ・[93] 管理人 
   無題   
     ・[89] 管理人 
     ・[90] 管理人 
   無題   
     ・[84] 管理人 

Name: ダッシュ   Date: 2006/09/04(月) 12:10   No:273       
Title: 続 flashゲームのHP 以下略    
新しく立てました。

>>図書館という領域に入り辛く

あ〜。気持ちわかります。僕も中学中盤までそうでした。僕の場合なんか中学になるまで図書館にほとんど入ったことも無く。はじめ行ったとき、友達についてきてもらったくらいです。それから、結構気軽に入れるスペースだということもわかり、足を運んでいると、そこの司書さんと仲良くなってしまいました。ほんと優しい人で僕が中3の時、「入学試験がんばってくださいね。」なんて言葉もかけてくれました。高校になってなかなか時間の都合もあり、前みたいには行けなくなったんですが、僕の「こんふぉーとすぺーす」に変わりありません。たぶん司書さんによってそこの良し悪しが左右されるんでしょうね。

シミュレーションです。うわぁ。なんか感動して5、6回見ました。僕のためにどもです。
僕が目指してるのは気象のシミュレーションです。そんな大掛かりなものも出来るんでしょうか?
昔、エドワード・ローレンツという学者が真空管のお化けで研究してたくらいですから、もし製作者の能力さえあれば、現代のPCは実行することが出来るのでしょうか?

参考までに Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%83%89%E3%83%BB%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%84

まあ、カオスとか絡んできますから、正確なものは難しいでしょうけど。あと相当な流体力学が必要になるといえますので、おそらく僕が高校のうちに出来るとは思えません。



Name: 管理人 [URL]   Date: 2006/09/04(月) 14:31   No:274     
Title: Re:続 flashゲームのHP 以下略    
おはようございます。

私の大学の図書館はめぼしい本が無くて・・(_ _|||
高校の時は受験前、図書室にマイスペース確保していました。

気象のシュミレーションですかぁ、具体的にどんなシュミレーションか判りませんけど、先ほどの話からするとバタフライ効果とか・・?

もし気象予報全体のシュミレーションをするとなるとかなり大掛かりになるんで、ちょっと、、まぁ頑張りによりますけど、
かなり大変なんじゃないですか?;

何が出来るかということですが、
自分で計算式がかけるのでしたら何でも出来ますよ。

カオス理論は私も好きで、
カオス理論を用いてカオスグラフィックを作った事あります。
とても幻想的なグラフィックになるんでカオス理論は好きです。
何年か前に作ったプログラムなんで、ちょっとどこかにいって、見つからないんで、
当時作ったものと似ているものがネットに公開してあるサイトを紹介します。

http://hp.vector.co.jp/authors/VA012735/applet/kaos.htm

こんなグラフィックを作っていました。面白いですよね。


Name: 管理人 [URL]   Date: 2006/09/04(月) 15:08   No:275     
Title: Re:続 flashゲームのHP 以下略    
簡単にですが、作ってみました。

http://dixq.net/board/exe/DxLib.exe

実行後、しばらくみていると段々鮮明になっていきます。
Escボタンで終了できます。

計算式はこれです。

xn = -0.90000 * xn-1 + 0.96000 * yn-1 + 5.00000 / (1.00000 + xn-1*xn-1) - 4.00000;

yn = -0.99999*xn-1;

神秘的ですね。


Name: ダッシュ   Date: 2006/09/04(月) 15:19   No:276     
Title: Re:続 flashゲームのHP 以下略    
そうですね。具体的にはまだ決まってないんです。
ゞ( ̄∇ ̄;)ヲイヲイ
でもなんかカッコいいですよね★(僕って単純です・・・。化学を始めたのも「カッコいいから」ですし。←でも結構得意になりました。)

まあ、いつか物理方面の準備がそろった時のため、Cでもシュミレーションの準備をしておきたいものです。Cでシミュレーションが出来るとわかっただけでも大きな収穫です。

今教えていただいたリンクですが、押したら、前の画面が出てきて、同意するか、しないか書いてあります。同意してダイジョブですか?お金とか・・・?


Name: 管理人 [URL]   Date: 2006/09/04(月) 15:24   No:277     
Title: Re:続 flashゲームのHP 以下略    
お金なんか取りませんからw
それ私が作った実行ファイルですよ。

基本的に料金の支払い義務が発生するにはかなり明確な同意が必要になります。
ぱっとみ、どこにもお金発生しますって書いてないですよね。
ワンクリック詐欺ってご存知ですか?
「同意する」のボタンを押してみたのはいいが、
サイトの下にめっちゃちっちゃい字で「クリックすると5万円料金が発生します」と書いてあるんです。
しかし法律では、最低2回以上のページを経て、料金の合計を表示した画面からキャンセルボタンを用意しないと料金を請求してはいけないことになっています。
それに、クリックをしただけでは住所なんか割り出せませんから
請求なんてきません。
基本的に同意するっていうのはおかまいなしにやって大丈夫ですよ。
リンク先新しくしたんで、もういっかいダウンロードしてみてください。


Name: 管理人 [URL]   Date: 2006/09/04(月) 15:44   No:278     
Title: Re:続 flashゲームのHP 以下略    
今からインターネットをよくお使いになると思うんで、ちょっと余談ですが聞いてください。

今から色んなサイトにあなたはアクセスする事でしょう。
不法、悪質なサイトもよくあります。
そんなサイトにアクセスした時、詐欺に合わないように注意しましょう。
詐欺にあわないためにはインターネットと法律について知っておく必要があります。

先ほどいったワンクリック詐欺ですが
「規約に書いてある」
「5万請求するって書いてあるのに同意した」
というような業者の言い分は通りません。
意思が通達されていないからです。

つまりダッシュさんと友達がいるとしますね。
ダッシュさんは友達に聞こえないように「1万くれ」って言って、
友達に「いいよ」って言ってと頼んで「いいよ」と言わせたところで
友達は1万円の支払い義務が発生すると思いますか?
なりませんね。
この事は法律で明確に示されています。

ワンクリック詐欺が成立しないのは
電子消費者契約法による入会手続きを満たしていないからです。

電子消費者契約法の説明を見てましょう

とりあえずワンクリックしただけで、いきなり契約が成立することは法律的にありえません。

ネット上での契約を成立させるためには、下記の内容を満たす必要があります。

1. 事業者は購入前の画面でその契約が有料であること、またその契約に幾らの料金が必要かわかりやすく明示すること。

※利用規約書を読むように言っているだけでは不足です。料金が幾ら必要か?明示する必要があります。

2. 事業者は、申込みボタンを押した後に、「この契約内容で契約します。よろしいですか?」と有料契約を結ぶことの確認画面を設置し、契約に同意できない消費者のために、キャンセルできるようにすること。

3. 上記条件を満たした上で、契約が成立したことをお知らせするメールなどを消費者に送信した時点で、契約が成立します。


中には悪質なサイトに、IPアドレスからリモートホストを割り出し、あなたの住んでいる大まかな住所や
お使いのパソコンの種類を画面に表示してきます。
あたかも「お前の個人情報はつかんであるんだ。払わないと家まで取りに行くぞ」といった感じの文章が流れます。

実際に私がまだ良く知らなかった頃、画面に「あなたは滋賀県に住んでいますね」などと表示されたらびっくりして信用してしまいそうになりました。

しかしアクセスしたIPアドレスから使っているプロバイダや大まかな住所(県名位しかわかりません)、使っているパソコンのOS,モニタサイズなどは全てわかります。
私も実際ダッシュさんが何県に住んでらっしゃるのかわかります。

しかし詳細な住所(県以降)や電話番号まではわかりません。
実際私も配布するプログラムは、質問者さんのモニタサイズを調べてそれにあったものを配布しています。
そんな風に、使っているパソコンの情報と、大まかな住所はわかるものなんです。
ですから業者がそれらの中途半端な情報を使って脅してくる方法に驚かない心構えが必要です。
やつらは何もできませんから。
それに料金が発生した時に詐欺をおこなっている事業は法律的に通りません。

そういうの知っておくといいですよ。


Name: ダッシュ   Date: 2006/09/04(月) 17:36   No:279     
Title: Re:続 flashゲームのHP 以下略    
何から何までありがとうございます!!僕も先日ワンクリック踏んじゃって親に相談したら・・・・・・・

ダッシュ「ねぇ、やばいんだけど。(説明)」
父「はぁ?そりゃ払わんにゃなるまい」
ダッシュ「えぇ?でもテレビでそういう時は消費者センターって・・」
父「消費者センターは関係ないじゃろが」
ダッシュ「取り合えずかけてみる。」
ダイヤル中・・・・

ダッシュ「繋がらん・・・・。あ、5時までって書いてある・・・」
父「おまえ、ヤクザが来るぞ。どうするんか?」
ダッシュ「ええー。でもあくまで推測だけどさ。こういうのってホントに住所とかってわかるもの?普通無理なんじゃないかなあ。」
父「そりゃぁ、わかるだろ」
ダッシュ「そうかなあ、これに振り込んだら分かる仕組みなんだと思うんだけど。」
父「まあ、いま何を言ってもつまらん。請求がきたら、その時に対処すればいい。わしゃもう寝るぞ」

ダッシュ床に入る。しかし、2時ごろ目が冷める
((((( ;゜Д゜)))))ガクガクブルブル

ダッシュ「そうだ。知恵袋があるじゃないか!!!」
パソコン起動
知恵袋の履歴を確認
知恵袋情報:絶対払うな。以外の意見なし。

これで安心したダッシュでした。
 でも、実際どこまで知られるとかまでは知りませんでした。この掲示板では色んな知識が入ってきて本当に重宝してます。

あと、シミュレーション2つとも見ました。特に上のリンクのはホント見とれてしまいます。美しい世界ですよねぇ。いままで本の中の動かないグラフ?ならみた事あるんですが、こんなのは初めてです。いいものを見せてもらいました。



Name: 管理人 [URL]   Date: 2006/09/04(月) 18:06   No:280     
Title: Re:続 flashゲームのHP 以下略    
うちの母親はパソコンからっきしダメなんで、そういう請求来たらあたふた
しまくると思います。
しかしそんなに簡単に個人情報がだだもれしたらここまでインターネット普及しなかったですよね。

親父さん、やけにさっぱりしてますね、、わしゃ寝るぞってひど^^;
とりあえず、契約したつもり無いのに・・というような事で請求が来たときはなんらかの形で
法律が守ってくれますから安心してください。
クリックするたんびにヤクザがでて来てたんじゃ大変ですよw
ネット以外にもクーリングオフという制度もありますしね。
自分の身を守るためにある程度法律を勉強してみるのもいいと思います。

私も高校の時全然法律なんて知りませんで、詐欺の電話かかってきたことあります。

業者:「こんにちは。こちら料金センターです。2月18日に、LOVEネットというサイトで契約されてらっしゃいます090641909**さんでいらっしゃいますね。」

私:「え?love??」

業:「入会金12万円がまだ支払われておりません。最終期限が後3日に迫っています。」

私:「え?なんの業者さんですか?」(しかも、なんで俺の電話番号しってんだよ!)

業:「最終期限までにお振込みがないようでしたら、こちらから取り立てに伺う事になりますのでご了承ください。」

私:「LOVEなんとか・・って知りませんけど(っていうか契約日大学受験前日なんだけど・・)」

業:「LOVEネットの方から請求をするように来ています。私達は料金センターの者ですから、そこでどういう契約が行われたかはしりません。お支払いいただけますか?」

・・・・・
(しばらく話す)
・・・・・

業:「じゃ、今すぐ払うんでしたら、8万円でいいですけど、どうしますか?」

私:(ね、、値切れるんかい!!!!!(笑))(ちょっと待て・・料金の発生した業者とは直接関係ないのに、なんで一存で請求金額変更できるんだ?おかしいだろ!)

キラーン (高校生ながらに完全におかしい事理解)

私:「(何か急に強気で言う)・・(中略)・・(確か私の情報知ってるの?みたいなことを言う)」

業:「個人情報保護法が存在する為、個人情報はお教えできません。」

私:「でも、今私の個人にかかわる請求されてるんでしたら、私だと認証されたと判断したんじゃないんですか?」

業:「とにかく払うんですか?取立てにいってもいいんですよ。」

私:「契約日は私の大事な大学受験前日です。緊張しているそんな日に契約するはずが無いでしょう」

っていうやり取りしたことあります。
値切れるとかマジ笑いません?(笑)
まぁ言ってること全部むちゃくちゃですよねぇ・・。

最初「あなたは契約されました、契約電話番号09064090***さんですね?」といわれた時、なんで知ってるんだ番号!?
と思いましたけどちょっと考えたら

今自分がかけてる番号言えばいいんだからそんな事いえて当然ですよね。
ワンクリック詐欺の個人情報が表示される画面にしても
少しでも「自分が特定されているかもしれない」と思わせることで
詐欺にはまる可能性が急激に大きくなるんでしょうね。
実際始めてみるとびびりますもんね。

ドキュメンタリでもやってますよね。
マジ詐欺やってる連中最低です。
そういう馬鹿な連中につかまっちゃだめです。
とりあえず知らない請求=詐欺と最初にみてかかりましょう。


Name: 管理人 [URL]   Date: 2006/09/04(月) 18:26   No:281     
Title: Re:続 flashゲームのHP 以下略    
てか、高校生でカオスグラフィック知ってるってすごいですね。
カオスという言葉はゲームで出てきたんで知ってましたが(ヲイ)
私カオスグラフィックは大学にはいるまで全然知りませんでした。
プログラムがかけないときはエクセルで作ってデータを表にして
CGもどき書いてました。
カオスCG使えばWindowsMediaPlayerのサウンドのCGみたいなん作れるんじゃないかなと思いましたが
サウンドの周波数の調べ方がわからなかったんで放置になりましたm(_ _)m
写真みたいなCGをカオスで作りたかったんですけど。
カオスってものすごい膨大な計算量なんでふさわしくないんですかね。
未だにサウンドの周波数の調べ方は知りませんけど、Direct系の本みたらわかるのかな?


Name: ダッシュ   Date: 2006/09/04(月) 19:36   No:282     
Title: Re:続 flashゲームのHP 以下略    
そうですよ!!詐欺なんて無くなればいいんだ。\(*`∧´)/ ムッキー!!
今、食事中に両親と詐欺について話してきました。まあ、あらかじめ詐欺の現状を知っておくと、対処も何とかなりますもんね★

詐欺で思い出しましたけど、僕↓のサイトに行ったとき、詐欺かと思いました。(でも違いますよ。とてもユニークなサイトです。管理人さんならご存知かも。有名ですしね。)

http://www.geocities.jp/usyhr/hakoniwa/

まあ、僕もワンクリック詐欺のおかげでパソコンの勉強、本気でやろうと思いたったわけだからあまり文句も言えません。実は数日前にそれに引っかかって、「くそ〜。こんなのにだまされるのは己の浅学が原因だ。」と思い。パソコンの勉強ならびに、今まで何度もあきらめたCをやることになったんです。ホントはゲームも友達任せにしようとしてました・・・。まだ、ぐだーっとしてて何もしてないですが、明日は近くの本屋に行って本を注文してみようと思います。

カオスをしってることについてですが、基本的にマニアなんです。というよりオタの領域ですね、はい。

Direct系??僕にそれを求められても・・・。



Name: 管理人 [URL]   Date: 2006/09/04(月) 19:48   No:283     
Title: Re:続 flashゲームのHP 以下略    
このHPって誰がアクセスしても10000ですって表示されるわけじゃないんですか?

Name: ダッシュ   Date: 2006/09/04(月) 19:54   No:284     
Title: Re:続 flashゲームのHP 以下略    
あ、ご存じないです?

そのままやってみてください。下のほうにある「何をやっているかわからない人は」ってとこは見ないほうがいいです。そのほうが楽しめますし・・・。てきとうに色んなとこみてたら、意味が分かると思います。


Name: 管理人 [URL]   Date: 2006/09/04(月) 19:59   No:285     
Title: Re:続 flashゲームのHP 以下略    
僕のサイトって事はダッシュさんが作ってらっしゃるんですか?
キレイなFLASHですね^^
ちなみに存じませんでしたm(_ _)m

Cの勉強はサイトでいくらでも出来ますよ。
コンパイルの環境はととのえてありますか?
でしたら

#include<stdio.h>
void main(){
printf("hello world\n");
}

から表示させてみてはいかがでしょうか。

> カオスをしってることについてですが、基本的にマニアなんです。というよりオタ..

いえいえ、カオスとか私も好きですし、そういう数学的な分野も研究テーマになると思いますよ。
高校生で色々ご存知であることは素晴らしいと思います。

Direct系っていうのはDirectXっていうライブラリがあって、、、独り言です^^;


Name: ダッシュ   Date: 2006/09/04(月) 20:22   No:286     
Title: Re:続 flashゲームのHP 以下略    
僕のサイトではないです。僕のあとに↓です。下のリンクという意。(HP初心者があんな怖いサイト作ったら神ですよ)

ちょっとCやってみます。コンパイラーは「猫でもわかる」にて入手したBorland C++Compilerです。これでいいでしょうか?


Name: 管理人 [URL]   Date: 2006/09/04(月) 20:29   No:287     
Title: Re:続 flashゲームのHP 以下略    
なるほど、後でやってみます^^
コンパイラはそれでOKですよ。


Name: 管理人 [URL]   Date: 2006/09/04(月) 21:22   No:288 解決!     
Title: Re:続 flashゲームのHP 以下略    
なるほど、斬新な感じがしますね^^
サスペンス系のカテゴリが大好きなんで、こういうの非常にすきです☆
キレイなactionscriptの使いかたしてますね。
あぁいうのみたら自分でも作ってみたくなります。

掲示板みると有名なサイトのようですね。
かなり書き込みあるみたいで。
flash投稿サイトみたいなサイトは好きなんでよくチェックするんですけどこれは知りませんでした。
おもしろかったですよ、ありがとうございました^^




Name: ダッシュ   Date: 2006/09/01(金) 22:26   No:234       
Title: FlashゲームのHPを作ってみたい超初心者です。    
はじめまして!初投稿となります。

僕はタイトルに書いたとおりの超初心者です。Hallo Worldくらいしか出したことありません。そこまでするのでさえ、コンパイルするとか、コマンドプロンプトで、どういう動作をしなければならないか、全くわからず。入門書を見ても具体的にどういう動作をすればいいか書いてなくて、最終的には友達の家に押しかけて、やっとわかったくらいです。

さて、今回、その友達と一緒にゲームを作り、共同ホームページを作成して載せようではないかと2人意気込んでいるところです。僕はプログラムも画力も無いので、原案は僕で、制作はその友達という分担になりました。彼は完成まで取り合えず3ヶ月待つよう言っているので、僕もその期間の間、彼に追いつくようCの勉強をしようと思い立ちました。彼が言うには彼はゲームまでは作れるが、それをHPからダウンロードさせるようにするプログラムまでは分からない、ということです。僕も管理人さんみたく、バリバリのプログラマーになりたいと思ってます。何はともあれ、まず目標は

“HPを作成したり、そこからダウンロードさせれるプログラムを書けるようになること”

です。こんな僕ですが、頑張ればどれくらい経ったら、そういうことが出来るようになるんですか?「俺は実際どれくらいCを勉強してからこれが出来るようになった!!」的なことも踏まえて教えてくれると有難いです。



Name: 管理人   Date: 2006/09/01(金) 23:01   No:236     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
こんにちは、 ダッシュさん。

今回flashゲームをお友達と作り、HPで公開して配布したいということですね。
お二人とも初々しいですね^^
夢が膨らんで、とても楽しみな事でしょう。

ただ一つ疑問に思ったのですが
その目標にC言語は勉強する必要があるんでしょうか?
flashはActionScriptといってflash独自の言語で、JavaScriptに似たような言語です。
HPを作るにはHTMLというこれもCとは全く違う言語です。
それぞれCとは違う言語で作成します。

ゲームをダウンロードするプログラムという事ですが、
実行ファイルのみHPでダウンロードさせて、本体を別にプログラムの中でダウンロードさせるような事をしたいのでしょうか?
それとも自動更新をするようなプログラムですか?

ただゲームをダウンロードさせるだけでしたらHTMLのリンクにzipファイルを指定したらいいだけなのでは?
ソフトのダウンロードをHTMLで書くんでしたら10秒でかけますよ。

>こんな僕ですが、頑張ればどれくらい経ったら、そういうことが出来るようになるんですか?

それは・・個人の努力の仕方や飲み込みの早さによって様々でしょうから一概には申し上げられませんけど、、
目標である

「HPを作成したり、そこからダウンロードさせれるプログラムを書けるようになること」

だけでしたら10分もあればできると思います・・。
あくまでダウンロードはHTMLのリンクという条件ですが。
HP作成にはビルダーを使わずに手作業でされるんでしょうか?
ソフトを使えばものすごく簡単ですよ。HP作成は。
だって世界に何百億以上もサイトがあるんです。
難しかったらそんなにHPは多くなっていないでしょう。

ただしC言語でゲームが作れるようになるまでにはというのでしたら時間はかかるでしょうけど。

それから

>「俺は実際どれくらいCを勉強してからこれが出来るようになった!!」的なことも踏まえて教えてくれると.......

ちょっと日本語の意味がよくわかりませんけど、これは私自信の事をお聞きになっているのでしょうか?
つまり
「管理人である私が一定期間Cを勉強した時にどれくらいの物が作れるようになっていたか」
という事を教えて欲しいという事でしょうか?

私は人より飲み込みも遅く、頭も回らない人間ですので、とても苦労しています。
今もとても「Cが詳しい」というようなレベルには全く到達していないと思います。
賢い方はいくらでもいらっしゃいますし、私が尊敬するようなプログラマーの方の足元にも及びません。

ゲームプログラムを初めて書いたのも、Cを初めて勉強してから2、3年後です。
でも普通、順調に勉強していけば2ヶ月もあればバリバリにCでゲームが作れるようになるんじゃないでしょうか?
今よく質問されてるyukemuri様も先々月位に初めてCを勉強された方のようです。
3ヶ月でC、C++、VC++を極めるカリキュラムでがんばっていらっしゃいます。

ダッシュさまはC言語を勉強したいのでしょうか?
HPを作成したいのでしょうか?
FLASHを作成したいのでしょうか?

私はActionScriptには詳しくないのでFLASH関係にはあまり力になれないと思いますけど、
C言語、HP関係でしたら力になれると思います。

具体的に質問していただけたらそれについてお答えしますよ。
何なりと気軽に聞いてくださいね☆


Name: 管理人   Date: 2006/09/01(金) 23:26   No:237     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
FLASHを全て自力で書くんですか?
paraflaやflashcreaterや
無難なところでいくと
flashMakerとかで作らないんですか?
フラッシュを作る。
HPを作るという事だけでしたらソフトを利用する事も出来ます。
ちなみに私の作ったHPのflashとかは自分で書いたものです。
これソフトを使って30分位で作ったものですよ。
専門的知識0で作りました。
http://dixq.net/c/

無料で使えるflash作成ソフトでしたら
http://www.geocities.jp/coa9999/parafla.html

この辺オススメです。
HP作成についてでしたら
http://www.j-ns.com/freehomepage/

この辺でしょうか。



Name: ダッシュ   Date: 2006/09/01(金) 23:37   No:238     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
回答ありがとうございます。なんだか無知丸出しの質問だったみたいですね(恥)・・・。でも、ご親切に教えてくれて有難いです。

ダウンロードのプログラムってそんなに簡単なんですか!??友達が言うから相当難しいと思ってました。正直なところを申しますとHTMLとか、その他の言語のことはさっぱり分かりません。それどころか、「プログラムのいろは」から怪しい始末です。僕は今、普通高校の2年なので、もちろんプログラムの講義などはありません。そこでその友達や、本、ネットが唯一の情報源なのです。「プログラムのいろは」というのは例えば、どんな言語があるとか、そもそもなぜCじゃないといけないのかなどです。友達から聞くとCがもっともメジャーなものだからと言われて、これができれば大体なんでも出来ると言われました。実際、他の言語もマスターしなくてはならないものなのですか?(僕は最近になってこういうことに興味を持ったので専門用語とかあんまり分かりません、噛み砕いて教えてもらえるとうれしいです。)


Name: 管理人   Date: 2006/09/02(土) 00:03   No:239     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
あはは、なるほどそういうことですか^^
高校生でプログラミング入門でしたら管理人の数十倍は賢いです。
(私と比べるにはレベルが低いですね、はい・・)

とりあえず整理してみましょう。

ホームページというのはHTMLという言語で出来ています。
これは一つの言語といえるのかな?
もしも一つの言語といえるのでしたらもっとも簡単な言語でしょう。

<HTML>
<head>
</head>
<body>
</body>
</HTML>

これをメモ帳かなんかで書けばホームページのファイルの出来上がりです。
もろ簡単ですけど始めてみると見た感じわけわかんないですよね。
別にいみわからなくても大丈夫です。
ソフトを利用すれば全部ソフトが書いてくれます、プログラムを。
とりあえずHP作成に関してはかなり肩の力を抜いてください。
誰にだって作れますから。

ではプログラミング言語について。
「なぜCじゃないといけないのか」
私が最初に抱いた疑問と同じですね。
私もそう思っていました。でも実際つかってみてやはりCがいいなと思います。
今はJAVAという言語も主流です。こちらを勉強されてもいいと思います。
C言語っていうのは最も深くまで追求できる言語だと勝手に思っています。
windowsってご存知ですよねこのソフト自体C言語で作られているんですよ。
PS2のゲームありますよね。あれと同じものC言語で作れます。
具体的な話をしてもよくわからないと思うので大雑把に説明しますが

「C言語は全ての基本になる言語であり、最も奥深い言語」

なんです。CがわかればJAVAもちょっと勉強すればわかりますし、書き方、構文はCがわかればどんな言語にも応用できます。
「この言語ではこんな事が出来ない」という限界が、他の言語ではありますが、Cには無限の可能性があります。
つまり汎用性と拡張性の2つを持っているからこそ人気のある言語なんでしょうね。

次にFLASHについて。FLASHはAdobeという会社が独自に作り出した言語でほとんどJAVAScriptににていているActionScriptというものをつかいます。
JAVAとJAVAScriptは違うのですが、JAVAScriptはウェブでプログラムを動かせるようにした言語です。
それに似ています。
しかしよっぽどFLASHが好きな人ではない限り普通FLASHはソフトを使って作ります。
先ほど紹介したソフトなんかをつかって作ります。
ソフトなんか使わず、今から本格的にFLASHがやりたいというのでしたらどうぞActionScriptという言語を勉強してください。

JAVAという言語は現代的なプログラムという感じがします。
ウェブでプログラムを動かしたいのでしたらJAVAScriptを使用しますからもしウェブでプログラムを動かす事をしたいのでしたら
C言語よりJAVAを勉強された方がいいでしょう。
しかしJAVAは専門じゃないので私はあまり詳しくないです。
ですから今後力にはなれそうにありません。
基本的なことだけでしたらわかりますが・・。

JAVAもいいと思いますよ、ウェブでもプログラムが実行できますしね。
私はCが好きですが。やった事無い人には違いがよくわからないでしょうね^^;
大学の授業では最初にC言語をみんな勉強すると思います。
Cを勉強していればみんなより1歩も2歩も進んで授業をうけられるでしょうね。

次にゲームのダウンロードについてですが、
どうもそこまで難しいとおっしゃるのでしたらHTMLじゃないんでしょうね。
どういう風にしたいのでしょうか?
ウェブにFLASHをはりつけて、ウェブ上でゲームが出来るようにしたいんでしょうか。
そりゃそうか・・それが一般的ですもんね。

http://2.csx.jp/~ven/game/packman.html

こんな感じですか?
実際にflashでゲーム作った事無いんで詳細はわかりませんが、
ウェブでゲーム動かすんでしたらダウンロードしなくていいですよね。
今度そのお友達に詳しく何がしたいのか聞いてみてください。
とりあえずHTMLでゲームダウンロードさせるんでしたら10秒でかけます。



Name: ダッシュ   Date: 2006/09/02(土) 00:32   No:241     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
どうやらソフトの方が簡単そうですね。じゃあHPのほうはソフトで作ることにします。

Cのことなのですが、今、猫でもわかるシリーズでやってます。でも・・・・・。正直分かりません・・・・。(猫以下の僕って一体・・・。)
何かいい方法はないのですか?講義が受けれない分、具体的にどうすればいいって聞けないところが痛いです。ちなみに管理人さんはどのように勉強しました?独学ですか?

今日はもう遅いので明日また来ます。明日がっこでその人に会うので、フラッシュのこと聞いときますね。土曜なのに登校。運動会の準備です。はァ、休んでこっちに『投稿』したいくらいです。(すいません。つまらんオチで・・・。)


Name: 管理人   Date: 2006/09/02(土) 03:26   No:243     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
いや〜私もメールでの質問や掲示板カキコとか重なってなかなかお返事できませんでしたから
ちょうどよかったです^^

HPの作り方は先ほど教えたURLを参考にしてください。

HPを作るには3つの作業が必要です。

1、サーバーに自分のスペースを作る。

2、サーバーにアップロードする自分のHPの本体となるファイルを作る。

3、作成するファイルをサーバーにアップロードする。

という。サーバーって何かご存知ですか?
みんながアクセスする場所ですね。
その「みんながアクセスする場所」に自分のスペースを確保するんです。
有料無料がありますが、
無料ならページに普通広告がはいります。


プログラムに関して、私はほとんど独学です。
確かに学校の授業はありますが、ほとんど学校の授業でつけた知識ではありません。

まずは

・入門書を手に入れる

これをしましょう。入門書はC言語を初めて学ぶ人用に書いてありますから、
これを見ればだいたいわかりますよ。
C言語入門関係はウェブも充実してますからインターネットで勉強するのも手です。

コンパイルできる環境は整えてありますか?

http://www5c.biglobe.ne.jp/~ecb/c/c00.html

入門のサイトはこの辺がオススメです。
「C言語 入門」などとgoogleで探せばヒットします。

私が作っていた入門サイトも是非ご活用ください☆
大学1年の時に作ったんで責任はもてませんがw

http://dixq.net/c/

まずは入門書を買ってください。
(かなり)大きな本屋さんにいってC言語関連のカテゴリの本棚に行ってください。
入門関係の本をいろいろみてみて自分が判りやすいなと思ったものを買ってください。

オススメは

softbank発行の柴田望洋著の
明解C言語〜入門編〜

です。

ちなみにこの掲示板は携帯からでも見る事ができます。
掲示板トップに「携帯用」ってリンクがあるのでクリックしてみてください。


Name: ダッシュ   Date: 2006/09/02(土) 16:23   No:248     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
今帰りました〜〜。(疲)

携帯のことですが、実は携帯持ってないんです。ですからパソのみでお願いしようと思います。

入門書ですか。やっぱり大きな書店に行かなきゃ無理ですよね。僕の住んでるところは山口の辺境の田舎で、あまりいいお店がありません。電車で行くにも今、お金があまりないのでいけれないし、取り合えず、昨日管理人さんから教わったサイトで勉強しようと思います。まあ、今度は分からなくなっても、ここがあるから安心というものです。

今日、友達に聞いてみると、前までフラッシュを持っていなかったからダウンロードしようとしてたみたいですが、最近、ソフトをダウンロードしたらしく、ネットでできるようになったとのことです。とにかくフラッシュゲームのことは彼に任せて今はLvアップするべくCを中心に頑張っていこうと思います。

あと、ホームページですが、友達との共同経営の前にまず、管理人さんが昨日教えてくれたとこに行って自分のページでも作ろうかと思います。


Name: 管理人   Date: 2006/09/02(土) 16:38   No:249     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
お疲れ様です^^

私の実家は広島なんで、山口の事は少しわかります^^
私の実家は中国山地の山の上なんで一番近いコンビににも自転車で往復3時間。
そんな所ですw

田舎ならネットショッピングですよやっぱ。
中古の本でいいなら
ヤフオクで古本を探しましょう。
http://search.auctions.yahoo.co.jp/jp/search/auc?p=%CC%C0%B2%F2%A3%C3%B8%C0%B8%EC&auccat=0&alocale=0jp&acc=jp

新品がいいならアマゾンで新品の本を注文しましょう。
http://www.amazon.co.jp/%65b0%7248-%660e%89e3C%8a00%8a9e-%5165%9580%7de8/dp/4797327928/sr=8-1/qid=1157182386/ref=sr_1_1/249-6323715-8653143?ie=UTF8&s=gateway

確かにネットで勉強するのも手ですが、本を手元に持つことをオススメします☆。

C言語を勉強されるんですね。応援しますよ^^
C言語を勉強されたらきっとflashゲームじゃなく、本格的なC言語で作るゲームが作りたくなると思いますw

flashでは作れるゲームに限界がありますからね・・。
ウェブで気軽に遊ぶのはflashでしょうけど、本格的にするならCです。
このホームページのトップに写真のってますよね。私の作っているゲーム。あぁいうのはflashじゃなかなか・・。
3Dのシェーディングとかになるとライブラリ必要だし。

HP作成頑張ってください。
わからなかったらまた聞いてくださいね^^


Name: ダッシュ   Date: 2006/09/03(日) 04:17   No:253     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
すいません。あまりに疲れてたので帰ってすぐ寝ちゃって返答がこんな時間になっちゃいました。

ネットショッピングですか?中古本とか買ってみたいんですが、家の親が物凄く心配性でネットショッピング禁止命令が出てるんですよ。(たぶん詐欺とか警戒してるんでしょうね。最近多いから。)
それに、ネットって中身が見えないですよね。だからレビューとか見て、いつも普通の本屋で注文してます。(僕は理学関係にも興味があるんですけど、そういう本ってレビューさえついてないのもしばしば)でも自分自身、本は持っといたほうが便利なので、今度時間が出来たら、近くの本屋に行ってみようと思います。

HP作成についてです。上記の管理人さんが教えてくれたリンクに行ってみたんですが、サーバーの空きスペースの作り方がよく分かりません。あと、まず空きスペースを作る前に、HPを作っておくことは可能ですか?先にそれをしといたほうが、焦って作らなくていいので。もし可能ならHPファイルを作るソフトはどこにあるんですか?


Name: 管理人   Date: 2006/09/03(日) 05:06   No:254     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
おはようございます^^
ではHPについてお答えします。

ではまずアップロードするファイルを作りましょう。

http://www.j-ns.com/freehomepage/02/2-2.htm

から自分のOSにあったソフトをダウンロードしてください。
ダウンロードしたらインストールしてください。
インストールしたらソフトを起動してください。

色々な操作は
http://www.j-ns.com/freehomepage/03/index.html
この辺にかいてあります。

ソフトを起動したら
「ホームページ」と入力して保存しましょう。
「名前をつけて保存」から「ファイルとして保存」を選んで
index.html
という名前でデスクトップに保存してください。

次に、サーバーにスペースを作りましょう。
私がかわりに作ってもいいんですけど、それじゃ今度自分で作りたいときに困ると思うんで私の指示通り自分で頑張ってみてください☆

「ホームページ レンタル」などでググれば沢山スペースを提供してくれる企業が出てきます。
その中でも忍者ツールズていう会社がオススメです。

では忍者へ行って見ましょう。
http://www.shinobi.jp/
ここのHPの右上に無料で新規登録できるリンクがありますね。
そこをクリックし、メルアドや必要事項を記入して承諾します。
で、メールが送られてくるんで、記載されているリンク先へいって、認証番号を記入してOK。

すると個人のページに移動しますから「無料HP」からホームペーージを作成する。
そんでもって好きな名前と説明を書いて、(なんでもいいです。が名前はDASHにしておきましょう。)
IDを好きな文字いれて、好きなドメイン名(URLになります)を選んで作成。
で承諾。

ツール一覧に戻り、無料HPをクリックすると作成したHPが出てきます。
そこで先ほど作成した名前DASHをクリックします。
そして左のメニューの「FTP情報・アップロード」をクリック。
ここの画面の状態を(A)とします。
すると「FTPアクセスパスワード」は任意に変更可能になっていますから自分の覚えやすいパスワードに変更してください。
変更したら
(A)の画面で、置いておいてください。

http://www.vector.co.jp/soft/win95/net/se061839.html
ここからソフトをダウンロードしてください。
これは作成したサーバーのスペースへ自分のデータをアップロードするソフトです。
ダウンロードして解凍したらインストールを実行しましょう。
適当に次へやOKを押せばいいです。
するとFFFTPが起動しますから起動画面で「新規ホスト」を選び、

「ホストの設定名」を「DASH(なんでもいいです。)」
「ホスト名(アドレス)」を「画面(A)のFTPサーバアドレスに書いてある文字列」
「ユーザー名」を「画面(A)のFTPユーザ名(ユーザーID)に書いてある文字列」
「パスワード」を「先ほど設定したパスワード」を入力して
OK、接続してください。

http://www.j-ns.com/freehomepage/03/3-8-3.htm

この辺にFFFTPの使い方はのっています。

無事接続ができたようでしたら、画面左側に何かしら複数のファイル名が、画面右側にindex.htmlというファイルが1つだけ
表示されると思いますが、その右側の部分に先ほどデスクトップに保存したindex.htmlをドラッグアンドドロップでアップロードできるんで、やってください。
既存のindex.htmlを上書きしてください。

これでHPが出来ました。
(A)の画面の左のメニューに「情報表示」がありますからクリックしてください。
そこに「登録されているあなたのURL」に作成したHPのURLがのっていると思うんで、
クリックしてください。
すると「ホームページ」と先ほど作成したファイルのデータが表示されている事がわかると思います。

index.htmlという名前で保存すると、そのサイトにアクセスした時、一番最初に表示されるページになります。
他のページに移動させたかったらそのページからリンクをはることになります。
以前お教えした
http://www.j-ns.com/freehomepage/
は判りやすいと思うんで、ここも参考にしてください。


本についてですが、もしもネットで本が購入したいのでしたら
私が変わりに買ってあげましょうか?
私は全然かまいませんよ。
「管理人が詐欺を働くんじゃ?!」という危険もあると親御さんはお思いでしょうから
ダッシュさんの家に商品が届いた後、こちらに料金を送金してもらったらいいですし。
それなら危険も無いと思います。
・・・とお伝えください。
全然手数料とかとったりしませんからねwただで作業してあげますよ。

最初のうちは色々難しいですからね、頑張ってください^^


Name: ダッシュ   Date: 2006/09/03(日) 05:50   No:255     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
管理人さんは早起きだなあ。僕は低血圧なので日ごろ、こんなに早くは起きれません。

ホント管理人さんは優しいですね。でも、本なら大丈夫です。もちろん管理人さんを信用してないわけではないです!!実は僕のうちは田舎といっても管理人さんが言ってたような奥まったところにあるわけではなく本屋も登校中にあります(Cの本は少ないですが)。しかし、かなり大きな書店となると広島の紀伊国屋書店くらいまで行かないとなかなか。まあ、最近?普通の書店では送料とかかかりませんからね。だから今度そこで注文してみます。今日は体育祭ですから、疲労でたぶん・・・。

あと、HPですけどFrontPageExpressのダウンロード方法がイマイチ分かりません。どこクリックすればいいんですか?http://www.eonet.ne.jp/~zax/add/fpesetup.zipってのをクリックしてもアクセサリにインターネットツールが出てくるわけじゃなし・・・。


Name: 管理人   Date: 2006/09/03(日) 16:21   No:257     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
いえいえ、まさか。
ダッシュさんが起床なさったようでしたのでおはようございますといったのです。
私は今おはようございますですw

運動会どうでした?
お疲れ様でした^^
私は運動会大好きでした。特に親が作ってくれる重箱は楽しみの一つでした♪・・小学校の頃からw

先ほど紹介したオンラインショップのページはどちらも私がオススメする「明解C言語」ですよ。
本屋さんがあるんでしたら、そちらの方がいいでしょうね^^

> ってのをクリックしてもアクセサリにインターネットツールが出てくるわけじゃなし・・・。

あら、ソフトを解凍、インストールされた事ないですか?
解凍っていう意味わかります?
とりあえず
http://www.eonet.ne.jp/~zax/add/fpesetup.zip
をクリックすると「保存」ってボタンが押せますよね?
保存のボタンを押して、デスクトップを指定して保存してください。
するとデスクトップにダウンロードしたファイルが表示されますからダブルクリックしてください。
ファイルの解凍という意味は、圧縮してあるファイルを元に戻すという意味です。
ウェブにあるデータはダウンロードする時の容量を軽くするため、データを軽くする作業「圧縮」をしてあります。
ですからダウンロードしただけでは使えません。
解凍する必要があり、解凍するにはソフトが必要です。

もしも解凍ソフトがそのパソコンにインストールされていれば、先ほどのファイルをダブルクリックしただけで解凍できます。
解凍ソフトがインストールされていなければ、ダブルクリっくしても解凍できません。

http://park8.wakwak.com/~app/Lhaca/Lhaca075.EXE

解凍ソフトをお持ちでない場合は解凍ソフトをこちらからダウンロード、インストールしてください

で、先ほどのファイルが無事に解凍できたら解凍したフォルダをあけてください。
中に「インストールしますクリックして下さい.vbs」とかいてあるファイルがありますから
それをダブルクリックしてインストールを完了させてください。
インストールが完了したら、ソフトが起動できます。
ファイルは何にかかわらず、すべて拡張子.exeのファイルで実行します。ですからソフトの実行ファイルは

「fpxpress.exe」をダブルクリックしてください。
ソフトが起動します。

何かわからないことがありました?


Name: ダッシュ   Date: 2006/09/03(日) 19:57   No:260     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
あ、そうなんですか。だから5時6分以降返答が無かったわけだ。

運動会ですか?いやあ、僕は正直・・・。(ノ_-;)ハア…運動とか、からっきしダメダメなんですよ。中学校までは親とかも来てたんですが、高校は親が来るほうが珍しいくらいです。重箱は僕も好きでした。「料理は3分以内に作るもの」と言わんばかりの母もこの日だけ、年に1度チャーシューを煮込んで酢で味付けしたのを作ってました。あれ美味かったなあ。唯一の楽しみのそれもなくなり、運動会ホントorzって感じです。管理人さんは運動得意なんですか?(そういえばプロフィールに握力書いてありましたね。僕からみれば超人ですよ。)

HPです。う〜ん。取り合えず「インストールしますクリックして下さい」をクリックするところまでは分かりました。ですが、fpxpress.exeが分かりません。どこにあるんですか?あの「インストールしますクリックして下さい」と同じフォルダの中ですか?fpxpressはありますがexeかどうか書いてないです。

exeってC言語でコマンドプロンプトに入れるときも使いますよね。どういう意味なんですか?


Name: 管理人   Date: 2006/09/03(日) 20:17   No:261     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
シチューを酢で?!想像つきませんけど、、今度やってみようかなw
下宿なんで毎日料理はしています^^
別に得意ではなかったですけど、リレーとか好きでしたね^^
いつもアンカーだったんですが、アンカーには陸上部のヤツがよくなるんで、やっぱ負けますw
負けるのわかってますがでしゃばりたいだけなんです(笑)

> exeかどうか書いてないです

あ〜、なるほど。
そのパソコンは家でみんなで使っているパソコンですか?
OSは初期設定だとド初心者用になっているため、自分の使いやすいように色々設定しなおす必要があります。

とりあえず「拡張子の表示」はした方がいいです。

マイコンピュータを開きましょう。
ツール>フォルダオプション>「表示」のタブ>詳細設定の中の>ファイルとフォルダの表示の中の>「全てのファイルとフォルダを表示する」を指定。OKを押して閉じます。
すると「拡張子」というものが表示されます。

普段からパソコンをいつも使っているわけではなかったら色々いっぺんにいっても難しいかもしれませんけど、
とりあえずファイル名が最後まで表示されるようになるんです。
例えば
fpxpress
というファイル名は
fpxpress.exe
として表示されます。この「.」以降の名前は拡張子といって、そのファイルの形式を表す文字です。
これは変更してはいけません。
.exeはソフトを実行できる意味のファイル形式です。
このファイルをダブルクリックしてみましょう。
・・てか何かわからなくてもとりあえずあれこれダブルクリックしてみたらいいんですよ。
別に壊れたりしませんからパソコンは。
なんか変なウィンドウになったりわからなくなったらそのウィンドウを閉じたらいいんです。

拡張子について、ググって自分で色々勉強してみたらいいですよ。
画像なら拡張子は
.jpg
.png
.GIF
などなど。
テキストファイルなら
.txt
C言語用の記述ファイルなら
.c
.cpp
ワードなら
.doc
エクセルなら
.xls等
これらはファイル名の後につきます。
このついている文字でなんの種類のファイルか判断しています。
ワード使ったことありますか?
今name.docというあなたが作成したワードのファイルがあるとしますよね?
あなたはname.docというファイルをダブルクリックすると
別に「ワードを起動て、このファイルを読み込め」と指定していないのにダブルクリックしただけで、そのファイルが、適切なソフトでつまりこの場合ワードが立ちあがります。
これは.docという名前のファイルをダブルクリックした時はワードを使ってひらけ、という約束があるためワードがたちあがるのです。
この.docという拡張子を元にどのようなソフトでひらけばいいか判断しています。
だから仮にこの名前を.diaとかにしたら開く事ができなくなります。

ここで.exeというのは実行ファイルとよばれる形式のファイルを示し、ダブルクリックするとファイルを実行します。
C言語でコンパイルした、つまり機械語に翻訳したファイルは実行ファイルとなります。
機械語に翻訳したファイルなわけですから機械に実行させれば動くわけです。
.cのファイルは貴方がプログラムを書いた文章ですから機械語ではありません。つまり実行ファイルではありません。
ですから実行ファイルとはなりません。
このように色んなファイル形式があるので、拡張子によってその種類を判別しているわけですね。

ちょっと聞いたくらいじゃ判らないと思いますけど、何かわからない事があればそのキーワードをグーぐるなどで調べ
徐々になれていってください。


Name: ダッシュ   Date: 2006/09/03(日) 21:14   No:262     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
シチュー×( ̄Д ̄;;(たぶん化学反応が起きます)チャーシューです。

リレーのアンカー!!?それはもう履歴書に書けるレベルですね。ふと気になってプロフィールを、も1度見ると「趣味テニス、スキー。握力80」!??質問した僕が馬鹿でした。そういえば大学生なんですね。僕はもう社会人かと。物理は僕も好きです。高校ですレベルですけど・・・。でも流体力学とかに興味があって自分で勉強してます。最初ベッツ限界を出すのを何とか学び取って、意外に出来るもんだなと思ってたら、微小領域の○%$&#ってのが出て、中断しました。今、それを理解するためにベクトル解析勉強中です。

指示の通りマイコンピュータに行って、言われたとおり弄ってきました。でも.dllとかは出てますが、.exeはないです。僕のパソコンおかしいのかな。


Name: 管理人   Date: 2006/09/03(日) 21:42   No:263     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
あ、シチューじゃなかった^^;
シチューに酢いれたらヤバイですねw

テニスとかのスポーツは好きなだけで、うまくはありません。
鈍くさいんで、なんていうか下手の横好きなんですねw
1日14時間夏休みはテニスやってましたけど、さっぱり成績伸びませんでしたよ( ̄∀ ̄;)

>履歴書...
ww

流体力学おもしろいですよね〜!これもまた好きなだけでよくしりませんw
何しても中途半端だなという突っ込みはしないでくださいw
きっとダッシュさん「Newton」っていう本好きだと思いますよ。
機会があったら読んでみてください^^
でも、物理好きだったんですが、大学の授業には無いんですよね。
高校の延長としては、微分積分・線形代数(行列計算)とか位ですかね。


>でも.dllとかは出てますが、.exeはないです

あれおかしいですね。
写真のような画面になっていると思いますが、
あかでかこっているヤツをクリックしてください。
どれクリックしたらいいかわからないときはとりあえず、
アイコンのあるファイルをカチカチくりっくしてみたらいいですよ。



Name: ダッシュ   Date: 2006/09/03(日) 22:19   No:266     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
心配なさらないでください。僕も3日坊主ですから、でもCだけはマスターします!!!管理人さんに誓います(≧∇≦)/(と言うかここまでしていただいて止めるのは、僕の理性に反します。)

Newtonですか!!本というより雑誌ですよね?あれ面白いですよね〜。がっこの図書室においてあるので図書当番の時はいつも見てます。他に月刊 化学ってのを購読してます。4/5は理解できませんがヾ(ーー )ォィまあ、拾い読みしてます。

流体力学なんですけど僕シミュレーッションにも(横好きですね、はい)興味あります。ですけど入る場所が分からなくて結局保留です。デイアフタートゥモローご存知ですか?あれに出てくる学者さんが気象のシミュレーションしてて。か、かっこいい。となってしまったんです。あきらめてゲーム作ることにしてここに来てみたら、他の人がマリオの曲線の作りかた聞いてましたよね。あれで物理の方程式を使うことに気づき。今日、がっこで。

ダッシュ「ねえ、Cやったら物理の方程式とかいるんだよねえ?」
友「うん、いるよ。」
ダッシュ「それってシミュレーッションできるってこと?」
友「ああ、何とかなるんじゃね。」

って・・・。もっと早く言ってよ。って感じです。僕コミュニケーションに問題あるんかなあ。なんども話したのに。
で、実際にできますか?

HPです。ああやっぱり。クリックしてみ・・・うわ。一言言わせてもらうと、「白い」ですねぇ。いえエラーとかじゃないです。ただ、使い方が・・・。使い方を順序よく教えてくれる機能ないですか?


Name: 管理人   Date: 2006/09/03(日) 22:55   No:268     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
Newtonご存知でしたか♪
あれで相対性理論の特集号2000円もしましたけど買ってしまいました☆

>でもCだけはマスターします!!!

その意気込み、大事ですよ^^
特にC言語はとても難しいです。中途半端な意気込みじゃ壁にぶつかった時とまってしまいますからね。
その意気込みがあれば大丈夫です!

C言語を勉強するために物理の公式は知らなくても大丈夫ですが、
物理の計算式を使わないと表現できないような事をするならば必要ですね。
つまり、物質の衝突なんかをシュミレーションするプログラムかくなら
反発係数や運動量の計算方法を知らないと出来ません。
しかしオセロゲームや将棋プログラムなんか作るんなら物理知らなくても大丈夫。

視覚的なシュミレーションをしたいんでしたら画像を扱うライブラリを使用する必要がありますね。
でも難しくないですから基本を1ヶ月も一生懸命マスターすれば挑戦できるでしょう。

私はゲームを作る時、キャラがジャンプしてきりつけるモーションを作る時、キャラに重力加速度をかけて
計算して表現しています。
でもゲームで見栄えする放物線と、地球上でジャンプした時に描く放物線はちがうんで、
9.80665....ではないです。
ゲームでは勢いが見栄えに密接に関係してますから、初速度は速く、重力は強く設定しています。
計算式のシュミレーションできたらおもしろいですよ♪

使い方が書いてあるリンク紹介しましたよね?

http://www.j-ns.com/freehomepage/03/index.html

ここに詳しく書いてありますよ。
とりあえず私が言ったとおりやってみたらHPが作成できます。
頑張ってください。


Name: ダッシュ   Date: 2006/09/04(月) 00:49   No:269     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
2000円!?図書館とか無いんですか?


じゃあ、まずHPからですね。といっても今日はもう寝ます。また明日、進行しましたら、(たぶん、分かりませーんと、叫びながら)カキコしますね。

あと、この掲示板であまり長くなったら、まずかったりします?最初の質問から少しずつそれてる気がしないでもないので、もし立て直したほうがいいなら、そうします。


Name: 管理人 [URL]   Date: 2006/09/04(月) 01:31   No:270     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
あ〜図書館あるんですけどねぇ。とりあえず滋賀県のどんな大きい本屋より大学の図書館の方が大きいんですが、
なんとなく不真面目な私は図書館という領域に入り辛く・・。
プログラミング系の本も10年以上前の本ばかりで、ほとんど図書館入ったことありません。
それに相対性理論の本はおもしろかったんで、自分の手元においておきたかったんですよね★

ちなみに2500円でした。
あれ、月刊は1000円で特集が2500円みたいですね。
オールカラーだからしょうがないかな?

HPに関して、私が言ったとおりやればできますし、私が紹介したサイトみながらやればできますんで。
私でも誰にも聞かずにやれたわけですから、ダッシュさんなら出来ますよ♪

ちなみにスレの長さですが、
掲示板の一番上の「規約と使い方」にかいてますとおり
記事数が10以上になったら新しくたててもらいたいなと思っています。
10以下でも質問の内容が変わったりしたら新しいトピたててくださいね★
あまり長いとスクロールするのが大変ですからね^^;


Name: 管理人 [URL]   Date: 2006/09/04(月) 05:39   No:271     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
シュミレーションをしたいという事で、
簡単な物理のシュミレーションを作ってみました。
こんな事がやりたいんでしょうか?

ちなみにこれは直径0.042mのボールを鉛直投げ上げした時の、シュミレーションです(よく飛び跳ねるゴムボールだと思ってください)。
床との反発係数は0.8000で計算しています。
重力加速度は9.8067で空気抵抗は無視します。
y=v0*t - 0.5*g*t*t;
でyの座標を計算しています。
バウンドした時がわかりやすいように音をつけてあります。

やりたい物理のシュミレーションってこんな感じですかね?
計算式さえ自分がわかっていればどんなシュミレーションも出来ます。

自分がこれから目指すものの具体的な目標がつかめたらと思って作りました。
参考にしていただけたら幸いです。

http://dixq.net/board/exe/phy.zip

このファイルを解凍し、中の「DxLib.exe」をダブルクリックしてください。
CPUやお使いのグラフィックカードの性能によってはスムーズにシュミレーションがされない場合がありますが、ご了承ください。


Name: ダッシュ   Date: 2006/09/04(月) 11:19   No:272 解決!     
Title: Re:FlashゲームのHPを作ってみたい超初心者です。    
新しく立てます。取り合えず解決としておきます。



Name: yukemuri   Date: 2006/09/01(金) 07:49   No:222       
Title: forの使い方について。。    
こんにちは。
FORの基礎です。
for(i=1; i<=10;i++){
printf("*\n");
}
*を1づつ増やして表示、1づつ減らして表示、またピラミッド型にするにはどうしたら
よいでしょうか^^;

@はiの値が1づつ増える関数ですよね。。?

↓こんな感じで。
@

**
***

A
***
**


B
  *
 ***
*****

Bは空白" "のforをつくってから、"*"のforですかね?



Name: 管理人 [URL]   Date: 2006/09/01(金) 14:33   No:224     
Title: Re:forの使い方について。。    
↑クリックで画像が拡大します↑

こんにちは、yukemuriさん^^
プログラマーへの夢にむかってがんばっていらっしゃいますか?☆

ピラミッドを書く方法は私がパッと考えられる方法としては2通りあります。
・表示する平面をxy平面だと考えてxをyの関数として関数の不等式を作り、表示させる方法。
・星の数と空白の数は数列になっているからそれをそのままfor文に適応してやるやりかた。
まずは後者のやりかたで説明します。


ピラミッド型を作る時、星の数は
a0       ☆
a1      ☆☆☆
a2     ☆☆☆☆☆
a3    ☆☆☆☆☆☆☆ 
...
an ☆☆☆☆☆☆☆☆☆☆☆☆☆

数列
a0=1 , a1=3 , a2= 5 ,..., an=2*n+1
で表せます。一方星の左側の空白も同じく数列
a0=N-1 , a1=N-2 ,..., an=N-(n+1)
で表せます。この関数をそれぞれ利用すればよいのです。

それぞれの数の和は

空白は
N
Σ(N-(n+1))
n=0

星は
N
Σ(2*n+1)
n=0

です。

すなわち、それぞれの数列は

for(j=0;j<N-(n+1);j++)
  printf(" ");
for(j=0;j<2*n+1;j++)
  printf("*");

このようにかけますね?これは数列のそれぞれの項を表しています。
ですからこの項を0〜nまで表示しようと思ったらこれをforでループさせたらいいわけです。つまり

for(n=0;n<N;n++){
  for(j=0;j<N-(n+1);j++)
    printf(" ");
  for(j=0;j<2*n+1;j++)
    printf("*");
  printf("\n");
}

このようになりますね。
これをまとめるとこのようになります。

#include <stdio.h>

void disp(int N){
  int n,j;
  for(n=0;n<N;n++){
    for(j=0;j<N-(n+1);j++)
      printf(" ");
    for(j=0;j<2*n+1;j++)
      printf("*");
    printf("\n");
  }
}

void main(void)
{
  disp(10);//表示させたい段数を入力
}

実行結果は写真をご覧下さい。例はdisp(30)で行った場合です。
プログラムはこちらです。

http://dixq.net/board/program/pira.cpp

以下続きます↓


Name: 管理人 [URL]   Date: 2006/09/01(金) 15:31   No:225     
Title: Re:forの使い方について。。    
↑クリックで画像が拡大します↑

先ほどやりかたは2通りありますといいましたね。

・表示する平面をxy平面だと考えてxをyの関数として関数の不等式を作り、表示させる方法。
・星の数と空白の数は数列になっているからそれをそのままfor文に適応してやるやりかた。

今度は前者でやってみましょう。
この方法で行えば、表現できるのはピラミッドだけではありません。
アルファベットも表示できます。
今回は表現が簡単な「X」「K」「O」でやってみます。
実行結果は写真の通りです。
アルファベットのように見えますね。
Xという文字を見てください。
これをxy平面の2つの1次関数の組み合わせだと見る事が出来ますね。Nをy切片だとすると
y=x と
y=-x+N の
2つの関数が交差している様子がわかります。
この時を条件として星を表示してやればいいわけです。
今回はわかりやすく、xの幅N、yの幅Nの正方形で考えます。
条件は

if(y==x || y==-x+N)
  printf("*");
else
  printf(" ");

このようにかけますね。x、yそれぞれを0〜Nまで考えるわけですから2重ループにして

void X(int N){
  int x,y;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==x || y==-x+N)
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}

このようにかけます。
ではKは
x=0
y=1/2*x + N/2
y=-1/2*x + N/2
の直線の集まりだと考える事ができます。
すなわちKの関数は

void K(int N){
  int x,y;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==int(0.5*(double)x+(double)N*0.5) || x==0 || y==int(-0.5*(double)x+(double)N*0.5))
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}

このように。途中doubleで計算しているところがあるので少しみにくいですが。
次にOは円の公式(半径r,中心(a,b))
(x-a)^2+(y-b)^2=r^2
より、x軸、y軸に接するように考えると
(x-N/2)^2+(y-N/2)^2=r^2
このようにかけますね。
これをyイコールの式に変形して条件マッチさせたらいいわけですから

void O(int N){
  int x,y; double r;
  r=0.5*(double)N;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==int(sqrt(r*r-((double)x-r)*((double)x-r))+r) || y==int(-1.0*sqrt(r*r-((double)x-r)*((double)x-r))+r))
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}

このようにかけるわけです。
これらをトータルしてみてみましょう。

#include <stdio.h>
#include <math.h>

void X(int N){
  int x,y;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==x || y==-x+N)
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}
void K(int N){
  int x,y;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==int(0.5*(double)x+(double)N*0.5) || x==0 || y==int(-0.5*(double)x+(double)N*0.5))
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}
void O(int N){
  int x,y; double r;
  r=0.5*(double)N;
  for(y=0;y<=N;y++){
    for(x=0;x<=N;x++){
      if(y==int(sqrt(r*r-((double)x-r)*((double)x-r))+r) || y==int(-1.0*sqrt(r*r-((double)x-r)*((double)x-r))+r))
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}
void main(void)
{
  X(20);//表示させたい段数を引数に
  printf("\n");
  K(20);
  printf("\n");
  O(20);
}

このプログラムをこちらに上げておきます。

http://dixq.net/board/program/char.cpp

基本的に方程式で表せる線で出来ている文字なら何でも書く事が出来ます。
定義域をつけてやれば漢字だって書けると思いますよ。

ただ「ぬ」とかを曲線も厳密に書けっていわれたら難しいですが^^;

ご自分でも色々やって考えてみてください。

ちなみに一番簡単な文字はIかLです。

以下続きます↓


Name: 管理人 [URL]   Date: 2006/09/01(金) 16:15   No:226     
Title: Re:forの使い方について。。    
↑クリックで画像が拡大します↑

意外な例をもう一つ。
簡単そうに見えて実はとても難しいのが「☆」なんです。
☆は書くのに当時とても苦労しました。
大学1年の時、☆って書いたらどんなプログラムになるんだろう?と疑問に思ったんことがあるんで
書いてみた事があります。
☆って直線のあつまりだから簡単そうに思えますが
では実際どんな方程式の集まりか?といわれたらぱっと答えにくいですよね。

まず☆に外接する円を描きます。
その円のπ/2をθ=0°として2*π/5ずつ中心から直線を描き、その直線と円の交点をそれぞれ結んだ直線の集まりが
☆なんです。
しかも塗りつぶそうと思ったら不等式を作って定義域を作って・・、かなり複雑になります。

☆を描くプログラムを示します。
昔に書いたプログラムなんでおかしい所沢山ありますけどそこはスルーで^^;

http://dixq.net/board/program/hoshi.c
(文字化けする時はメニューの「表示」>「エンコード」>「日本語(自動選択)」を指定してください)
もし参考になれば幸いです。


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

int hantei( int y, int x, double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double x5, double y5, double y8, double y9, int r ){
  if(y1 < y && y < y2)
    if( y<(y4-y2)*(x-x2)/(x4-x2)+y2 && y<(y5-y2)*(x-x2)/(x5-x2)+y2)
      return 1;
  if(y9 < y && y <= y1)
   if(y>(y4-y1)*(x-x1)/(x4-x1)+y1 && y>(y5-y3)*(x-x3)/(x5-x3)+y3)
   return 1;
  if(y8 < y && y < y9)
    if(y<(y4-y2)*(x-x2)/(x4-x2)+y2 && y<(y5-y2)*(x-x2)/(x5-x2)+y2)
    return 1;  
  if(y5 < y && y < y8)
    if(y>(y4-y1)*(x-x1)/(x4-x1)+y1 && y<(y4-y2)*(x-x2)/(x4-x2)+y2 || y < (y5-y2)*(x-x2)/(x5-x2)+y2 && y > (y5-y3)*(x-x3)/(x5-x3)+y3)
    return 1;
  if(y < y5 && y > y5-1){
    printf("表示した星型の外接円の直径は %d です。\n", r*2);
    printf("星型の外接円との交点はそれぞれ\n");
    printf("(x1,y1) = ( %.3f, %.3f)",x1,y1);printf("  (x2,y2) = ( %f.3, %.3f)\n",x2,y2);
    printf("(x3,y3) = ( %.3f, %.3f)",x3,y3);printf("  (x4,y4) = ( %.3f, %.3f)\n",x4,y4);
    printf("(x5,y5) = ( %.3f, %.3f)\n",x5,y5);
    exit (9);}
else
    return 0;
}
int keisan(int i, int j, int r){
  double pai=3.1415926;
  double x1,x2,x3,x4,x5,x6,x7,x8,x9,y1,y2,y3,y4,y5,y6,y7,y8,y9;
  double a1,b1,c1,d1,a2,b2,c2,d2;
  x1=r*cos(pai/10);
  y1=r*sin(pai/10);
  x2=0;
  y2=r;
  x3=-r*cos(pai/10);
  y3=r*sin(pai/10);
  x4=-r*cos(pai*3/10);
  y4=-r*cos(pai*3/10);
  x5=r*cos(pai*3/10);
  y5=-r*cos(pai*3/10);
  a1=(y4-y1) / (x4-x1);
  b1=(-(y4-y1)*x1 / (x4-x1)) + y1;
  c1=(y5-y2) / (x5-x2);
  d1=(-(y5-y2)*x2 / (x5-x2)) + y2;
  a2=(y4-y1) / (x4-x1);
  b2=(-(y4-y1)*x1 / (x4-x1)) + y1;
  c2=(y5-y3) / (x5-x3);
  d2=(-(y5-y3)*x3 / (x5-x3)) + y3;
  y8=(a1/(a1-c1))*(d1-c1*b1/a1);
  y9=(a2/(a2-c2))*(d2-c2*b2/a2);
  return(hantei(i,j,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,y8,y9,r));
}
int main(){
  int i, j, r;
  printf("星の大きさを入力してください。この数値は星型に外接する円の半径となります。\n");
  scanf("%d", &r);
  for( i = r ; i >= -r ; i-- ){
    for( j = r ; j >= -r ; j-- ){
      if( keisan( i, j, r ) == 1 )
        printf("#");
      else if( keisan( i, j, r ) == 0)
        printf(" ");
      else if( keisan( i, j, r ) == 2){
        exit (9);
     }
    }
  printf("\n");
  }
  return (0);
}


Name: 管理人   Date: 2006/09/01(金) 19:04   No:227     
Title: Re:forの使い方について。。    
なんで☆が長細いかというと半角で表現しているからで、
半角は横と縦の比率が1:2ですから縦長になります。
全角で表現すればきちんと星が表示されます。


Name: 管理人   Date: 2006/09/01(金) 19:07   No:228     
Title: Re:forの使い方について。。    
↑クリックで画像が拡大します↑

Name: yukemuri   Date: 2006/09/01(金) 21:10   No:229 解決!     
Title: Re:forの使い方について。。    
管理人さん こんばんわ♪

うおぉ!すごいですね!
まだパッとみた感じで、なにがどうなっているか、見ていませんが
なんか凄いですネ!
管理人さんが記述したコードは答えとして保存しておきます。
forは結構、奥深いですね。やはり^^;
今週末はforを特訓しようと思ってます。。
forの基礎に戻ってみると結構勘違いしてたり、
2重ループではどのような働きをするのか等、
ジックリ私の低スペックな頭で考えてみようかなと。。^^;

今、VC++やってますが、ビジュアルで面白いですね。
中身はサラッとで、先生が書く簡単なコードを
なぞり動作させてるだけで相変わらず中身はサッパリですが、
ボタンの操作作成から、そのボタンのアクションの
関数や定義を追加で、その定義に沿った操作できるってのは
やっぱ新鮮味がありなかなかです。
ただクラスウィザード等の使用でクラスを作成する際、
当然、自動で作成されますから、中身(C++)をわかってないと
いじれませんね^^;
例えて、
DreamWeaverでビジュアルの部分を作成をして、コードは自動作成される概念と一緒ですかね。あとは、html知ってれば、カスタムできますしね。そのC++バージョンですかね。

壁が多く、私の8ビットの頭ではすぐにオーバーフロー気味な毎日ですが、年月かけてやっていこうと思ってます^^;
ご回答有難う御座いましたm(_ _)m

また、路頭に迷ったら質問させて頂きます。
ってか、路頭に迷いっぱなしですがwwね。


Name: 管理人   Date: 2006/09/01(金) 22:10   No:233     
Title: Re:forの使い方について。。    
あんまり回答が長すぎても読むのがだるくなりますね、ごめんなさいm(_ _)m
私が昔悩んでクリアした問題をされてらっしゃるかと思うと、なんか懐かしくなってダラダラと書きました。
8ビットの頭ですか。ビットシフトで2進数の計算が早そうですねw
for文は奥が深いですよ〜、入門時、人の書いたfor文を読むのは特に苦労しました。
二重ループとか頭こんがらがりますからねぇ。
どのようにforを書くかは、色んな問題見て、人の書いたプログラムを見て
書き方覚えるしかないですよ。
プログラムっていかに自分で応用を利かすかですからね。
前の投稿の四捨五入にしてもそうですね。
「四捨五入をする」という関数はありません(と思います)。
しかし

・doubleをintに変換すると小数点がとれる

という事と、

・0.5をたして小数点を取れば四捨五入した事になる

という事を組み合わせて四捨五入のプログラムを作ります。
べつに私も誰かから四捨五入のやり方を習ったわけでも授業でやったわけでもそういう手順表をみたわけでもありません。
☆の図形を描くプログラム。そのような問題がサイトにのっていたわけでも解法をみたわけでもありません。

プログラムって自分の知識の範囲の関数をいかに組み合わせて答えにつなげるか

なんですよね。まさに数学です。25*84は何になるか、全く同じ問題は学校で習いませんけど出来ますよね。
それはアルゴリズムを理解しており、かつ沢山の問題集をしたから習得できたもの。
プログラムも色んな問題や回答を見て、人の書いたプログラムを見て習得する必要があります。
色んなプログラムに出会ってください。
頑張ってくださいね。


Name: yukemuri   Date: 2006/09/01(金) 22:35   No:235     
Title: Re:forの使い方について。。    
こ、こんばんわ^^;
路頭に迷いました・・・。
#include <stdio.h>

int main(){
  for(int i=1;i<=10;i++){
          for(int j=1;j<=i;j++){
          printf("*");
          }
     printf("\n");
     }
return 0;
}
1(重)ループだと、素直にトレースできますが、
2重になると、途中でトレースが分からなくなりましたOrz..
上から順に、
(i=1)<=(i=10)→true→下へ→
(j=1)<=(i=1)→true→*1個表示→j=2→
ここでなんですが、、
*を1個表示後、jがインクリメントされjの値が2になりますよね。
で、まだjのスコープ内に居ますから
for(int j=1;………に行く(ってか、ループ中)わけですよね。。
このfor(int j=1;………に入る際、すでに先程j=2になってますが、
for(int j=1によって初期化され jは2から1になっちゃうんでしたっけ!?

もしそうだとすると、
ん〜〜、上のトレースからまず*が1個表示されました。
で、jが2になったけど、1に初期化されると
j=1で (j=1)<=(i=1)→true
*1個表示→jインクリメントでjは2になり、、、
でも、j=1に初期化され (j=1)<=(i=1)、、
あれ。。?^^;
分かんないです。。Orz


Name: yukemuri   Date: 2006/09/02(土) 00:21   No:240     
Title: 補足    
管理人さん♪

先程、アチラのコメント観ました。^^;
まず、管理人さんの立場からすると不特定多数の方を対象に
その労力たるや相当なものだと思います。

以下、あくまで私の主観的な考えをお伝えしますネ☆
演習での習得や実践での習得は、にわかに習得出来る者ではありません。(どんな事でもそうです仕事でもゲームでも学習でも)

私の現在の置かれた状況はご存知の通り、短期での習得。
とは言ってもそれは習得ではありません。
残念ながら、ただの経過に過ぎません。
限られた時間と(とりあえずその)期間で、
まず悩みが出た際は自分で考え、それでも分からない場合は
人に訊く。また考え、また聞く(私の場合∞ループかと思うくらいw)

管理人さんの回答やアドバイスは質問した事以上のお答えで
大変勉強になり、また励みにもなります♪
管理人さん自身が苦労して習得(&中)できたからこそ、
人に伝授出来るし、相手の気持ちすら把握出来るかも知れません。
普通であれば己が苦労して手に入れたものは、簡単に人には教えたくはないでしょう(あ、これは私の主観ね^^;)
↑技術者には特に多いですヨ
しかし、管理人さんの場合、この掲示版のカキコに回答するに比例して更に自分自身の再確認(常に勉強)もされている所は、例えば「常に自分本位な考え」の方だと、これはなかなか実行出来ないもんです。

私は限られた(まぁ、期間終了後もC学習ヤメル気サラサラないけどネ♪ただ仕事の束縛は出てくるカナ)時間経過の中で良い意味での利用を自己で考えてます。

言い方悪いですが、管理人さんの回答やヒントは私にとって「最終兵器」なんです☆☆
目の前に訊く人が居れば、その場で聞けますがネット上だとどうしても回答の戻りがランダムになってしまいます(当然ですね)。

なので、アチラでは相当たる不特定多数のアドバイザーがいるので、すぐ回答が誰かしらがしてくれます(とりあえずって感じの回答ばっかですがネ)

何も考えない時間が勿体無い事を前提として↓
例えば「コレわkんねぇ!」=>「管理人さんに聞こう!」と思った際、私が質問して「15分以内に回答下さい!」って言ったら、それは相手にとって相当な束縛になってしまい当然相手の状況を考えないで失礼な事ですよネ。

そんな主観的な考えで利用してる経緯なんですヨ☆

今後ともご教示ヨロシクです☆

※最後に(オチw)
いつかは同鯖で[一緒にやりませんか?]で、管理人さんに/tellしたいんだけど…ww
/tell待ち待機、結構苦手(時間勿体ない)ので、オートリーダー系なんですw

(現在GMコール中)現在for2重ループでMBフリーズ(古代)中....w


Name: 管理人   Date: 2006/09/02(土) 02:59   No:242 解決!     
Title: Re:補足    
最後のオチに答えましょうw
FFですか懐かしいです。
新しいジョブとか、一緒にNPCで戦えるシステムとかやってみたいとは思いますよ。
でもFFをやった事は後悔はしていないつもりですが、
やはりやりすぎました。
FF11をしたことで自分の頭の中でゲームにたいして発想が豊かになりました。
それは利となる事でした。
しかしあれほどまでに時間をかけてしまった事はやはり後悔しています。
何もあそこまで時間をついやすことなかったって。
あれだけの時間VCやDirect系の勉強をしてたらどんなにスキルアップできたかと。
いくらFFをやっても、スクウェアがなくなってしまったらもう自分の手元には何も残りません。
私達はスクウェアのサーバーの0と1の信号を書き換える事に必至になってリアルを捨ててまでそんな事をして
果たして意味があるのかと・・。

私をよくボウリングやカラオケなどそとに遊びにつれていってくれる友達がいました。
FFを始めてから自然とその友達の誘いを断るようになっていきました。
友達の誘いも断り、いつも家で、ゲーム。学校にいっても真っ先に帰って家でゲームする。
そんな生活をした事にすごく嫌気がさしました。
久しぶりに友達が外に遊びに連れて行ってくれました。
すごく楽しくて、自分は何故こんな生活をとったんだと後悔しました。
FFってなかなかやめられないですよね。
完全にやめることができたのはその友達のおかげだと思っています。
FFをやってよかった事はゲームに対する発想を豊かにしてくれた事だけです。
これ以上FFをやってもその唯一の利益はこれ以上得る事が出来ません。
ですから二度とFFはやらないと決めました。
ゲームをする時間があるなら院での研究、Direct系の勉強をしたいなと思います。
FFがホントに楽しいと思ったのは最初の半年間ですね。
もうレベル75になった頃は自分がマシンになったようにレベル上げしてました。
もうFFのドロドロした世界には戻りたくありません。

せっかく誘っていただいたのにごめんなさいね。
確かに楽しい世界ではあると思いますがとても危険すぎます。私には。
リアルをおびやかすとても危険なものだという認識しか今はもう出来ません・・。

(FFをとても満喫されてらっしゃるかたでこの文章をよんだことによって気分を害された方がいらっしゃいましたらお詫びしますm(_ _)m)


Name: yukemuri   Date: 2006/09/02(土) 09:59   No:245     
Title: Re:補足    
おぉ、ナルホド。理由は分かりました^^
そうなんですよネ。FFを辞められる方達の大半がそういう事を理由に辞められる事が多いようです。
やった人にしか味わえない喜びもあり、逆にやった人にしか分からない時間の束縛も有りますからねぇ。アレはw

特にFFに至っては現実とリアルをしっかりと管理しないと、奈落の底(廃人)に間違いなく落ちますからねぇ。
軽い気持ちでコメントしたつもりが返って管理人さんの昔のトラウマを思い出させてしまい申し訳ない。。

人によって価値観は違うんで物事の優先順位を決め、やる分にはなんら問題無いと私は思ってます。

ご存知のようにヴァーチャルな世界でも高レベル=すごい人(偉い人)みたいな傾向あります。
すごい人と言われ喜びを感じている輩に限ってその殆どがリアル大した事ないです…。だいたい考え方がお子様♪
迷いの名所ユタンガでMAP無くて迷っていたとするとわざわざ戻って助けてくれる人も居れば、自分さえ良ければっってさっさと行くのも居るしねw そういう所ってMMOって面白いナと。現実と一緒で色々な人がいて。

廃人装備しててヒーローになってても所詮、ヴァーチャルな世界だけでの事。
家庭や仕事を持ちながらプレイしている人とかと妙にチャットで同調したりして、私は楽しんでプレイしてました♪
やってれば誰でも上がります(受身じゃ無い限り♪)
見かけだけ高レベルになっても周囲の強力なきゃ、所詮1人じゃ、なんも出来んし。

>「スクウェアのサーバーの0と1の信号を書き換える事に必至になってリアルを捨ててまでそんな事をして果たして意味があるのかと・・」
その通りだと私も思ってます。
皆、スクエアエニックスの術中に嵌っている事承知の上、ある種病気させて会社が売上を上げる原理ですからね。

リアルな世界でもヴァーチャルな世界でも一緒ですが、皆自分が人の上に行きたいという心理がありますから、更に嵌ると…。

えと、上から言うような言い方で恐縮なんですが管理人さんはまだお若いですしFFをお辞めになった事は自分にとって最善である事に気づいた事自体、ホント良かったですネ☆
Cで例えて言えば管理人さんはLv75、私はLv1です。ロンフォールでウロウロしているミミズ狩り状態

まぁ、私はいずれFFは復活させますが、前ほどは出来ないでしょう。前のLv75合成99のキャラ捨てましたし、Lv1からだと時間掛かるし(アカウントを買うってのもアリだけどねぇ)プログラマー関連の知識が身についてくればそっちの方が楽しくなってくるカモね。
ヴァーチャルな世界でレベル上げても「金」にならんけど、リアルでのレベル上げは「金」になるからね☆
そこが一番重要だったり…。


Name: 管理人   Date: 2006/09/02(土) 15:00   No:247 解決!     
Title: Re:補足    
まず、突っ込み。

「FFの世界に戻るんかい!」

え、戻るんですか?キャラ捨てたっていうのは売ったんですか?
もし消しただけだったら1回だけ復活できるとおもいますけど・・。
RMTしだすときりないですよね。クラクラとか30万円だしてほしいのかと。
以前250万円でアカウント取引されていました。ほとんどオール75で麒麟の袖かなんかしりませんけどEXほとんどもっていたようで。
250万もあるんだったらフェアレディかなんか買うっちゅうねん・・。
外部ツールは使用するなと規約にありましたが、別に自分で作ったのはツールとは呼ばないだとうと
意味のわからない勝手な解釈で自動合成プログラム作ったり自動レベル上げプログラム作ったりして遊んでました^^;
FFってすごくうまく作られてるんで、レベル上げは無理でしたが素材狩り位は出来ました。
でも不具合があったりしたら怪しまれるし、結局ずっとパソコンの前で監視しながらだったんで
あまり意味ありませんでしたけどね。
敵を倒して、次の敵を探す時、テンキーの0を連続で押すようにプログラムされているんですけど、
敵を見つけたとき万一戦う状態に移行しなかったら永遠にそこで0を連打→(はたからみたら首振り人形)になってしまうので
結局ずっと見てました^^;
もちろん人のいないところでしか使ってませんけど言い訳になりませんね。
初めてそういうプログラムが書けるようになったときだったんで嬉しくて。


>Cで例えて言えば管理人さんはLv75、私はLv1です。

いや、せいぜいレベル7ですよ。やっと前衛の新しい装備が出来るとしごろ。でも砂漠に行ったら死ぬ。
ちょうどいいですねw

私がやめた理由はもう一つあって、こんな話があります。
昔オルデでアーチャリングとってたことがあります。
ライバルが8人位で単純に1人1回ずつ取れたとしても9回に1度。つまり1時間に1回位しかとれなかったんですよ。
その時は2時間近く取れなくて、(トータル8時間くらいいたんですが)2時間たってやっと取れたんです!
やった〜!と思って狩っていた時、WSのマクロ出そうと思って間違って戦闘終了のマクロ押してしまって。
敵が黄色になってしまいました。
そのとたん見ていたライバルがめっちゃ弱い射撃でプツっと1発。
敵の色は赤で戦闘できないのに敵はこっちをむいて攻撃している。
私は攻撃する事もできずただ攻撃されているのを見ているだけでした。
それをみた(射撃をした)ライバルが「/laugh」の連打。
ホントいやになりました。

なんでこんな意味の無い事をしてるんだ・・遊ぶって楽しいからすることじゃナインかって。
廃人が廃人装備して「ドヤ!」みたいな格好で歩いている姿。
外人はバカ、初心者はバカとみくだしている姿。

「お前リアルで見下される方ちゃうんかい!」

そうつっこみたかったですね。
1日18時間ゲームしていると自慢していましたが何の自慢になっていることやら・・。
もうゲームしかしない生活・・そんなのリアルの付き合いもくそもあったもんじゃないですよね。
友達もいず、仕事もせず、学校にもいかず、彼女もおらず、ただひたすら毎日ゲームをしているやつが
えらいのか?!
FFを始めたばっかりの時は楽しかった・・・。ホントに楽しかった・・。
LSのみんなで冒険いったり、みんなどこに何があるかわからなくてドキドキしながら冒険した・・。
レベル上げもみんなでキャッキャいいながら・・。

そんな事はもうレベル75になったとき全く縁の無い話になっていました・・。
やめた当時楽しかった思い出はありません・・↓↓


Name: yukemuri   Date: 2006/09/02(土) 18:34   No:250 解決!     
Title: Re:補足    
えぇ、戻りますよww
FFの話ってキリが無いですよね。
しかしながら管理人さんに於いては、嫌な思い出を思い出させてしまい、ゴメンなさい(_ _)

オルデでのリング取り…私も似たような経験ありますヨ。
PTでのNM狩なら幾分、怒りも分散されるけど、オルデの場合はソロ基本だもんネ。。
管理人さんのその時の気持ち心底分かります…。
ホント精神的に凹むよね…NM狩でそういう事あると…。
目の前にリアルでいればド突く事出来るけど、仮想現実を
いい事に粋がってる精神的におこちゃまなプレーヤーは随所に見られますね。GM呼んでも形だけで所詮、アルバイトくんだしね^^;GMはw
中国では20代の若者がMMO依存症で社会復帰出来ない社会現象になっているそうで、更正施設があるそうですね…。麻薬みたいなモンです。

いづれにしても、そういうアホはほっとくかなw私の場合は。
ちなみに、人間の心理って「アホ」って言われて、ムッと来て「馬鹿」って返すと堂々巡りの低脳なループに入り互いに時間の無駄なので、私の場合はもしそうされた時は/c→/say or /tellで「凄い装備デスネ」みたいに相手を油断(?モード)させつつ、何か返事(相手がこちらの言う事を聞いている事を確認且つ、フィルターが掛かってない事を確認した後、/say or /tell でトドメの一発発言(シの不意玉的にw)で立ち去る感じでしたw こちらがフィルター掛けた事をお伝えしたち。/goodbye
まぁ、しょっちゅうあるもんじゃないけどねw
勘違いしてる輩は自分が痛い目みないと分からんからw

でも私はいずれ復活しますヨ。ただ、やりたいから。それだけです♪
前キャラは1回復活サービスしてるんで完全削除(ちなみにアカウントは売ってません)してるのでもう在りません。
250万とかクラクラで30万とか出すのってまず有り得ないね。
1万でも高いかなw(じゃ、買えないな^^;
250万ですか…。売ったその人は今頃、ろくな生活をしてないでしょう。あんなもんに250万かい!w
例え1万でもおいおいって感じ…。

まぁ廃人クラスは彼らのとても小さな哲学があるのでしょう。
世間にも認められず、非現実世界でしか自分の存在をアピール出来ない人々です(全ての方とは限りませんが)寂しい人間だからこそ人に認められたくて架空のレア装備やレベルで自分の存在を認められたいわけよ。そんで非現実で人を見下すと…w 悲しいよね。

やや話が飛躍しすぎました。ご了承下さいませ☆

PS:でもFFってそんな嫌な事ばっかりじゃない。ごくまれにアホな奴もいるけど、リアルでもいるしねw
昔、関西弁ローマ字でチャットする謎のフランス人いたり、結構、妙な出会いもあったりで楽しかったです☆


Name: 管理人   Date: 2006/09/02(土) 19:28   No:251     
Title: Re:補足    
ちょうど大学院費が250万ですから、そんなもんにお金払えるんなら私の院費代わりにはらってほしいですねm(_ _)m
友達なんて900万奨学金で借りて、働いて返すそうです。。。
250万でも大金ですが、900万をみると少なく感じますね・・。
900万なんて1ヶ月に3万ずつ返しても30年ローンですね。
家のローンとか車のローン重なったら泣きそう・・。

大学費は親が出してくれたんで、時間の有り難味がありませんでした。
しかし自分で出さなければならない費用で保っている時間を過ごしていれば少しでも無駄の無い時間を過ごそうとするものでしょう。
有意義な院生活を送ろうと思います。

yukemuriさんもFFの世界に戻られるのでしたらリアルの生活に支障の無い程度に頑張ってください。


Name: 管理人   Date: 2006/09/02(土) 20:16   No:252     
Title: Re:補足    
ところでyukemuriさん、
アトルガンの音楽吸出しってどうやるか知りません?
プロマシアまでなら吸出し方法知ってるんですが
なんかアトルガンだけ出来ないんですよ。

アトルガンも音楽とテクスチャ画像吸い出すためにインストしたんですけど
アトルガンだけなぜか出来なく・・。


Name: yukemuri   Date: 2006/09/03(日) 08:58   No:256 解決!     
Title: Re:補足    
そうだよね〜。お金や時間の有り難さって自分でやりくりして初めて分かるもんですもんネ。
てか、管理人さん院1年生になったんですね☆
遅ればせながら「おめでとうございます!」m(_ _)m
管理人さんの事だから言われなくとも充実した日々を送られる事とおもいます。頑張って下さいね!

さて、
アトルガンのデータ吸出しについて…
恐らくこのカキコをお読みの頃は既に解決されている事かも
しれませんが、「お力に成れなくてスマソ」です…。
私はツールの類を一切使用しない(皮肉じゃないので誤解なくw)ので吸収出来ない原因分かりません。
私もネットで色々と調べてみたけどその収穫は御座いませんでした…。
逆に訊きたいのですがdatデータかなんかを落とすんですか?


Name: 管理人   Date: 2006/09/03(日) 16:45   No:258     
Title: Re:補足    
いや・・院生になるのは4月からです^^;

データ吸出しについて、FFの音楽データは、
独自のファイル[.bgw]というファイル形式になっていますから、
ソフトでwavに変換します。
すると聞けるようになります。
何のファイルか判らない時はバイナリエディタでファイルの中身をみると全ての信号が16進数で表示されますから、
そのデータからヘッダ情報を見れば何のファイル形式かわかります。
ゲームを配布する時はよくやりますが、ファイルが何のファイルかわからないように拡張子を変更します。
またはヘッダ情報を1ビット変更します。
するとダブルクリックじゃ開けなくなります。
しかし実質的なデータはwavならwavのままなんで、中身をみてみたらいいのです。
で、そんなこんなでプロマシアまでは(プロマシアのラスト以前)までは簡単にwavに変換できていたんです。
しかし、アトルガンからはどう考えても再生できなくて・・。
何か暗号化でもしてあるんでしょうかね。
2チャンとかでもみんな出来なくて困ってるみたいでした。
1人か2人「俺はできたぜ、教えないけどな」みたいな書き込みがありましたけど、ホントかどうかわかりません。

例えばデータが○○ビットごとにあるビットだけ変更するような事がしてあれば、もうお手上げですもんね。
しかしどんなに複雑にデータが変更してあろうとも自分自身では複合化できるわけですから、ファイルを変更すれば全ての音楽はきけました。

例えば

C:\Program Files\PlayOnline\SQUARE\FINAL FANTASY XI\sound4\win\music\data

にアトルガンの音楽データがはいっています。
music179.bgw
のファイルは最初に流れるマーチの曲です。
このファイルと、ラスボスの音楽をいれかえれば、最初のマーチの時に書き換えた音楽が聴けるわけです。

グラフィック差し替えもこうやって遊びます。
例えば
足の白AFのデータを、戦士AF、のグラフィックデータに変更すると、
上着は白AF、足は戦士AFというような事を同時にする事もできます。
グラフィックデータを作ってる人もいますから、
天使のキャラ、女子高生の服、あやしいグラフィックにでも何でも自由自在に変更できてしまいます・・。

または、自分がその場所でどこにいけてどこにいけないのか、すなわち、建物があれば建物に自分のキャラがぶつかった時
いけないとか、建物がなければいけるとか
これは自分のパソコンで計算しています。
ですから自分のパソコンの計算方法をかえてやれば、普段いけないところにもいけます。
だからユタンガのマップデータをルテのマップデータに変更すれば、ぐにゃぐにゃした道もつきぬけてまっすぐすすめます。
まわりからみたら壁にめりこんできえていくように見えるんで、
あまり使わない方がいいですけどね。
データに不具合があって、一生壁からでられなくなっても
不正をした不具合ですからサポートしてくれないそうです。
まぁこの辺は踏み込まない方がいい領域ですね・・。
ツール使う事はいけないとかよくいいますけど、自分で手作業でできるからツールじゃないんだけど・・
とか独り言言ってます。
そういう事やってるってフレやLSの人が知ったら絶対いい顔はしませんからしない方がいいですハイ


Name: 管理人   Date: 2006/09/03(日) 18:53   No:259     
Title: Re:補足    
あ、、最後のオチにだけ答えて
http://www.play21.jp/board/formz.cgi?action=res&resno=222&page=&id=dixq&rln=258#235
こちらの回答を書くのを忘れていました・・。
すみません。

2重ループについて、もうお分かりになりました?
じゃ、まずi,jをつかって
*
**
***
を作るプログラムから。
for(i=0;i<3;i++){
  for(j=0;j<=i;j++)
    printf("*");
  printf("\n");
}
このように書く事で
*
**
***
が表示できます。
まず、i=0でループが始まります。
続いてj=0で二重ループが始まります。
二重ループ内でjはi以下の時続ける事が出来ます。
二重ループの1回目、i=jですから以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。
この時、jのfor文はj=1,i=0ですからjはi以下という条件にマッチせず、breakします。ブレイクすると\nがプリントされ、改行されます。

iのfor文の最初に戻り、iがカウントアップされ、i=1になります。
続いてj=0で二重ループが始まります。
二重ループ内でjはi以下の時続ける事が出来ます。
二重ループの1回目、i=1,j=0ですからjはi以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。

二重ループの2回目、i=1,j=1ですからjはi以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。

この時、jのfor文はi=1,j=2ですからjはi以下という条件にマッチせず、breakします。ブレイクすると\nがプリントされ、改行されます。

iのfor文の最初に戻り、iがカウントアップされ、i=2になります。
続いてj=0で二重ループが始まります。
二重ループ内でjはi以下の時続ける事が出来ます。

二重ループの1回目、i=2,j=0ですからjはi以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。

二重ループの2回目、i=2,j=1ですからjはi以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。

二重ループの3回目、i=2,j=2ですからjはi以下という条件にマッチし、1回だけ*がプリントされます。
1回分の処理が終わったんでjが1つカウントアップします。

この時、jのfor文はi=2,j=3ですからjはi以下という条件にマッチせず、breakします。ブレイクすると\nがプリントされ、改行されます。

iのfor文にはもうマッチしないので全体的に処理が終わります。
この時
*
**
***
となっています。わかりました?


Name: yukemuri   Date: 2006/09/03(日) 21:58   No:264 解決!     
Title: Re:補足    
手取り足取りのコード記述有難う御座いますm(_ _)m
考え方わかりました。

自分がイマイチ把握出来てなかった箇所とりあえず掴めました。

えと、jのループを抜けてjが2になった際、
iのループに行きiもその時は2になってます。
その時j=1に初期化されてるのか…と。
てか、分かる人からすれば当たり前なんですが…

だから、jのループで1<=2 と 2<=2 で *が2回表示と…。
ホント恥かしいです…。
1+1がやっと分かった気持ちw

で、この事を理解(頭で)した上で、
逆バージョン
***
**

を考えました…。
答えを先日見てますがメモリの如く私の頭はその都度消去されるので、全くクリアーな状況で…。
で、出来ましたよ…(;_;)

for(i=3; i>=1; i--){
for(j=1; j<=i; j++){
printf("*");
}
printf("\n");
}

一発では出来ませんでした…。
何度か色々試してみて、正しく表示され、また
この2重ループの(自分で書いた)意味、理解出来ました(>_<)
まず3つ*を表示させ、それをデクリメントすればいいのかな?
という考えから、何とか書けました…。w

Lv7装備レザーバンダナ装備→レザーバンダナ+1に装備変更な気分です…(T-T)

答えはこれだけだけではないでしょうが…ね☆

※レザーバンダナ+1装備(まだダメ?w)でとりあえず今日はぐっすり寝れそうですw

※ピラミッドの*は明日以降、良く考えてまたチャレンジして見ます。

管理人さん、どうもありがとう!
明日からまた授業はVCモード突入…
近いうちに開発実践です。/p はう…


Name: yukemuri   Date: 2006/09/03(日) 22:08   No:265 解決!     
Title: Re:補足    
あ、そうだw
大事な事書き忘れました…。

入学は来年の4月からですよね^^;
勘違い…。

あとFFデータ云々の件、色々とご教示有難う御座います。
音楽データ試そうと思ったら、初期のFF11の1枚目だけ、
見当りませんでしたw まぁ発見次第程々に試してみます。
プレイは当分やりません(出来ません)けどね♪


Name: 管理人   Date: 2006/09/03(日) 22:39   No:267     
Title: Re:補足    
yukemuriさんそんないい物着る前に、オニオンロッド+1でも研究しなさいw

確かにfor文は難しいですよねぇ。
今までこういう考え方した事ないですもんねプログラム独自の考え方ですから。
私も随分苦労しました。
☆を作ろうとした時もちょうどyukemuriさんの頃でした。
☆がキレイに表示された時はとても嬉しかったですよ。
ピラミッドは作成された2つのプログラムくっつけたら簡単ですよ。
だって空白は段々へって、星は段々ふえるんですから。
空白の数は-1ずつ、星の数は+2ずつ変化します。
☆にもチャレンジしたら力になりますよ。
頑張ってください。


Name: ヤン [URL]   Date: 2007/10/24(水) 09:06   No:2221193184415     
Title: 商店    



よろしくおねがいします



Name: ヤン [URL]   Date: 2007/10/24(水) 09:09   No:2221193184560     
Title: 商店    

よろしくおねがいします





Name: sin   Date: 2006/08/26(土) 19:59   No:194       
Title: 三角関数のプログラム    
四捨五入のやり方が分かりません;

あと、α =0.8の時  β =0.5
α =0.85の時 β=0.7
α =0.9の時  β =0.8
α =1の時   β =0.9
の条件で、例えばα =0.87となった場合のβの算出方法が
分かりません。C言語の知識が浅いので初歩的な質問ですが
宜しければ解答お願いします;



Name: 管理人 [URL]   Date: 2006/08/26(土) 21:43   No:195     
Title: Re:三角関数のプログラム    
こんにちは、sin様^^

ご質問にお答えしますね☆

とりあえず四捨五入という考え方をすると
難しいと思いますが、int型は小数点切捨てという概念を
思い出してみると簡単です♪

例えば小数第1位を四捨五入するプログラムを作るなら
double型の数値に0.5をたしてint型に代入すれば四捨五入した事になります。

今78.6というdに格納されたdouble型の変数を四捨五入する事を考えます。

int i;
double d=78.6;

i=(int)(d+0.5);

(int)と言う意味はお分かりでしょうか?後者の()の中を小数点付きで計算した後、int型に変換すると言う意味です。
つまり78.6+0.5を計算すると79.1ですね。
int型つまり整数型に変換しますからこの値は79になります。

もし
d=78.4だったらどうでしょうか。
78.4+0.5は78.9になりますね。これをint型にすると小数点切捨てですから78になります。
ほら、四捨五入になりますね。

つまり小数点第1位を四捨五入したいなら0.5をたしてint型に変換すればOKです。
小数点第2位を四捨五入したいならちょっと考えてみる必要があります。

モトの値

10倍する

0.5をたす

int型に変換する

double型に変換する

0.1倍する

で完了です☆

αとβの対応関係がよくわからないので、具体的なプログラムがかいて見られないのですが・・。
αとβは具体的にどのような対応関係にあるのでしょうか?
もしよろしければ詳しく教えてください。
四捨五入に関してももしよくわかりませんでしたら
遠慮なくまた聞いてくださいね^^


Name: sin   Date: 2006/08/27(日) 04:42   No:199     
Title: Re:三角関数のプログラム    
なるほど^^ 分かり易い解答有難うございます。

小数第二位の四捨五入ですが

int i;
double d=7.86;

d=d+0.05
i=(int)(d+0.5);

でも可能でしょうか?

あと、αとβの関係ですが
事前の計算によって算出されたαの値を元にβの値を
求めるというもので、先程書いた通り

α =0.8の時  β =0.5
α =0.85の時 β=0.7
α =0.9の時  β =0.8
α =1の時   β =0.9

これが条件です。ちなみにαの値の範囲は大体が0.8〜1.0
ですが、必ずしもそうとは限りません。

例:
事前の計算によって渡されてきた
 α = 0.89 
これを元に
(α=0.85の時 β=0.7 且つ α=0.9の時 β=0.8)
という条件から
β = 0.78
を算出する。
というものです。


Name: 管理人   Date: 2006/08/27(日) 06:55   No:200     
Title: Re:三角関数のプログラム    
う〜ん、、おっしゃっている方程式は1対1対応の方程式ですので
私の思考能力ですと別の方程式に拡張できません・・。
αとβの間にある方程式を関数で書いていただけたらわかるのですが・・。

α = 0.89 

β = 0.78
に何故なるのかもわかりません。

sの時tという条件に合わない値が出てきたときはその中間値を取るということでしょうか?
そうで無い場合でしたら

α = 0.89 の時
もしもαの小数点第一位が8の時γa=0.7となり
   αの小数点第2位が9の時γb=0.08となると言うのでしたら
β=γa+γbで
β=0.78となると言うのでしたらわかるのですが・・。



後、小数点第2位の四捨五入の話ですが

int i;
double d=7.86;

d=d+0.05
i=(int)(d+0.5);

これでは小数点第1位が四捨五入されてしまいます。
どういうアルゴリズムで四捨五入されているかちょっと考えてみてください。
今7.86という値に0.5を加えて小数点を切り捨てると8になりますね。
これは小数点第1位を四捨五入した事になります。

一方小数点第2位を四捨五入する場合7.86に0.05を加えて小数点を切り捨ててみましょう。
すると7になってしまいます。
肝心な残しておきたい小数点第1位も第2位もろとも消されてしまい、希望の結果にはなりません。
int型に変換する時は小数点第1位よりしたの位は問答無用で消してしまいます。
ですから希望の位まで桁上げしてやる必要があります。

先ほどにも同じ事を書いたのですが、小数点第1位以外を四捨五入する場合はちょっと頭を使います。

7.86の小数点第2位、つまり6の部分を四捨五入したい場合はまず10倍してやります。
値は 78.6になりますね。
この状態で0.5をたしてみます。
すると79.1になります。この時int型に変換、つまり小数点を切り捨てると79になります。
それから値を1/10倍してやります。
すると7.9になります。これが答えです。

7.86の小数点第2位の四捨五入は7.9ですね。
ほら先ほどの答えは希望の結果と同じになっています。

四捨五入したい値が小数点第1位になるまで桁上げしてやる必要があるんです。

小数点第2位の四捨五入は10倍して0.5を足してint型にして0.1倍するのですからこのようにかけます。

double d=7.86;
d=((int)(d*10+0.5))*0.1;

おわかりいただけたでしょうか?

もしよくわからなかったり他の四捨五入の方法など知りたい場合はまた聞いてくださいね☆


Name: Justy   Date: 2006/08/27(日) 16:59   No:206     
Title: Re:三角関数のプログラム    
 こんにちわ、sinさん。

 αとβの関係が4つ(例を含めて5つ)の対応する値しか条件がないのでしょうか。タイトルに三角関数がどうのと書いてあるので、それ関連かとも思いましたが、よくわかりません。

 現状提示されている条件で任意のαの時のβ値を求めるには、補完するしか手はありません。
 一口に補間と言っても線形補間、ラグランジュ補間、スプライン補間などたくさんありますが、今回のケースですと多分線形補間でいいかと思います。

 線形補間は2つの値の間にある値をその線形性を利用して求めるもので、2つの値をそれぞれ x1、x2で、tがその割合(通常 0〜1)とすると以下の式で求まります

 y = (x2 - x1) * t + x1;

 例えば、10と20の値があって、その中間(0.5)を求めると

 (20 - 10) * 0.5 + 10

 となり、結果は 15となります。
 これを利用すれば上記の問題は解けます。
 とはいえ問題は値が4つあるのでどの値と値で補関するかを決めなくてはいけません。が、これも単純に指定した値がどの区間に含まれているかを探せばいいかと思います。

 例えばαが 0.89なのであれば、その値は 0.85と 0.9の間にあるのでまずこの2点間における tを求める必要があります。
 これは α=0.85を t=0、α=0.9を t=1とした時、α=0.89の時の tは幾つになるかを考えます。直感的に 0.8だとわかるかと思いますが、計算で求めることもできます。

 (0.89 - 0.85) / (0.9 - 0.85) = 0.8

 これが求まったら後は2つのα値のそれぞれに対応したβ値である 0.7と 0.8で補完すれば 0.78と結果が出ます。


Name: Justy   Date: 2006/08/27(日) 17:02   No:207     
Title: Re:三角関数のプログラム    
 で、出来上がったソースがこちら。

 
001 // 線形補間
002 #define SPLINE_ARRAY_SIZE 4
003 double calc_liner(double v, const double x[SPLINE_ARRAY_SIZE], const double y[SPLINE_ARRAY_SIZE])
004 {
005 int index = 0;
006 double x1, x2, y1, y2, xs, t;
007
008 while(index < SPLINE_ARRAY_SIZE - 2 && x[index + 1] < v)
009 ++index;
010
011 x1 = x[index];
012 x2 = x[index + 1];
013 xs = x2 - x1;
014 if(xs == 0) return y[index];
015
016 t = (v - x1) / xs;
017 y1 = y[index];
018 y2 = y[index + 1];
019
020 return (y2 - y1) * t + y1;
021 }


 引数 tに指定したいαの値を、引数の配列 x, yにはそれぞれ規定されているα/βのテーブル(ソート済み)を指定します。
 そうすると戻り値に補間結果が帰ってきます。

 で、試しにテストコードを書いてみました。
 
001 int main()
002 {
003 const double value_a[SPLINE_ARRAY_SIZE] = { 0.8, 0.85, 0.9, 1.0 };
004 const double value_b[SPLINE_ARRAY_SIZE] = { 0.5, 0.7, 0.8, 0.9 };
005 double v, result;
006
007 for(v=0.7; v<1.101; v+=0.01)
008 {
009 result = calc_liner(v, value_a, value_b);
010 printf("%4.2f = %f\n", v, result);
011 }
012
013 return 0
014 }


 これの出力結果は

0.70 = 0.100000
0.71 = 0.140000
0.72 = 0.180000
0.73 = 0.220000
0.74 = 0.260000
0.75 = 0.300000
0.76 = 0.340000
0.77 = 0.380000
0.78 = 0.420000
0.79 = 0.460000
0.80 = 0.500000
0.81 = 0.540000
0.82 = 0.580000
0.83 = 0.620000
0.84 = 0.660000
0.85 = 0.700000
0.86 = 0.720000
0.87 = 0.740000
0.88 = 0.760000
0.89 = 0.780000
0.90 = 0.800000
0.91 = 0.810000
0.92 = 0.820000
0.93 = 0.830000
0.94 = 0.840000
0.95 = 0.850000
0.96 = 0.860000
0.97 = 0.870000
0.98 = 0.880000
0.99 = 0.890000
1.00 = 0.900000
1.01 = 0.910000
1.02 = 0.920000
1.03 = 0.930000
1.04 = 0.940000
1.05 = 0.950000
1.06 = 0.960000
1.07 = 0.970000
1.08 = 0.980000
1.09 = 0.990000
1.10 = 1.000000

 となり、一応提示された5つのα値とβ値は一致しています。

Name: 管理人   Date: 2006/08/27(日) 18:42   No:208     
Title: Re:三角関数のプログラム    
素晴らしい回答ありがとうございます。
今の情報から回答するとしたら最善の推測だと思いますが、
しかし1次線形補完で補えるのでしょうか・・。

上記の値をグラフ化するとこのように1次関数のツギハギになっていますよね。
つまり等差数列の公差が定義域ごとにパツンパツンと異なっているため、
αの値を定義域、βの値を値域とすると定義域が
0.80〜0.85の時は値域の公差0.04

0.85〜0.90の時は値域の公差0.02

0.90〜1.00の時は値域の公差0.01
となっていると思います。

公差が減少しているという事は何かの値に限りなく近づいている感じがあります。
三角関数という題名からしても、滑らかな曲線で描ける数値の連続のように思います。
sin様というお名前からしてもsin波の値かと思いましたが、そうでもないようで・・。
sin波の値の値を以下のようなプログラムで出してみました。

while(1){
  printf("sin(%.3f) = %.3f\n",x,sin(x));
  x+=0.001;
}

これで細かいsin波の値が出せます。
この中で値が0.5 0.7 0.78 0.8 0.9になるものを取り出しますと

sin(0.524) = 0.500
sin(0.776) = 0.700
sin(0.895) = 0.780
sin(0.928) = 0.800
sin(1.120) = 0.900

このようになります。
それぞれのxの値をx1〜x5とします。
x2 - x1 = 0.252
x3 - x2 = 0.119
x4 - x3 = 0.033
x5 - x4 = 0.192

一方、
α =0.80  β=0.50
α =0.85  β=0.70
α =0.89  β=0.78
α =0.90  β=0.80
α =1.00  β=0.90

ですからそれぞれのαに1~5の番号をつけると
α2 - α1 = 0.2
α3 - α2 = 0.08
α4 - α3 = 0.02
α5 - α4 = 0.1

です。
一体何がしたいかと言うと、
αとβの対応のそれぞれの定義域ごとのxの変化量と
sin波の同じ値と値をつないだ定義域ごとのxの変化量が同じなら
αとβの対応はsin波のxとf(x)の対応になっていると言えます。

同じ値域でのxの変化量はそれぞれ以下のように表せます。
これをδとγとします。
x2 - x1 = 0.252   =δ1
x3 - x2 = 0.119   =δ2
x4 - x3 = 0.033   =δ3
x5 - x4 = 0.192   =δ4

α2 - α1 = 0.20   =γ1
α3 - α2 = 0.08   =γ2
α4 - α3 = 0.02   =γ3
α5 - α4 = 0.10   =γ4

です。α2-α1の値をx2-x1の値にするために全てに1.26をかけます。

γn' = γn*1.26 = (αn+1-αn)*1.26

であると定義します。

この時、
δ1'=0.252 γ1'=0.252
δ2'=0.119 γ2'=0.101
δ3'=0.033 γ3'=0.041
δ4'=0.192 γ4'=0.242

となります。
ですから・・sin波に何かの値をかけたものなんじゃないでしょうか。
そこで何の値をかけたか調べると・・


Name: 管理人   Date: 2006/08/27(日) 18:57   No:209     
Title: Re:三角関数のプログラム    
う〜ん、、、色々考えてみましたがよくわかりません・・・。

x=0.80の時
 0.50 = 1.39400*sin(0.80)
x=0.85の時
 0.70 = 1.33106*sin(0.85)
x=0.89の時
 0.78 = 1.28680*sin(0.89)
x=0.90の時
 0.80 = 1.27661*sin(0.90)
x=1.00の時
 0.90 = 1.18836*sin(1.00)

となるようですが

Y = A * sin(x)

のAが何なのか解りません・・。
sin波に近いと思ったのですがsin波じゃないんでしょうかね。
三角関数だと、、う〜ん、、


Name: sin   Date: 2006/08/28(月) 21:23   No:214     
Title: Re:三角関数のプログラム    
説明が足りなく混乱させてしまったみたいで、すみません;
補完というのを知らなかったので思い至りませんでしたが
やりたかったのはそれです。
あと、αを元にβの補完された数値を探索するには
どうすればいいでしょうか?


Name: 管理人   Date: 2006/08/28(月) 23:06   No:215 解決!     
Title: Re:三角関数のプログラム    
本当に1次線形補完でいいのでしょうか?
1次線形補完でしたらαからβの値を出す事は簡単ですが、
この数値を見る限り何かの値に限りなく近づいている曲線のように思います。
ですから単純な直線では思う解は見つからないと思います。
もしよろしければ、具体的にどういった事がやりたいからこのような計算が必要なのか、
αの値とは何から計算したものか教えていただけないでしょうか。

もしも「いやただ1次線形補完だけでいいんだ」という場合でしたらスルーしてください。

1次線形補完は簡単です。
2点を通る1次方程式の解はどのように出すか高校までに習いましたよね。
あの公式を使います。

y1 - y = (y2 - y1)/(x2 - x1) * (x - x1)

例えば(0,1),(1,2)を通る直線の方程式は

y = x + 1

ですよね。具体的に値を代入してみましょう。

1 - y = (2 - 1)/(0 - 1) * (x - 0)

-y = -x - 1

y = x + 1

となり、答えに一致しました。
つまり具体的にプログラムの変数に代入する時は公式のy1の部分を移項させて

y = -(y2 - y1)/(x2 - x1) * (x - x1) + y1

とすればよいです。

y = 傾き*x + 切片

という公式に当てはめてやればいいのです。
自分のほしい値のある定義域を(x1,x2)とし
その定義域の直線の方程式を出し、
希望のxの値つまりここではxがα、yがβになっていますが
αの値をxに代入して求めてください。

具体的なプログラムと結果はJusty様がすでに書いていらっしゃいますので参考にされてください。

何かまだわからなかったり、一番上に私の書いた事項にあてはまりましたらまたカキコください。




Name: toriga   Date: 2006/08/28(月) 02:43   No:212       
Title: 宿題を教えてください。    
大学の授業で"ハノイの塔"という問題をとくプログラムを書いて来いという宿題が出ているのですが
正直解けずに困っています・・。
プレートが4枚以上になるとわけがわかりません。
具体的な部分は自分でやっていこうと思うのですが
始めの部分だけ教えてもらえないでしょうか。



Name: 管理人   Date: 2006/08/28(月) 02:57   No:213 解決!     
Title: Re:宿題を教えてください。    
toriga様、こんばんは^^
ハノイの塔ですか。私もやりましたよ^^
アルゴリズムを考える問題としてとても優れているようですね。

> 具体的な部分は自分でやっていこうと思うのですが

その姿勢は素晴らしいと思います。
つい答えを教えてもらいたくなりますよね。
しかしこの問題はアルゴリズムを自分で考えるところに大きな意味のある問題ですから
是非ともご自分で解いていただきたいです。
つまずいたりしたらいつでも聞いてください。

> プレートが4枚以上になるとわけがわかりません。

そうですよね。2枚や3枚のうちはいいのですが、
プレートの枚数が1枚増えただけでぐっと難しくなります。
これはプレートの移動手数がプレートの枚数についての指数関数になっているため
急激に手数が多くなるためです。
プレートの枚数と移動にかかる手数はきっちり方程式で表せます。
何手かかるかまず
1枚の時
2枚の時
3枚の時
4枚の時
と数字を並べてみてください。方程式が浮かび上がってくると思います。

>始めの部分だけ教えてもらえないでしょうか。

はじめの部分というのがどういう範囲を示すのかわかりませんが^^;
う〜ん、まだ見ていませんが「ハノイの塔」とかで検索すると答えの載っているサイトに飛んでしまいそうですね^^;
とりあえずどのように動くのかシュミレーションが見られるサイトをご覧になって
アルゴリズムを考えてみてはいかがでしょうか。

http://web2.incl.ne.jp/yaoki/hanoi.htm

この辺のサイトで、プレートの動きを見る事が出来ます。
ちなみに8枚のプレートだと1回の移動に1秒かかったとしても4分以上かかりますから
見ない方がいいです。(見てるうちにわけわからなくなります)
枚数の少ないプレートの動きから順に見ていくとよいでしょう。
何枚でも同じアルゴリズムで動いているわけですからね。

もしもどうしても解らないようでしたら第二ヒント(?)をお出ししますのでまた聞いてください^^




Name: yukemuri   Date: 2006/08/27(日) 08:52   No:201       
Title: 配列の受け渡しについて(C, C++)    
こんにちは。yukemuriです。
いつもお世話になってます。

下記コード@はCでの記述ですが、これをAC++で書き換えてやってみようかなと思い、さらに下のコードのように記述してみたのですが、
うまく行きません(オーバーロード'endl'が曖昧)とエラーが出てしまいます。

エラーの主観:
キーはプロトタイプとオーバーロードと配列の受け渡しの3点のみですよね?

C学習の段階ではオーバーロードってやってませんから、@のCコードをAのC++コードで書き換えると、オーバーロードって認識しちゃうのかな?と思いました。参考書みると「オーバーロード関数を実行した時、引数の型と個数から、どの関数を呼び出すか?」とあるんですが。。

現在C++では純粋仮想関数とかやってますが、Cの配列でつまずいています。もう泣きけてます(>_<;)くじけてます。

@
#include <stdio.h>

int print_array(int [], int);

int main() /* main関数記述 */
{
int dat[128];
int i;

for(i =0; dat[i] !=0; i++){
printf("%d番目の整数...", i+1);
scanf("%d", &dat[i]);
}

print_array(dat, i-1);

return 0;
}

int print_array(int a[], int n)
{
int j;

for(j = 0; j < n; j++){
printf(" %d", a[j]);
}
printf("\n");
}

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

A
#include <iostream>
using namespace std;

int print_array(int [], int);

int main()
{
int dat[128];

for(int i = 0; dat[i] != 0; i++){
cout << "値を入力:";
cin >> dat[i] >> endl;
}

array(dat, i);

return 0;
}

int print_array(int a[], int n)
{
int j;
for(j = 0; j < n; j++){
cout << a[j] << " " << "\n";
}
}



Name: yukemuri   Date: 2006/08/27(日) 09:16   No:202     
Title: Re:配列の受け渡しについて(C, C++)    
すみません。もう1個追加で質問です。
下記コードを100〜1で表示するにはどうしたらよいでしょうか。
変数iが100に到達するまでループ処理しiをインクリメントする事は分かるのですが、100〜1となると「100を初期値として、1に到達するまでiをデクリメントするの?」と思いましたが、関数の記述が浮かびません。。
for(i = 100; i < 1; i--)じゃないですよね??

もう私の頭はサル以下です。。(T^T)
コンパイル恐怖症の今日この頃です。。

/**
* 100個の配列に1〜100の値を格納する。
*/
#include <stdio.h>

int main()
{
char dat[100];
int i;

for(i = 0; i < 100; i++){
dat[i] = i+1; /* dat[i] += 1; だとダメ 次回のループでdat[1] = dat[1]+1になってしまう為 */
printf("%3d", dat[i]);
}
return 0;
}




Name: yukemuri   Date: 2006/08/27(日) 10:09   No:203     
Title: Re:配列の受け渡しについて(C, C++)    
くどくどと何度も質問ずみません(T-T)
forの所、分かっていたようで、やはり分かっていませんでした。
100〜1を表示させるコードは下記以外思いつきません。。

#include <stdio.h>

int main()
{
char dat[100];
int i;

for(i = 100; i < 1; i--){
dat[i] = i;
printf("%3d", dat[i]);
}
return 0;
}

@(iは初期値)つまり100からスタートして、
ループ処理を継続させる条件として、
A(i < 1)つまり1になるまで条件をループしながら継続させつつ、
Bi = i - 1(i--)して100から1づつカウントダウンして行くのですよね?そのループ中に、
Cdat[i]にループ処理1回毎のiを代入するわけですよね?
なぜか、出来ません。何が間違っているのでしょうか。


Name: 管理人   Date: 2006/08/27(日) 13:54   No:204     
Title: Re:配列の受け渡しについて(C, C++)    
こんにちは。yukemuriさん^^
色々苦しんでいらっしゃるようですね^^;

とりあえず長いので順番に見ていきましょう。
@のプログラムですが、配列に連続で入力したデータをprint_arrayで全て表示させようと言うものですね?
しかし突然dat[i] !=0はよくありません。
datの中身は初期化していませんから、最初に0かどうか判別に使う事はしてはだめです。
変数は使う前に初期化しましょう。
宣言の時に

int dat[4]={0,0,0,0};
と書けば全て0で初期化される事はご存知でしょうけど
128個もあったら書いてられませんよね。
そこでこんな書き方があります。

int dat[128]={0,};

これは全ての配列要素を0で初期化という意味です。
最初にこれを書いておきましょう。

それからこのforは希望の処理になっていません。
forのiは1回分の処理が終わるとi++を行います。
きっと0が入力されたら終了としたかったのでしょうけど、
入力したときのiと判定する時のiは異なっています。
例えば入力を受けた時のiは3だった時、
その後i++が行われ、4になってから判定を行っているので
違う配列要素を比較しています。
それに初期化は0で行いますから先の配列要素を比較し0じゃなかったらという判定は無限ループを意味します。

それにこの処理はfor文の機能をいかしていません。
whileとforはどう違うでしょうか。
forは明確な上限がわかるときに使います。
今せっかく128という上限がわかっているのでこの値を使って上げましょう。

この処理はscanfよりgetcharを用いた方がすっきりするような気がしますが
あくまでもこの書き方に近い書き方で改善するならばこのように書いた方がよいでしょう。

まずmain部分です。

void main(){
  int i,dat[128]={0,};

  for(i = 0; i < 128 ; i++){
    printf("%d番目の整数...", i+1);
    scanf("%d", &dat[i]);
    if(dat[i]==0)
      break;
  }

  print_array(dat, i);
}

このように書く事で0が入力された時点でforを抜け、print_arrayへと進みます。
ちなみに変数のreturnを必要としない関数はvoid関数にしましょう。
別にint関数にしなくてもいいですよね、この場合
void print_array(int a[], int n);
↑こんな感じで。

void print_array(int a[], int n){
  int j;
  for(j = 0; j < n; j++)
    printf(" %d", a[j]);
  printf("\n");
}

こんな感じでしょうか。
こちらにサンプルプログラムを置いておきますね。

http://dixq.net/board/program/sam1.cpp

次にAですが、コンパイル通るわけ無いと思うのですが・・、
通りました?
array関数を呼んでいますがarray関数はどこにも定義されていませんから
呼べません。
ちょっとオーバーロードについて誤解されていらっしゃるようですので
オーバーロードについて説明します。

オーバーロード関数は簡単に言うと

・関数名が一緒で引数の型や個数が異なるもの

です。
例えばこんな感じです。
ある名前の関数を呼ぶならその名前の関数はどこかで定義されていないと呼べません。

void pr(char a[]){
printf("%s",a);
}
void pr(int i,int j){
printf("%d/%dです。\n",i,j);
}

void main(){
pr("今日は");
pr(8,27);
}

以後続きます。


Name: 管理人   Date: 2006/08/27(日) 14:05   No:205     
Title: Re:配列の受け渡しについて(C, C++)    
次にforについて。

ん??何故突然
char dat[100];
になっているのですか?
これでは文字コードの代入になってしまうのですが
やりたい事は整数の代入ですよね?
でしたら
int型です。


> @(iは初期値)つまり100からスタートして、ループ処理を継続させる条件として、

そうですね。終了条件と書いてある参考書もありますが、私は継続可能条件と覚えた方がいいと思います。

>A(i < 1)つまり1になるまで条件をループしながら継続させつつ、

いえ、違います。。せっかくご自分で継続可能条件とおっしゃっているのに勘違いされています^^;
i < 1をよく見てください。
これはiが1未満なら、すなわち0以下なら継続としています。
iの初期値は100ですから0以下のみ継続という条件にはあてはまらず
1度もfor内を実行せずに抜けています。

>Bi = i - 1(i--)して100から1づつカウントダウンして行くのですよね?そのループ中に、

一つ重要なのはi--するのは1回の処理が終わった後だという事です。

>Cdat[i]にループ処理1回毎のiを代入するわけですよね?

そうですね。
100,99,98,97...といった値が入ります。

惜しいところで勘違い・・(T_T
よくプログラムをしていてつまずくところです^^;
トータルについては先ほどの通り。
iの継続可能条件についても先ほどの通りで
i < 1の "<" を ">"こっち向きに変えてやればOKです。

ではサンプルを。
代入は1 -> 100で行い
表示を100 -> 1で行っている例です。

void main(){
  int i,dat[100];
  for(i = 0; i < 100; i++)
    dat[i]=i+1;
  for(i=100; i > 0 ; i--)
    printf("%d\n",dat[i-1]);
}

i++とi--の違いがおわかりになると思います。

疑問は解決されたでしょうか?


Name: yukemuri   Date: 2006/08/27(日) 20:48   No:210 解決!     
Title: Re:配列の受け渡しについて(C, C++)    
こんばんわ〜 管理人さん(^^)

嗚呼w、有難う御座います^^
疑問は解決されました。
基礎ってやはり大切ですね。

いつもながら迅速、丁寧な解説に感謝致しますm(_ _)m

※余談でFFの話ですw
プロマで引退しましたが、息抜きでFF11系サイトで
アトルガンの詳細等観ていると、
息抜きというかまたやりたくなる渦に入っていきそうな
今日この頃です^^;
管理人さんクラスの開発レベルがあると、FF11のプラグラムを作る事って可能ですよね?(^^)
と、いっても何のプログラムをやるかによりますが。


Name: 管理人   Date: 2006/08/27(日) 21:50   No:211     
Title: Re:配列の受け渡しについて(C, C++)    
いやいやいやいや
pow(いやいやいや,879);

FF11のプログラムなんて手も足も出ませんよ。
FF1でしたらシナリオと音楽と絵さえあれば作れるかもしれませんが
11なんて、スペシャリストの集まりが作成しているゲームなんだろうなと思います。
私のような学生が趣味でちょっと2Dのゲームが作れるか作れないかの中間地点にいるような
人間には手も足も出ませんて。
私は企業で具体的なプログラム作成に携わった事もありませんし、
Justy様の方が数十倍お出来になると思います。
Justy様は企業のプログラマーの方なんですかね?

ゲームはプログラムで出来ているというイメージがありますが、
ゲーム作ってると
・音楽
・絵(グラフィック)
・プログラム
の3つ(RPGならシナリオも)がそろって初めて完成するもので
これが1つでも欠けては作れませんし、
3つとも同じ位重要な役を持っている事を痛感させられます。
私は音楽が作れないので人の素材を貸してもらうばかりですし。
cakewalkで作っては見ましたが、才能が無くてもかけるプログラムと違って
音楽を作曲するには才能がいるので難しいですね。

私が作っている程度のゲームでしたら
何も特別な知識はいりません。
forとifさえかけたらたいていのプログラムはかけますから。
「よりスマートに賢く」書くには色んな知識が必要ですから
簡単なプログラムを書きながら、徐々に身につけていけばいいと思います。
やはり私が進める勉強の仕方は、プログラムを作りながら学ぶ
と言う方法ですね。
数学と一緒でプログラムって自分でかいて見て演習しないと全然わかりませんから。

少しずつCに関して力がついてきてらっしゃるようですね。
これからも難題に何度もぶちあたるでしょうけど、
必ず道は開けますから、頑張ってください。




Name: ぽい   Date: 2006/08/26(土) 22:28   No:196       
Title: 曲線はどうやって計算するのでしょう    
マリオがジャンプするような曲線、ボールを投げた時のような曲線はどうやって計算しているのでしょうか?
y = -x*x +2
とかの数学の式で表せる曲線みたいな計算がしたいのです。

余談ですが、この回答は色んな人がしているんでしょうか?
もしかしてこのHP作った方が一人でされているんでしょうか?



Name: 管理人   Date: 2006/08/26(土) 22:52   No:197     
Title: Re:曲線はどうやって計算するのでしょう    
ぽい様、こんにちは^^

なるほど、そのような曲線は重力が描く曲線ですね。
物理を習ってない方にはちょっと難しいかもしれませんが、
万物には全て重力加速度9.8(m/s*s)という加速度がつきます。

例えば静止している状態からパッとボールを離したとすると
何秒後にどの高さにボールが位置するか全て計算できます。
ボールの高さをy(m)とし時間をt(s)と、重力加速度をg(m/s*s)とすると

y = - 1/2 * g * t^2  ……(1)

このような公式で計算できます。例えば1秒後にどの高さにボールがあるかはt=1を代入してg=9.8を代入すると
y = -4.9となります。つまりこれは手を離した場所から下(マイナス)方向に4.9mの場所にある事が解ります。

上記の例は静止した状態からボールを離しましたが、今度は真上に投げ上げたとしましょう。
投げ上げた時のボールの速さをVa(m/s)とします。すると先ほどの(1)式を拡張して

y = Va*t - 1/2 * g * t^2  ……(2)

で計算できます。では今度は斜め45°にむかって投げ上げたとしましょう。
この時ボールはどんな軌跡を描くでしょうか。
これをx方向、y方向でわけて考えましょう。

http://dixq.net/r/
の1章の9を見てください。

このボールの軌跡をボールを斜め45°の投げ上げだと思ってください。
ボールはx方向には等速運動(つなに同じ速さで運動)をし、
y方向にには放物運動をしています。

等速運動をしているのなら距離の計算は時間がわかればすぐにわかりますね。

今ボールを投げた時の速さを同じくVaとしましょう。
これをx方向とy方向に分解するんです。
斜め45°の方向にVaでしたらx方向の成分は

Vx = Va * cos(π/4)  ……(3)

y方向の成分は

Vy = Va * sin(π/4)  ……(4)

で計算できます。VxはVaをxの成分で分解している気持ちを表しています。

Vxがわかったのでxの距離を求めるには

x = Vx * t  ……(5)

となります。これでx方向の計算はよいですね。
次に鉛直方向です。
鉛直方向には放物運動をしているのですから(2)式が使えます。
(2)式では速さをVaとしましたが、今回はボールのy成分の速さがVyなので

y = Va * t - 1/2 * g * t^2  …(2)



y = Va * sin(π/4) * t - 1/2 * g * t^2  ……(6)

このようになります。つまり斜め45°に投げ上げた時のxとyの位置は

(x,y)=(Va*cos(π/4)*t , Va*sin(π/4)*t-1/2*g*t^2)  ……(7)

となります。
ちょっとはじめて聞くと難しかったでしょうか^^;

物理の「力学」を勉強したらわかりますよ。
もし具体的にこのような放物運動の計算がしたいという事がありましたら
具体的にこのような事がしたいのだが、計算式を教えてくれとおっしゃってくだされば
お教えします。
また聞いてくださいね☆


Name: 管理人   Date: 2006/08/26(土) 22:58   No:198 解決!     
Title: Re:曲線はどうやって計算するのでしょう    
>余談ですが、この回答は色んな人がしているんでしょうか?
>もしかしてこのHP作った方が一人でされているんでしょうか?


ここは個人のサイトですので基本的に私が責任もってこたえさせていただいていますが、回答に協力してくださる方もいらっしゃいます。

ここは皆さんで質問・回答しあえるようなサイトになればいいなと思っています☆




Name: yukemuri   Date: 2006/08/15(火) 12:28   No:165 解決!       
Title: new演算子について    
こんにちは。いつもお世話になっています。
下記問題が出題されました(コメント)
下記コードではコンパイルエラーになってしまいます。
また、new演算子を使用してコード書かなくてはなりません。
お助け下さい(>_<)
仮想関数とかポインターとか消化不良ですが、
コード書けるところまで書いてみましたが、
new演算子使ってません(>_<)
というか使いどころが判りません。
ご教示頂けたら幸いです。

※青魔のAF全てげっと〜

と、

フレが言ってました・・。
ちとまたやりたくなってきた今日この頃ですぅ。

/**
* class student{
* char *name;
* int age;
* public:
* コンストラクタ
* 値をセットする関数
* 値を表示する関数
* };
*
* ・キーボードから名前と年齢をを入力(5件分)
* ・入力した5人分のデータを表示する
* newを使ってプログラムする。
*/

#include <iostream>

using namespace std;

class student{
char *name; //名前
int age; //年齢
public:
student();
void set_name(char *);
void set_disp();
void set_age(int);
};

student::student()
{
name[0] = '\0';
age = 0;
}

void student::set_name(char * )
{
if(set_name != NULL){
int 1;
for(i = 0; i < 5; i++){
name[i] = set_name[i];
}
name[i] = '\0';
}
cin >> "名前を入力:";

}

void student::set_age(int)
{
age = set_age;
}

void student::set_disp()
{
cout << "《名前》" << name << "《年齢》" << age << endl;
}

int main()
{
student obj;

obj.set_name(char p);
obj.set_disp();

return 0;
}





Name: yukemuri   Date: 2006/08/15(火) 12:48   No:166     
Title: 補足    
以前、管理人様から質問あった件ですが、
Cの勉強は就職の為です。
就職先を斡旋してくれますが、現状は厳しいとの事です。
Web系のJavaは人気があり(やっぱ見た目がかっこいいですからねぇ)との事ですが、制御系のCは人材不足気味ですよ。
職種はC希望ですが、実際はなかなかやらせてくれない事も
有るみたいです。
ていうか、JavaやPHPなどやるかも知れません。
今の所なんともいえませんが、C++を習得する事自体は
かなり有意義な事は言うまでも無い事です。
どんな分野でもいえる事ですが、覚えた(習得する)事が
なりより大切ですね☆
限られた時間でやれることまでやって、前回提案して頂いた
本を片手に今後も精進したいです。(まだ、手元にありませんが)


Name: Justy   Date: 2006/08/16(水) 01:11   No:168     
Title: Re:無題    
 こんばんわ、++ yukemuriさん。

 早速ですが、まずはコンパイルエラーから。
 引数の使い方が激しく間違っています。

 例えば、
void student::set_age(int)

{
age = set_age;
}

 とあり、関数を age変数に入れようとしていますが、
void student::set_age(int a)

{
age = a;
}

 と引数のところに変数名を書かないと関数内で引数を読みとることができません。
 set_name()も同様ですね。

 で、名前の設定関数も char *を引数にとるようになっているのですが、
main関数内での呼び出しが

obj.set_name(char p);

 と引数を入れる場所で変数の宣言をしてしまっており、ここもコンパイルエラーになります。
 先にキーボードからの入力をしてからこの関数で設定するといいと思います。


 次に newですが、察するに studentクラスのメンバ変数 nameに対して行うものと思われます。
 上記のコードでは、studentクラスのコンストラクタでいきなり
name[0] = '\0';

 と、どことも知れぬメモリに "\0"を書き込みにいっており、プログラムが不正となってしまうおそれがあります。

 とりあえず、ここでは
name = 0;

 と name変数を初期化だけしておいて、set_name()の関数の中で受け取った引数の文字列の長さを調べてその文字列の長さに応じて newでバッファを確保すると綺麗に書けると思います。

void student::set_name(char *n)

{
if(!n) return;

delete name;
size_t nameLength = strlen(n);
name = new char[nameLength + 1];

strcpy(name, n);
}


 あ、もちろん studentクラスにデストラクタを追加して、name変数を解放(delete)するのも忘れずに♪



※ ほんとは stringクラスを使えばいろいろな問題も一発で解決するのですが・・・そうすると newの使いどころがなくなって(ry


Name: yukemuri   Date: 2006/08/16(水) 10:22   No:169     
Title: Re:無題    
Justyさん、こんにちは。
ご回答有難う御座いました。
話せば長くなるのですが、初めてのCの勉強を始めてから
約90日程経過した新参者です。
いくつかヒントを提示頂きましたが、試行錯誤してみましたが、
name = 0のところあたりから意味が掴めません。
ここで言うnameって、文字列を表すので\0という認識でいたため
理解出来ません。
また、
void student::set_name(char *n){ if(!n) return; delete name; size_t nameLength = strlen(n); name = new char[nameLength + 1]; strcpy(name, n);}

の部分なんですが、名前の長さに +1 !?? という
箇所も意味が掴めません。
もう一度、全体を自己で考えて見ますが、
Justy様が思われているレベルより、当方かなりレベルが低いので
かなり厳しいです…。

お手隙の時で構いませんので、今一度、ご教示頂けたら幸いです。
サンプル回答例も頂けましたら幸いです。


Name: 管理人 [URL]   Date: 2006/08/16(水) 16:43   No:170     
Title: Re:無題    
ちょっと手が空いたのでお答えします。

>name = 0のところあたりから意味が掴めません。

おそらくjusty様はNULLを代入されたのではないでしょうか。
NULLはポインタ0番地を示しています。
0番地はれっきとした正常なポインタですが、ここはアクセス禁止領域になっているため、この番地が利用されたものと思います。
NULLはこのように特定の場所をさしていると覚えるよりどこも示していない状態と覚える方が覚えやすいでしょう。
cout << NULL;

if(NULL)
としても表せる通りNULLは0として扱う事も出来ます。
NULLがint型として0なのかどうかは解りませんが

void main(){
  int i=0;
  if(i==NULL)
    cout << "int";
}

でcout関数が実行されますからint型の0と思って間違いないのではないでしょうか。

>nameって、文字列を表すので\0という認識でいたため

これは間違っています。
int a[10];
と文字列を宣言した時、
a

a[0]
では示すものは全然違います。
これは配列ですね。aは配列の先頭アドレスを示すものであり、
&a[0]と同じです。
一方a[0]~a[9]はint型の数値が代入できます。
aはアドレス、配列要素はint型の数値です。
ですから関数の値渡しの時
main(){
str(a);
}
char str(char *){
}
このように書くわけですね。justy様もおっしゃっていた通り、char * はキャラクター方のポインタが入ることを示しているわけで
使用する際は実際に変数名を入れる必要があります。
また
if(!n)は短く書いてありますがヌルポインタならリターンという意味です。
if文の真偽の仕組みはご存知でしょうか。
if(NULL)
if(!NULL)でどのように処理がかわるか確認すればわかります。

>名前の長さに +1 !?? 

strlen関数は\0の手前までの配列要素数を返します。つまり\0は含まれません。
しかし実際には\0を使用します。
ですからstrlenで帰ってきた値より+1の値を確保しなければならないのです。

なぜこのような書き方がしてあるのだろうかと思ったときはまず、自分で代入した関数の意味を調べてみる必要があります。

nameLength + 1の意味がわからないのなら

nameLengthには何を代入したのだろうか。

あ、strlenの返り値を代入したんだな。

じゃstrlenは何の値が帰ってくるのか調べよう。

なるほど、この関数は\0の手前までの配列要素数を返すんだな。じゃ実際には返り値+1確保する必要があるな

という流れで解決するはずです。
name=0の部分でもそうですが、文字列についてわからないところがあるならまず、
参考書の文字列の部分をしっかり読んで見ましょう。
Cを飛ばしてC++をやろうとせず、Cの入門書からきっちり読んでいってください。
覚える必要はありません。
無理に習得する必要もありません。
しかし全部に一応目を通しておく事で、つまずいた時や解らなくなった時
「参考書のあの編をもう一度よくよんだらいいな」
という事がわかりますので。
なにごとも基礎が一番大事です。


Name: Justy   Date: 2006/08/17(木) 00:46   No:171     
Title: Re:無題    
 こんばんわ。

□□□ ++ yukemuriさん
> name = 0のところあたりから意味が掴めません。
 管理人さんの書かれた通り、ポインタ変数を初期化した、という意味です。
 メンバ変数 nameはポインタであるが故に、文字列へのポインタを格納することはできますが、文字列を格納することはできません。
 ポインタは別のどこかのメモリ(バッファ)を指さしている状態だと思ってください。それ自身にデータを格納することができないのです。
 その為、まずはポインタを初期化・・・何も指していない状態にしておこうという意図です。

 なぜ、このコンストラクタの段階でバッファを確保しないかというと、バッファを確保するにはサイズが必要なのですが、この段階では実際に何文字分の文字を扱うのかわからないので、サイズを確定できないからです。


> 名前の長さに +1 !?? という
 C++の文字列は終端を表すのに NULL文字を使用します。
 なので、文字列を表すには文字の長さ+NULL文字のサイズが必要になるので、+1してバッファを確保しています。


 一応模範解答を作っておきました。
 テキストが添付できないので、こちらに。いつまで残っているかわからないのでお早めに。
 参考書& Webなど参考にしながら見ていってください。


□□□ 管理人さん

 補足ありがとうございます。助かります。
 
> おそらくjusty様はNULLを代入されたのではないでしょうか。
 その通りです。
 ちょっとわかりにくかったですね。


> NULLがint型として0なのかどうかは解りませんが
 C++ではポインタに変換できる整数であればなんでもいいことになっています。
 よくみかけるのはマクロ定義で 0となっているだけなので、まずintとみていいと思います。


Name: yukemuri   Date: 2006/08/17(木) 14:00   No:172     
Title: Re:無題    
管理人様、Justy様。

ご丁寧なご教示感謝致します。

現在、記載下さったコードを閲覧しながら
何故こういうなるのかを自己で参考書等を片手に
分析中です。
でもやっぱ、プログラムは難しいけど、楽しいですね。

それと、何よりもこのような掲示版で親切に対応頂けること
自体、とても励みになります。
お世話になりっぱなしですが。

色々と質問しまくっていますが、今後もCに励みたいと思います。
取り急ぎ、感謝の言葉まで。
有難う御座いました。


Name: Justy   Date: 2006/08/24(木) 23:53   No:193 解決!     
Title: Re:無題    
 こんばんわ。
 改めてソースを見直してみたら、なんとバグが!

 そのバグとは student::set_name()内でメンバ m_nameに対するメモリアロケートを new[]で行っていますが、なんとメモリの解放がただの deleteになっていました。
 m_nameの解放をしている箇所はデストラクタも含めて2つありますが、どちらとも delete[]を使わなければなりません。


student::~student()
{
  delete[] m_name;
}

void student::set_name(const char * name)
{
  if(!name)   return;
  
  size_t nameBuffSize = strlen(name) + 1;
  if(m_name_buff_size < nameBuffSize)
  {
      delete[] m_name;
      m_name = new char[nameBuffSize];
      m_name_buff_size = nameBuffSize;
  }
  std::strcpy(m_name, name);
}


 ソースコードをダウンロードされた方は修正しておいて下さると助かります。

※ 実はもう1つバグがあります。こちらの方は書いている時から気付いていましたが、このサンプルの動作上問題ないので放置していました。
 もし良ければ探して直してみてください(w




Name: とよ   Date: 2006/08/22(火) 16:22   No:188       
Title: 環境変数って何ですか?    
こんにちは。
初めて投稿するのですが、よろしくお願いします。
実は先日C言語を始めようとしてコンパイルの導入はしたのですが、
実行できません。
友達に聞くと環境変数のとこやろ
というのですが、詳しく教えてくれなくてよくわかりません。
どうしたらいいのでしょうか。
よろしくお願いします。



Name: 管理人 [URL]   Date: 2006/08/22(火) 16:39   No:189     
Title: Re:環境変数って何ですか?    
はじめまして、管理人です。
投稿いただきありがとうございます☆

コンパイラの導入のところでつまずいていらっしゃるということでお答えします。

ちなみにコンパイルとコンパイラを混合してしまっているみたいですけど、
プログラムを機械語に変換する作業をコンパイルするといい、
その変換を行う装置(?)をコンパイラといいます。
〜ルが動詞で〜ラが名詞みたいな感じでしょうか。

コンパイラというのはインストールしただけではいけません。
コンパイルする時に例えばborlandなら
bcc32 ファイル名.c
と入力しますね。この時、コンパイルの指示はしていますが、
コンパイラがどこにあるのかわかりません。
ですから予め、その場所を示しておくことが必要なんです。

http://www.setsunan.ac.jp/~center/kyositu/freec/borland.html

ここのサイトでとてもわかりやすく紹介されていますので、
参考にしてみてください^^

もしも判らないことがありましたらまた気軽に聞いてください♪


Name: とよ   Date: 2006/08/23(水) 16:28   No:192 解決!     
Title: Re:環境変数って何ですか?    
ありがとうございました!
解決しました。
うまくコンパイルできました。
詳しい説明ありがとうございました。
また、いつかお世話になることがありましたらよろしくお願いします。




Name: 管理人 [URL]   Date: 2006/08/22(火) 16:09   No:187       
Title: 掲示板を新しくしました☆    
以前の掲示板は1件のスレが長くなるととても見にくくなってしまっていたので、
トピック掲示板にしました。
業者の掲示板を使用している為、色々お金がかかってしまいましたが・・。
ホントに以前より使いやすくなったのかな??
トピック掲示板に慣れてない人はどうやって投稿していいのか判らなかったりしないかな^^;

まず、これから2つの事に気をつけてください。

・新規投稿には適切な名前を付ける
・「マーク」欄より今の状況をマークする(解決かまだか)

今までの状況は全て解決にさせてもらい、題名は適当に付けさせてもらいました。

先日レンタルスペース料、ドメイン料、掲示板の料金の請求が一度に来て
計1万円になってしまいました(\_\)チャキーン
その上バイクの修理費に7万もかかってしまい、生活が非常〜〜〜に厳しいですw



Name: yukemuri   Date: 2006/08/22(火) 21:53   No:190     
Title: Re:掲示板を新しくしました☆    
うはw 掲示版新しくなってる〜☆
しかも直感的に見やすいです〜♪
お絵かきもあるし…ww

実は、学校の雑談掲示版を私も設置し無料レンタル掲示版で
カキコして皆で遊んでますが、この掲示版イイですね〜♪
やっぱ有料だと機能が違うなぁ☆

修理代、掲示版利用料…、と色々と大変ですね(>_<)
お疲れ様です(((゜Д゜;)))


Name: 管理人 [URL]   Date: 2006/08/23(水) 00:55   No:191     
Title: Re:掲示板を新しくしました☆    
21styleっていう掲示板は何年も前から愛用している掲示板です。
是非オススメですよ。
掲示板の機能は本格的なくせにHPのトップはやけにローカルな感じがするので
もっと21styleさんはHPをプロっぽくした方がいいと思うのですが・・。
もちろん無料でも最低限の機能で使用することも出来ますが、
オプション料金を1000円ずつはらっていくとドンドン機能アップしていく
仕組みになっています。
オプションを増やせば増やすほどドンドン機能は上がり
私の財布はドンドン貧相になっていくという事です。

やはり有料は広告も出ないし機能も本格的なんでいいなと思いました。
お絵かきは質問する時に「こんな感じなんだけど・・」と画像で表現したい時に便利かなと。

とりあえず食費を削ったので食うものがありません。
サマージャンボも(300円すら)外れたので・・orz

yukemuri様もハードなスケジュールの中、大変でしょうね。
しっかりCをマスターして、私にCを教えてください☆




Name: 管理人   Date: 2006/08/19(土) 04:15   No:176       
Title: 逆に私から皆様に質問ですm(_ _)m    
いつもC言語何でも質問サイトを利用していただきありがとうございます(ノ^^)八(^^ )ノ
回答のお手伝いをしていただいているJusty様、太陽にほえろ様をはじめ、マナーを守った投稿してくださる皆様のお蔭様で無事サイトが運営できています☆

そこでよりよいサイトを目指すために、簡単なアンケートを作りました。

(1) トップページは見にくかったでしょうか?
(2) Flashがありすぎてチラチラしてバナーだらけのサイトと勘違いしませんでしたか?
(3) Flashがの配置が悪く、質問をどこでしたらいいのか解りにくかったですか?
(4) トップページを見た第一印象はどんな感じでしたか?
(5) もっとこんな配置にしたらいいのに、とかこんなページ作ればいいのに、とかもっとここをこうしたらいいのに、とかありますか?

別に1〜5まで全部答えて頂かなくても結構ですし、設問以外の回答もして頂けたら非常に光栄です♪
もしもお時間がありましたら、投稿初めての方でも、どんなに簡素な回答でもかまいませんので、アンケートにご協力お願いします☆^^☆



Name: Justy   Date: 2006/08/20(日) 01:51   No:178     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
 こんばんわ。
 
 
>そこでよりよいサイトを目指すために、簡単なアンケートを作りました。
 おー、では早速回答を。

>(1) トップページは見にくかったでしょうか?
 実はいつも JavaScript/ActiveX共にオフにしているので、最初に訪れた時はいくつか画像の表示されないサイトとして表示されました。
 オンにしたらメニューとかがループしている画像とか現れてちょっとびっくり。
 左上のメニューが十分機能しているので、さほど見にくいとは思いませんでした。

>(2) Flashがありすぎてチラチラしてバナーだらけのサイトと勘違いしませんでしたか?
 いえ、とくに。

>(3) Flashがの配置が悪く、質問をどこでしたらいいのか解りにくかったですか?
 それはなかったですね。
 掲示板へのリンクはトップにありましたし、JavaScript/ActiveXがオフでも入れましたから。

>(4) トップページを見た第一印象はどんな感じでしたか?
 最近あんまり見かけなくなった黒ベースのページに意外性を感じました。
 あと flashがよく動くいてるなーと。

>(5) もっとこんな配置にしたらいいのに、とかこんなページ作ればいいのに、
 そうですねぇ。
 flashとか gifアニメが多すぎてうちの非力なマシンではマウスを動かしてると処理負荷が 50%を超えてしまうので、もう少し処理負荷が低くなるといいかな、と。
 あとは折角管理人さんの過去の作品が紹介されてるので、もう少し1つ1つ掘り下げたみてはどうでしょうか。
 例えば、どんなマルチタスクシステムを使ったとか、キャラの動きにこういう公式を使って工夫してみた、とかプログラム的な解説なんかあると見に来られる方にも勉強になると思います。


 と、そんなところでしょうか。


Name: 管理人 [URL]   Date: 2006/08/20(日) 02:13   No:179     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
さっそくのご回答ありがとうございます^^

>JavaScript/ActiveX共にオフにしているので

なるほど、そういう方もいらっしゃるのですね。
JavaScriptが動いていなくてもクリックできるリンクも用意しておいてよかったです。
これからも残しておこうと思います。

>flashとか gifアニメが多すぎてうちの非力なマシンでは・・

そうでしたか。とても参考になります。
flashを使いすぎるとそういう事になると話を聞いていたのですが、どこまでのスペックに合わせればいいのか
そのラインが解らなくて困りました。
普段は先日無理して購入した比較的スペックのよいパソコンを使用しているのでスムーズに動くのですが、
私が数年前に買ったノートパソコンがありまして、
とりあえずこのパソコンで動けばたいていの人のパソコンでは動くだろうと
勝手に判断し、ノートパソコンで動作する事を基準に作りました。
もしよろしければスペックを教えていただけないでしょうか?
gifアニメは矢印にしか使用していないのですがあれくらいの画像でもやはり負担かかってしまうのでしょうか。
アニメーションのフラッシュは冗長的要素だと思うのでもしも、
処理が遅れるようでしたら別のページに移そうかと思います。

>プログラム的な解説なんかあると

そうなんですよね、実はものすごく詳しく書いたページを用意していたのですが、あまりにも詳しく書いていて
全部書く前に体力消耗してしまい、放置になってしまいました^^;
これから是非ゲームプログラムのアルゴリズム紹介ページとか、
こうやって作っていくんですよみたいなページを作成したいと思います。
物理を習っていない人の為の物理のページなんか作っても参考になるかもしれないですね。

とても参考になる回答ありがとうございました☆
これからもよいサイトになるよう努めていきますのでよろしくおねがいします♪


Name: ナガタ   Date: 2006/08/20(日) 07:09   No:180     
Title: 無題    
こんにちは.先日お世話になったナガタです.
簡単な感想で申し訳ないんですけど.トップページかっこいいですよ(^^)
あと,初めてここに来た時もすぐに質問が出来たのでわかりにくいいということはないと思いますよ.

質問があるんですけど,ページの1番下にある画像の人は誰ですか?管理人さんですか?


Name: yukemuri   Date: 2006/08/20(日) 09:57   No:181     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
こんにちは。yukemuriです。
いつもお世話になっています。

私の場合はJ技術的な提言は出来ませんので、一般的なココHPの感想を一言。

(1) トップページは見にくかったでしょうか?
・観にくくは有りません。
ただトップページに関しては、さほどスクロールしない(画像解像度にもよりますが)ほうがシンプルで簡略されスッキリすると思います。例えば、TOPページ中段の注意書きについては、左側の項目に「諸注意」としてリンクさせ、スクロールを減らす等。

(2) Flashがありすぎてチラチラしてバナーだらけのサイトと勘違いしませんでしたか?
・ここに訪れる方々は「C」をキーにして来る方が殆どだと思いますので、バナーだらけとは思わないと私は思います。

(3) Flashがの配置が悪く、質問をどこでしたらいいのか解りにくかったですか?
・辛口な意見ご容赦下さい。Flashの配置が統一されていません。
閲覧する人の好みや作成者の好みで区々ですが。
質問の場所はわかりにくくはありません。

(4) トップページを見た第一印象はどんな感じでしたか?
・管理人様のスキルがかなり高い事を感じ取れます。
ただ、ゲーム開発等に興味を抱く方は「お!」と思うHPですが、この画面によって、閲覧する年齢層が限られるかもしれません。

(5) もっとこんな配置にしたらいいのに、とかこんなページ作ればいいのに、とかもっとここをこうしたらいいのに、とかありますか?
・HPの制作は作成者の好みがかなり占めます。かっこいいHPにするのか、不特定多数にみて頂くHPにするのかなどで、デザインの構成は分岐します。(1)と被りますが、デザインの基本としてTOPに羅列された文章はリンク先として纏めるべきでしょう。あと文字の大きさが統一されていません。^^;

その他:
私の場合はHPの背景は殆ど「白」でスタイルシート必須で出来る限り軽くする事に徹します。Simple is Bestで。
実は、以前某HPデザイン会社でDreamWeaver使用し企業のHP作ってました。この事(ある意味SimpleなHP作成)がしみついています^^;
あくまで、私の主観です。

あと、わかりずらいリンクをクリックすると、とても興味のある内容が記載されているのですが、上記で述べたような理由から、折角の内容を探し出すのに苦労するかも知れません。

最後に:
管理人様をはじめいつもココで迅速、丁寧なる助言を頂いており、大変感謝しております。が故に、社交辞令抜きで、ちょっと辛口なご意見をさせて頂きました。
この掲示版はとても有意義であると同時に、管理人様の労力をも察する所です。陰ながら応援しています。と同時に今後とも宜しくお願い致します。:)


Name: 管理人 [URL]   Date: 2006/08/20(日) 14:51   No:182     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
>ナガタ様、

あ・・、しまった、、よく見つけましたね^^;
そうです、私ですが、バカみたいな写真を見せてしまってすみませんm(_ _)m
まさか発見される方がいらっしゃるとは思いませんでした^^;

ご感想ありがとうございます^^
そういっていただけると嬉しいです☆
トップページを飾りつつも、質問をするリンクを明確に残すようにしたかったので、よかったです♪

>yukemuriさん、
色々なご意見ありがとうございますm(_ _)m

トップページには文字を減らした方がいいんでしょうか?
検索サイトに登録されるためにはトップページに関連した言葉をちりばめる必要があるかと思い、このページに関連した文章を
トップページに書いておきました。
メタタグの言葉はもうシステムの登録に関係ないと聞きました。

後、トップページを少々長くしたのは、もう一つ理由があり、
最初来た人はとりあえず何かクリックするよりもトップページをスクロールして見るかな
と思い、このサイトの説明を色々と書きました。
それがよくなかったですかね。
注意事項などは短くしておきます。

フォントサイズは見て欲しい文字順に大きくしてあるのですが、
逆にそれがみにくかったのでしょうかね。
ちょっと整理した方がよいかもしれませんね。

flashの場所が統一されていませんという事ですが、
上には題名。
左にはメニュー。
右下には諸flashと配置をしていますが、
この右下のflashがよく無いという事でしょうか?

見やすいサイト、利用しやすいサイトを目指していきたいと思いますm(_ _)m


Name: kakasi [URL]   Date: 2006/08/20(日) 22:33   No:183     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
先日はありがとうございました。
私のような立場から評価させて貰うのは恐縮ですが、アンケートに協力しますね。
・・といってもHPを作った事無いのでプログラム的な事はわからないのですが、素人目に見た感じで^^;
(1) トップページは見にくかったでしょうか?
みにくかった事はないですけど、他のサイトとは違った感じで お〜! と思いました。
画像がきれいに動いてプロっぽい感じがしました。

(2) Flashがありすぎてチラチラしてバナーだらけのサイトと勘違いしませんでしたか?
画像が他の宣伝の無いようじゃなかったのでバナーとは思いませんでした。

(3) Flashがの配置が悪く、質問をどこでしたらいいのか解りにくかったですか?
題名ーメニューー本文とFLASHが置いてあるのでとてもいいと思います。
始めてきた時は左のメニューがメニューとは思わず、ちょっと困惑しましたが、私の注意力が少ないだけだったと思います^^;
後、フラッシュって2回クリックしないと使えないんでしょうか?

(4) トップページを見た第一印象はどんな感じでしたか?
クールでかっこいい感じがしました!プログラムがよく出来る人はきっといろんなことに精通されているんだろうなと感じました!
私もいつかこんな風になりたいです。

私のような知識の無い人間ですが、少しでも参考になれば嬉しいです。


Name: 管理人 [URL]   Date: 2006/08/20(日) 22:47   No:184     
Title: お礼    
kakasi様、早速の回答ありがとうございました^^

>素人目に見た感じで

いえいえ、失礼な言い方かもしれませんが、逆に分野に詳しくない方の意見の方が重要だったりする事もありますし、大いにありがたいです^^

>左のメニューがメニューとは思わず、ちょっと困惑しましたが

なるほど、そうですか、やはりメニューはFLASHにしようかどうしようか迷ったのですが
FLASHを使い慣れていないとちょっと解りにくいかもしれないですね。
これからの改善の一つとして頭にいれておきます^^

>フラッシュって2回クリックしないと使えないんでしょうか?

kakasi様はちゃんとWindowsUpdataをされていらっしゃるようですねw
実は今年の春か冬かのアップデータで自分で変更しない限りクリックしないとFLASHのアクティブ化はされないようになってしまいました。
私は前の方がよかったんですけどね・・。

>クールでかっこいい感じがしました!

ありがとうございます^^
利便性と、見た目どっちもを追求するのは難しい事ですが、どちらも両立できるようなレイアウトをしていきたいと思います。
プロの方のHPのレイアウトを参考にするなどして改善していきます♪

>私もいつかこんな風になりたいです。

C言語を極める事はともかく(何しろ言ってる本人(私)がまだまだ全然ですから)、HP作る事はとても簡単ですよ^^
ただしレンタルスペースをサーバーに確保して、そこにアップするなどの概念を全くご存知でなければ
ちょっと導入のところで
? と思ってしまうかもしれませんが、ほんとに簡単です。
どう装飾していくか、よりよくしていくかは考えていく必要があると思いますけどね^^

もしもHP作成に興味がおありでしたら別件で質問されてください☆

この度はありがとうございました^^


Name: Justy   Date: 2006/08/21(月) 03:28   No:185     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
 こんばんわ。

もしよろしければスペックを教えていただけないでしょうか?
 CPUは PentiumMの 1.73MHz、メモリが 1Gです。

>gifアニメは矢印にしか使用していないのですがあれくらいの画像でもやはり負担かかってしまうのでしょうか。
 gifアニメも結構処理を喰うみたいです。
 昔、掲示板を設置したときにロゴを gifアニメにしたら、重すぎて文字すら入力できないと苦情が来たことがありました。
 自分的はそんな重い gifではないと思っていたのですが、環境によってはそういうこともあるみたいで。
 当時と今ではマシンスペックもブラウザのバージョンとかも違うので今もそうである、とは言えませんが・・・。

>処理が遅れるようでしたら別のページに移そうかと思います。
 処理が遅れるというほどではないので、今のままでも構わないと思います。

>そうなんですよね、実はものすごく詳しく書いたページを用意していたのですが、あまりにも詳しく書いていて
(略)
>これから是非ゲームプログラムのアルゴリズム紹介ページとか、
>こうやって作っていくんですよみたいなページを作成したいと思います。

 あー、そうだったんですか。
 でも、今後そういうページが増えるというのは、楽しみです(w
 無理にならない程度に頑張ってください。



Name: 管理人 [URL]   Date: 2006/08/21(月) 04:32   No:186 解決!     
Title: Re:逆に私から皆様に質問ですm(_ _)m    
Justy様、お返事ありがとうございます^^
なるほど、私のスペックとあまり変わらないようでした。
自分のノートのスペックを基準に色々試してみたいと思います。

>gifアニメも結構処理を喰うみたいです

なるほど、色んなスペックに対応できるようなトップページにしなければならないですね。

>今のままでも構わないと思います

ではこの件はそのままでいくことにします^^

>今後そういうページが増えるというのは、楽しみです(w

はい、皆様が「参考になった」と思えるようなサイト作りをしていこうと思います。
とりあえず、9月の中旬になったら時間が出来るので大幅リニューアルしてみようと思います。

>無理にならない程度に頑張ってください。

いつもありがとうございます。これからもよろしくお願いします^^




Name: kakasi   Date: 2006/08/19(土) 03:16   No:173 解決!       
Title: 文字列と参考書について    
こんにちは。以前一度お邪魔させていただいた者です。
投稿するのは初めてです。

私は大学1年生で、この前C言語に出会ったばかりです。

宿題で、自分の名前を表示しろというのがあるのですが、
配列に入れる部分でよくわかりません。

#include<stdio.h>
int main(){
char name[10];
name[0]='k';
name[1]='i';
name[2]='s';
name[3]='i';
printf("%s",name);
return (0);
}

これだとうまくいくのですが

#include<stdio.h>
int main(){
char name[10];
name[0]='き';
name[1]='し';
printf("%s",name);
return (0);
}

だとうまくいきません。文字化けみたいなことになります。
どうしたらいいのでしょうか。

・・というか学校の教科書は読んでも難しくて全然わからなくて、さっぱりな状態です・・。

管理人さんのように難しいプログラムを沢山書けるようになりたいです。
管理人さんはどんな本を参考にして上達されました?
学校の本じゃとてもわからないんですが、何かオススメの本はあったら教えてください。お願いします。



Name: 管理人 [URL]   Date: 2006/08/19(土) 03:46   No:174     
Title: Re:無題    
kakasi様、こんばんは^^
管理人です☆

C入門の方という事で、大学1年生って入りたてで難しい時ですよね。
つまずいたりした時は何でも聞いてくださいね。

まず、プログラムの方を見る前に、配列と文字列についておさらいしておきましょうか。

配列の宣言についてはいいですか?

int name[4];
と宣言するとint型つまり整数を代入できるうつわが4個用意されるわけですね。
つまり
name[0]
name[1]
name[2]
name[3]
という名前の変数が4つ並んでいるような状態です。
[]なしでnameとだけ書けば、それはポインタといって配列を「集めた場所を示すもの」とでも覚えて置いてください。

****(発展知識)****
全てのデータはメモリで管理されていますね。
メモリのデータには全て番地がついています。
1123番地の家にはkakasiさんが住んでいるというように
特定の番地には特定のデータがはいっているのです。
nameと書けばその番地を示す事になるわけです。
name[0]
name[1]
name[2]
name[3]
には全て番地がふってあります。
仮に今name[0]が1123番地だったとするとname[1]は1124番地です。
[2]は1125番地で[3]は1126番地なのです。
つまり先頭アドレス(name[0]のアドレス1123)がわかれば配列全ての番地がわかるわけです。
ですからnameには配列の先頭アドレスが格納されています。
ポインタについては後に勉強されると思うので参考までに☆
******************


ここで重要なのが、半角文字と全角文字を混合してはいけないという事です。
バイトという記憶容量の単位をご存知でしょうか?


----ビットとバイトのお話----

1バイトとは「0と1の信号の識別単位が8つまった1つの単位」の事です。
元々メモリは何で信号を判断しているでしょうか。
それは簡単に言うと電気がonであるかoffであるかで判断しています。
電気がオンである状態を1とし、オフである状態を0とするとこの装置1つで2種類の信号識別が出来る事になりますね。
0と1の信号を持ったこの1つの記憶単位を「ビット」といいます。
1ビットではいくつの信号が表現できるでしょうか。
0と1、つまり2種類ですね。ではこの識別単位1ビットが2つくっついたら、つまり2ビットでは何種類の信号が識別できるでしょうか。
00
01
10
11
そうです、4種類ですね。では3ビットでは?
000
001
010
011
100
101
110
111
つまり8種類。これはnビットだと2のn乗通りの識別が出来ることをあらわしています。
2のn乗。今回は3ビットでnが3だから2を3回かけたら8で8通りの識別が出来ます。
1バイトは8ビットと最初に言いましたね。
つまり2の8乗は256だから256通りの信号が区別できるわけです。

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

ではchar型の変数は1つ何バイトかご存知でしょうか?
1バイトです。つまり1つの配列要素に入れる数値では
256種類の識別しか出来ないという事になります。
英語だったらそれでいいですよね。
アルファベットの大文字小文字や数字、よく使う記号なんかをあわせてもせいぜい100個。256種類の識別が出来れば十分です。
しかし日本語はどうでしょうか、ひらがな、カタカナ、その上漢字を合わせるととても256種類の識別では足りません。

そこで2バイトの容量単位を使って識別したらどうでしょうか。
1バイトが8ビットですから2バイトなら16ビット。つまり2の16乗。6万5千通り以上の識別が出来ます。
これなら漢字も網羅できる・・という事で全角文字は2バイトで管理される事になっています。

一方name[0]は1つの配列要素なので1バイトです。
つまり残念な事に配列の1つには1つの日本語を入れる事が出来ないのです。
だったら2つ使えば入るのか?という疑問が生まれると思いますが、配列要素に1つずつ値を代入して
全角文字を格納する事は出来ません。ちょっと工夫したら入りますけどここでは省略します。

配列は宣言と同時に初期化といって数値を代入できる事をご存知でしょうか。

char name[10] = "きし";

と宣言すればもうデータはnameに入っていて、このままprintfすれば表示されます。
もしも宣言した後に文字列を格納したければ格納する関数を使います。

sprintf(name,"きし");

このように書く事でnameに後の文字列が格納されます。

で、もっと重要なのが
文字列の最後には終端記号を入れなければならない事です。

最初のプログラムはうまくいくとおっしゃっていましたが、本当にうまくいきました??
(自動的に終端記号を入れてくれるようなコンパイラがあれば別ですが)
最初のプログラムも間違っています。
それは配列って10個の配列要素を宣言してありますが
実際10個全部使って無いですよね。
一体どこまでがおわりか解らないわけです。
ですからここで終わりだよ!
って事を明示的に示してやる必要があるのです。
それが\0という記号です。
name[0]='k';
name[1]='i';
name[2]='s';
name[3]='i';
name[4]='\0';
このように書いて初めてnameは文字列として完成します。

↓下に続く。


Name: 管理人 [URL]   Date: 2006/08/19(土) 03:52   No:175     
Title: Re:無題    
では上記の事を押さえ、どのようにプログラムを書けばよいか、
サンプルを書きますね。

サンプル1
#include<stdio.h>
int main(){
  char name[10];
  name[0]='k';
  name[1]='i';
  name[2]='s';
  name[3]='i';
  name[4]='\0';
  printf("%s",name);
  return (0);
}

サンプル2
#include<stdio.h>
int main(){
  char name[10]="kisi";
  printf("%s",name);
  return (0);
}

サンプル3
#include<stdio.h>
int main(){
  char name[10]="きし";
  printf("%s",name);
  return (0);
}

サンプル4
#include<stdio.h>
int main(){
  char name[10];
  sprintf(name,"きし");
  printf("%s",name);
  return (0);
}

これは全て正解です。
おわかりいただけたでしょうか?

では、参考書についてですが、
やはり大きな書店に行ってご自分で色々見て決めるのがいいと思います。
それでもオススメをといわれたら私は
柴田望洋著の新版明解C言語
をオススメします。この本は何度も熟読しましたよ♪

最初のうちは「C言語 入門」などで検索すれば沢山C言語関連のサイトはヒットしますから
そんなサイトも利用されてはいかがでしょうか。
配列、文字列の部分しっかり押さえて置いてくださいね☆

まだ、何かひっかかる部分があったり
わからないことがあったらまた聞いてください〜♪


Name: kakasi [URL]   Date: 2006/08/19(土) 15:19   No:177     
Title: Re:無題    
管理人さん、ありがとうございました!
こんなに詳しく説明していただけるとは感激です!!

そうでした\0は習った事ありましたけど、よくわかりませんでしたが、そういう意味だったんですね。
ビットとバイトのお話もよくわかりました。

すごく解りやすい説明だなと感心しました。
教えていただいた参考書を元にしっかりがんばっていきたいと思います。
ありがとうございました。




Name: Zn   Date: 2006/08/13(日) 12:11   No:160 解決!       
Title: 宿題がわかりません。    
初めまして
高専でC言語の授業を受けています。

文字型データ1文字を入力して、
その値がa〜zの時はOK!それ以外の時はERROR!と入力しなさい。

というような課題がでたのですが、
a〜zはどのように定義したらいいのか分かりません。
お力になってもらえないでしょうか?



Name: 管理人 [URL]   Date: 2006/08/13(日) 14:30   No:161     
Title: Re:宿題がわかりません。    
こんにちは^^
はじめまして、Zn様、管理人です。
高校生なのに夏休みから偉いですね^^

ではご質問にお答えします。

キーボードからの入力によって条件分岐する処理は
scanfを使う処理と
getcharを使う処理の2種類がかけます。

また、小文字かどうか判断するにも2種類の方法があります。

入力されたデータを変数に格納し、
その変数のデータが小文字なら真を返し、それ以外なら偽を返す関数を使用して判別するか、

このスレのちょっと前に書いてあるa2i(atoi)という関数を使うか

と言う方法です。

簡単に出来る方法と 勉強になる方法の2種類のサンプルをかいて見ます。
ちょっと待ってくださいね。


Name: 管理人 [URL]   Date: 2006/08/13(日) 15:32   No:163     
Title: Re:宿題がわかりません。    
まずは、簡単な方法です。
getchar()という1文字の入力文字を帰り値に返す関数と
iswlower()という小文字かどうか判定する関数を利用しています。

まず青文字の部分でgetcharで入力を受けた文字データを文字型の変数chに代入しています。
そのchをislower関数で小文字かどうか判定し、小文字以外なら0が返り、小文字なら0以外がかえってくるので
0かどうか条件を分けることで判定ができる仕組みになっています。
スマートに書いています。
もしもスマートに書きすぎて何が行われているのかわからないときはプログラム2を見てください。
スマートに1行で書いた処理をわけて書いています。
行っている処理はプログラム1も2も全く同じです。

----------------------------------------
プログラム1

#include<stdio.h>
#include<ctype.h>
void main(){
  char ch;
  if(iswlower(ch=getchar())!=0)
    printf("アルファベットです。\n");

}

実行結果1

a
アルファベットです。

実行結果2

1

-----------------------------------------
プログラム2

#include<stdio.h>
#include<ctype.h>
void main(){
  int i;
  char ch;
  ch=getchar();
  i=iswlower(ch);
  if(i!=0)
    printf("アルファベットです。\n");
}
-----------------------------------------
実行結果
上と同じ
-----------------------------------------

標準関数を用いる事で簡単に色んな処理が出来ます。
標準関数逆引き辞典が便利ですよ。

http://always-pg.com/c/runtime_rd/

しかし標準関数にたよっているとどのようなアルゴリズムで判定されているかがわからず勉強になりません。
つまりa〜zかどうか判定する事はで来ても
a〜dかどうか判定する
a,c〜g,x〜zかどうか判定するという事はできませんね。

では文字コードについて勉強しましょう。

まずこちらを見てください。

http://dixq.net/kaitou13.html

文字コードについてちょっとわかっていただけたでしょうか。
つまりaの次はbとされていて、アルファベットはアルファベット順に
設定されています。

ですから

#include<stdio.h>
#include<ctype.h>
void main(){
  char ch;
  ch=getchar();
  if(ch>='a' && ch<='z')
    printf("アルファベットです。\n");
}

と書けばa〜zが判定できます。
これを応用してa〜dかどうか判定したければ

#include<stdio.h>
#include<ctype.h>
void main(){
  char ch;
  ch=getchar();
  if(ch>='a' && ch<='d')
    printf("a〜dです。\n");
}

とかけるわけです。
お分かりいただけたでしょうか?


Name: Zn   Date: 2006/08/13(日) 21:40   No:164     
Title: Re:宿題がわかりません。    
はい、なんとか分かりました!!
丁寧なご指導、ありがとうございます!!




Name: hikaru   Date: 2006/08/11(金) 21:19   No:149 解決!       
Title: 超初心的なことですが。。    
恥ずかしいことですが。。

今日、九州工業大学でC言語を初めて使いました。
内容は、計算などがメインです。
例えば、
『国語、数学、英語の3教科の平均点を出せるようにし、
 60点以下の場合は不合格と判別させるようにしなさい』
といったものです。

個人的に大学生から指導内容外(switch文など)も習い、C言語に少し慣れました。
大学に入るとC言語は大切だと知ったので家でも身につけたいと思ったのですが、
何を使ったらいいのか
何を開けばいいのか などがわかりません。
なぜなら、大学ではLINUXを使っていたからです。
そもそもWindowsでもC言語を使ってあれこれできるのでしょうか。

上で述べた疑問、
大学ではC言語のどこを知っておくといいのかなどのご指導願います。



Name: 管理人   Date: 2006/08/11(金) 21:25   No:150     
Title: Re:超初心的なことですが。。    
こんにちは。
はじめまして。管理人です。
現在携帯から投稿中です。
もちろんウインドウズでも出来ますよ。
ちょっと今外出中で後1時間位したら家に帰るのでまたお返事しますね。


Name: hikaru   Date: 2006/08/11(金) 21:41   No:151     
Title: Re:超初心的なことですが。。    
書き忘れていました。

レベル3までは大学で習いました。
しかし、今ここでできるかはわかりません。

以上でお願いします。


Name: 管理人 [URL]   Date: 2006/08/12(土) 01:11   No:152     
Title: Re:超初心的なことですが。。    
帰りがとても遅くなってしまいました。
ごめんなさいm(_ _)m

改めましてこんにちは。hikaruさん、管理人です。
今回WindowsでC言語の製作が出来る環境を整えたいという事で回答します。

はじめに直接環境を整える話のまえにちょっとこんな話を聞いてください。


まず、C言語に限らず、プログラミング言語は機械語つまり1と0の信号に変換するという作業が必要になってきます。

そもそもプログラミングというのはどういう作業をしているのでしょうか?

C言語で画面に文字列を表示する場合はprintf文を使いますね。

printf("こんにちは");

とかけば

コンピュータに「こんにちはという文字列を画面に表示しろ」という命令を書いた事になります。
しかしコンピュータに人間の文字がわかるでしょうか。
文字で「バイオハザードのようなゲームを表示しろ」と何行かいたって
コンピュータはさっぱり理解してくれませんね。
つまりコンピュータは機械語(0と1の信号)しか理解できないわけです。
一方また、人間にとっても機械語は読んでもわからない、人間にとってはわからない言語です。
そこで人間の言葉→機械の言葉に翻訳する作業が必要です。
この翻訳する作業をコンパイルするといいます。

printf("こんにちは");

という文章はコンパイルすると画面にこんにちはという文字列が表示されるような0と1の信号に置き換わるような仕組みになっています。
プログラムを機械語に変換する、つまりコンパイルする物をコンパイラといいます。
このコンパイラを準備すればどんなパソコンでもプログラムを実行することが出来ます。

ではお話はここまでにして、コンパイラをダウンロード出来るサイトをご紹介しましょう。

丁寧にわかりやすくコンパイラが導入できるサイトがありますので
そちらのご紹介をします。

以下のリンクからBorland C++ Compiler 5.5というコンパイラが
ダウンロードできます。
このサイトに丁寧にインストール方法がかいてあるので、参考にしてください。

http://www.setsunan.ac.jp/~center/kyositu/freec/dl.html

まず、このページの1番のリンクからクリックして作業を進めていってください。

2つ注意する事は、コンパイラの導入にはする事が2つあることと、XPやwindowsのバージョンで導入の仕方が違う事です。

まず、「インストールと環境変数の追加」という2種類の作業が必要です。
この環境変数の追加のしかたにウィンドウズのバージョンによって差があるわけですが、
それも全部丁寧に説明してありますから落ち着いて読んでください。
先のサイトで説明はたった2ページですからそんな難しい作業ではありません。

もしこのサイトの2ページ目の一番したの

「これでインストールは完了しました」

まで作業をすすめたらまた、このサイトを見てください。
その頃にまた、説明を書いておきます。

設定がわかるまで説明しますから何でも聞いてくださいね。


Name: 管理人 [URL]   Date: 2006/08/12(土) 01:42   No:153     
Title: Re:超初心的なことですが。。    
コンパイルする環境が整ったら次はプログラムを書く環境を整えましょう。
プログラムを書くのは秀丸が一般的なようですが、
ここではStarEditというエディタソフトを使用します。
このソフトは
・プログラム記述
・プログラムをコンパイル
・プログラムを実行
という3つの作業が1つのソフトで出来てしまう便利なソフトです。

http://www.ss-lab.com/soft/index.phtml

こちらからStarEditというソフトをダウンロードしてください。
ソフトを起動したらとりあえず

#include<stdio.h>
void main(){
printf("hello");
}

とコピペでもいいんで書いて、下さい。

Cドライブにcprog(名前はなんでもいい)というフォルダを作ります。

C:\cprog\

ここにこのプログラムをtest.cという名前で保存しましょう。

C:\cprog\test.c

こうなるように。
そしてコンパイルボタンを押して無事にコンパイルが終了した事を確認し、実行ボタンを押します。
・コンソール実行
・ウィンドウ実行
好きなほうを選び実行してください。
うまく画面にhelloとでたら完成です。


Name: hikaru   Date: 2006/08/12(土) 22:28   No:154     
Title: Re:超初心的なことですが。。    
詳しい解説をありがとうございます。

Borland C++ Compiler 5.5とStarEditをインストール終えました。

StarEditにコピペし保存したのですがコンパイルすると
『コンパイラの設定ができていません』と表示されます。
『コンパイル/実行設定』をしなくてはならないのかと思い、やってみています。

*『コンパイル/実行設定』
*『実行設定』
*『実行設定』後の画面
の画像をしましたのでこれで完成なのかご指導願います。


Name: 管理人 [URL]   Date: 2006/08/12(土) 22:46   No:155     
Title: Re:超初心的なことですが。。    
あ、コンパイルの位置を設定しないといけなかったですね。
一つ言い忘れましたごめんなさい。

はい、それできちんと結果が出力されていますよ。
コマンドプロンプトを出したくなかったらウィンドウ実行にすればOKです。


Name: hikaru   Date: 2006/08/12(土) 23:26   No:156     
Title: Re:超初心的なことですが。。    
これで成功だったのですね!!

今日、『猫でもわかるC言語』って本を買いました。
わかりやすいともわかりにくいとも言い難い本でした(笑)

今からは基本的(超初歩的)なことをやっていこうと思っています。



Name: 管理人 [URL]   Date: 2006/08/12(土) 23:42   No:157     
Title: Re:超初心的なことですが。。    
猫でもわかるC言語って人気ですねぇ。
あれはネットで読むにはよいですが、本を買うのはどうなんでしょう・・;
猫でもわかるC言語って本買わなくても全てネットにありますよ><

http://www.kumei.ne.jp/c_lang/

トータルアクセスが1000万件って個人のサイトとしてはありえないほど人気になってるみたいです。
ネットでここまで詳しく書いてあるサイトはなかなかないのでアクセスが増えるのはわかりますが、
発行されている本ではもっとわかりやすい本があるんで、
この本は う〜ん、、と言った感じです。

私は柴田望洋著の新版 明解C言語 がオススメです。

これは入門編と実践編の2巻にわかれていて、入門時には入門編を、ちょっとわかってきたなって頃には実践編を
読めばとてもよくわかります。
この本の問題集版というのもあります。
本当にこの本には助けられました。

もしもよければ私が作っているC言語のHPなども見ていただけたら・・と思いますが、何しろ大学1年生の時に
興味本位で作っただけなんで作りかけのまま長年放置されています^^;
http://dixq.net/link.html

もしも本格的に勉強されるのでしたら

柴田望洋著の新版 明解C言語 入門編

柴田望洋著の新版 明解C言語 演習(問題集のようなもの)

柴田望洋著の新版 明解C言語 実践編

独習C++

の順番で買って勉強すればばっちり力つきます。
独習C++が全部読み終わる頃には自分で様々なAPIやライブラリを使いこなせるようになっていると思います。

何かわからないことがあったり、つまずいたりしたらいつでも何でも気軽に聞いてくださいね☆

それでは頑張ってください(ノ^^)八(^^ )ノ


Name: hikaru   Date: 2006/08/13(日) 00:45   No:158     
Title: Re:超初心的なことですが。。    
今回はありがとうございました。

今は"猫でもわかるC言語"を使って勉強中です。
C言語関連の本が置いてなく
(置いてあったのですが今の自分には解読不能)
この本を買いました。
この本のHPがあることは知っていましたよ(^^
本とHPは内容(説明)が少し違うように思います。

勿論、管理人さんのHPもかなり参考になってますよ!

大学は九州工業大の電子情報ですがC言語は頻繁に使うそうです。
そのためにC言語を少しずつ学んでいこうと思いました。


Name: 管理人 [URL]   Date: 2006/08/13(日) 01:28   No:159     
Title: Re:超初心的なことですが。。    
私はよく本屋にいってC言語関連の本を立ち読みするのがすきだったので京都、滋賀の有名本屋においてある本は
ほぼ全て見た事があると思います^^;

大学に入る前に学んでおこうという姿勢はとても素晴らしいと思います。
大学の授業だけではなんの力もつきませんし、
授業にでていただけじゃ単位は取れないと思います。
C言語入門の壁を経て「C言語っておもしろい」って段階になればこっちのものです。
私はプログラム書くのが楽しくて夏休みとか朝から夜中まで毎日ず〜っとプログラム書いていた事もあります。

C言語の学び方として一番の理想は参考書を見ながらそれにそって線形リストや連結リスト2分探索木やソートなどを学んでいく事でしょうが、
いつもコマンドプロンプトの出力を見ながら学んでいくのは私はつまらなくて仕方ありませんでした。

とりあえず
配列を文字列の扱いを経て
・関数の値受け渡し
・構造体
がマスター出来たらポインタは難しいと思うので無理して覚えず
DXライブラリのようなゲームが作れるAPIを利用してゲームを作ってみる。
その中でポインタや構造体を使用し、実際に使ってみて使い方をマスターする方がよっぽど楽しいし
力にもなり継続に繋がるように思います。

色んな学習の仕方がありますが、自分にあった勉強方を見つけ、頑張ってください★




Name: 湘南育ちのマンゴー   Date: 2006/08/09(水) 01:24   No:119 解決!       
Title: 入力と分岐について    
はじめまして。こんばんわ。
プログラムを実行させてすぐにメニューを表示させ
入力時に"E"or"e"を押すと処理の終了、
"1"から"30"までが入力されると("02と入力された場合はエラーで返す")
その数を以後数値として扱えるようにしつつ
ある関数「例:sub()」を呼び出し、
それ以外のものが入力されたら
またメニューの最初から入力をやり直すような処理を行いたいのですが
うまく書くことができません。

お力を貸してください。よろしくお願いします。



Name: 管理人 [URL]   Date: 2006/08/09(水) 18:51   No:120     
Title: Re:無題    
遅くなってごめんなさい〜><
今日は早くから外出する用事があったので昨日早く寝てしまいました(_ _|||
いつもならすぐ答えられるんで。

今から回答書きますので少々お待ちください^−^


Name: 管理人 [URL]   Date: 2006/08/09(水) 18:59   No:121     
Title: Re:無題    
湘南育ちのマンゴー様、あらためましてこんにちは、管理人です^^

え〜と、「メニューを表示させ」という部分がよくわかりませんけど、
何か特定のメニュー画面を出すのでしょうか?

後、sub関数は何をする関数ですか?
直接やりたい処理には関係ないものと思っていいのでしょうか?

また、数値型の入力なら02も2も同じ入力のように処理されますけど、02はエラーという条件を付ける必要があるのでしょうか?

仕様の詳細を自分で勝手に決めてが私が考えたプログラムをかいて見ますね。


Name: 管理人 [URL]   Date: 2006/08/09(水) 19:54   No:122     
Title: Re:無題    
とりあえず以下のようなサンプルプログラムを書きました。
文字列型からint型への変換をするために
int a2i()
という関数を使っていますが、これは一つのモジュールとしてみてもらったいいので、プログラムの内容を理解していただかなくても大丈夫です。
この関数に文字列としての値を渡すと返り値にint型の整数が帰ってくるモジュールだと思ってください。

つまり文字列strに"123"という文字列としての123が入っているとして、
この値をa2i(str);という形で呼ぶとint型の123に変換して返してくれます。
つまりサンプルプログラム中の
x=a2i(str);
ではxにint型の入力した数値が代入されるわけです。

全体的に何をしたいのかわからないのでちょっと独自の仕様になっていますけど、
より詳しく教えてもらったら的確なアドバイスが出来ると思います。

それではプログラムを注釈と一緒に見ていきましょう。

掲示板は白黒ですから注釈がみにくいので
画像にも以下のプログラムと全く同じものをはってありますのでご覧下さい。

また、注釈無し、プログラム実行用のファイルはこちらです。
http://dixq.net/board/program/input.cpp


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

//char型→int型変換関数です。プログラムの意味はわからなくてOKです。
int a2i(char*str){
  int cnt,num=0;
  for (cnt = 0; (str[cnt] >= '0') && (str[cnt] <= '9') ; cnt++)
    num = 10 * num + (str[cnt]-'0');
  return num;
}
//sub関数で何をしたいのかわからなかったので適当にsub関数を作りました。
void sub(int x){
  printf("subにてxの値を受け取りました。\n");
}

//ここからがメインです。
void main(){
  //配列の要素をカウントするためのi
  //int型の入力値を受け取るためのx
  //入力された文字列を受け取るためのstr[100]
  int i,x;  char str[100];
  //無限ループ
  while(1){
    //iを初期化
    i=0;
    printf("1〜30の値を入力してください。e,Eなら終了。\n");
    //エンターが押されるまでgetchar関数によってキーボードからの入力を配列に格納する。
    //文字列は続いていますが1文字ずつ1つの配列要素へ格納していく事になります。
    while((str[i]=getchar()) != '\n')
      i++;
    //文字列の終端に終端記号を入れます。
    str[i]='\0';
    //もし文字列の最初がeかEなら終了。
    if(str[0]=='e' || str[0]=='E'){
      printf("e,Eが入力されたので終了します。\n");
      exit (1);
    }
    //もし文字列の最初が0なら繰り返し
    else if(str[0]=='0'){
      printf("最初に0が付いているので繰り返します。\n");
      continue;
    }
    else{
      //文字列型からint型へ変換
      x=a2i(str);
      //1~30じゃなかったら繰り返し
      if(x<=0 || x>=31){
        printf("1〜30の値じゃないので繰り返します。\n");
        continue;
      }
      //1~30の値だったらsub関数を呼んでブレイク
      else{
        printf("入力された値は正常値[%d]です\n",x);
        sub(x);
        break;
      }
    }
  }
}

プログラム実行用のファイルをコピーして実行してみてください。

getchar()の使い方とかわかりますか?
何かわからないことがあればまた聞いてくださいね。


Name: 湘南育ちのマンゴー   Date: 2006/08/09(水) 23:48   No:126     
Title: Re:無題    
こんばんわ。お返事ありがとうございます。
私が最も悩んでいた部分が文字列型からint型への変換でした。
例えば0〜9までの一桁なら問題ないのですが
二桁を考えないといけないので困っていたのです。

文字列型からint型への変換をするために
こんな方法があったなんて・・・
まだC言語を勉強して間もない私には目からウロコです。
ありがとうございました。


Name: Justy   Date: 2006/08/09(水) 23:51   No:127     
Title: Re:無題    
 ちょっと疑問に思ったのですが、ctype.hの atoi()を使わず、a2iを作ったのには何か理由があるのでしょうか?


Name: 管理人 [URL]   Date: 2006/08/10(木) 00:08   No:128     
Title: Re:無題    
>Justy様
こんにちは。
はじめまして、ですよね?

私はよく回答にもっとスマートにかけるのにそうしなかったり、
余分な処理を書いたりします。
それは余分ながらにもそのプログラムを見て、
もしも余裕があればそのプログラムから予備知識も増やして欲しいと思って書いています。

確かにatoiという標準関数ほど便利なものはありません。
しかしこれでは中で何の処理が行われているのか全然わかりませんよね?
しかし私の書いたa2iには処理の内容が書いてあります。

もしも湘南育ちのマンゴー様が今後、char型はint型で表現できる事を学ばれた時
「あ、掲示板にかいてあったけど、ひょっとしてあれのことかな?」
とちょっとでも思い出していただけたらと思いました。

参考書なんかで新しいことを学んだ時
全く始めて聞く事と
過去にちょっとでも聞いた事ある事って
全然身に付き方が違うじゃないですか。
そういう体験が私にもあるので
回りくどいような事をよくします。

今回わからなくてもよいと書いたのはなぜか?と思いでしょうけど、
C入門時、人の書いたプログラムを読むことって非常に難しく感じませんでした?
よく理解できないプログラムが長々と書いてあったらとても読めなくなっていたと思います。
少なくとも私はそうでした。
ですから余分な事を覚えるために本命の回答がわからなくなるよりは、
余分な事はいつかどこかで「あ、あそこに書いてあったかな?」位の記憶でいいと思ったんです。

>湘南育ちのマンゴー様。
文字列からint型への変換はa2iで出来ますが
double型ではまた、違う方法で行います。
この関数はJusty様のおっしゃるとおり標準関数でも扱えます。
C言語でしたら
stdlib.hをインクルードして
つまり一番最初に#include<stdlib.h>と書いて
atoi(文字列)
atof(文字列)
で渡せば前者はint型で、後者はdouble型で値が返ってきます。
ご参考までに。


Name: 湘南育ちのマンゴー   Date: 2006/08/10(木) 02:12   No:129     
Title: Re:無題    
ソースプログラムをいろいろ試してみたのですが

1eと入力すると 数値1を返す ようになってしまいます
1pと入力すると 数値1を返す ようになってしまいます
こういった場合はエラー表示・再入力へ
(数字と文字の1文字ずつの組み合わせならエラー、
数値として判定したいのは'1'〜'30'と入力されたのみで他の文字は混ぜない)

e4と入力すると 終了 になってしまいます
eeと入力すると 終了 になってしまいます
こういった場合はエラー表示・再入力へしたいのです
(終了は'E'か'e'の1文字のみで他の文字は混ぜない)

また入力の際に大量の文字列(試したのは300文字くらい)を
打ち込むと処理が止まり?
再度Enterキーを押さないと処理が進まないようになっています。
すみませんが改善案などを教えて頂けると助かります。
宜しくお願いします。


Name: Justy   Date: 2006/08/10(木) 02:17   No:130     
Title: Re:無題    
 管理人様。お返事ありがとうございます。

>はじめまして、ですよね?
 そうですね、失礼しました。
 こんばんわ。はじめまして。


>それは余分ながらにもそのプログラムを見て、
>もしも余裕があればそのプログラムから予備知識も増やして欲しいと思って書いています。
 なるほど。
 たしかに、atoiを使うよりもあえて自作してオープンにしたほうが勉強になりますね。
 デバッガを使って1行1行動作の仕組みを追っていけるというメリットもありますし。


>今回わからなくてもよいと書いたのはなぜか?と思いでしょうけど、
>C入門時、人の書いたプログラムを読むことって非常に難しく感じませんでした?
 人のソースを読むのは今でも難しいです(w


>ですから余分な事を覚えるために本命の回答がわからなくなるよりは、
>余分な事はいつかどこかで「あ、あそこに書いてあったかな?」位の記憶でいいと思ったんです。
 とてもいいお考えだと思います。
 ベストよりも、数歩先を考えたベターな解答を提示するというのは、なかなかそう出来るものではありません。


 お忙しい中、解答ありがとうございました。
 これからも頑張ってください。
 陰ながら応援させて頂きます。


Name: 管理人 [URL]   Date: 2006/08/10(木) 14:37   No:131     
Title: Re:無題    
引き続き回答いたします。

>1eと入力すると 数値1を返す ようになってしまいます
>1pと入力すると 数値1を返す ようになってしまいます

なるほど、私は何が作りたいのかわからないので、どういうエラーをどこまで考えたらいいのかわかりませんでした^^;

文章を入力するのですね?
じゃ仕様を明確にしていきましょう。じゃないと何をしたらいいのかわからないので。

とりあえず前の不都合から。

>1eと入力すると 数値1を返す ようになってしまいます

→a2iはint型の整数を返すので、文字が入っていても関係なく処理をしてしまいます。
改善策として、a2iの関数の中身で、数字なら正常リターン。文字ならエラーリターンとa2iの関数の中身をかえるか、
それとも1文字ずつ数字か文字かチェックしていくかの方法が良いと思います。
わかりやすいのは後者ですから後者でやってみましょう。


>こういった場合はエラー表示・再入力へ(数字と文字の1文字ずつの組み合わせならエラー、数値として判定したいのは'1'〜'30'と入力されたのみで他の文字は混ぜない)

→入力された文字列を1文字ずつチェックしていきましょう。

>e4と入力すると 終了 になってしまいます
>eeと入力すると 終了 になってしまいます

→現在注釈にもありますとおり一番最初の文字がe,Eなら終了になりますから、他の文字を混ぜたくない場合、
配列[0]にn,Eが入っており、かつ配列[1]にヌル文字\0が入っているかどうか確認する事で解決できます。

また入力の際に大量の文字列(試したのは300文字くらい)を
打ち込むと処理が止まり?

→とりあえず1~30までの数字と聞いていたのでそこまで配列要素はいらないだろうと、配列要素は100で宣言していたため、100以上入力すると
処理が出来なくなってしまいます。

では、仕様を明確にしましょう。
・入力時に"E"or"e"を押すと終了。
・E,eと他の文字が含まれているときは終了しない
・"1"から"30"までが入力されるとint型に変換
・"02と入力された場合はエラー
・1〜30以外が入力されたらまた最初から入力をやり直す
・数字と文字がくっついている時はエラー再入力
・大量の入力を受け付ける

これくらいしか思いつかないのですが
実際何がしたいのでしょうか?
文章を入力して文中にふくまれる数字を取り出したいのか、それとも・・。
1〜30以外が入力されると再入力になるのでしたら3文字以上入力したら全部エラーになることになりますよね?いいのでしょうか。

では今わかっている範囲で修正してみますね。


Name: 管理人 [URL]   Date: 2006/08/10(木) 15:32   No:132     
Title: Re:無題    
>Justy様、
やはり初めましてだったのですね^^
いや、以前書き込みしていただいた方に初めましてといったら失礼だなと思ったので^^;

ご指摘ありがとうございます☆
まぁa2iという名前からして(2は英語読みでtoだから)
atoiを思いっきり意識した名前ですからね〜^^;

私が昔苦労した頃を思い出してどうやったらわかりやすいかな?
と日々考えてますm(_ _)m

プログラムの書き方なんて十人十色だし、私の答えが絶対なわけないですから、もっとよりよい書き方があったりしたときはまたご指摘お願いします^^

p.s.下の様な処理でコンテニュー文によって一番最初のwhileに戻したい時はどうしたらいいんでしょうね?
JAVAのようなラベル付けループってCに無いんでしょうか?
ラベル付けループを作ったらエラーになったので今回はgoto文使いました。

while(){
 while(){
  continue;
 }
}



>湘南育ちのマンゴー様

プログラムかいてみました。
色々調べてみましたがこれで一応問題ないかと思います。
入力文章の長さがどれくらいなのかわからないので、とりあえず初期設定は1000にしてあります。
#define LEN 1000
の部分の数字を増やすほど長い文章を受け付けるようになります。

文章でアルゴリズムをかいて説明するより注釈をご覧になった方がわかりやすいと思うので
画像にて確認してください。

緑色が注釈です。

前の投稿で改善するといった部分を改善してありますので基本的なところは何もかわっていません。

プログラムはこちらにございます。

他に何か要望ややりたい処理、バグなどありましたらご一報くださいませ〜♪


Name: 湘南育ちのマンゴー   Date: 2006/08/10(木) 21:07   No:137     
Title: Re:無題    
>管理人様

お忙しい中、回答ありがとうございました。

私の入力がまずかったのかもしれませんが
何度かエラーを繰り返して
(eを大量に打ち込んだり等、わざとエラーがでるような入力を行いました)
それから正規の入力…
「22」や「7」や「30」を入力すると
エラーで返ってきてしまいました。

メールにて詳しい仕様などを記述しておりますので
お時間がある時にでもご覧になって頂ければ助かります。
私の情報伝達不足で二度手間になり申し訳ありません。


Name: 管理人 [URL]   Date: 2006/08/10(木) 21:28   No:138     
Title: Re:無題    
おかしいですね・・。
こちらで何度もエラーがでないかチェックしてから投稿したのですが、、。
22,7,30調べてみましたが私の環境ではきちんと処理できました。
eを100個位入力しましたけど
その後22を入力してもきちんと受け付けたようです。

私が書いた2つめの写真のプログラムはアップロードし忘れてしまいましたけど、
写真どおりに書いていただけました?
もし書き写しミスとかあったのかもしれません・・。

教えていただいたメールアドレスに、実行ファイル付きでお送りしますので、そちらで確認していただけたらと思います。

じゃちょっとお待ちくださいね。


Name: Justy   Date: 2006/08/10(木) 23:34   No:140     
Title: Re:無題    
>まぁa2iという名前からして(2は英語読みでtoだから)
>atoiを思いっきり意識した名前ですからね〜^^;
 すぐわかりました(w
 私もよく "2"を使いますから。

>p.s.下の様な処理でコンテニュー文によって一番最初のwhileに戻したい時はどうしたらいいんでしょうね?

 んー、そうですね。
 ずばり2つ目の while文以降を関数化するというのはどうでしょう。
 int loop_cont;
 do{
  loop_cont = loop_execute();
 } while(loop_cont);

 loop_executeが2つ目のループを実行する関数で、continueの部分は代わりに returnとすることで、綺麗に纏まると思います。


 あ、あと先のプログラムですが入力された文字を受け取るときの処理を以下のようにすると LENは 3で済みますよ。
 
 while(i < (LEN - 1) && (str[i]=getchar()) != '\n')


Name: 管理人 [URL]   Date: 2006/08/11(金) 00:04   No:141     
Title: Re:無題    
1スレがこんな長々となる掲示板なんとかならんのか・・・。
フォント小さくしようかな〜・・、
ビジュアルより利便性を高めようかな〜。どうしよ。

> >まぁa2iという名前からして(2は英語読みでtoだから)
> >atoiを思いっきり意識した名前ですからね〜^^;
>  すぐわかりました(w
>  私もよく "2"を使いますから。

外人って他の文字に置き換えるの好きですよね〜。
are you ready?

rurd?
って短縮してしゃべられた時 は?と思いました。
are ってr  youってuと同じ読み方するからだそうですね。


>  んー、そうですね。
>  ずばり2つ目の while文以降を関数化するというのはどうでしょう。

やはりそうしかないのですね。フラグ1たててbreakしてcontinueしようかと思ったのですが
少しでも解りやすく書きたかったんでgotoにしました。
よくgotoはよくないと言われますけど私には何故悪いのかわかりません。
gotoを使ったほうがよりスマートにかける場合はそちらを使ったほうがよいように思いますけど・・。
そういえばgotoようのフローチャートって見たこと無いですね。
gotoがあるとアルゴリズムとして流れが一連じゃないのでおかしくなるんでしょうかね。

でもそれならJAVAのラベル付きループもgotoと同じですよね?


>  あ、あと先のプログラムですが入力された文字を受け取るときの処理を以下のようにすると LENは 3で済みますよ。

あ、確かにそうですね。
最初長い文章も受け付けるように・・と言われたので長い文章を受け付けるように考えていました。
よく考えたら1~30以外は受け付けないんだからそれでいいですね。
ただLENは3じゃなくて、4ですね。

もし"30e"とか入力されたときはエラーを出さないといけないんで。

while(i < (LEN - 1) && (str[i]=getchar()) != '\n')

と書けば湘南のマンゴーさんがおっしゃってた大量に入力したらエラーになるという事も防げますね。
今まで指摘していただける人がいらっしゃらなかったのでありがたいです。
他にも行うべきエラー処理はあるんですけど、
長くなったり複雑になったりすると読みにくいかなと思って。
実際
while((str[i]=getchar()) != '\n')
これを1行で書くかどうかも悩みましたから。
でもよりスマートに書く事もプログラマーとして学ぶべき道ですね。

突然ですが
この前2チャンの「下手だな〜と思うソース」というスレを見ました。
何の議論にもなってない結局何が言いたいのかさっぱりわかりませんでした。
どう注釈を書くかというどうでもいい題目で何百件も話が進んでいましたが
基本的に私はプログラム内に
/**/のコメントを書くのは嫌いです。
なぜなら全体を
/*



*/
で囲もうとした時に途中に/**/があるとそこでとまってしまうからです・・。
2チャンのようなとこに書き込みしたくなかったんで、心晴らしにココに書いておきます(´Д`;

意見の理由に、
3年くらい前、全ての注釈を/**/で100行位書いた事があって、それ全体をコメントにしたかった時
全て消さなければならないはめになった事がありました・・。
その当時は「置換」というすばらしい機能があることも知らず、
一つ一つ手作業で置換してめちゃめちゃ苦労した事があるという背景があるのです・・。


Name: 湘南育ちのマンゴー   Date: 2006/08/11(金) 01:04   No:144     
Title: Re:無題    
>++ Justy様
>while(i < (LEN - 1) && (str[i]=getchar()) != '\n')
これはいいですね!簡潔でいいです。
まだCを初めて間もない私は稚拙な文しか書けず
こういう書き方は非常に参考になります。
ありがとうございます!

>管理人様
全ては私の入力ミスです。
お騒がせして申し訳ありませんでした。

新たにメールを送信しましたので
お時間のある時にでもご確認下さいませ。


Name: 管理人 [URL]   Date: 2006/08/11(金) 01:08   No:145     
Title: Re:無題    
は〜い、わかりました〜♪
仕様がごちゃごちゃうっとおしいですねぇ・・(´Д`;
何か企業でお使いになるのかと思ったんですが、お勉強中だったのですね。
Cの勉強頑張ってください〜(ノ^^)八(^^ )ノ


Name: 湘南育ちのマンゴー   Date: 2006/08/11(金) 01:23   No:146     
Title: Re:無題    
>管理人様
そうなんです・・・・・
かなり仕様がごちゃごちゃとあって
私の場合これだけでも時間がかかっちゃうのに
調べて打ち込んでエラーを取っての繰り返しで
一週間はかかるだろうなぁと考えていました。

でもゆくゆくはゲームを!?
なーんて考えてたりします。

勉強に励みます!


Name: 管理人 [URL]   Date: 2006/08/11(金) 01:25   No:147     
Title: Re:無題    
いえ、仕様をよく読んでみたらこの規約どおりにとなると数時間かかりそうでした^^;
なのでコメント勝手に変更してしまいましたが先に読まれちゃいましたね^^;

ゆくゆくっていうかもうforとifさえわかればゲームなんて作れますよ^^

ゲームつくりたかったら また別件できいてくださいな〜★


Name: Justy   Date: 2006/08/11(金) 02:25   No:148     
Title: Re:無題    
■ 管理人様

 長いスレになりましたね(w

>よくgotoはよくないと言われますけど私には何故悪いのかわかりません。
>gotoを使ったほうがよりスマートにかける場合はそちらを使ったほうがよいように思いますけど・・。
 そうですね。使えるときには使った方がいいと思います。
 ただまぁ、C++とか try-finallyが使える言語ではなかなか使うケースがないですが。
 なんというのか、制御構造を分解・整理していくと自然と gotoは消えてしまいますので。

>そういえばgotoようのフローチャートって見たこと無いですね。
>gotoがあるとアルゴリズムとして流れが一連じゃないのでおかしくなるんでしょうかね。
 1関数内に複数あるとどう流れるのか判りづらくなるんですよね。
 エラーが起きたときの為の1個だけ、とかなら判りやすいんですが。

>でもそれならJAVAのラベル付きループもgotoと同じですよね?
 あれはまだ制御構造命令の forについているのでまだマシなのではないでしょうか。

>ただLENは3じゃなくて、4ですね。
>もし"30e"とか入力されたときはエラーを出さないといけないんで。
 なるほど。その通りですね。

>/**/のコメントを書くのは嫌いです。
>なぜなら全体を
>で囲もうとした時に途中に/**/があるとそこでとまってしまうからです・・。
 逆に言えばネストしないところであればいいわけで、よく関数の説明のコメントとか、先頭のファイルコメントに使っています。
 ほとんどのコメントが //の中で特に目立たせたいところに /* */を使うとその部分が強調されたかのように感じるので、要所要所で使うといいのかもしれません。


■ 湘南育ちのマンゴー様

>こういう書き方は非常に参考になります。
>ありがとうございます!
 いえいえ。どういたしまして。




Name: 管理人   Date: 2006/08/10(木) 22:29   No:139 解決!       
Title: ご連絡    
湘南育ちのマンゴー様、メールの方返信しましたのでお知らせします。
文字コードの説明で理解していただけたようで幸いです。
その事を用いるとこんな事も出来ます。

printf("%c%c%c%c\n",48,49,50,51);

実行結果

0123

初めてみると結構面白いですよね☆

全角文字は2バイトで管理されています。つまり配列要素2つ分ですね。
ですからこのようなプログラムを実行してみるのも面白いですよ♪

#include<stdio.h>
void main(){
char ch[11]="あいうえお";int i=0;
printf("「あ」が入っているのはch[0]とch[1]\nch[0]=%d\nch[1]=%d\n\n",ch[0],ch[1]);
printf("「い」が入っているのはch[2]とch[3]\nch[2]=%d\nch[3]=%d\n\n",ch[2],ch[3]);
printf("「う」が入っているのはch[4]とch[5]\nch[4]=%d\nch[5]=%d\n\n",ch[4],ch[5]);
printf("「え」が入っているのはch[6]とch[7]\nch[6]=%d\nch[7]=%d\n\n",ch[6],ch[7]);
printf("「お」が入っているのはch[8]とch[9]\nch[8]=%d\nch[9]=%d\n\n",ch[8],ch[9]);
}



Name: 湘南育ちのマンゴー   Date: 2006/08/11(金) 00:58   No:142     
Title: Re:ご連絡    
こんばんわ。
お世話になります。

こういうのって知ってるのと知らないのでは
世界が違うというか何といいますか・・・・
実行してみて物凄く応用が利く!?というか
必須知識なんだろうなぁ・・・と思いました。

いろいろと教えて頂いてありがとうございます。


Name: 管理人 [URL]   Date: 2006/08/11(金) 01:01   No:143     
Title: Re:ご連絡    
プログラムってココまで覚えたからマスターしたという段階は無いに等しいと思います。
いくらでも応用できるし、同じ目的でも人が違えばソースも十人十色。
プログラムって難しくて大変ですが、もしも趣味の範囲でしたらゲームプログラムでも作りながら楽しんで覚えるのが継続にもつながり、早道ですよ☆

また何でも聞いてくださいね^^




Name: 管理人   Date: 2006/08/10(木) 18:04   No:133 解決!       
Title: 文字コードを知ろう!    
湘南育ちのマンゴーさん、結局文字コードがからんだプログラムになってしまったので文字コードについてちょっとお話するので聞いてください。

char型で宣言した変数は1文字なら%cで、文字列なら%sで表示できることをご存知ですね。
でも%dでも表現できるんです。
理由はハードウェアもからむ話になるのですが、
1バイトという記憶容量の単位をご存知でしょうか。

***************ビットとバイトのお話********************

1バイトとは0と1の信号の識別単位が8つまった1つの単位の事です。
0と1の信号を持った1つの記憶単位をビットといいます。
1ビットではいくつの信号が表現できるでしょうか。
0と1、つまり2種類ですね。ではこれが2つくっついたら、つまり2ビットでは何種類の信号が識別できるでしょうか。
00
01
10
11
そうです、4種類ですね。では3ビットでは?
000
001
010
011
100
101
110
111
つまり8種類。これはnビットだと2のn乗通りの識別が出来ることをあらわしています。
2のn乗。今回は3ビットでnが3だから2を3回かけたら8で8通りの識別が出来ます。
1バイトは8ビットと最初に言いましたね。
つまり2の8乗は256だから256通りの信号が区別できるわけです。

***************文字と数字のお話******************

char ch;と宣言すると1バイトのメモリが確保されますね。
つまり256通りの識別が出来るわけです。これを数字で管理しようとすると
0〜255の数字で管理すると都合がよいわけです。
キャラクター型で宣言した時は
0がa
1がb
2がc
という風に数と文字を対応させておくことで、数で文字が管理できるんです。
例えば文字cを表現したいとき。
2に相当する文字 と命令すればcが出てくるわけですね。(これは例なので実際には2じゃないです)

このように全ての文字は数字で管理されているんですよ。
このことをプログラムで確認してみましょう。

以下に続く↓



Name: 管理人 [URL]   Date: 2006/08/10(木) 18:05   No:134     
Title: 文字コードを知ろう!その2    
***************実際に見てみよう!******************]

プログラム

#include<stdio.h>
void main(){
  char c='a';
  printf("%d",c);
}

実行結果

97

このプログラムの意味がおわかりでしょうか。
今文字型でcが宣言されその中にaが入っています。
文字aは何の数字で管理されているのか数字で表現しろ
と命令すると"97"という数字を出しました。
つまりaという文字は数字の97で管理されているんですね。
もうちょっと見てみましょう。

プログラム

#include<stdio.h>
void main(){
  char c1='a',c2='b',c3='c';
  printf("a=%d\n",c1);
  printf("b=%d\n",c2);
  printf("c=%d\n",c3);
}

実行結果

a=97
b=98
c=99


結果をみてみるとわかるとおりアルファベットの順番通り連続した数字で管理されていることがわかります。
ちょっと賢そうに書いてみます。

プログラム

#include<stdio.h>
void main(){
  char c[10]="abcdefghi";int i;
  for(i=0;i<10;i++)
    printf("%c=%d\n",c[i],c[i]);
}

実行結果

a= 97
b= 98
c= 99
d=100
e=101
f=102
g=103
h=104
i=105


表示されていませんけどiの次のjは106だということが予測できますね。
これは文字型で格納された数字も同じ事です。

続く↓


Name: 管理人 [URL]   Date: 2006/08/10(木) 18:06   No:135     
Title: 文字コードを知ろう!その3    
次はそれを文字の数字で見てみましょう。
上とほとんど同じプログラムです。

プログラム

#include<stdio.h>
void main(){
  char c='0';
  printf("%d",c);
}

実行結果

48

文字型の0は数字の48で管理されています。
では数字全部見てみましょう。

プログラム

#include<stdio.h>
void main(){
  char c[11]="0123456789";int i;
  for(i=0;i<10;i++)
    printf("%c = %d\n",c[i],c[i]);
}

実行結果

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57

最後にこれを見てください。
プログラム

#include<stdio.h>
void main(){
  printf("%d",'c');
}

実行結果

48

同じようなプログラムでも違いが分かりましたか?そうです、シングルコーテーションで囲むとそれは数字で扱えるのです。
つまり
if('1'>'0')
は真になります。ですから'0'よりも大きい数字(48以上)で管理されているなら0以上。
'9'以下の数字(57以下)で管理されているなら9以下だということが分かり、
それいがいなら文字であることが分かります。

ですから文字型のchという変数があれば
if(ch>='0' && ch<='9')
このように書くことで数字であるとき真である処理がかけるのです。
以上文字コードに関する説明でした☆

注意:
今回48などと特定の数値を表現したのはわかりやすく説明するためであり、パソコンの環境や使用している文字コードが異なれば
数値も変わってきます。ですのでどんな環境でも文字の0が48で管理されているとは限りません。ですからif(ch>='0' && ch<='9')という書き方をするのです。
コードによって数値は違えど、どんなコードでも0123456789という順番でコードが並んでいることは不変なのでこのような書き方をすることで
さまざまなコードに対応できるわけです。
くれぐれも
if(ch == 48) printf("この文字は0です。");
といった処理は書かないようにしてください。


Name: 湘南育ちのマンゴー   Date: 2006/08/10(木) 20:59   No:136     
Title: Re:文字コードを知ろう!    
こんばんわ。

お忙しい中とても参考になることを教えて頂き
ありがとうございます!
実際にこちらで実行してみて値が出たときは
「おー!」と思いました。

メールを送信しておりますので
お時間のあるときにでもご確認くださいませ。




Name: yukemuri   Date: 2006/08/08(火) 16:50   No:114 解決!       
Title: 入力キーと演算について    
namespace Aname{
* int a, b;
* }
*
* namespace Bname{
* double x, y;
* }
*
* キーボードから入力した値をa, bに代入し、その積(掛け算の答)を求めよ(表示)
* 次にx,yにキー入力し、a, b, x, yの合計を求めよ(表示)
* std無しで。

#include <iostream>

using namespace std;

//名前空間を定義する
namespace Aname{
int a, b;
}
namespace Bname{
double x, y;
}
しかかけません。。


名前空間、なにがなんだかサッパリです・・・>_<



Name: 管理人 [URL]   Date: 2006/08/08(火) 22:08   No:115     
Title: Re:無題    
名前空間は先日もお話したとおりさほど重要なものではありません。
それよりscanfの使い方やgetcharの使い方、C++よりCの基本を勉強していった方が先の勉強の理解も早くなると思います。
キーボードからの入力で計算するのはCの一番最初で勉強する事なので、
無理してC++とかやろうとすると混乱してしまうと思います。
それに、名前空間が何かわからないとおっしゃっていますが、
概念というものは「わからない」というものではありません。

例えば社会の歴史を勉強している時間があるとします。
生徒Aが「歴史わからない」と言っているとします。
歴史の勉強ってわからないというものではありませんよね。
参考書を読んだらその歴史のことがわかりますし、
読めばわかります。
その生徒は読んでいないから知らない=わからないといっているのです。
C++の参考書はお持ちでしょうか。
「独習C++」などがオススメですよ。
この本の引用(ちょっとわかりやすく変更)では、「名前空間」の説明欄に
「C++にはいって数多くの元から決められている関数やクラス、変数の名前が存在し、それぞれが競合してしまう状況がおきてしまいました。例えば乱数生成の関数を作ろうとしてrand()という関数名を考えたとします。しかしこれはrand()という元から定義されている関数の名前と重なってしまうため使えません。このような状況を回避するために、様々なコンテキストで同じ名前を使用しても競合が発生する事が無いように作られたものが名前空間です。」
と。
つまり名前がかぶらないように作られたものですね。
読んだらわかりますよね?概念は簡単な事です。

解らない事が多すぎてちょっと参考書を読めばわかることでも全部がわからないように感じてしまっているのではないでしょうか。

厳しい事を言うようですが、基礎から着々。これは実は一番の近道ですから。
C言語って難しいですよね。だからこそ焦らず、しっかり参考書を読み直し、頑張ってください。

私は柴田望洋著の明解C言語入門編と実践編、そして独習C++。
この3冊を端から全部読んでいけば
(もちろん自分でもプログラムを書いてみながら。)
学校に行かなくても(私もまだまだですがそれでも)私位の力は付きます。
最初の2冊は1ヶ月あれば全部マスターできるでしょう。
プログラムとは覚える必要が無いのでその分楽です。
あ、あのページにこの処理のことかいてあったな
そういうのさえ付けば、解らない時そのページをみながらプログラムを書けばいいのですから。

わからないことがあれば何でも聞いてください。
自分でも参考書にその事が書いてあるページをしっかり読んでみてください。
C言語は難しい学問です。頑張っていきましょう。


Name: yukemuri   Date: 2006/08/09(水) 20:58   No:123     
Title: Re:無題    
レス遅くなりました〜♪
台風もあっという間に去りましたね…。
今日はとても涼しく快適に寝れそうですzzz。

さて、
辛口なご意見、有難う御座います。感謝です☆
最近、授業が加速気味でややブルーでした^^;

もう一度、原点に戻り、仕切りなおししたいと思います。
いつも的確なアドバイスを頂き有難う御座います☆
今日は継承とオーバーライドのあたりをやりました。


Name: 管理人 [URL]   Date: 2006/08/09(水) 21:38   No:124     
Title: Re:無題    
もう継承ですかぁ・・。
すごいスピードですね。
まぁ3ヶ月で3つをマスターするスケジュールですからそれくらいのスピードじゃないとモーラできませんよね。
きっと私だと付いていけないと思います;

プログラムを学んでいらっしゃるのは
就職のためですか?
趣味のためですか?
就職のためでしたらかなり勉強しないといけないと思いますけど
趣味でしたらプログラムというのは
ifとforさえわかればほぼ全ての処理はかけますよ。
DXライブラリを使えばもうyukemuriさんのレベルで十分簡単なゲームの1つ位作れると思いますよ。
おもしろくないプログラムの勉強を続けるより、
ゲームを作りながら、「こんな処理はどうしたらいいのかな」と思ったとき、参考書を広げて勉強する方が
ずっと長続きもし、楽しくマスターできる気がします。

もしも趣味の範囲で勉強されるのでしたら
ご自分でゲームなど作ってみながらプログラムを勉強されてはいかがでしょうか?


Name: 管理人 [URL]   Date: 2006/08/09(水) 22:57   No:125     
Title: Re:無題    
例えばライブラリ使わなくてもC言語単体でもゲームは出来ますよ。
ゲームにはなくてはならない要素。
乱数。
ランダムな数字を生成するプログラムですね。
例えばジャンケンのプログラム作るにしても相手が毎回同じ手しか出さなかったらゲームになりませんよね。
つまりゲームには乱数が不可欠です。
乱数を使えばライブラリなどなくでもゲームは出来ます。
一番簡単なゲームはジャンケンでは無いでしょうか。

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

void main(){
  int a,b;
  printf("0=グー。1=チョキ。2=パー。\n\nジャンケンで・・\n");
  while(1){
    scanf("%d",&a);
    b=rand()%3;
    if(b==0) printf("相手=グー。");
    if(b==1) printf("相手=チョキ。");
    if(b==2) printf("相手=パー。");
    if(a==b){
      printf("あいこで・・。\n");continue;}
    else if(a==b-1 || a==2 && b==0){
      printf("あなたの勝ち!\n");break;}
    else{
      printf("あなたの負け!\n");break;}
  }
}

これはジャンケンプログラムです。
アルゴリズム自体はとても簡単ですね。
これを画像なり音声なりつけたしてより見栄えのするプログラムを作ればゲームらしくなりますね。

このサンプルはとても簡単な構文しか使ってありませんよね。
確かにとても無駄の多いプログラムですが、
簡単な構文しか使わなくても同じ処理は出来るのです。

ゲームプログラムを作るのは大好きなので
「こんなゲームを作りたいんだけどどうやって作ればいいのか」
などの質問とか大歓迎ですし、
是非ゲーム作る楽しみを実感してみてください。




Name: 西川ドザエモン   Date: 2006/08/08(火) 22:23   No:116 解決!       
Title: 電卓プログラムについて    
電卓プログラムを書かないといけないんで困ってるんですけど、どうやって書いたらいいんでしょうか。
答えだけでいいんで、よろしくお願いします。



Name: 管理人 [URL]   Date: 2006/08/08(火) 22:43   No:117     
Title: Re:無題    
こんにちは^^
西川ドザエモン様。

台風が来ていますが、そちらの地域は大丈夫でしょうか。
こちらは今日琵琶湖花火大会だったので、ちょっと近くまで行ってみようかと思いましたが中止になっていたようです。

さて、回答ですが、答えだけでいいのでしょうか?
コンパイル環境とかはちゃんと整えてありますか?
プログラムだけでよいのでしたらプログラムをお書きします。

*************************
#include<stdio.h>
void main(){
  double x,y,z; char ch;
  scanf("%lf %c %lf",&x,&ch,&y);
  if(ch=='+') z=x+y;
  if(ch=='-') z=x-y;
  if(ch=='*') z=x*y;
  if(ch=='/') z=x/y;
  printf("%f\n",z);
}
*************************

一番簡単な電卓プログラムはこちらです。
これは四則演算しかしないプログラムです。
仕様は
値Aを小数点付きで入力。
スペースをあけて演算子
+-*/のどれかを入力し
スペースをあけて値Bを入力。
実行結果はこちらです。

*******************
2.0 / 3.0
0.666667
*******************

もしルートの計算や計算の優先順位を考慮した計算プログラムが必要でしたら
少し難しいプログラムになります。

どんな仕様のプログラムが必要でしょうか?
よければお知らせください。


Name: 管理人 [URL]   Date: 2006/08/08(火) 22:51   No:118     
Title: Re:無題    
四則演算において優先順位を考慮したプログラムは少し複雑になります。
例えば
「10/5+2*5」と入力し、エンターを押す。その後Ctrl + Zを押してエンターを押す。するとかけざんや足し算の優先順位を考慮した正しい計算結果が表示されます。

#include<stdio.h>
#include<string.h>
int num[20],atainokosu;
char input_str[100],enzanshi[10],str[10][20];

int a2i(char*str){
   int cnt;
   int num=0;
   for (cnt = 0; (str[cnt] >= '0') && (str[cnt] <= '9') ; cnt++)
      num = 10 * num + (str[cnt]-'0');
   return num;
}

int getch(){
   int i=0;

   while( ( input_str[i] = getchar() ) != EOF)
      i++;
   input_str[i-1]='\0';
   return 0;
}

int divch(){
int i=0,j=0,s=0;
   while(input_str[i]!='\0'){
      if(input_str[i] == '+' || input_str[i]=='-' || input_str[i]=='*' || input_str[i] =='/'){
         enzanshi[j]=input_str[i];
         j++;
         s=0;
      }
      else{
         str[j][s]=input_str[i];
         s++;
      }
      i++;
   }
   atainokosu=j;
   for(i=0;i<=j;i++)
      num[i]=a2i(str[i]);
   return 0;
}

int calc(){
   int i=0,j;
   while(i<=atainokosu){
      if(enzanshi[i]=='*'){
         num[i]=num[i]*num[i+1];
         j=i;
         while(j<=atainokosu){
            num[j+1]=num[j+2];
            enzanshi[j]=enzanshi[j+1];
            j++;
         }
      atainokosu--;
      }
      else if(enzanshi[i]=='/'){
         num[i]=num[i]/num[i+1];
         j=i;
         while(j<=atainokosu){
            num[j+1]=num[j+2];
            enzanshi[j]=enzanshi[j+1];
            j++;
         }
      atainokosu--;
      }
      else
         i++;
   }
   i=0;
   while(0<atainokosu){
      if(enzanshi[i]=='+'){
         num[i]=num[i]+num[i+1];
         j=i;
         while(j<=atainokosu){
            num[j+1]=num[j+2];
            enzanshi[j]=enzanshi[j+1];
            j++;
         }
      atainokosu--;
      }
      else if(enzanshi[i]=='-'){
         num[i]=num[i]-num[i+1];
         j=i;
         while(j<=atainokosu){
            num[j+1]=num[j+2];
            enzanshi[j]=enzanshi[j+1];
            j++;
         }
      atainokosu--;
      }
      else
         i++;
   }
   return 0;
}

int main(){
int i;
getch();
divch();
calc();
printf("計算式=\"%s\"\n結果=%d\n",input_str,num[0]);

return 0;
}

説明:
プログラムの中身について説明します。
実際にプログラムを上から順に見ながら説明をみてください。

まずa2i()関数は無理に理解しなくて結構です。
この関数名を検索したらヒットする有名な
「文字列としての数字」から「int型の数字」に変換する関数です。
いつもコピペで使えば良いので構造を無理に覚えなくて大丈夫です。

getch()関数で入力文字列を取得します。
getcharは標準関数です。
EOFは^Zが入力された時判断するものです。
Ctrl Z を押すのはそのためです。
なぜinput_str[i-1]に\0を代入しているかと言うと文字列は終端記号が必要で、しかも^Zする前に1回エンターを押しているせいで\n改行記号が1つ前にはいっているため、このような代入をしています。

divch()関数は演算子ごとに塊をわけています。
数字文字列は数字文字列、記号は記号の配列に代入しています。
atainokosuに項数を格納します。いくつ項があるか数えています。
終わったら、文字列としての数字をint型の数字にa2iで変換します。

calc()関数で実際に計算しています。
まず四則演算って+-*/のうち*/を先にしないといけないですね。
whileをその2つに大分します。
*/を全部計算しおわったら+-の計算をしています。

今の項と次の項を計算し計算結果を今の項に代入します。
代入し終わったら計算した次の甲を順次左によせていきます。

例:
num[0]に3
num[1]に2
num[2]に10
num[3]に2
が入っているとする。
num[0]*num[1]の計算結果をnum[0]に代入する。
後は左よせする。
num[1]に10
num[2]に2
を代入。

3 * 2 + 10 - 2

6 + 10 - 2

こんな感じです。
演算子も
enzanshi[0]=='*'
だったものを
enzanshi[0]=enzanshi[1]して+に変化させています。
つまり左よせしています。

四則演算すべてを計算し終わったらnum配列は[0]だけに計算結果が残るので
これを出力すればよいということです。




Name: 管理人 [URL]   Date: 2006/08/06(日) 05:28   No:104       
Title: 今日は原爆記念日。    
C言語とは関係ありませんが・・。

今日は広島の原爆記念日です。
8時15分。皆さん是非黙祷をささげましょう。
戦争の悲惨さを忘れてしまったらまた、同じ過ちを繰り返してしまいます。
広島・長崎以外の人はあまり知らないでしょうけど、時々でいいので、
過去にあった悲惨な出来事を学んでみてください。
これからの歴史のありかたがわかると思いますm(_ _)m

過去の悲惨な出来事を繰り返さないために。
過去の悲惨な出来事の被災者になった方のために。

黙祷をささげますm(_ _)m



Name: yukemuri   Date: 2006/08/06(日) 10:53   No:105     
Title: 関連したお話    
人間とは皆自己愛が強いものです。
嫌や思いもしたくないし、被害も受けたくない。
幸せに暮らしたいと誰もが望む権利ですしね。
温古知新、学ぶ事は世の中沢山ありますね。





Name: yukemuri   Date: 2006/08/06(日) 10:58   No:106     
Title: Re:今日は原爆記念日。    
タコのドロップ率悪すぎ…クラクラb 時々2〜8回攻撃、スキル上げでタマリマセンナ…w

Name: 管理人 [URL]   Date: 2006/08/06(日) 14:33   No:107     
Title: Re:今日は原爆記念日。    
クラクラ25万でRMTされてますよね〜・・、もしも両手にもとうとうしたら50万・・;

Name: yukemuri   Date: 2006/08/06(日) 17:46   No:108     
Title: え〜    
は、はいぃ?25万?RMTでそんな値上がってるの…?異常だ…。LSのメンバーでサービス開始組は結構持ってたけど、更にタコのドロップ激低だけど、そこまでの価値ないよ;_;

Name: 管理人 [URL]   Date: 2006/08/06(日) 20:02   No:109     
Title: Re:今日は原爆記念日。    
確かに両手に持ってみたい気はしますが、50万あったら断然中古の大型CBRでも買った方がいいな〜^^;
ネトゲーにそこまで出す人はリアルに使い道の無いゲーオタばかりでしょうね・・。


Name: yukemuri   Date: 2006/08/06(日) 23:32   No:110     
Title: 無題    
バイク乗るんですか〜。私も大学時はバイクで学校いってましたよ〜ヤマハRZ250やFZR250でw もしかして・・・限定解除ライダーですか?私はとりあえず中型免許までです。この時期、バイクは、ちょ〜厚いですよね。特に信号で停止した時w
もう、随分乗ってないなぁ。。

・・・てか、リアルに買う人いるのだろうか・・・。ヤフオクでクラクラ20万で出品されてるの観たけどねぇ。まぁ、どうでもいいですが:p


Name: 管理人 [URL]   Date: 2006/08/07(月) 00:23   No:111     
Title: Re:今日は原爆記念日。    
お〜、私のバイクはFZR400Rですよ^^
古いバイクですけど、馬力が高いし、音も好きだし、いいバイクですよねFZR〜♪

次買うバイクはYAMAHAのR1と決めています。
130万もするからいつの話かわからないけど・・。

初めてバイク乗った時はNS-1リミッター解除して乗ってました。あの時よくつかまらなかったな〜と思います^^;

クラクラは
この辺とか20〜25万ザラみたいですねぇ・・。
http://trade.netgame-rmt.jp/read.xpl/ff/ff_item/#c242243

とりあえず小遣いでもあればDirectXの参考書ほしいです・・。
今はDirectX9になってしまってるから
どこの本屋行ってもDirectX7の本ないんですよね〜。




Name: yukemuri   Date: 2006/08/05(土) 19:01   No:100       
Title: クラクラ    
こんにちは。今日はほんと溶けるような暑さでしたね:-(
支離滅裂に色々、質問しまくっていつも後から反省してます:l
クラス・・・クラス定義、メイン関数定義、メイン関数・・
クラスのところ結構、面白いですね・・
構造体のところも後からちゃんと復習しようと思ってます。
とにかく、学校の進みが速くて、わかるところからすこしづつ・・
やってますが、やっとクラスの基本概念?みたいなもの(パターン)掴めてきたような・・・
何時間も本をにらめつけて、すこしづつ、プログラム・・。
わかったようで、わからない。でも少しは理解できてきた。
そんな曖昧な状況ですかねぇ。
管理人さまも、院試験大変ですが、頑張ってくださいね:-)

strcpyを使用するときの#cstringと#include<string.h>の
違いって何でしたっけ?_?

あとインスタンス生成後、ac.display();で、
ゴミを表示するのって何か意味あるのでしょうか?
↑ちょと質問の意味、わからないと思いかもです;(



#include <iostream>
#include <cstring>

class Account{
char name[20];
int balance;
public:
void set_name(char *pname);
void set_balance(int pbalance);
void display();
void deposit(int money);
};

void Account::set_name(char *pname)
{
strcpy(name, pname);
}

void Account::set_balance(int pbalance)
{
balance = pbalance;
}

void Account::deposit(int money)
{
balance += money;
}

void Account::display()
{
std::cout << "口座名義:" << name << "残高:" << balance << std::endl;
}

int main(){
Account ac;

//ac.display();

ac.set_name("タルタル\t");
ac.set_balance(1000000);
ac.deposit(25000);
ac.display();

Account ad;

//ad.display();

ac.set_name("ガルカ\t");
ac.set_balance(700000);
ac.deposit(2000);
ac.display();

return 0;
}



Name: yukemuri   Date: 2006/08/05(土) 19:06   No:101     
Title: Re:クラクラ    
adのインスタンス生成後のメンバ関数呼び出しのところちょと間違ってました。ad.set_name("ガルカ\t");です。

Name: 管理人 [URL]   Date: 2006/08/05(土) 23:35   No:102     
Title: Re:クラクラ    
こんにちは、yukemuri様。
今日は出かけてて、今帰ってきました。
また12時から外出するので、ちょっと手短ですがお返事書きますね^^;

まず、includeという意味はおわかりでしょうか?
関数の定義が入っているファイルのインクルードですね。
stringと言うのは文字列と言う意味で、文字列を扱う関数を使いたければその定義がはいっているstring.hというヘッダファイルをインクルードするわけです。
同様に数学のサインコサインの計算などをする数学的関数を使いたければmath.hをインクルードします。
するとsin(),cos()などの関数が使えるようになります。

上記の方法はCの方法であり、C++では「ヘッダファイル」をインクルードする必要がありません。
ヘッダ名をインクルードするだけでよいのです。
以前までは文字列を扱う関数を使うときにはstring.hという拡張子.hのヘッダファイルを使用していましたが、
C++からはcstringというファイル名を示すだけでよくなりました。
両者とも基本的処理内容はほぼ一緒ですから同じ事ができますが、C++では後者の利用が推奨されています。
C++でsrting.hをインクルードする事も出来ますが、コンパイルの警告で「古いやり方です」みたいな事を言われてしまいます。
実際は後者のやり方だとnamespace(名前空間)などあるのですが、別に知らなくてもなんら問題はありません。
もしも全く両者同じ働きをさせたい場合は
インクルード行の次に
using namespace std;
と挿入する事で処理が同じになります。

後、ad.display();についてですが、コンストラクタ関数を使っているならその確認のために表示させてるのかと
思いましたがコンストラクタ関数は書いて無いようですね。
コンストラクタ関数とはオブジェクト生成時に初期化をしてくれる関数です。
今回の処理ではdispする前に初期化が行われていないのでおかしなデータ(ゴミデータ)が表示されるはずですが、
コンパイラによっては自動的に初期化してくれるコンパイラもあります。
コメントアウトをはずすと何が表示されましたか?

考えられる可能性は2つあります。

・最初にゴミが表示される事で、この時点では何もデータが格納されていない
 事を確認させたかった。(後の処理でデータが格納される事を示したかった)

・コンパイラによっては自動的に初期化をしてくれるという事を示したかった。

私がつかっているVisual Stdio.NETでは自動的に初期化してくれます。
私の推測する限りでは前者の可能性が大きいです。
最初にはゴミがはいっているメソッドにのちの関数の処理でデータが
格納された事を示したかったのでしょう。
順番に出力する事でどこでどのような処理が行われているか示す事は私もよくやる事です。

ゲームプログラムを作っている時も「この時この変数は何がはいってるんだっけ?」と思ったときはまずprintfしてみます。

そういう先生の意図じゃないでしょうかね。


Name: 管理人 [URL]   Date: 2006/08/05(土) 23:36   No:103     
Title: Re:クラクラ    
クラクラってクラーケンクラb・・・



Name: 管理人 [URL]   Date: 2006/08/04(金) 00:39   No:94       
Title: yukemuriさんへ    
オーバーロードのプログラムを作れという問題ですが、どの辺でつまずいていらっしゃいますか?

オーバーロードのプログラムを作れ。
→要は同じ名前の関数を作ればいいんですよ。
ただし、全く同じ名前じゃ区別が付かないから引数を変えるんです。

ちょっとこれを見てください。

引数の数値を全部たす関数
plus()関数というのを作るとしましょう。

この関数には、たしてやる引数を与えてやります。
つまりplus(int a, int b)    とした場合はa+b の値を返すのです。
そしてplus(int a, int b, int c) とした場合はa+b+cの値を返すような関数をもう一つ作れば、同じ名前の関数で引数の違う関数を作った事になりますね。
これがオーバーロードです。

値を返してやるのは読んで字の如くreturnです。
リターンで和を返すわけですから
plus(int a, int b)の場合はreturn a+b;で出来ます。
もうほとんど答えを言ってしまいましたが、

私から演習問題を出します。

・2つの数値を引数として与えた場合は2つの引数の和を返し、3つの数値を引数として与えた場合は3つの引数の和を返すプログラムを作りなさい。

これが出来たら質問の問題も出来ます。


ココから下は回答を書きますから自分でプログラム作ってみるまで見ないで下さい。

答えはこうなります。

******見ないで自分でプログラム先に考えて実行してくださいね〜******

#include <iostream>
using namespace std;

plus(int a,int b){
  return a+b;
}

plus(int a,int b,int c){
  return a+b+c;
}

int main(){

  cout << "1+2 = " << plus(1,2) << "\n";
  cout << "1+2+3 = " << plus(1,2,3) << "\n";

  return 0;
}

**実行結果**
1+2 = 3
1+2+3 = 6
************

どうでしょう。自分のプログラムと同じように出来ていましたか?
もし出来なかった場合、回答をみたら「な〜んだ」と思ったと思います。
そうです、オーバーロードとか言葉は難しそうでもとても簡単な概念です。

もうお分かりになったと思いますがもう一つだけ問題です。

問題
・2つの数値を与えた時はその平均を返し、1つの数値を与えた時は"計算できません"と出力するプログラムを書きなさい。

ちょっとやってみてください☆

今までのところでどこかわからないところがありましたら遠慮なくココがわからないと言って下さいね。



Name: 管理人 [URL]   Date: 2006/08/04(金) 01:01   No:95     
Title: Re:yukemuriさんへ    
そういえば最初に広く浅く学ぶカリキュラムだとおっしゃっていましたけど、十分やってること全部マスターできれば相当深いと思いますよ^^;
きっと線形リストや二分探索木とかも終わったのでしょうから
オーバーロードやクラスと言った範囲は大学でも中の上かそれ以上だと思います^^;(オーバーロードは簡単ですけど範囲としてね)
大学って実際はプログラムの授業は週に3回位しかないし、他の言語もやるし、3年生までしか授業は無いし、他の授業も多いし、やる範囲はかなり狭いです。
VC++とかしませんしね。
4年の研究でC言語をやる人はもっともっと深くなるとは思いますけど、Cを使わない人もいますし、
ソフトウェア開発論とかの卒論する人はCかくよりUMLという図なんかをたらたら描く方が多いので
やらない人はCの知識は3年でとまったままじゃないかと思います。
基本的なことしかしないんで、大学は。知識付けたかったら自分で家で勉強するしかないです。
だから情報学科卒業しても「連結リストのプログラムを参考書見ずにかけ」といわれたら5人に2人位はかけないんじゃないでしょうか?
だからもしも今授業うけてらっしゃる所が「どうせ大学じゃないから」みたいにお思いでしたら(思ってなかったらごめんなさい;)全然違いますから、とっても大学以上のすばらしい知識が付くと思いますから頑張ってください。
私もVC++は詳しくありません;
ゲームの起動画面でMessageBoxを出した位でしょうか^^;
基本的にVC++とかわからなくてもゲームプログラム書けるんで、ずっとDXライブラリで遊んでました^^;

そもそも3ヶ月で3種類マスターするカリキュラム体制が鬼のようですが・・。
3ヶ月の内容が全部理解できたらきっと企業で通用するようなスキルがつくと思います☆
頑張ってください^^


Name: yukemuri   Date: 2006/08/05(土) 05:22   No:98     
Title: Re:yukemuriさんへ    
有難う御座います:-)
最近、夏風邪やらにやられてて、集中できなんですが
頑張ります。励ましのお言葉有難う御座います〜。
また落ち着いたら、書き込みさせて頂きますね♪


Name: 管理人 [URL]   Date: 2006/08/05(土) 05:29   No:99     
Title: Re:yukemuriさんへ    
夜更かしか早起きか?
yukemuri様もイイ生活リズムされていらっしゃいますねw
最近朝にならないと寝られない変なくせがついてしまいました^^;
もう最近
14時起床。昼飯。
15時→20時プログラミング・院試対策
20時夕飯
21時→a.m.8時プログラミング・院試対策
というありえない生活しています^^;
健康基本ですからしっかり治してくださいね^^




Name: c   Date: 2006/08/04(金) 01:24   No:96       
Title: 無題    
学校の課題です。

・クラスの身長、体重、名前、生徒番号を構造体で管理し、身長と体重のそれぞれ平均を出せ。



Name: 管理人 [URL]   Date: 2006/08/04(金) 01:52   No:97     
Title: Re:無題    
c様こんばんは^^

最近暑いですね。もう管理人は毎日クーラーつけっぱなしで、今月の電気代の請求が怖いです・・;

そういえばアメリカは40度とかで電気の消耗が激しいから政府関係の建物電気消してるらしいですねぇ。
スキーができるから冬が好きです私は(_ _|||

さて、本題です。
学校の課題ですか。大変ですね。

まず、どこまでおわかりでしょうか?
構造体の使い方はわかりますか?

それに仕様がわからないのですが、
身長や体重は元々数値をいれておいていいんでしょうか?
それともscanfなどで数値をキーボードから入力させるんでしょうか?

よくわからないですけど、一応キーボードから入力するという前提でサンプルをかいて見ました。

このサンプルは番号 名前 身長 体重をスペースで区切って入力することでとりこまれ、
breakすると身長の平均が表示されます。

一度コンパイルし、実行してみてください。

何かわからなければ何でも聞いてくださいね。

*****************sample*******************

#include <stdio.h>

struct seito{
  int num;
  char name[20];
  double height;
  double weight;
};

struct seito students[10];

void main(){
  int i,j,total_height=0;
  printf("生徒番号 名前 身長 体重をスペースで区切って入力してください。\n");
  printf("入力をやめる時は全て0で入力してください。\n");
  for(i=0;i<10;i++){
    scanf("%d %s %lf %lf",&students[i].num,students[i].name,&students[i].height,&students[i].weight);
    if(students[i].num==0){
      printf("breakします。");
      break;
    }
    printf("番号:%d 名前:%s 身長:%.1f 体重:%.1f\n",students[i].num,students[i].name,students[i].height,students[i].weight);
  }
  j=i;
  for(i=0;i<j;i++){
    total_height+=students[i].height;
  }
  printf("身長の平均は%.2fです。\n",total_height/(double)j);
}

*****************************************




Name: yukemuri   Date: 2006/08/03(木) 11:33   No:85       
Title: えっ    
こんにちは。yukemuriです
下記のサンプルプログラムから、
「MyType 構造体のメンバーnに値をセットする関数 setn(MyType, int)を作成する。(オーバーロード)」してプログラム作れと
いわれてもサッパリなんですが・・・
最近、講師の言っている日本語すらわからなくなってきましたw


/**
* sample
*
*/

#include <iostream>

struct MyType{
int n;
char c;
};

void setn(MyType &m){
m.n = 20;
}

int main(){
MyType mytype;
mytype.n = 10;
mytype.c = 'A';

std::cout << "mytypeのメンバ n = " << mytype.n << " mytypeのメンバ c = " << mytype.c << "\n";

setn(mytype);
std::cout << "mytypeのメンバ n = " << mytype.n << " mytypeのメンバ c = " << mytype.c << "\n";

return 0;
}



Name: 管理人 [URL]   Date: 2006/08/03(木) 16:16   No:88     
Title: Re:えっ    
見るからにCの授業は終わってこれからC++の授業にはいりま〜っすって感じですね^^;

でもやってる事はごくごく簡単です。
ですので落ち着いて考えてみたら大丈夫ですよ。
C++のレベルならホントに入門にふさわしい問題だと思います。
ではC++に入る前に構造体の勉強はされていますか?
これは構造体の問題なので。

以前C言語教育ソフトのようなものをつくって販売しようかな・・と考えていて作りかけてやめたソフトがあるんですが
それをちょっといじくって構造体の説明が実行されるように改良してみました。

http://dixq.net/board/exe/Clang.zip

よかったら私の作ったC言語教育ソフト、作りかけですが見ていただけたらと思います。
ただ
「本当に作りかけです。」
しょぼいのでご了承ください・・。

まずzipファイルを解凍して、その中のexeファイルをダブルクリックします。

画面が表示されますから

後は説明画面にしたがって自分が読みたいペースで
エンターキーを押してください。

終了したい時にはいつでもEscボタンを押せば終了できます。

女の人と男の子が会話するように話が進んでいきます。
これは画面に人の絵がまだ出てないので違和感がありますが、
女の先生と男の子が対話しながらC言語について教えてもらってる
という設定です。


Name: yukemuri   Date: 2006/08/03(木) 22:38   No:91     
Title: Re:えっ    
ん〜すばらしい〜☆
単純明快で分かりやすいですね。構造体説明アプリ☆

構造体の概略は掴めました。が、後は例によって演習ですかね:-)
今日、クラスについてやりました。
構造体よりクラスのほうがかなり優秀な感じが・・。
C++になるとCの拡張性を秘めていて、Cの基本概念の重要性を
感じます。
ですが、逆に言えばCの概念、例えば構造体ってCでは使いますが、
C++では殆ど使わないと説明受けましたがほんとでしょうか。
一概に使う、使わないというのはCaseBycaseでしょうが。。
基本を分かった上で、構造体、クラスを使い分けるのでしょうねぇ。覚える事一杯で、もう頭がオーバーフロー気味ぇ。orz..
クラスのメンバ関数とかはC++の中心部ですかne?


Name: 管理人 [URL]   Date: 2006/08/03(木) 23:41   No:92     
Title: Re:えっ    
C言語教育ソフトの作りかけをご覧頂ありがとうございます^^;
そうですねぇ、構造体って確かに使わずにプログラムする人もいますけど、私はC言語初心者の頃よく使ってて慣れちゃったんで今でもよく使ってます。
おそらくよりスマートな書き方をしていないからでしょうね^^;

C言語とC++の違いを一言で言え といわれたら
「クラスの概念があるかないか」
と答えられると思います。

クラスの概念があるとオブジェクト指向という考え方が出来るんです。
例えば、yukemuri様が今日新しいテレビを購入されたとしましょう。
以前使っていたテレビはSONYのWEGA,KV-29DS55でしたが、
今回は奮発してパイオニアのプラズマPDP-436HDを購入したとします。

yukemuriさんは以前のソニーのテレビと、プラズマはテレビの形もメーカーも全然違うのに、
なんて事無くチャンネル操作が出来て、テレビに線をつないでテレビを見ることが出来ます。
新しいプラズマテレビの構造や電子回路図も知らないのに。

なぜでしょうか。
テレビと言うのはテレビ放送をうつすものであり、それを操作するためには、たいていチャンネルの先にある「電源」ボタンで電源をいれて、数字のボタンでチャンネルチェンジをする。
という共通した決まりがあるからです。

メーカーによって電子回路や設計はまるで違うはずでも、操作表面だけ一致していればユーザーとしては関係ないわけです。
yukemuri様は電子回路などの構造を知る必要が無く、電源を押すと言う簡単なメッセージだけ送ればよいわけです。

これがオブジェクト指向です。
物(モノ)=英語でobjectオブジェクトですからこのような手法を私達は
object oriented programing等といいます。

このようなプログラムはクラスを使うことで実現できます。
JAVAは最初からクラスにわけてプログラムしますが、
主流になっている高級言語はこのクラスがあるためにメジャーになっているんだと思います。

C++になるとちょっとした書き方がかわったり、
(printfがcoutになったり)
::などの見たこと無い記号がでてきたり、
戸惑うとは思いますが、落ち着いて参考書をみていけばわかりますよ。

とにかくプログラムを書いてみる
これ以上のプログラムの習得方法はないですから。

学校の授業で聞いてるだけじゃさっぱりわからないという意味では、一番難しい科目じゃないでしょうか。

頑張ってくださいね。


Name: 管理人 [URL]   Date: 2006/08/04(金) 00:08   No:93     
Title: Re:えっ    
・・で、オーバーロードのプログラムできました?



Name: お肉   Date: 2006/08/03(木) 14:15   No:86       
Title: 無題    
はじめまして。
学校でプログラムの勉強をしてるのですが、先生の言ってることが全くわかりません。
それで、宿題が出てしまったので困っています。
宿題は、
「何個かの複素数を入力した後、最後に1を入力して[Enter]キーを押すとそれまでに入力した複素数とそれらをすべてかけ算した結果を表示するプログラムを作れ。なお、連結リストを必ず用いること。」
助けてください。



Name: 管理人 [URL]   Date: 2006/08/03(木) 16:23   No:89     
Title: Re:無題    
こんにちは。お肉さん。
お困りのようですね。
ではどこら辺までわかってどこからわからないのか、明確にしましょう。

1、・連結リストを用いなければ作る事ができますか?
2、・入力した数値を全てかける事はできますか?
3、・scanfなどの関数は使えますか?
4、・関数の値受け渡しは出来ますか?
5、・ポインタについては理解していますか?

1〜5のうちわからない項目があったら教えてください。
それに最適な回答をしようと思いますので。


Name: 管理人 [URL]   Date: 2006/08/03(木) 16:52   No:90     
Title: Re:無題    
ではサンプルプログラムを書いてみました。

以下のプログラムは入力した整数を1が入力されるまで格納し、
1が入力されたらそれまでの整数をすべて掛け合わせて表示するものです。
コンパイルしてみてください。

*************サンプルプログラム****************

#include <stdio.h>
int list[100];

void main(){
  int i=0,j,total=0;
  while(1){
    scanf("%d",&list[i]);
    if(list[i]==1)
      break;
    else
      i++;
  }
  total=list[0];
  for(j=1;j<=i;j++){
    total = total * list[j];
  }
  printf("total > %d <\n",total);
}

****************実行結果*********************
2(←これは手入力)
3(←これは手入力)
4(←これは手入力)
1(←これは手入力)
total > 6 <
*********************************************

画面のプログラムはインデントされないようにスペースを全角で行っているので
このままコピーするとエラーになります。
こちらにサンプルプログラムを用意しましたので
お使いください。

http://dixq.net/board/program/list1.cpp


ほぼ全く同じ処理内容で文字による説明を入れたのが以下です。
処理の流れは変わっていません。
ただprintfによって説明をいれただけで
それと#defineによってMAXを定義しました。

*************サンプルプログラム****************

#include <stdio.h>
#define MAX 100

int list[MAX];

void main(){
  int i,j,total=0;
  while(1){
    printf("\n*****************%d個目*******************\n",i+1);
    printf("数値を入力してください。(終了は1を入力。)\n");
    scanf("%d",&list[i]);
    if(list[i]==1){
      printf("\n******************************************\n");
      printf("breakします。\n");
      break;
    }
    else{
      printf("%d番目の数値に%dを格納しました。\n\n",i+1,list[i]);
      i++;
    }
  }
  total=list[0];
  for(j=1;j<=i;j++){
    total = total * list[j];
  }
  printf("\n\n全て掛け合わせた計算結果は > %d < です。\n",total);
}

*******************実行結果************************
*****************1個目*******************
数値を入力してください。(終了は1を入力。)
2
1番目の数値に2を格納しました。


*****************2個目*******************
数値を入力してください。(終了は1を入力。)
3
2番目の数値に3を格納しました。


*****************3個目*******************
数値を入力してください。(終了は1を入力。)
4
3番目の数値に4を格納しました。


*****************4個目*******************
数値を入力してください。(終了は1を入力。)
1

******************************************
breakします。


全て掛け合わせた計算結果は > 24 < です。
******************************************************

サンプルプログラムはこちらです。
http://dixq.net/board/program/list2.cpp

このプログラムでリストを使えば出来ます。
それと計算式を複素数用に変更する必要がありますね。

頑張ってみてください。
どうしてもわからなかったらまた聞いてください。




Name:   Date: 2006/08/03(木) 06:13   No:83       
Title: 無題    
「三角関数sinとcosのグラフを描かせるプログラムを作成する。」という問題なのですが、色々本で調べてもうまくいきません。forで繰り返しをするまではなんとかわかったのですが。・゜・(ノД`)・゜・。


Name: 管理人 [URL]   Date: 2006/08/03(木) 06:21   No:84     
Title: グラフについて    
こんにちは潔様^^
お困りのようですね。
学校の宿題でしょうか?
宿題はせっぱつまると簡単な問題でもあせっちゃうんですよね〜><

では問題についてですが
sin,cosのグラフを表示させたいのですね?
では仕様をまず明確にしましょう。

・グラフというのはコマンドプロンプトで出したいのでしょうか?
・APIなどの機能をつかってグラフィックをキレイに出力したいのでしょうか?

そして

・プログラムの構造を知りたいのですか?
・表示させるプログラムさえあったらいいのでしょうか?

その辺をもうちょっと詳しく教えてもらえたら的確なアドバイスができると思います。

さしあたり、私が作成したC言語で関数をグラフ化するプログラムでcos波を出力してみました。
計算式をかけば簡単にいろんな関数がかけますよ。
こんな感じの出力になるようなプログラムでいいんでしょうか?

スナップ写真は添付のようになりました。
プログラムはこちらです。

http://dixq.net/board/program/graph.zip

解凍したフォルダのslnフォルダを開き、そのままctrl + F5で実行してください。





 
[ 1 ]
 
 
管理者画面   RSS   + Powered By 21style +