おまいら!今日からC言語を学んでいくぞー!
レス数が1000を超えています。これ以上書き込みはできません。
0001ポポ素 ◆Qgm8RFT0/.
2005/09/24(土) 03:54:3026歳フリーター、パソコン歴インターネット歴は6年
しかしそれ以外の事は何もできにゃーい…
というわけで今日から参考書を買ってがんばります!
今まさに私みたいに、これからCを勉強するぞって人いたら
よろしくね
0002デフォルトの名無しさん
2005/09/24(土) 03:55:010003デフォルトの名無しさん
2005/09/24(土) 03:59:060004デフォルトの名無しさん
2005/09/24(土) 04:37:440005ポポ素 ◆Qgm8RFT0/.
2005/09/24(土) 04:52:17よろしくお願いします☆
0006デフォルトの名無しさん
2005/09/24(土) 04:54:040007 ◆2GoFr2QJSw
2005/09/24(土) 08:58:010008デフォルトの名無しさん
2005/09/24(土) 09:02:530009デフォルトの名無しさん
2005/09/24(土) 09:21:22目票は処理系つくること
0011デフォルトの名無しさん
2005/09/24(土) 09:44:080012デフォルトの名無しさん
2005/09/24(土) 09:48:160013デフォルトの名無しさん
2005/09/24(土) 09:52:12コンパイラはどれがいいの?
0014デフォルトの名無しさん
2005/09/24(土) 11:28:31http://www.microsoft.com/japan/msdn/student/premium/
無料がいいなら
http://www.borland.co.jp/cppbuilder/freecompiler/ と http://www.hi-ho.ne.jp/jun_miura/bccdev.htm のセット
その他の方は
Visual C++か、Visual studio.NETでいいんじゃない
0015デフォルトの名無しさん
2005/09/24(土) 11:58:13■ ■ 違う板にコピペすると、四角の枠の中に
■ _,,..,,,,_ ■ メッセージとURLが現れる不思議な絵。
■ / ,' 3 `ヽーっ ■
■. l ⊃ ⌒_つ ■
■ `'ー---‐'''''" ■
■ ■
■ ■
0016デフォルトの名無しさん
2005/09/24(土) 12:02:470017デフォルトの名無しさん
2005/09/24(土) 12:06:240018デフォルトの名無しさん
2005/09/24(土) 12:15:39Cなんかじゃなくjavaにしよーぜ!!
0019デフォルトの名無しさん
2005/09/24(土) 12:17:02っつっても職業プログラマじゃなくてアマチュアだがなw
0020デフォルトの名無しさん
2005/09/24(土) 13:00:470021デフォルトの名無しさん
2005/09/24(土) 13:07:04質問です!
なんでそんなに偉そうなんですか?
0022デフォルトの名無しさん
2005/09/24(土) 13:09:010024デフォルトの名無しさん
2005/09/24(土) 13:11:39ありがとうございました!
0025デフォルトの名無しさん
2005/09/24(土) 13:44:13話しかけられたとき以外は口を開くな
口でクソたれる前と後に“サー”と言え
分かったか、ウジ虫ども!」
「サー!イエッサー!」
この方式で教えよう。
0026デフォルトの名無しさん
2005/09/24(土) 13:51:110027デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
2005/09/24(土) 14:14:130030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG俺はttp://www.sgnet.co.jp/c/ ここを参考にしてるけど
0032デフォルトの名無しさん
2005/09/24(土) 14:57:35ttp://www.kumei.ne.jp/c_lang/
003319 ◆i386l.xq6k
2005/09/24(土) 15:07:21定番だけど猫は見とくべき。
猫で基礎を固めて、基礎以上のことは何か
作りたいものを作りながら学ぶといいかも。
例えばゲーム作るなら Win32 API、DirectX、WinMM とかを
"実際に利用することで" 学ぶ。この辺は「使い方」を知ってれば十分だから。
それと平行して STL とか boost も使っていけば
ほぼ作れないものはなくなる。
こっちはあると綺麗なコード、バグの少ないコードが書けるようになる。
0034デフォルトの名無しさん
2005/09/24(土) 15:24:380035デフォルトの名無しさん
2005/09/24(土) 15:26:180036デフォルトの名無しさん
2005/09/24(土) 15:30:53書き方も大事だが、そっちが先だ
0037デフォルトの名無しさん
NGNGおお、ありがとうございます。早速お気に入りに追加しますた。
しかし読めば読むほど自分の無知が露見してくるorz
C言語の前にPCの基本用語から勉強しなきゃなぁ('A`)
0038デフォルトの名無しさん
2005/09/24(土) 16:18:51めんどくさいよなあこれ
0039デフォルトの名無しさん
2005/09/24(土) 16:20:07void *org;
org = *(void **)(*(DWORD *)target + offset);
*(void **)(*(DWORD *)target + offset) = proc;
return org;
こんなの書かれてたら泣く。
0040デフォルトの名無しさん
2005/09/24(土) 16:23:59本稿の目標としては、大学の簡単な課題がこなせる程度になることとしましょう。
(言語は道具であり、目的ではありません。C言語のすべての機能を網羅するよりC言語を学習するものにとって何が必要かを考えて編集しました。)
量が適切でいいかも
0041デフォルトの名無しさん
2005/09/24(土) 17:05:55いいね、それ
それとhttp://homepage2.nifty.com/natupaji/DxLib/だけで簡単なゲーム等は作れるようになるかも
0042デフォルトの名無しさん
2005/09/24(土) 17:06:140043デフォルトの名無しさん
2005/09/24(土) 17:11:44DXLIBは本来のDirectXプログラミングが出来なくなるくらい
言語仕様が簡単になるらしいけどそのへんどうなんすか
0044デフォルトの名無しさん
2005/09/24(土) 17:13:37もっとプログラムが必要な"1から50までの和を計算して表示"とかの方がいいぞ
004519 ◆i386l.xq6k
2005/09/24(土) 17:14:12Hello World は、プログラムを書くことよりも、
ソースを書く→コンパイルする→実行する
っていう流れを学ぶ目的が大きいんじゃないかと思う。
つまりは開発環境の使い方だな。
プログラムの書き方を学ぶなら○×ゲームでも作ったほうがよっぽど良い。
0046デフォルトの名無しさん
2005/09/24(土) 17:20:19そんな事は分かりきっているから説明するな
>>42が出来たらファイルから数字を読み込み大きい数から順に並べて画面に表示するプログラムを書け
条件
1.ファイルには数字が文字形式(テキストエディタで読める形式)で保存されている
2.1行に1つ数字が入っている
3.数字の範囲は(0〜65535)
4.数字は最大100個
5.ライブラリ関数qsortは使用しないこと
0047デフォルトの名無しさん
2005/09/24(土) 17:21:310048デフォルトの名無しさん
2005/09/24(土) 17:31:520049デフォルトの名無しさん
2005/09/24(土) 17:32:43本来のDirectXプログラミングをしたことが無いのでわかりません。
0050デフォルトの名無しさん
2005/09/24(土) 17:35:29IOと繰り返し、分岐の組み合わせで出来ている上にアルゴリズム自体高校生でも考え付くレベルなのでちょうど良い
ifでの分岐はこれ、whileでの分岐はこれなんて感じで覚える必要もないだろ
0051デフォルトの名無しさん
2005/09/24(土) 17:38:160052デフォルトの名無しさん
2005/09/24(土) 17:40:01もう終ったのか?じゃあ、次だ
100×100(単位は気にするな)の壁に囲まれた領域がある、そこの(50,0)から(50,50)に壁がある
(0,0)から適当な角度で物体を打ち出した時に物体が通る軌跡を求めろ
条件
1.物理法則に従ってもいいし、従わなくても良い
2.物体が壁にぶつかったときは反射する(これも厳密でなくて良い)
3.暇があったら図示しろ
0053デフォルトの名無しさん
2005/09/24(土) 17:42:310054デフォルトの名無しさん
2005/09/24(土) 17:43:12次
0055デフォルトの名無しさん
2005/09/24(土) 17:44:04誰もついていかないから
0056デフォルトの名無しさん
2005/09/24(土) 17:44:53やっぱゲームかな?
簡単なところから行くと数当てとか...
0057デフォルトの名無しさん
2005/09/24(土) 17:48:32じゃあ、応用だ
とりあえず、3Dになっていて壁に囲まれた通路をイメージしてくれ
その壁の中をやっぱりなんか物体を飛ばした時の軌跡を求めろ
0058デフォルトの名無しさん
2005/09/24(土) 17:51:190059デフォルトの名無しさん
2005/09/24(土) 18:09:41>>52に戻ろう
まず、物体の座標を(x、y)であらわす所は理解できてるか?
(0,0)から物体を速度v、角度θで打ち出すと時間をtとして描く軌跡はx=(v×cosθ)×t、y=(v×sinθ)×tになる
※めんどくさいので以後はv×cosθをvx、v×sinθをvyとする
時間tと時間(t+1)の間に(x,y)の描く位置に壁があったらぶつかったと判断できる
ここまで解ったか?
0060デフォルトの名無しさん
2005/09/24(土) 18:24:340061デフォルトの名無しさん
2005/09/24(土) 18:26:470062デフォルトの名無しさん
2005/09/24(土) 18:34:35http://www.yamdas.org/column/technique/21-daysj.html
> 研究者 (Hayes, Bloom) によると、チェス、作曲、絵描、ピアノ演奏、水泳、テニス、そして神経心理学や
> 位相幾何学の研究を含む、広範な分野のいずれについても、専門技術を身につけるにはおよそ十年か
> かるそうだ。近道など実在しないようなのだ。4歳にして音楽の神童だったモーツァルトでさえ、世界的な
> 楽曲を作り出すまでに13年以上の時間を要したのだ。サミュエル・ジョンソン[訳注2]は、「どんな分野に
> おいても、生涯にわたる努力なくして優れたものには達し得ない。それよりも安い代償で手に入れること
> はできないのだ」と、それには十年以上かかると考えた。
006319 ◆i386l.xq6k
2005/09/24(土) 18:40:15そんなにかからないと思うぞ。
私の場合 C++ やり始めて3年でほぼやりたいことは
一通り出来るくらいにはなれたから。
ただ、何度挫折しても挫けないほどの根気と、
何かが作りたいっていう意思がないとキツイかもな。
0064デフォルトの名無しさん
2005/09/24(土) 18:56:14使いこなすには経験をためる必要があって、それにはやっぱり10年くらいかかると思う。
とプログラミング始めて2年の俺が言ってみる。
0065デフォルトの名無しさん
2005/09/24(土) 19:00:59そこまでどうやって辿り着いたのか、軽く書いてもらえると、
後進としては助かる。
0066デフォルトの名無しさん
2005/09/24(土) 19:02:23>>42 HelloWorld!を出しやがれ
>>44 1から50までの和
>>46 ファイルから読み込み大きい数から並べて
>>52 物体が通る軌跡を求めろ
0067デフォルトの名無しさん
2005/09/24(土) 19:02:27書いてあるじゃん
0068デフォルトの名無しさん
2005/09/24(土) 19:08:02#include <iostream>
int main()
{
using namespace std;
cout << "hello, world" <<endl;
return EXIT_SUCCESS;
}
0069デフォルトの名無しさん
2005/09/24(土) 19:17:59#include <iostream>
int sum(int num)
{
if (num==0)
return 0;
return num+sum(num-1);
}
int main()
{
using namespace std;
cout << sum(50) <<endl;
return EXIT_SUCCESS;
}
0070デフォルトの名無しさん
2005/09/24(土) 19:19:060071デフォルトの名無しさん
2005/09/24(土) 19:20:35#include <iostream>
int main()
{
using namespace std;
int i,no = 0;
for(i=1;i<51;i++) no+=i;
cout << "1から50までの和 = " << no <<endl;
return EXIT_SUCCESS;
}
0072デフォルトの名無しさん
2005/09/24(土) 19:33:030073デフォルトの名無しさん
2005/09/24(土) 19:40:06forの中、i <= 50にしようよ。
007419 ◆i386l.xq6k
2005/09/24(土) 19:55:42まぁ、>>33 に書いたのとほぼ同じ感じ。
ふと何か作ろうと思い立って、必要なライブラリを使いこなすため
いろいろ調べて、試行錯誤しながら製作。そして途中で挫折。
そんなことを何度も繰り返してた。
MMORPGを作ろう!とかWinnyもどきを作ろう!とか今思えば無茶だったけど…
まぁ、なんかやるたびに新しいことが身についたと思う。
>>70
アセンブラは決して "必須" じゃないからだいじょぶ。
アセンブラが使えると、デバッグや高速化が楽になるだけで。
まぁ、MMX とか SSE とか使うにはアセンブラ必須だけどね。
0075デフォルトの名無しさん
2005/09/24(土) 19:56:460076デフォルトの名無しさん
2005/09/24(土) 19:58:36アセンブラは考え方として重要じゃないか?
ポインタにはまったらアセンブラの勉強するとすぐ理解できる
007865(後進)
2005/09/24(土) 20:12:10これからはそれらを破棄します。
文法を覚えたら、自分の金で買います。当然ですね。
頑張ろう。
0079デフォルトの名無しさん
2005/09/24(土) 20:12:43どの辺が難しい?
0081デフォルトの名無しさん
2005/09/24(土) 20:49:00割れ使った時点で落第、通報しますた。
0083デフォルトの名無しさん
2005/09/24(土) 21:04:42漏れは、for文の判定は'<'だけと決めている。
が、他の人はどうでもいい。
0085デフォルトの名無しさん
2005/09/24(土) 21:15:470086デフォルトの名無しさん
2005/09/24(土) 21:19:38もう挫折しそうだ....
0087デフォルトの名無しさん
2005/09/24(土) 21:23:33分からない所は、分かっているか?
0088デフォルトの名無しさん
2005/09/24(土) 21:38:10理由もわからず書き方変えたって何にもならないぞ
素人ギャラリーもたくさん見てるんだから意識しろ
0089デフォルトの名無しさん
2005/09/24(土) 22:14:03#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const char *filename="number.txt";
int iNumber[100], NumMax=0;
void CreateNumberFile()
{
int articles=rand()%100+1;
ofstream fout(filename);
for (int i=0 ; i<articles ; i++)
fout << rand()%65535 << endl;
fout.close();
}
void ReadNumberFile()
{
char tmp[80];
int i=0;
ifstream fin(filename);
while (!fin.eof())
{
fin >> tmp;
sscanf(tmp, "%d", &iNumber[NumMax++]);
}
NumMax--;
fin.close();
}
0090デフォルトの名無しさん
2005/09/24(土) 22:15:42void swap(int *tmp1, int *tmp2)
{
int tmp=*tmp1;
*tmp1=*tmp2;
*tmp2=tmp;
}
void Sort()
{
for (int i=0 ; i<(NumMax-1) ; i++)
{
for (int j=i+1 ; j<NumMax ; j++)
{
if (iNumber[i] < iNumber[j])
swap(&iNumber[i], &iNumber[j]);
}
}
}
void DisplayNumbers()
{
for (int i=0 ; i<NumMax ; i++)
cout << iNumber[i] << endl;
}
int main()
{
CreateNumberFile();
ReadNumberFile();
Sort();
DisplayNumbers();
return EXIT_SUCCESS;
}
0091デフォルトの名無しさん
2005/09/24(土) 22:21:410092デフォルトの名無しさん
2005/09/24(土) 22:25:54上から見てたけど
時間の無駄だと思ったから見るのやめたぜ
0093デフォルトの名無しさん
2005/09/24(土) 22:33:37新たな先生降臨待ち
0094デフォルトの名無しさん
2005/09/24(土) 23:28:25って書いてあったんだけど、ホームページ作れるって事?
0095デフォルトの名無しさん
2005/09/24(土) 23:45:58他スレ周りに忙しいんだぞぉ
生徒のほうから来てくれないと
教えきれないんだぞぉ
0096デフォルトの名無しさん
2005/09/24(土) 23:54:36今のところ、単に知りたいだけだもんなぁ。。。
プログラミングってオサレでカコイイって程度の。
0097デフォルトの名無しさん
2005/09/25(日) 00:00:37教えろ
0098デフォルトの名無しさん
2005/09/25(日) 00:03:18まず、ドラゴンブックかなんかその辺の本を1冊仕入れて来い
0099デフォルトの名無しさん
2005/09/25(日) 00:03:54何を教えて欲しいんだ
0100デフォルトの名無しさん
2005/09/25(日) 00:05:05http://ex11.2ch.net/test/read.cgi/news4vip/1127536695/
0101デフォルトの名無しさん
2005/09/25(日) 00:16:290102デフォルトの名無しさん
2005/09/25(日) 00:21:15なにその楽して世界最強
0103デフォルトの名無しさん
2005/09/25(日) 00:22:230104デフォルトの名無しさん
2005/09/25(日) 00:28:190105デフォルトの名無しさん
2005/09/25(日) 00:34:10C++のコードばかり出てくる所はスルーなの?
++房勘弁してほしい、いやまじで。
0106デフォルトの名無しさん
2005/09/25(日) 00:35:32コンパイラでいいな
まずは字句解析と行こうか
これはLexとかでも良いんだけど自分で作ったほうが勉強になる
ソースリストの中の英字の単語、数字、記号を識別し<種別、名称(数値)>の形で出力していくプログラムを作る
種別は以下の通り
・予約語(種別1):if else while const var procedure
・名前(種別2):予約語以外の英字で始まる英数字
・定数(種別3):数字
・演算子(種別4): = + - * /
・区切り符号(種別5):{ } ( ) ;
0107デフォルトの名無しさん
2005/09/25(日) 00:39:45/"lヽ
( ,人)
(・д・) チンコー
\ノ ノ/
〜(__人_) 〜
ノ (
010819 ◆i386l.xq6k
2005/09/25(日) 00:43:06なにか作りたいものが決まってれば、
「それに必要なこと」が決まるから、
漠然としてるよりは実践的に学べると思う。
プログラミングの技術って、どこで差がつくかっていうと
「〜がしたい」→「こうすればいい」 の連想をどれだけ知ってるか。
こういう連想をたくさん知ってれば知ってるほどいわゆる上級なプログラマ。
基礎的なことやコーディング規約なんてのは誰も大差ない。
0109ポポ素 ◆Qgm8RFT0/.
2005/09/25(日) 02:05:13参考書かってきたよー
C言語の絵本っての、
いろいろ探してみて最初だし絵がかいてるしこれがいいかなっておもって
他にも何かいい本あったら教えてね♪
早速読んでみたんだけどもういきなり挫折しそうな内容
でもあたいがんばるけんね!
みんなもがんばろう!
0110デフォルトの名無しさん
2005/09/25(日) 02:47:25役に立ちそうな本なら「ポインタの極意」がオススメ。
ポインタ以外のところも分かりやすい。
少し慣れてきたら「新・ANSI C言語辞典」を見るといい。
ヘタな解説書であいまいな知識を得るより、
正確な知識を早めに蓄えておくことが肝心。
みんな、がんばろうぜ! おれもがんばるぜ!
0111 ◆ReQBwuiv5U
2005/09/25(日) 04:54:59HelloWorld!の表示の仕方はどうやるんですか?
0112ポポ素 ◆Qgm8RFT0/.
2005/09/25(日) 08:30:50参考にさせてもらうね♪
前レスでC++とか私の知らないのがたくさんあるね
ほんと今わたしは扉のノブを触ったくらいのところだね…
>>111さんCGIって何?
ごめん、初歩的な質問で…
一応調べたんだけど
コンピュータによって作成される画像 ((CGおよび実写とCGの合成映像のこと));
とかでてきたけど意味がわからないし…
0113デフォルトの名無しさん
2005/09/25(日) 09:51:19puts("HelloWorld!");
単に標準出力へ書き出せばいいだけ。printfももちろん使える。
>>112
http://e-words.jp/w/cgi.html
http://www.google.co.jp/search?num=50&hl=ja&inlang=ja&newwindow=1&q=cgi%E3%81%A8%E3%81%AF&lr=lang_ja
011419 ◆i386l.xq6k
2005/09/25(日) 10:16:40Perl の時と同じく、Content-type ヘッダが必要。
特に Perl と変わる点はないから普通に書けばいい。
環境変数とかバッファサイズとかセキュリティに関わる部分は十分注意。
ex.
#include <stdio.h>
int main( int argc, char** argv )
{
printf("Content-type: text/html\n\n");
printf("Hello World.\n");
return 0;
}
0115デフォルトの名無しさん
2005/09/25(日) 10:35:24文字列を出力するだけならなくてもいいんじゃねーかな
0116デフォルトの名無しさん
2005/09/25(日) 10:45:290117デフォルトの名無しさん
2005/09/25(日) 10:45:51■ ■ 違う板にコピペすると、四角の枠の中に
■ _,,..,,,,_ ■ メッセージとURLが現れる不思議な絵。
■ / ,' 3 `ヽーっ ■
■. l ⊃ ⌒_つ ■
■ `'ー---‐'''''" ■
■ ■
■ ■
0118デフォルトの名無しさん
2005/09/25(日) 10:53:35text/plainとして扱うのはブラウザの仕様であって
HTTP的にはcontent-typeは省略すべきではない(SHOULD)みたい
省略されたら"application/octet-stream"だね
011919 ◆i386l.xq6k
2005/09/25(日) 11:05:28Content-type は省略できないこともないけど、
\n\n は省略不可。
HTTP のレスポンスは、レスポンスヘッダ+空行+Body の形をとるけど、
\n\n がないと、レスポンスヘッダだけになり、
HTTP として不正なデータになる。
…Apache の場合はね。もしかするとこの辺適宜解決してくれる
Web サーバもあるかもしれない。
0120デフォルトの名無しさん
2005/09/25(日) 11:52:140121デフォルトの名無しさん
2005/09/25(日) 13:56:23PerlやPHPから始めた人はね
初心者じゃApacheとかでCGIの実行環境作るのが大変だろ
0122デフォルトの名無しさん
2005/09/25(日) 14:05:120123デフォルトの名無しさん
2005/09/25(日) 14:17:05そういう事じゃないって
ApcaheとAnHTTPDの設定じゃ俺はApacheのが楽な位だよ
0124デフォルトの名無しさん
2005/09/25(日) 16:24:53やっぱゲームかな?
トランプゲームが理解しやすい
一番簡単(と思われるのが)神経衰弱
あとブラックジャックとか
ポーカーは役判定とかが結構難しい
0125デフォルトの名無しさん
2005/09/25(日) 16:33:480126デフォルトの名無しさん
2005/09/25(日) 16:34:400127デフォルトの名無しさん
2005/09/25(日) 17:33:450128デフォルトの名無しさん
2005/09/25(日) 17:54:590129デフォルトの名無しさん
2005/09/25(日) 18:23:43それだ!
1.人間:石/鋏/紙の指定入力
2.CPU:乱数を使って石/鋏/紙の指定
3.勝敗判定
まさに初心者向け
0130デフォルトの名無しさん
2005/09/25(日) 18:46:30おおっ!それいいなあ!!ちょっとがんばるよ。
0131デフォルトの名無しさん
2005/09/25(日) 18:57:09char *te[] = { "ぐー","ちょき","ぱー"};
printf("ぐー...0 ちょき...1 ぱー...2\n");
scanf("%d",&n);
printf("あなた : %s\n",te[n]);
printf("CPU: %s\n",te[n == 0 ? 2 : n-1]);
printf("あなたのまけです。");
0132デフォルトの名無しさん
2005/09/25(日) 19:12:28絶対勝てない
相手の手は乱数で決めないとね
0133デフォルトの名無しさん
2005/09/25(日) 19:15:390134デフォルトの名無しさん
2005/09/25(日) 19:27:52ここにのってたから作ったw
0135デフォルトの名無しさん
2005/09/25(日) 19:30:210136デフォルトの名無しさん
2005/09/25(日) 19:32:310137デフォルトの名無しさん
2005/09/25(日) 19:33:050138デフォルトの名無しさん
2005/09/25(日) 19:36:08int num;
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&num);
こっちのがいいんじゃね
0139デフォルトの名無しさん
2005/09/25(日) 19:40:01bufって何かの略?
0140デフォルトの名無しさん
2005/09/25(日) 19:43:430141デフォルトの名無しさん
2005/09/25(日) 19:46:26オレのネーミングセンスに聞いてくれ。
0142デフォルトの名無しさん
2005/09/25(日) 19:53:37ネーミングセンスはいいと思う。少なくとも俺より。
0143デフォルトの名無しさん
2005/09/25(日) 20:24:370144デフォルトの名無しさん
2005/09/26(月) 03:04:04これで 0 〜 n-1 の値が取り出せる (※)
ちなみに srand(time(NULL)); しないといつも同じ乱数列になってしまうので
rand()を使う前にどこかでやっとく事。
※:C-FAQとかググルともちっと違うやり方で取り出した方が良いよ、となっている
0145デフォルトの名無しさん
2005/09/26(月) 04:51:57先生!出来ました!!次、お願いします!
http://gamdev.org/up/img/3422.phps
0146デフォルトの名無しさん
2005/09/26(月) 06:07:54106じゃないけど一カ所ツッコミを。
その実装だと
"abc123" は名前と認識される。これは正しいけど、
"123abc" が定数と認識されちゃうね。これは間違い。
この場合は定数でも名前でもないと判断する。
0147デフォルトの名無しさん
2005/09/26(月) 07:55:26ご指摘ありがとうございます!
早速修正しました
http://gamdev.org/up/img/3423.phps
先頭の文字だけチェックしていたのをやめて、全体をチェックするようにしました。
bool isnumber(char *buf)は数字でない文字があればfalseを返します。
0148デフォルトの名無しさん
2005/09/26(月) 11:34:06悪くはないのだが、後の事を考えると出力は直接printfするのでなく一旦データ構造に保持して、
それを最後にまとめて出力する様に改良してみてくれ
以後の出題もコード生成(出力)以外の時以外は出来る限り内部にデータ構造を作ってからにしよう
0149デフォルトの名無しさん
2005/09/26(月) 13:42:40int main(void)
{
printf("HELLO\n");
return(0);
}
できた〜!!(゜ー゜;Aアセアセ
0150デフォルトの名無しさん
2005/09/26(月) 13:59:07returnに括弧は要らない。
0151デフォルトの名無しさん
2005/09/26(月) 14:18:26ガ━━━━━━(゚д゚lll)━━━━━━ン!!!
そうでしたか…
勉強してきます…
0152デフォルトの名無しさん
2005/09/26(月) 14:27:500153デフォルトの名無しさん
2005/09/26(月) 16:05:36・・・?
別にコンパイルエラー起きないはずだし、正しい記述じゃね?
0154デフォルト名無しさん
2005/09/26(月) 16:14:30嘘教えてどうすんだよ・・・
0155デフォルトの名無しさん
2005/09/26(月) 16:23:46括弧は要らない。
ただし、つけても害はない。
でも、見難い。
0156デフォルトの名無しさん
2005/09/26(月) 16:29:440157デフォルトの名無しさん
2005/09/26(月) 17:27:12#include <stdlib.h>
#include <string.h>
int main(void)
{
0158デフォルトの名無しさん
2005/09/26(月) 17:48:54では括弧はあってもなくてもいいんだけれども
ない方が見やすいプログラムと言う事ですかね?
0159デフォルトの名無しさん
2005/09/26(月) 18:00:15returnという関数の呼び出しに見えてしまうから気持ち悪いと言う説が濃厚
その他Lispとは違うんだから括弧は少なくしろと言う説もある
0160デフォルトの名無しさん
2005/09/26(月) 18:01:08全部につける人も普通にいるし。
return (a + b);
みたいな計算結果返すんだったらつけたくなるなな
べつにあんま気にしなくてもいいと思うよー。
0161デフォルトの名無しさん
2005/09/26(月) 18:03:050162デフォルトの名無しさん
2005/09/26(月) 18:04:06retarn 0; //構文エラー
retarn(0); //リンクエラー
0163デフォルトの名無しさん
2005/09/26(月) 18:05:33良い意見有難う御座います。
すごく参考になってやる気でますよ(^^;
0164デフォルトの名無しさん
2005/09/26(月) 18:07:10参考にさせて頂きますよ(`・ω・´)
0165デフォルトの名無しさん
2005/09/26(月) 18:15:33int main(void)
{
int i,goukei,heikin;
goukei=0;
heikin=0;
for(i=1;i<=50;i++){
goukei=goukei+i;
heikin=goukei/i;
}
printf("1〜50までの和は%dです\n",goukei);
printf("平均は%dです\n",heikin);
return0;
}
できた〜(゜ー゜;Aアセアセ
今度は完璧だぜ!( ´ー`)
0166デフォルトの名無しさん
2005/09/26(月) 18:19:16空白をいれましょう。
でないと、コンパイラが[retun]と[0]なのか、
[return0]という変数などなのか、迷います。
0167デフォルトの名無しさん
2005/09/26(月) 18:20:37をループのそと(うしろ)に
0168デフォルトの名無しさん
2005/09/26(月) 18:22:03もともとタブが入ってて書き込んだ段階で消えただけじゃね?
0169167
2005/09/26(月) 18:22:50heikin=goukei/50;
ね。
平均は整数値でいいの?
0170デフォルトの名無しさん
2005/09/26(月) 18:22:56for文からは出すんだ!
0171デフォルトの名無しさん
2005/09/26(月) 18:24:03hentai=gouki/i;
に見えた
0172デフォルトの名無しさん
2005/09/26(月) 18:24:08ガウスの法則って知ってる?
1から100000000でも真面目に足すの?
それに平均を毎回求める必要ないんじゃ?最後の一回だけで。
0173デフォルトの名無しさん
2005/09/26(月) 18:25:010174デフォルトの名無しさん
2005/09/26(月) 18:25:23そうでしたか…難しい('A`)
>>167
そうした方が処理回数が減るからという事だからですか?
>>168
自分のミスですた…orz
0175デフォルトの名無しさん
2005/09/26(月) 18:25:31goukei = goukei + iはgoukei += iとするべき
おそらく作成者の意図はgoukeiにiを加算したいのであってgoukei+iをgoukeiに代入したい訳ではないから
あと、左辺値に副作用があったり、マクロだった場合にどんな動作するか考えるの面倒だからこの記述になれるほうが良い
0176デフォルトの名無しさん
2005/09/26(月) 18:33:12平均はdobleかflotのがいいんですね!!
>>170
for文難しいですよ…
>>171
ワラタw
>>172
応用力というものが足りない事にきずきましたよ('A`)
>>175
高度な意見なので分からない事がありますが、加算するときは
そのようにするのですね!!有難う御座います
0177デフォルトの名無しさん
2005/09/26(月) 18:33:13処理回数が減るってのはもちろんだけど、
“計算しなくてもいいものは計算しない”は基本中の基本だからね。
平均なんて最後にまとめて計算すればいい話であって
50回計算する意味はないでしょ?
毎回表示したいとか、そういう理由があれば別だけど。
0178デフォルトの名無しさん
2005/09/26(月) 18:35:20なるほどそういう事ですか!
短く分かりやすいプログラムにしろという訳ですね
勉強してきます(゚∀゚)
0179デフォルトの名無しさん
2005/09/26(月) 18:38:11という事で、もう一度作り直してください
0180デフォルトの名無しさん
2005/09/26(月) 18:43:14予想外のフリが…Σ(゚д゚;) ヌオォ!?
ですがプログラムのコピーになってしまうので、
また新しい関数で何か作ってみるので判定して下さい!!
よろしくお願いします<(_ _*)>
では勉強してきまつ
0181デフォルトの名無しさん
2005/09/26(月) 18:44:37じゃぁ、1+3-5+7-9+11-13+・・・
を50回計算した合計を出力するプログラムを。
0182デフォルトの名無しさん
2005/09/26(月) 18:46:45やってみます!!
が…む、難しい予感が…
数学苦手だった〜('A`)
0183デフォルトの名無しさん
2005/09/26(月) 18:49:32じゃあ、ヒントだ
1 3 5 7 9 11 13...これは+2づつ増えている
a=1の時a *= -1を繰り返し実行すると1,-1,1,-1となる
0184デフォルトの名無しさん
2005/09/26(月) 18:51:29なんとなく分かってきましたよ(`・ω・´)
0185デフォルトの名無しさん
2005/09/26(月) 19:13:45みんなガンガレ!
0186デフォルトの名無しさん
2005/09/26(月) 19:15:56int main(void)
{
int i,goukei;
goukei=0;
for(i=1;i<=50;i++)
{
if(goukei==4*i){
goukei+=goukei+i;
}
else if{
i=i*(-1);
goukei+=goukei+i;
}
printf("%d\n",goukei);
return 0;
}
うおぉぉぉ〜むちゃくちゃ怪しいプログラムになってしまた
見にくいですが判定をお願いします…('A`)
0187186
2005/09/26(月) 19:18:31なんつ〜もん晒してんだ漏れは…_| ̄|○
0188デフォルトの名無しさん
2005/09/26(月) 19:44:57#include <stdio.h>
int main(void)
{
int i,goukei;
goukei=0;
for(i=1;i<=50;i++)
{
if(goukei==4*i+1){
i=i*(-1);
goukei+=goukei+i;
}
else{
goukei+=goukei+i;
}
printf("%d\n",goukei);
return 0;
}
できたかも!!(`∀´)
0189デフォルトの名無しさん
2005/09/26(月) 19:58:57最初の1と3が共に正の数だからうまく交互に行いにくいな。
>>188
エラーが出た。中カッコがいくつか足りない。
0190デフォルトの名無しさん
2005/09/26(月) 20:04:08エラーですか…そうなんですよ符号を考えるのが
難しいんですよ。
0191190
2005/09/26(月) 20:06:350192デフォルトの名無しさん
2005/09/26(月) 20:18:11合計に加える値とループのカウンタは別にしても良い
ちなみに元のままだとelse以下がおかしい
0193デフォルトの名無しさん
2005/09/26(月) 20:21:20えっ 1を入れないで50回じゃないの?
0194189
2005/09/26(月) 20:22:23変数aのトレース付き。
#include <stdio.h>
void main()
{
int a=1, i, total=1;
for(i=0; i<49; i++){
if(a >= 0){
a += 2;
printf("%d ", a);
total += a;
a *= -1;
}
else{
a -= 2;
printf("%d ", a);
total += a;
a *= -1;
}
}
printf("合計=%d\n", total);
}
0195190
2005/09/26(月) 20:23:25>合計に加える値とループのカウンタは別にしても良い
この見極めが難しいですね!(´・ω・)
>ちなみに元のままだとelse以下がおかしい
これはやはりfor文の括弧を付けていないせいですよね?
0197デフォルトの名無しさん
2005/09/26(月) 20:32:09まず、どんなことから始めれば?
0198デフォルトの名無しさん
2005/09/26(月) 20:33:44#include <stdio.h>
int main()
{
int i, total=1, n=3, f=1;
for (i=0; i<49; i++) {
total += n*f;
n+=2;
f*=-1;
}
printf("%d\n", total);
return 0;
}
これだけでいいよふな
0199デフォルトの名無しさん
2005/09/26(月) 20:35:28よく見ると他にも間違ってるな、意図を推察して直してやるとこんな感じか?
else以下が違うんじゃなくて条件自体がまずいな
7:if(goukei==4*i+1){ → if((i & 1)==1) {
8:i=i*(-1); → 要らない
9:goukei+=goukei+i; → goukei += 2 * i;
12:goukei+=goukei+i; → goukei -= 2 * i;
0200デフォルトの名無しさん
2005/09/26(月) 20:39:16まずなんの言語を学びたいかじゃないかな…
あ、ここに書き込んでるってことはCかな?
0202189
2005/09/26(月) 20:45:51プログラムの打ち方なんて人それぞれだって。
藻前の個性的なコードとてちゃんと動作すれば何ら問題ないし。むしろ、処理追ってみて少し楽(ry
>>198
3からは計算で求めたかったんで。といっても1を代入してる時点でもう駄目だなorz
0203190
2005/09/26(月) 20:54:03動作するようにガンバリます!
いろいろ見てくださってありがとう御座いました
C言語は意外と面白いと思えただけでもとてもよかったです。
0204デフォルトの名無しさん
2005/09/26(月) 20:56:26int main()
{
int i, total=1;
for (i=1; i<50; i++) {
total += (i*2+1) * ((i%2) ? 1 : -1);
}
printf("%d\n", total);
return 0;
}
符号も絶対値も i から求めたい…
0205189
2005/09/26(月) 21:06:24コツとしてはTabキーで字下げをすること。{}のペアや範囲が分かりやすくなって全体的に読みやすくなる。(2chに書く時はスペースに直す必要有
メモ帳なんかは改行すると字下げが解除されるから、他のエディタを使うことをお勧めする。
0207189
2005/09/26(月) 21:47:49という訳で俺から一つ。
整数を5つ入力し、それを数値の多い順にソートするプログラムを作成。
ヒント:3重ネスト
0208デフォルトの名無しさん
2005/09/26(月) 22:02:44#include <stdio.h>
int main()
{
printf("%d\n", (1-2*25));
return 0;
}
0209デフォルトの名無しさん
2005/09/26(月) 22:08:572*25=50
1-50=-49
0210デフォルトの名無しさん
2005/09/26(月) 22:15:11>>42 HelloWorld!を出しやがれ
>>44 1から50までの和
>>46 ファイルから読み込み大きい数から並べて
>>52 物体が通る軌跡を求めろ
>>106 まずは字句解析と行こうか
>>181 じゃぁ、1+3-5+7-9+11-13+・・・を50回
>>207 ソートするプログラム
■インデントする方法
・メモ帖・秀丸・VSなどの、エディタの置換機能を使います
・& nbsp; (←&とnの間スペースを削ってくれ)を書き込むとスペースに変換されます
・タブやスペースを& nbsp;に置換して書き込むとインデントが整います
▼コツ
・タブを置換したい場合はエディタ上のタブをコピーして検索窓でペーストします
・スペースを置換したい場合はインデントに利用している単位(2,4,8個など)をまとめて
置換すると最小限で済みます。
2ちゃんねるの文字数制限にひっかかる場合は試してみてください。
0211デフォルトの名無しさん
2005/09/26(月) 22:16:46違うのか?
0212デフォルトの名無しさん
2005/09/26(月) 22:22:05+3 1回目
-5 2回目
+7 3回目
-9 4回目
+11 5回目
-13 6回目
1回目と2回目を足したら-2
3回目と4回目を足したら-2
というふうに奇数回目とその次の数を足せば-2になる
全部で50回計算するので奇数回目と偶数回目を足したものが25個ある
つまり-2が25個ある
よって-2*25
もともと1があるので
1+(-2*25)
=1-2*25
0213デフォルトの名無しさん
2005/09/26(月) 22:22:59自動変換
ギコナビかな
0214デフォルトの名無しさん
2005/09/26(月) 22:38:320215デフォルトの名無しさん
2005/09/26(月) 22:40:32スペース・タブを&nbsp;に変換するプログラムを作ったらどうだ
0216デフォルトの名無しさん
2005/09/26(月) 22:43:07&を使えばいい。
0217デフォルトの名無しさん
2005/09/26(月) 23:31:24char[] nbsp;
pchar = &nbsp;
とかだとスペースになっちまうなw
0218デフォルトの名無しさん
2005/09/26(月) 23:49:580219デフォルトの名無しさん
2005/09/26(月) 23:51:350220デフォルトの名無しさん
2005/09/27(火) 00:11:440221デフォルトの名無しさん
2005/09/27(火) 00:19:240222デフォルトの名無しさん
2005/09/27(火) 00:26:29先生、それは課題でしょうか?
もう少し詳しくお願いします
0223デフォルトの名無しさん
2005/09/27(火) 01:26:00>スペース・タブを&nbsp;に変換するプログラム
" "
0224デフォルトの名無しさん
2005/09/27(火) 01:26:55遅くなってしまったが、次は構文解析だな
以下のBNF生成規則にそった代入文のパーサを作る
<代入文> := 名前 = <式>
<式> := <式> + <項> | <式> + <項> | <項>
<項> := <項> * <要素> | <項> / <要素> | <要素>
<要素> := ( <式> ) | 名前 | 定数
解析結果は<代入文>をルートとする木構造とし、<演算子, 被演算子1, 被演算子2>のノードで出力する
被演算子がノードになる場合はN(ノード番号)を出力する
0225デフォルトの名無しさん
2005/09/27(火) 01:28:13うまく書けなかったのでもう一度書きます
& a m p ; ってどういう効果ですか?
0226デフォルトの名無しさん
2005/09/27(火) 01:28:54ゲームとかもっとあがってないか? 出題
0227デフォルトの名無しさん
2005/09/27(火) 01:29:570228デフォルトの名無しさん
2005/09/27(火) 01:31:47アンド
0229デフォルトの名無しさん
2005/09/27(火) 01:42:06いきなりファイル関係をいじるのは難しいかもしれない。ファイルの読み込みは必須だけど、書き出す処理はやめて画面に出力でもかまわない。
猫でもわかる(ryのC++講座にprintfやputsでファイルに出力する方法が書いてある。
ソースファイル中のHTML特殊文字をエスケープするプログラムを作成する。
・起動したらファイル名を入力
・&はamp、<はlt、>はgt、[半角スペース]はnbsp。タブ(\t)は4文字の半角スペースとする。
例 <→<
・出力するファイル名は、ソースファイル名+".txt"。
参考
・ソースを丸ごとメモリに読み込まない。長いソースでは問題が起こる。1文字ずつ読み込んで書き出す。読み出した文字はchar型の値に代入する。
余裕があれば
・Windows環境だと2バイト文字に問題がある。2バイト文字の上位8ビット(=1バイト)が0x90より大きいなら下位8ビットはエスケープしないこと。
ちなみにchar型やbyte型の大きさは1バイト。つまり、次に読み出す文字のエスケープ判定をしなければOK。
・入力されたファイル名が正しいか(ファイル名に使えない文字がないか)調べる。
・出力するファイル名がすでに存在しないか調べる。
・上書きするか中断するか選ばせるのも手。yなら上書き、nなら中断、それ以外ならループ。
・"や'もエスケープする。
・エスケープした文字数をカウントしたり、出力したバイト数を計算したりして、出力後結果を表示。
ヒント
fopen fclose fgetc(要キャスト) fputc fprintf
0230デフォルトの名無しさん
2005/09/27(火) 01:47:02×0x90より大きい
〇0x80から0x9F、0xE0から0xFF
0231デフォルトの名無しさん
2005/09/27(火) 01:54:02ここを参考にするといい
ttp://www9.plala.or.jp/sgwr-t/lib/fgetc.html
0232デフォルトの名無しさん
2005/09/27(火) 01:55:04人vs人のやつ。
0233デフォルトの名無しさん
2005/09/27(火) 02:03:40そんな難しくない方
たてよこななめに並んでいるかどうかを判定する、ってのがこのプログラムのキモ
0234デフォルトの名無しさん
2005/09/27(火) 02:16:52それが問題かー。どうやって判定するべきか・・・。
0235デフォルトの名無しさん
2005/09/27(火) 02:22:58碁やオセロならまだしも、TicTacToeぐらいなら力業でif分並べたって8回の判定で済むんだし。
ループを使って横判定、縦判定、で最後に手動で斜め判定が一番楽かな?
0236デフォルトの名無しさん
2005/09/27(火) 02:24:30・3×3の配列を作る --- 例) int tbl[3][3];
・○は1、×は2、何も置いてない所は0 とかってする
・指定した場所に置く時に0かどうか判断して、置けるなら置く
・たてよこななめのどれかで3つ並んだかどうかチェック
・まだ空きが有るかつどちらも3つ並んでなければ、場所指定に置く所から繰り返し
って感じ
0237デフォルトの名無しさん
2005/09/27(火) 04:48:28○×ゲームつくりました
0238まとめ
2005/09/27(火) 05:29:49解きたい→うp
出したい→うp
■今までに出された問題
>42 HelloWorld!を出しやがれ
>44 1から50までの和
>46 ファイルから読み込み大きい数から並べて
>52 物体が通る軌跡を求めろ
>106 まずは字句解析と行こうか
>124 神経衰弱、ブラックジャック
>125 ぷよぷよ
>126 ブロック崩し、インベーダ
>129 ジャンケンゲーム
>181 じゃぁ、1+3-5+7-9+11-13+・・・を50回
>207 ソートするプログラム
>215 スペース・タブを に変換
>224 次は構文解析だな
>229 HTML特殊文字をエスケープ
>236 ○×ゲームをつくれ
■インデントする方法
・ を書き込むとスペースに変換されます
・タブやスペースを に置換して書き込むとインデントが整います
・メモ帖・秀丸・VSなどの、エディタの置換機能を使います
▼コツ
・タブを置換したい場合はエディタ上のタブをコピーして検索窓でペーストします
・スペースはインデント単位(2,4,8個など)でまとめて置換すると単独のスペースを無視できます
・ギコナビなら自動変換機能があります。
0239デフォルトの名無しさん
2005/09/27(火) 05:38:19ジョーカー除いて台札は4×13=52枚
&sp; 種類が4(スペード,ハート,ダイヤ,クラブ)
&sp; 数字が13(A,2,3,...,10,J,Q,K)
0240デフォルトの名無しさん
2005/09/27(火) 05:39:510241デフォルトの名無しさん
2005/09/27(火) 05:44:00私も入門書を読み終わったところなのですが
http://www.loses.org/software/xaav.htm
このソースが全然読めません
読めないというか意味すら分かりません
ここで始めてる皆さんは分かるのでしょうか?
0242デフォルトの名無しさん
2005/09/27(火) 05:51:05の事かな?
> X Window System
> MonaFont
こーゆー環境で動かすもんだ、って以外に特に難しいプログラムでは無いと思うが
初心者にはきついな
0243241
2005/09/27(火) 05:53:58http://www.loses.org/download/xaav-0002.tgz
こっちです
0244デフォルトの名無しさん
2005/09/27(火) 05:57:06読めないと言われてもなぁ。
とりあえずプログラミング言語ってのは英語や日本語のような自然言語と同じで
文法が分かったって単語が分からなきゃ読めないわけよ。
入門書っていうのは、いわゆる基礎単語と文法の基礎をやっているようなもんで
終わったからといっても、実用アプリのソースを読むには両方不足してるからな。
そのソースはそこまで煩雑な文法は使ってないから、初心者でもXのAPIマニュアル片手に
順番に追っていけば読めると思うよ。時間はかかるかもしれんけど。
0245デフォルトの名無しさん
2005/09/27(火) 06:26:540247デフォルトの名無しさん
2005/09/27(火) 06:43:23とりあえずいくつか指針を。
・どこから読めばいいか分からない→とりあえずmain関数から
・関数やパラメータの意味が分からない→APIリファレンスを読むか、ユーザ定義関数なら関数を読む
・プログラムそのものが読めない(whileって何だよ、char*って何、etc...)→入門書を読み直す
0248デフォルトの名無しさん
2005/09/27(火) 07:21:01昨日今日はじめた人間のレベルじゃねえぞ
0249デフォルトの名無しさん
2005/09/27(火) 07:34:130250デフォルトの名無しさん
2005/09/27(火) 08:12:06・XWindow/XLibの知識がないとちんぷんかんぷん。
・getopt()という過去の癖のある解析関数を使っている辺りがこれまた馴れを要する。
・コードの使い回しなのか、明らかに手の違うコードが混在している。
・malloc()に対するfree()がない場合があるなど資源の管理が無頓着。
・fprintf()/puts()を連続して使うような手抜きも。つーか、統一しろや。
・'0'と書かずに48と書くようなアナクロコードも。
まぁ素人が参考にするようなコードじゃないね。
0251デフォルトの名無しさん
2005/09/27(火) 08:27:180252デフォルトの名無しさん
2005/09/27(火) 09:47:500253デフォルトの名無しさん
2005/09/27(火) 11:12:020254デフォルトの名無しさん
2005/09/27(火) 11:24:520255デフォルトの名無しさん
2005/09/27(火) 11:41:35ヨクワカル、ソノキモチ
0256デフォルトの名無しさん
2005/09/27(火) 11:47:490257デフォルトの名無しさん
2005/09/27(火) 12:33:01焦らずマターリ。
意味不明でも本をボーッと眺めていると、数か月もすれは自然に分かるよ。
0258デフォルトの名無しさん
2005/09/27(火) 12:34:27今if文終わってfor文行くとこぐらいじゃね?
0259デフォルトの名無しさん
2005/09/27(火) 13:04:422日目 Hello World
3日目 変数の概念
4日目 変数
5日目 基本的な演算子
6日目 制御構造if、else、else if、swich
7日目 制御構造for、while、do while、break、continue、GOTO
0260デフォルトの名無しさん
2005/09/27(火) 13:05:28人にもよるが、そんなにマターリやるとすぐあきる
鉄は熱い内に打て
それに対面でやってるわけじゃないんだ
このスレの内容どっかに保存しといて後でゆっくり見てもいい
0261デフォルトの名無しさん
2005/09/27(火) 13:34:44うむ、分かったからおぬしもどれか課題をやってみなされ
0262デフォルトの名無しさん
2005/09/27(火) 13:49:14>・XWindow/XLibの知識がないとちんぷんかんぷん。
それなりには読めるだろ
>・getopt()という過去の癖のある解析関数を使っている辺りがこれまた馴れを要する。
俺も普通に使ってるが・・・
>・コードの使い回しなのか、明らかに手の違うコードが混在している。
癖が統一されてると思うけど
>・malloc()に対するfree()がない場合があるなど資源の管理が無頓着。
一個は途中で不要になるから開放してて、もう一つは最後まで使われるからしてねーんじゃねーの?
>・fprintf()/puts()を連続して使うような手抜きも。つーか、統一しろや。
適切だと思うけど、int, short, charをかなり使い分けてるからスピードを大切にしてるんだと思うけど
>・'0'と書かずに48と書くようなアナクロコードも。
それは個人の趣味。
>>251
>ポインタ多用してるので読めませんってことじゃねーの?
この場合、必要だから使ってるだけで無駄には使ってない
ポインタのポインタがいい味出してるな
0263デフォルトの名無しさん
2005/09/27(火) 13:56:27この場合longにする必要もないし
過去とか古いってなんでもいうのはWindowsユーザぐらいだぞ
0264デフォルトの名無しさん
2005/09/27(火) 14:05:30いや、単に「CUIが使えないユーザー」かと
0265デフォルトの名無しさん
2005/09/27(火) 14:41:34option -> window_size = 1;
option -> window_coordinate = 1;
この3つは#define するか値をそのまま書いた方が読みやすい
というかseparate_arg()の引数が5個もあるけど
最初の2つ引数はまるで無駄になってる。
0266デフォルトの名無しさん
2005/09/27(火) 16:14:580267デフォルトの名無しさん
2005/09/27(火) 17:58:500268デフォルトの名無しさん
2005/09/27(火) 18:10:32・関数で引き渡し元の変数の中身を変更したい場合に使用する
・動的に確保したメモリーがどこにあるのか保持する
0269デフォルトの名無しさん
2005/09/27(火) 19:02:460270デフォルトの名無しさん
2005/09/27(火) 19:53:25Warning : function has no prototype
3427.c line 5 {
と出たけど。
0271デフォルトの名無しさん
2005/09/27(火) 19:57:510272デフォルトの名無しさん
2005/09/27(火) 20:13:58俺もそう思う
0273デフォルトの名無しさん
2005/09/27(火) 20:16:060それはポインタ
0274デフォルトの名無しさん
2005/09/27(火) 20:43:190こんなのはどうでしょうか?
#include<stdio.h>
main()
{
int i,a,total;
for(i=0, a=1,total=0; i< 50; i++,a+=2)
{
if(a == 1)
total += a;
else if(i % 2 == 1)
total += a;
else
total -= a;
}
printf("%d",total);
return(0);
}
亀レスだけどa*=-1はなるほどなと思いました
良スレハケーン!
0275デフォルトの名無しさん
2005/09/27(火) 20:45:43O0276デフォルトの名無しさん
2005/09/27(火) 20:47:070つ公式
0277デフォルトの名無しさん
2005/09/27(火) 23:32:24c++コンパイラ使ってないんじゃね?
0279デフォルトの名無しさん
2005/09/27(火) 23:39:31つ[カンマ演算子]
0280デフォルトの名無しさん
2005/09/27(火) 23:43:030281デフォルトの名無しさん
2005/09/27(火) 23:50:360282デフォルトの名無しさん
2005/09/27(火) 23:56:070283デフォルトの名無しさん
2005/09/27(火) 23:57:5150個の数字があったら計算は49回だろwwwwwwww
0284デフォルトの名無しさん
2005/09/28(水) 00:13:49…まあいいか
#include<stdio.h>
int main()
{
int i,j,a,total;
for(i=1,j=1,a=3,total=1;i<50;i++,a+=2)
{
total+=a*j;
j*=-1;
}
printf("%d",total);
return 0;
}
0285デフォルトの名無しさん
2005/09/28(水) 00:21:59最初からこうしろ
for(i=1,j=1,a=3,total=1;i<50;i++,a+=2,j*=-1,total+=a*j){}
0286まとめ
2005/09/28(水) 00:33:32問題を解きたい→どんどん解け
問題を出したい→どんどん出せ
■今までに出された問題
>42 HelloWorld!を出しやがれ
>44 1から50までの和
>46 ファイルから読み込み大きい数から並べて
>52 物体が通る軌跡を求めろ
>106 まずは字句解析と行こうか
>124 神経衰弱、ブラックジャック
>125 ぷよぷよ
>126 ブロック崩し、インベーダ
>129 ジャンケンゲーム
>181 じゃぁ、1+3-5+7-9+11-13+・・・を50回
>207 ソートするプログラム
>215 スペース・タブを に変換
>224 次は構文解析だな
>229 HTML特殊文字をエスケープ
>236 ○×ゲームをつくれ
■インデントする方法
・ を書き込むとスペースに変換されます
・タブやスペースを に置換して書き込むとインデントが整います
・メモ帖・秀丸・VSなどの、エディタの置換機能を使います
▼コツ
・タブを置換したい場合はエディタ上のタブをコピーして検索窓でペーストします
・スペースはインデント単位(2,4,8個など)でまとめて置換すると単独のスペースを無視できます
・ギコナビなら自動変換機能があります。
0287デフォルトの名無しさん
2005/09/28(水) 01:37:58void sort(int a[],int b){
  if(b>1){
    int c,i,j,m,n,x;
    
    x=(a[0]+a[b/2]+a[b-1])/3;
    
    i=0;
    j=b-1;
    m=0;
    n=b-1;
    
    while(1){
      while(a[i]<x)
        i++;
      while(a[j]>x)
        j--;
      if(i>=j)
        break;
      c=a[i];
      a[i]=a[j];
      a[j]=c;
    }
    
    sort(a,i);
    sort(&a[i],b-i);
  }
  return;
}
0288デフォルトの名無しさん
2005/09/28(水) 01:39:550289ポポ素 ◆Qgm8RFT0/.
2005/09/28(水) 02:41:42'A'と"A"の違いって何?
ごめん、一人レベルの低い質問して…
0290デフォルトの名無しさん
2005/09/28(水) 02:44:31""は文字列
"a" == {'a', '\0'}
0292デフォルトの名無しさん
2005/09/28(水) 03:22:280293ポポ素 ◆Qgm8RFT0/.
2005/09/28(水) 03:23:53return(0);ってどういう意味なんですか?先生型ヘボい質問よろしく☆
あたいがつかってる参考書にはどこにものってなくて
なくてもいけるんだけど、コンパイルしたとき
関数を返してくださいみたいな表示がでてくる。
例えば
#include (studil.h)
main() {
printf("プギャ〜!");
{
でreturn(0); がなくてもプギャーは表示されるんだけど
return(0); があるのと無いのって具体的に何が違うのかな…
やっぱりあった方がいいんですか?
ハァ…細かい疑問だらけだよー
0294ちぁ ◆7YYts5tb9s
2005/09/28(水) 03:31:52簡単にいえば
mainでreturn 0;するとmain関数に0を返す。 これは普通は通常終了を意味する。
他の関数でreturnした値はその関数の返す値となる
0295デフォルトの名無しさん
2005/09/28(水) 03:34:38本来ならmainは値を返さないといけないんだけど(返値の型はintだし)
C++ではmain関数に限り、何も書かなければコンパイラが勝手にreturn 0;があるものとしてコンパイルしてくれる。
C言語ではダメだから、C++コンパイラで勉強する場合でも一応書く癖をつけておいた方がいいけど。
0296デフォルトの名無しさん
2005/09/28(水) 03:38:32http://up.isp.2ch.net/up/21ed13e34ef4.zip
どうか一つよろ。
手元のCデスクトップリファレンス見ながら打ってるんだが、
コマンドライン引数の取得の仕方が載ってなくて困った困った。
0297デフォルトの名無しさん
2005/09/28(水) 03:39:53マジレスしようと思ったが突っ込むところが多すぎて面倒なんでやめた。
mainの前にvoidって書いとけ。
何も書かないか、 intって書いたときはreturn 0;しとけ。
>294
>295
不十分。
0298デフォルトの名無しさん
2005/09/28(水) 03:44:01処理系定義のmainは使うなや
0299デフォルトの名無しさん
2005/09/28(水) 03:47:03> プログラミングは高校の授業で数回ポケコンでやったことがある程度です
> その授業はprintfで簡単な計算結果を表示するだけでした
>>
> XAAVは以上のプログラミング経験の中で作ったものです
> printfとscanfしか知らなかった中で作ったので、大多数の時間をC言語の理解に費やしました
> C言語を調べながら3日程で作りましたのでそこら中に間違った箇所があるかもしれません
> バグを見付けられたかたは指摘の程をお願いします
これをほぼ0の知識の中で三日間で作れるものなのか?
神なのか?
0300デフォルトの名無しさん
2005/09/28(水) 03:49:170301デフォルトの名無しさん
2005/09/28(水) 03:50:10正直すまんかった。
処理系の話まで説明する元気はなかった。
0302ちぁ ◆7YYts5tb9s
2005/09/28(水) 03:50:54簡単にって書いたつもりだけどそれでもダメなのか?
int main( void)
{
printf("プギャ〜!");
return 0;
}
って訂正してから言わなきゃダメだった?
しかもLCもしなきゃだめだった?
環境書いてないからどうしようもないんだけど…
0303デフォルトの名無しさん
2005/09/28(水) 03:56:34型の話からすべきだと思っただけ。
たぶんそれでは理解できないと思ったから。
ていうか俺もちゃんと説明してないんだから不十分とかいえんわな、悪かった。
0304デフォルトの名無しさん
2005/09/28(水) 04:00:00いいんじゃないでつか?
タブをスペース4つに変換するコード、だよね。
ちょっと欲を出して、タブを4の倍数列の位置になるように調整するようにしてみては。
普通のエディタではタブ1個も、スペース1個+タブ1個も同じ列に揃うよね。
前後のスペースを考慮して変換するスペースの個数を変えてみるとか。
0305デフォルトの名無しさん
2005/09/28(水) 04:38:580307ちぁ ◆7YYts5tb9s
2005/09/28(水) 05:37:000309ちぁ ◆7YYts5tb9s
2005/09/28(水) 05:52:590310ポポ素 ◆Qgm8RFT0/.
2005/09/28(水) 05:58:16一度出直してきます…
0311ちぁ ◆7YYts5tb9s
2005/09/28(水) 06:05:33おぃちゃんに分からないこといってみ??
できる限りの説明ならするよ
0312デフォルトの名無しさん
2005/09/28(水) 06:07:51誰か和訳してください。
unsigned pop(unsigned x){
//受け取った整数の立っているbitの数を返す関数
x -= x >> 1 & 0x55555555;
x = (x&0x33333333) + (x>>2 & 0x33333333);
x = x + (x>>4) & 0x0f0f0f0f;
x = x + (x>>8);
x = x + (x>>16);
return x & 0x3F;
}
0313デフォルトの名無しさん
2005/09/28(水) 06:24:290314デフォルトの名無しさん
2005/09/28(水) 06:31:28ありがとございます。
注文しました。
0316ちぁ ◆7YYts5tb9s
2005/09/28(水) 06:43:14型っていうのは>>308でいってる通り
整数型(int), 短整数型(short int), 長整数型(long int)とかそういうの
例えば
int atai;
としたら、整数型のataiが確保される。
これはわかるでしょ?
>>303は多分
int main( void)
の型の話をしてると思うんだけど、mainがintだからreturnで返す値もint(整数)型の値を返す必要があるの
普通はmainが返す値はプログラムの終了コードになって、終了コードが0なら通常終了, 1ならエラー終了みたいになってる
これでもなんかわからないかな?
0317ちぁ ◆7YYts5tb9s
2005/09/28(水) 06:48:06なんでmainがintかっていうとmainも関数だから値を返す必要があるの
基本的にmainの呼出し元はOSだから、0が通常終了0以外がエラー終了とかが約束的になってるの
0318デフォルトの名無しさん
2005/09/28(水) 07:39:09おいちゃんむずーーーい(><)
とりあえず、
最後にリターン0で返せば
そのプログラムが通常終了になるってことでいいのかな?
でそれをしないと終了しないとか?
で、C++のコンパイラだと、最後にそれ書かなくても
かってに書いてることにしてくれるとか(前レス参照で)
0320デフォルトの名無しさん
2005/09/28(水) 08:07:02誤解生み捲くりそうな表現だな。
0321デフォルトの名無しさん
2005/09/28(水) 09:12:39今はあんま深く考えずに
int main()
と書いたら、最後にreturn 0;と書く物だと覚えておけばいいよ。
0322デフォルトの名無しさん
2005/09/28(水) 12:36:39連結リストにデータを格納してから表示しました
http://gamdev.org/up/img/3437.phps
次は>>224にとりかかります!
0323デフォルトの名無しさん
2005/09/28(水) 15:34:52どんな誤解を生むんだ?
0324デフォルトの名無しさん
2005/09/28(水) 16:08:39int main;
0325デフォルトの名無しさん
2005/09/28(水) 16:15:19mainと言う関数の戻り値がintであっても、mainと言う識別子の評価結果はintではないですね
型は int(*)() 辺りでしょうか?
○int x = main();
×int x = main;
0326デフォルトの名無しさん
2005/09/28(水) 17:12:260327デフォルトの名無しさん
2005/09/28(水) 18:07:100328デフォルトの名無しさん
2005/09/28(水) 18:15:24下: int型変数xを、変数mainの値で初期化する。
0329デフォルトの名無しさん
2005/09/28(水) 18:55:22変数mainは危ない様な気が。
それと個人的意見だが、勉強中の香具師はノート(テキスト)を取っといた方がいいと思う。一度見て覚えても忘れる事なんてざらにあるし。
先頭にはまとめ(>>286)を貼っとくといいかも。
0330デフォルトの名無しさん
2005/09/28(水) 19:31:18なら通った
0331デフォルトの名無しさん
2005/09/28(水) 20:04:151:キーボードから「Nullpoint」を入力したら「ッガ!!」を返すプログラムを作ってください
「Nullpoint???」や「???Nullpoint」などでは「ッガ!!」をしなくてもかまいません
2:上記のプログラムに「Nullpoint」以外を入力したら「フーン、で?」を返すプログラムを作ってください
3:上記のプログラムの挙動を「return」と入力するまで繰り返すプログラムを作ってください
4:「Nullpoint???」や「???Nullpoint」などでも「ッガ!!」を返すように改良してください
この問題のポイントはキーボードからの入力をどう判定するかにあります。
1ができれば2は難しくないはずですが、
文字列の桁あふれや'\n'の扱いに慣れていない人は、3でつまずくかもしれません。
分からない時は、堂々と質問しましょう。
0332デフォルトの名無しさん
2005/09/28(水) 20:09:080333デフォルトの名無しさん
2005/09/28(水) 20:12:13typeにはマクロかenumで
#define TOKEN_KEYWORD 0
type = TOKEN_KEYWORD;
みたいに後でめんどくさくならないようにした方がいいよ。
0334デフォルトの名無しさん
2005/09/28(水) 20:15:56ttp://gamdev.org/up/
0335デフォルトの名無しさん
2005/09/28(水) 20:32:39#include <stdio.h>
#include <stdlib.h>
int main(){
char str[100], ans[] = "Nullpoint";
int i;
printf("入力して下さい\n");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++)
if (str[i] != ans[i]) exit(0);
printf("ッガ!!\n");
return 0;
}
0336デフォルトの名無しさん
2005/09/28(水) 20:35:12#include <stdio.h>
#include <stdlib.h>
int main(){
char str[100], ans[] = "Nullpoint";
int i;
printf("入力して下さい\n");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++)
if (str[i] != ans[i]){
printf("( ´_ゝ`)フーン\n");
exit(0);
}
printf("ッガ!!\n");
return 0;
}
0337デフォルトの名無しさん
2005/09/28(水) 20:42:04文字列リテラルの仕組みが良く分かっているようですね
次回はぜひ標準ライブラリの関数を使ってみてください
>>335の関数を自作できる人ならば
strcmp()関数も自作できることでしょう
0338デフォルトの名無しさん
2005/09/28(水) 20:59:32strがデカイとansが変なところに行くんじゃ?
0339デフォルトの名無しさん
2005/09/28(水) 21:00:420340デフォルトの名無しさん
2005/09/28(水) 21:01:30110行目でコンパイルエラー。
×plist=(list*)malloc(sizeof list);
○plist=(list*)malloc(sizeof(list));
0341デフォルトの名無しさん
2005/09/28(水) 21:13:28>if (str[i] != ans[i]) exit(0);
の部分だけですね?
ここでは、両方に共通の変数[i]が使われています。
[i]はその前の文の
>for (i = 0; str[i] != '\0'; i++)
によって i = 0 に初期化されているので、
strとansの1文字目から判定を始めることが補償されています。
このとき、strが極端に長い文字列リテラルになっていたとしても、
ansは最初の宣言時の
>char str[100], ans[] = "Nullpoint";
の初期化によって、'N''u''l''l''p''o''i''n''t''\0'という、
十文字分の文字列リテラルであることが補償されています。
もしもstrが極端に長い文字列リテラルであったとすると、
[i]の値が9になった時、ans[9]は'\0'を示しますが、
STR[9]が文字の終端である'\0'になることはありません。
つまり、
>if (str[i] != ans[i]) exit(0);
は真となり、 exit(0); が実行されるので、
ansを超えてヘンな所に行く前に、プログラムは終了します。
ですから、>>335でも問題はありません。
しいていうならば、
この関数を他のプログラムのmain関数から呼び出す部品として使う時に、
exit を使っていると、呼び出しもとの main関数に戻れないので、
return を使うようにしたほうがいいかもしれません。
……と、書いているうちに、自己解決されたようですね。遅レススマン
0342デフォルトの名無しさん
2005/09/28(水) 21:23:29#include <stdio.h>
#include <stdlib.h>
int strcmp(char s1[], char s2[])
{
int i;
for (i = 0; s1[i] != '\0'; i++)
if (s1[i] != s2[i]) return 1;
return 2;
}
int main(){
char str[100];
int ans;
0343デフォルトの名無しさん
2005/09/28(水) 21:24:10while(1){
printf("入力してください\n");
scanf("%s", str);
ans = strcmp(str, "return");
if (ans == 2) break;
ans = strcmp(str, "Nullpoint");
if (ans == 2) printf("ッガ!!\n\n");
if (ans == 1) printf("( ´_ゝ`)フーン\n\n");
}
return 0;
}
0344デフォルトの名無しさん
2005/09/28(水) 21:28:381)
#include<stdio.h>
main()
{
char buf[256];
char str[10]="Nullpoint";
int i;
gets(buf);
for(i = 0; i < 9; i++){
if(buf[i] == str[i])
continue;
else
break;
}
if(i == 9)
printf("ガッ!!");
}
0345デフォルトの名無しさん
2005/09/28(水) 21:37:39.def___main;.scl2;.type32;.endef
.section .rdata,"dr"
LC0:
.ascii "HELLO\12\0"
.text
.globl _main
.def_main;.scl2;.type32;.endef
_main:
pushl%ebp
movl%esp, %ebp
subl$8, %esp
andl$-16, %esp
movl$0, %eax
addl$15, %eax
addl$15, %eax
shrl$4, %eax
sall$4, %eax
movl%eax, -4(%ebp)
movl-4(%ebp), %eax
call__alloca
call___main
movl$LC0, (%esp)
call_printf
movl$0, %eax
leave
ret
.def_printf;.scl3;.type32;.endef
0346デフォルトの名無しさん
2005/09/28(水) 22:11:21関数による値の受渡しがよくできていますね。
ただ。strcmp()関数というのは、
標準ライブラリ<string.h>で定義されている関数の名前なので、
同じような挙動をする関数でも、別の名前に変えたほうがいいでしょう。
>>344
こちらもいいですね。continue;とbreak;の使い方が効果的です。
この関数を自作できる人なら strncmp()関数を自作できることでしょう。
>>344と>>335では、
「Nullpoint???」を入力した時のプログラムの挙動が違います。
>>335では「ッガ!!」されませんが、>>344ではされます。
この違いは文字列リテラルを扱う上で意外に重要になるので、
両方のやり方を場合に応じて使い分けられるようになることが、
初心者卒業の目安になることでしょう。
>>345
誤爆やスレ違いをした時には一言詫びる余裕が持てると、
人間関係が円滑にすすむかも知れませんよ。
0347デフォルトの名無しさん
2005/09/28(水) 22:12:03strcmp←まず、この関数の使い方を勉強しろ
0348デフォルトの名無しさん
2005/09/28(水) 22:15:02mainの関数を宣言する時に、
>main()
と宣言した上で、
retur; による返り値を返さずにプログラムが終了すると、
コンパイラによっては警告を出してきます。
これは、main関数が
int main (void) または
int main (int argc, cha *argv[]) と定義されているためです。
この定義の意味はおおざっぱにいうと、
この関数の名称は main といい、
()の中の値を使って {}の処理を行い、
intの値を返す関数です。という意味になります。
ですから、int の値を返さないで終了しようとすると、
「値を返し忘れていませんか?」とコンパイラが心配してくれるのです。
ただし、main だけで int main と宣言していない時には、
これは値のない関数なのだろうと、納得するコンパイラもあります。
この場合は、return; による値がなくとも、
あるいは return; を使わずに終了していても、警告はされません。
また、int main ではなく void main と宣言した場合は、
void というものが「空っぽの値」という意味なので、
この main 関数は値が返って来ない関数です、という意味になり、
retur; で値を返すと、警告又はエラーになってしまいます。
ですから、main だけでの宣言は避けて、
int main と宣言して returnで値を返すか、
void main と宣言して return で値を返さないか、どちらかにするとよいでしょう。
0349デフォルトの名無しさん
2005/09/28(水) 22:21:21けど、問題の解決策を先ずは自分で考えてから、strcmpを知るのもありなんじゃないかな?
先に strcmp を知っていた人は、逆に問題として、自分で strcmp を作ってみてください。
他の標準ライブラリの関数も、自分でできるものがないか試してみると勉強になりますよ。
その時の参考や解答になるような本として、「新ANSI C言語辞典」をオススメしておきます。
0350デフォルトの名無しさん
2005/09/28(水) 22:29:35標準関数とやらを使ったら4もでけた ヽ(´ー`)ノ
#include <stdio.h>
#include <string.h>
int main(){
char str1[100], *p;
while(1){
printf("入力してください\n");
scanf("%s", str1);
if (strcmp(str1, "return") == 0) break;
p = strstr(str1, "Nullpoint");
if (p != NULL)
printf("ッガ!!\n\n");
else
printf("( ´_ゝ`)フーン\n\n");
}
return 0;
}
0351デフォルトの名無しさん
2005/09/28(水) 22:33:22言ってる事はもっともだが、俺ルールを続けるのはあまりよくない
仕組みを理解したら早い段階で標準ライブラリを使うようにする事
プログラムは常に誰が見ても判りやすくなる様に心掛けよう
明日の自分は他人である。
0352デフォルトの名無しさん
2005/09/28(水) 22:34:21int main(void)
{
char *needle = "Nullpoint";
char buffer[1024];
if (fgets(buffer, sizeof buffer, stdin))
{
for (int i = 0; buffer[i]; i++)
{
int j = 0;
while (buffer[i + j] == needle[j])
j++;
if (needle[j] == '\0')
{
puts("ガッ!!");
return 0;
}
}
}
return 0;
}
0353ちぃ ◆7YYts5tb9s
2005/09/28(水) 22:54:250354デフォルトの名無しさん
2005/09/28(水) 23:25:22おまえはまずシフトキーの長押し練習汁w
0355デフォルトの名無しさん
2005/09/28(水) 23:34:20ちなみにC++とC99ではreturnがないままmain()を抜けるとreturn 0;を行うとなっている。
0357デフォルトの名無しさん
2005/09/29(木) 00:28:25ttp://gamdev.org/up/img/3440.phps
これらの解答って採点基準とかあるの?
0358デフォルトの名無しさん
2005/09/29(木) 00:45:26基本は自己採点
偶に出題者か関係の無い他人が採点してくれる
0359デフォルトの名無しさん
2005/09/29(木) 01:58:40問題解きたい→どんどん解け
問題出したい→どんどん出せ
採点したい→どんどんしろ
■今までに出された問題
>42 HelloWorld!を出しやがれ
>44 1から50までの和
>46 ファイルから読み込み大きい数から並べて
>52 物体が通る軌跡を求めろ
>106 まずは字句解析と行こうか
>124 神経衰弱、ブラックジャック
>125 ぷよぷよ
>126 ブロック崩し、インベーダ
>129 ジャンケンゲーム
>181 じゃぁ、1+3-5+7-9+11-13+・・・を50回
>207 ソートするプログラム
>215 スペース・タブを に変換
>224 次は構文解析だな
>229 HTML特殊文字をエスケープ
>236 ○×ゲームをつくれ
>331「Nullpoint」を入力したら「ッガ!!」
■インデントする方法
・ を書き込むとスペースに変換されます
・タブやスペースを に置換して書き込むとインデントが整います
・メモ帖・秀丸・VSなどの、エディタの置換機能を使います
▼コツ
・タブを置換したい場合はエディタ上のタブをコピーして検索窓でペーストします
・スペースはインデント単位(2,4,8個など)でまとめて置換すると単独のスペースを無視できます
・ギコナビなら自動変換機能があります。
■解答はソース丸貼りか↓にうp
ttp://gamdev.org/up/
0360デフォルトの名無しさん
2005/09/29(木) 04:08:39そこでgotoを使うのはちょっとなぁ・・・
その程度ならループ内で処理できるでしょうに
0361デフォルトの名無しさん
2005/09/29(木) 04:09:14http://gamdev.org/up/img/3441.phps
0362デフォルトの名無しさん
2005/09/29(木) 05:27:190363デフォルトの名無しさん
2005/09/29(木) 06:01:25まさに神
俺は専門学校で目茶苦茶覚えが早いっていわれて褒めちぎられたけど
三日目だとやっと関数覚えたくらいだな
ポインタのポインタなんて理解すらできないと思う
0364デフォルトの名無しさん
2005/09/29(木) 07:07:240365デフォルトの名無しさん
2005/09/29(木) 07:28:47int var; として、
size(int) ○
size int ○
size(var) ○
size var ×
0366デフォルトの名無しさん
2005/09/29(木) 09:01:210367デフォルトの名無しさん
2005/09/29(木) 09:21:23難易度★★☆☆☆
コンピュータがランダムに3桁の数(以後、コード)を生成
プレイヤーはコンピュータの出すヒントを元にコードを推理していく
・コードは同じ数字を使用していない
・プレイヤーが3桁の数字を入力すると、コンピュータはヒントをひとつ出力
・ヒントの出し方は下記の通り
数字と桁が一致していれば、『ヒット』、数字は合っているが桁が違う場合は『ブロー』
(例)コード=135の場合
入力 ヒント
246・・・0ヒット 0ブロー
012・・・0ヒット 1ブロー
123・・・1ヒット 1ブロー
153・・・1ヒット 2ブロー
135・・・正解!
0368デフォルトの名無しさん
2005/09/29(木) 09:32:140369デフォルトの名無しさん
2005/09/29(木) 10:24:05ヒット&ブローというと4桁だけど。
普通に紙と鉛筆だけでもできるからコンピュータ普及前からあるゲームだ。
ミニゲームとして謎解き系のゲームに含まれていたりするから知っている人は多いと思う。
0370デフォルトの名無しさん
2005/09/29(木) 10:25:44そろそろ飽きてきたかな?
でも君を責めはしない。
仕事や授業で締め切りに追われながら
毎日必死にCを使う状態にある人でないと、
とても身に付くものではないよ。
Cはプロ用の言語という事実を知らない人が多すぎる。
0371デフォルトの名無しさん
2005/09/29(木) 10:41:02プログラムを作るのが面白いんであって、出来た物が面白いかどうかなんて関係ないだろ
0372デフォルトの名無しさん
2005/09/29(木) 10:46:210373デフォルトの名無しさん
2005/09/29(木) 10:50:500374デフォルトの名無しさん
2005/09/29(木) 11:43:200375デフォルトの名無しさん
2005/09/29(木) 11:54:57重複しない数字3つを生成するところから分からない・・・orz
0376デフォルトの名無しさん
2005/09/29(木) 11:57:45俺もやってみようかと思ったけど、数学駄目ぽ
0377デフォルトの名無しさん
2005/09/29(木) 12:01:471.変数aに0から9の乱数を作る
2.変数bに0から9の乱数を作る
3.変数b==aなら2へ戻る
4.変数cに0から9の乱数を作る
5.変数c==aなら4へ戻る
6.変数c==bなら4へ戻る
0378デフォルトの名無しさん
2005/09/29(木) 12:04:211.0−999の乱数を作る
2.100の位、10の位、1の位を取り出す
3.100の位==10の位なら1へ
4.100の位==1の位なら1へ
5.10の位==1の位なら1へ
0379デフォルトの名無しさん
2005/09/29(木) 12:06:471.要素数10個の配列を作る
2.配列に順に0−9を入れる
3.0−9の乱数を2つ作る
4.配列の要素2つを入れ替える
5.十分な回数繰り返す
0380デフォルトの名無しさん
2005/09/29(木) 12:09:57数学はあるに越したことはないけど
なくても何とかなることは多い。
あとは慣れ。
数学に強い人は理論的思考が得意な人が多いから、
最適化とか綺麗なコーディングとかの点で多少有利な程度。
0381375
2005/09/29(木) 12:19:28いろんな手法があるんですね
0382デフォルトの名無しさん
2005/09/29(木) 12:26:57http://gamdev.org/up/img/3442.phps
コードブレーカーつくりますた
0383デフォルトの名無しさん
2005/09/29(木) 13:13:36数学といってもレベルによる
汎用コンピュータ言語は全般的に中学で習う数学のレベルは欲しい
まあ、高校とか大学の数学でも基本的なことは中学と変わらないんだけどね
0384デフォルトの名無しさん
2005/09/29(木) 14:24:06配列の初期化をmemsetでやってるのは、
どのレスの辺りからの流れ?
0385デフォルトの名無しさん
2005/09/29(木) 14:39:06他スレで教えてもらいますた
たぶんゲ製作
0386デフォルトの名無しさん
2005/09/29(木) 15:17:56input関数を改良してみよう
・数字を3桁一気に入力できるように
・入力に重複があった場合、再帰的に自分の関数を呼んでるので、
どんどんネストが深くなる(入力しだいで無尽蔵)
0387デフォルトの名無しさん
2005/09/29(木) 15:26:45・乱数系列の初期化をしていないから起動直後は毎回同じ数字になる。
・乱数を10の法で得るのはランダムネスが下がるから感心しないが……まぁいいか。
・マジックナンバーの3を散りばめ過ぎ。マクロ定数にでもしておけばinput()の修正だけで>369の言うヒット&ブローになるのに。
・馴れないうちは複文化推奨。殊にdo-whileを生で使うのは読み難いと言う弊害もある。
・make_answer()はwhileよりforの方がinput()と統一が取れてよくないか? いや、嫌なら構わんが。
・input()で末尾再帰とはいえ再帰はいかがなものかと。承知でやるなら止めないが。
・scanf()は感心しないなぁ。
・配列初期化をmemset()でやるのも……わかっててやるならいいが、わかっているかな?
・標準入力とgetch()を混ぜて大丈夫かな?
・nのみで終了か。Nだと終了しないのね。
0388デフォルトの名無しさん
2005/09/29(木) 15:47:41詳しく!
0389デフォルトの名無しさん
2005/09/29(木) 15:55:05配列のメモリイメージを即座にイメージでき、0フィルすることで何が起きるか判断できるなら使っても医院で内科医。
但し、「取り敢えず0を埋めておけば安全だろう」という考え方は間違い。
0390デフォルトの名無しさん
2005/09/29(木) 17:43:520391デフォルトの名無しさん
2005/09/29(木) 20:39:580392デフォルトの名無しさん
2005/09/29(木) 20:48:56#include <stdio.h>
int main(void)
{
int answer;
int i;
answer = 0;
for(i=1; i<=50; i++)
{
answer = answer + i;
printf("%d\n",answer);
}
return 0;
}
これやったら答え1250になったんだけど、これであってる?
確かめる方法ある?
0393デフォルトの名無しさん
2005/09/29(木) 20:56:53たぶん…
0394デフォルトの名無しさん
2005/09/29(木) 20:57:110395デフォルトの名無しさん
2005/09/29(木) 20:59:58ごめん答え言っちゃった…(´・ω・`)
0396デフォルトの名無しさん
2005/09/29(木) 21:02:27俺がそのプログラムを実行すると1275になったわけだが。
0397デフォルトの名無しさん
2005/09/29(木) 21:10:29なるほど、そういう求め方があるのですね。
>>394
階差数列・・・聞いたことないです。調べてみます。
>>396
こちらでもう一度実行してみたところ、1275でした。
どうやら見間違えたようです。
教えてくださった皆さん、ありがとうございました。
0398デフォルトの名無しさん
2005/09/29(木) 21:18:010399デフォルトの名無しさん
2005/09/29(木) 21:37:40ヒント 数Bの教科書
0400デフォルトの名無しさん
2005/09/29(木) 21:50:14なるほど!知らなかったです。
0401デフォルトの名無しさん
2005/09/29(木) 22:50:19書けるじゃない、この場合はそう書くべき
0402デフォルトの名無しさん
2005/09/30(金) 00:46:530403デフォルトの名無しさん
2005/09/30(金) 02:40:53#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define KETA 3
int main(void){
int i,p,v,c,n,z,a[10];
for(i=0; i<10; ++i) a[i]=-1;
srand(time(NULL));
a[z=p=rand()%9+1]=0;
for(i=1;i<KETA;) if(a[p=rand()%10]<0){ a[p]=i++; z=z*10+p;}
for(c=1;c<=10;++c){
printf("\n[%2d] >> ",c); scanf("%d",&n);
for(v=0,i=KETA-1;i>=0;--i,n/=10) v+=(a[p=n%10]==i)?10:(a[p]>=0)?1:0;
if(v==10*KETA) break;
printf("%14c## %2dH %2dB",' ',v/10,v%10);
}
printf("\n\n <<%d>>\n",z);
return 0;
}
0404デフォルトの名無しさん
2005/09/30(金) 02:57:40初心者にも読める形でかいたほうがいいと思うぞ
0405デフォルトの名無しさん
2005/09/30(金) 03:38:39なにか問題あるの?
0406デフォルトの名無しさん
2005/09/30(金) 03:44:590407デフォルトの名無しさん
2005/09/30(金) 04:14:52static int getAns(void){ return ans_; }
static void unUsed(void){ int i; for(i=0; i<10; ++i) usedNumber_[i]=-1; }
static int evalUsedNumber(int p, int seq){
if(usedNumber_[p]==seq) return 10;
if(usedNumber_[p]>=0) return 1;
return 0;
}
static void setAns(int p, int seq){ usedNumber_[p]=seq; ans_=ans_*10+p; }
void makeAns(void){
int i,p;
unUsed(); setAns(rand()%9+1, 0);
i=1; do{ p=rand()%10; if(usedNumber_[p]<0) setAns(p, i++); }while(i<KETA);
}
int isCorrect(int cnt){
int i,p,num,eval=0;
printf("\n[%2d] >> ",cnt); scanf("%d",&num);
for(i=KETA-1;i>=0;--i){ p=num%10; eval+=evalUsedNumber(p,i); num/=10; }
if(eval<10*KETA) printf("%14c## %2dH %2dB",' ',eval/10,eval%10);
return (eval==10*KETA);
}
void dispAns(void){ printf("\n\n <<%d>>\n",getAns()); }
int main(void){
int cnt;
srand(time(NULL));
makeAns();
for(cnt=1;cnt<=10;++cnt) if(isCorrect(cnt)) break;
dispAns();
return 0;
}
0408デフォルトの名無しさん
2005/09/30(金) 04:21:32どうせなら setAns(), setUsedNumber(), getUsedNumber() 用意しれw
0409408
2005/09/30(金) 04:27:300410デフォルトの名無しさん
2005/09/30(金) 06:35:16問題解きたい→どんどん解け
問題出したい→どんどん出せ!最近不足気味
採点したい→どんどんしろ
■今までに出された問題
>42 HelloWorld!を出しやがれ
>44 1から50までの和
>46 ファイルから読み込み大きい数から並べて
>52 物体が通る軌跡を求めろ
>106 まずは字句解析と行こうか
>124 神経衰弱、ブラックジャック
>125 ぷよぷよ
>126 ブロック崩し、インベーダ
>129 ジャンケンゲーム
>181 じゃぁ、1+3-5+7-9+11-13+・・・を50回
>207 ソートするプログラム
>215 スペース・タブを に変換
>224 次は構文解析だな
>229 HTML特殊文字をエスケープ
>236 ○×ゲームをつくれ
>331「Nullpoint」を入力したら「ッガ!!」
>367 コードブレーカー
■インデントする方法
・ を書き込むとスペースに変換されます
・タブやスペースを に置換して書き込むとインデントが整います
・メモ帖・秀丸・VSなどの、エディタの置換機能を使います
▼コツ
・タブを置換したい場合はエディタ上のタブをコピーして検索窓でペーストします
・スペースはインデント単位(2,4,8個など)でまとめて置換すると単独のスペースを無視できます
・ギコナビなら自動変換機能があります。
■解答はソース丸貼りか↓にうp
ttp://gamdev.org/up/
0411デフォルトの名無しさん
2005/09/30(金) 07:31:51>125 ぷよぷよ
>126 ブロック崩し、インベーダ
このあたりもうちょっと分解して出題してくれないかな
0412デフォルトの名無しさん
2005/09/30(金) 08:51:56分解って、どういうこと
部品に分割してくれって事でいいのか?
リアルタイムなゲーム(>>125、>>126)の基本は以下の流れとなる
スタート→オブジェクト初期化→画面表示→自分を操作→敵を移動→当たり判定→終了判定→画面表示へ戻る
0413デフォルトの名無しさん
2005/09/30(金) 09:36:230414デフォルトの名無しさん
2005/09/30(金) 10:54:58ttp://www.amazon.co.jp/exec/obidos/ASIN/4839918791/vipantenna-22/ref=nosim/
0415デフォルトの名無しさん
2005/09/30(金) 19:08:45ふつうのぷよぷよでは、入力に迷っている間にぷよが落ちてしまうのですが、
>>412の手順だとこちらが入力に迷っている間はぷよも動かないと思うのですが、
それでもいいのでしょうか?
0416デフォルトの名無しさん
2005/09/30(金) 19:12:10入力がないという操作
0417デフォルトの名無しさん
2005/09/30(金) 19:34:05ヒントをお願いしてもいいですか?
それは標準ライブラリで実現可能ですか?
なにかのdllが必要ですか?
0418デフォルトの名無しさん
2005/09/30(金) 19:57:43ぷよやアルルのアニメーション、入力操作を全部別々で
そのあたりを詳しく教えてくれるとありがたいのです
0419デフォルトの名無しさん
2005/09/30(金) 20:21:000420デフォルトの名無しさん
2005/09/30(金) 20:25:290421デフォルトの名無しさん
2005/09/30(金) 20:30:17標準ライブラリでは無理。
SDLがお手軽。
0422デフォルトの名無しさん
2005/09/30(金) 20:30:19>>412にあるような流れを、短い周期で繰り返すわけ
アニメーションなら、ループが回ってくるたびに少しずつ動かしていくし
キャラの操作なら、いま入力があるかどうかを調べてキャラを動かす(入力なければ動かさない)
0423デフォルトの名無しさん
2005/09/30(金) 20:43:16学校にはPC-9801があって、300ページ程度のいろいろな専門書が50冊くらいあった
それを読んでぷよぷよを四ヵ月くらいかけて作ったのを覚えてる(対戦しかできないけど
グラフィックはスーパーファミコンを持って来て一ドットづつ目視でコピー
横に並べて見てもほとんど区別付かないくらい精巧にできたよ
グラフィックが大部分をしめてFDで二枚だった(2HDか2DDかは忘れた)
今でも仕事さえ無ければ二週間で程度で作れると思うな
適当にコードが書ければ難しくないと思う
0424デフォルトの名無しさん
2005/09/30(金) 20:47:34画面表示→ちょっと待つ→入力あり→自分を操作…
└ ←入力なし ←┘
0425デフォルトの名無しさん
2005/09/30(金) 20:52:46それって天才じゃない?
俺は理解できないエラーが出たら3日は潰れる
で、質問スレで質問して袋叩きにされる
0426デフォルトの名無しさん
2005/09/30(金) 20:53:05今の奴は>>421みたく外部ライブラリに頼り切ってるからな
自分で自分に必要なライブラリも作ろうとはしない
腐り切った世の中になったもんだ
0427デフォルトの名無しさん
2005/09/30(金) 20:54:01ゲーム製作板にぷよぷよ作ってる人いたお
0428デフォルトの名無しさん
2005/09/30(金) 20:55:07その考えがよくないだろ
理解できないのならもう一度作り直す
これが基本
他人にきくなんかもってのほか
0429423
2005/09/30(金) 21:00:04どこが?
自分で書いてるんだから理解できないエラーなんてまず起きなかった
しかも聞ける奴なんていないから(顧問ですらコード書けない)全部自分でしなければならない
今だとネットとかで人に聞けば解決できると思ってるから、自分で考えないから何もできなくなってるのかも
>>426
そうかもな
便利なライブラリがあるなら使うけど、本当にそれが自分に必要なのか考えなきゃな
自分で作ったほうが動作が早いし扱いやすいなら自分で作るべき
0430デフォルトの名無しさん
2005/09/30(金) 21:02:17どこぞのゲーム会社社員が書いたライブラリとMSが定めたAPI
どちらを選ぶかで何か得るものがあるとは思えない
欠陥だらけのAPIを修復する作業を通じて、本当にあなたは何か得たのですか?
0431デフォルトの名無しさん
2005/09/30(金) 21:03:43誰にいってんの?
誤爆か?
0432デフォルトの名無しさん
2005/09/30(金) 21:05:02敗北宣言乙
有害だから根拠のない精神論やめろ
0433デフォルトの名無しさん
2005/09/30(金) 21:10:24一人言だろ
0434デフォルトの名無しさん
2005/09/30(金) 21:10:51自作自演乙
0435デフォルトの名無しさん
2005/09/30(金) 21:16:18Unix環境はtermio辺りだけど専門外なので詳しい人どうぞ
どっちにしてもゲーム作った人がうpするときは自分の環境も記入の事
0436デフォルトの名無しさん
2005/09/30(金) 21:19:44スレ違いじゃ!
0437デフォルトの名無しさん
2005/09/30(金) 21:25:25gccでコンパイルしているのですが、
warningが出てコンパイルができません。
以下のようなエラーです。
warning: cast to pointer from integer of different size
引っかかっている場所は、
double *ini=(double *)malloc(sizeof(double)*1000000);
という場所です。配列iniのサイズが小さいうちは以下のように
double ini[10000]
とすれば、通るのですが、大きなメモリ領域を確保しようと
mallocを使うと上のようなエラーが出て、コンパイルできません。
調べてみると、64ビット系で起こるエラーであるということは
わかったのですが、回避の仕方がわかりません。
どなたかご存じの方がいらっしゃったらお教えください。
OSはレッドハット8でカーネルは2.4.24です。
0438437
2005/09/30(金) 21:28:040439デフォルトの名無しさん
2005/09/30(金) 21:29:07> cast to pointer from integer of different size
0440デフォルトの名無しさん
2005/09/30(金) 22:03:180441デフォルトの名無しさん
2005/09/30(金) 22:05:10目の前の問題を放棄するってことか?
>>429
勝手に考えないとか決め付けるな
0442デフォルトの名無しさん
2005/09/30(金) 22:13:01真面目につくりたいなら、ゲ製作板とかで聞いた方がいいかもなー
0443421
2005/09/30(金) 22:13:04SDL_GetKeyState使うのも、strcmp使うのもなにも変わらないと思うけど。
0444デフォルトの名無しさん
2005/09/30(金) 22:18:26ベンダー依存になりますがこれなら使ってもいい?
0445デフォルトの名無しさん
2005/09/30(金) 22:22:22>>429
>便利なライブラリがあるなら使うけど、本当にそれが自分に必要なのか考えなきゃな
>自分で作ったほうが動作が早いし扱いやすいなら自分で作るべき
429ではないけれど、
SDLが悪いというのではなく、道具を選ぶことを怠るのが悪いと言いたいのでは?
万能包丁は便利だけどリンゴノ皮をむくには果物ナイフの方がいいかもしれないし、
サシミを切るには刺身包丁の方がいいかもしれない。
この場合の万能包丁や果物ナイフや刺身包丁の比喩のうち、
どれがSDLでどれが標準ライブラリなのか、なんて議論はナンセンスなわけで。
様々な道具がある中で何を選ぶかが問題なんじゃないかな。
そして、選ぶ時の選択肢は多い方がいいと思う。
0446デフォルトの名無しさん
2005/09/30(金) 22:26:01>>423は別にライブラリについて語ってるわけでもないのに、なんでまた>>426になるんだ?
で、なんでまたおまいらライブラリの是非について語ってるわけ?
0447デフォルトの名無しさん
2005/09/30(金) 22:26:480448デフォルトの名無しさん
2005/09/30(金) 22:27:20ライブラリをブラックボックスとして使ってる人が増えたことだと思う。
中身を知らずに、分かろうとせずに使う。それが低レベル化に繋がってる。
0449デフォルトの名無しさん
2005/09/30(金) 22:31:490450デフォルトの名無しさん
2005/09/30(金) 22:38:36紙に○と→でメモしても多くなってくるとややこしくなっちゃいます
0451デフォルトの名無しさん
2005/09/30(金) 22:38:59中身は隠されているけど推察はできる。
win32apiでもCライブラリでもSDLでも推察はできる。
推察をしようとしない人が多いのが問題だといいってるんだよ。
0452デフォルトの名無しさん
2005/09/30(金) 22:41:160453デフォルトの名無しさん
2005/09/30(金) 22:41:27>>426からそれは読み取れない
0454デフォルトの名無しさん
2005/09/30(金) 22:44:36このスレに何人いると思ってんだ?
0455デフォルトの名無しさん
2005/09/30(金) 22:46:12そこでだ!おまえら勉強用に1チップMSXを買うっていうのはどうだ?
値段も手ごろ、資料は十分、サンプルもベーマガの歴史分だけある
しかも経験者は数百万人以上いる
今回はMSX2相当になりスロットも2つ
前回の主だった要望が全て反映されてる
BASICはもちろんZ80マシン語やハードウェアハックなど実力を養ういいチャンスだぞ
0456デフォルトの名無しさん
2005/09/30(金) 22:46:59関係ない話を始めるほうが悪い
0457デフォルトの名無しさん
2005/09/30(金) 22:47:230458デフォルトの名無しさん
2005/09/30(金) 23:28:34簡単なゲームは作りやすい罠。
グラフィックも懲りようがなかったからシンプルでよかったし。
0459デフォルトの名無しさん
2005/09/30(金) 23:31:01アクセスできないのってWindowsだけじゃないの?
0460デフォルトの名無しさん
2005/10/01(土) 00:13:19XWindowも直接はできません。
0461x
2005/10/01(土) 00:19:280462デフォルトの名無しさん
2005/10/01(土) 00:27:53我が目を疑ったよ
0463ポポ素 ◆Qgm8RFT0/.
2005/10/01(土) 00:42:01>>410
とりあえずハローワールドだけかけたよ、今はここまでがあたいの限界…
#include <stdio.h>
main()
{
printf("Hello World");
return 0;
}
どうでしょうか…
0464デフォルトの名無しさん
2005/10/01(土) 00:44:080465デフォルトの名無しさん
2005/10/01(土) 00:48:17・"Hello World"ではなく、"Hellow World\n"
0466ちぁ ◆7YYts5tb9s
2005/10/01(土) 00:48:22この前の話聞いてなかったのか・・・ orz
そのコードは規格的には間違えてるよ・・・
コンパイラが勝手に修正してくれてるだけ・・・
0467デフォルトの名無しさん
2005/10/01(土) 00:48:55文字列の最後の'!'が抜けてる
コレ些細なようで重要
0469ちぁ ◆7YYts5tb9s
2005/10/01(土) 03:53:58こういうものはどう作ればいいのかとかそういうのを書こうと思うんだけど
例えば何を書いたらいいかな?
こういうのの解説が読みたいって人もプリーズ
0470デフォルトの名無しさん
2005/10/01(土) 04:00:340471デフォルトの名無しさん
2005/10/01(土) 04:03:340472デフォルトの名無しさん
2005/10/01(土) 04:06:39ネットワークの仕組み〜winny風P2Pソフトウェア開発への布石
0473デフォルトの名無しさん
2005/10/01(土) 04:09:120474デフォルトの名無しさん
2005/10/01(土) 04:10:59入門書読み終わった程度の奴にソケットならまだしもP2Pはおもしがきついだろ
0475デフォルトの名無しさん
2005/10/01(土) 04:21:01大体市販の入門書っていうのは
分かる奴が分からない奴は何が分からないか調べて書くと思うぞ
そいつも分からないことはかけないだろ
0476デフォルトの名無しさん
2005/10/01(土) 04:26:120477デフォルトの名無しさん
2005/10/01(土) 04:28:25だれも強制なんかしてないんだから
0478デフォルトの名無しさん
2005/10/01(土) 04:35:360479デフォルトの名無しさん
2005/10/01(土) 04:36:55かつあげかなんかにあってよっぽどイライラしてるんだろうな
0480デフォルトの名無しさん
2005/10/01(土) 04:37:42自己紹介乙。
0481デフォルトの名無しさん
2005/10/01(土) 04:41:130482デフォルトの名無しさん
2005/10/01(土) 05:27:170483デフォルトの名無しさん
2005/10/01(土) 06:23:51C言語のクソ本やクソサイトは存在だけで迷惑だからなぁ…
クソコード書く人間増やすなよ…
0484デフォルトの名無しさん
2005/10/01(土) 06:39:39#include <stdio.h>
int main(void)
{
int i, num = 0;
for (i = 1; i <= 50; i++)
{
num += i;
if (i != 50)
printf("%d たす\n", i);
else
printf("%d は\n", i);
}
printf("\n%d ですた\n", num);
return 0;
}
0485デフォルトの名無しさん
2005/10/01(土) 08:48:01int main() {
int sum = 0;
for (int i = 1; i <= 50; i++) {
sum += i;
}
cout << sum << endl;
return 0;
}
0486デフォルトの名無しさん
2005/10/01(土) 09:01:260487デフォルトの名無しさん
2005/10/01(土) 09:06:040488デフォルトの名無しさん
2005/10/01(土) 09:27:180489デフォルトの名無しさん
2005/10/01(土) 09:32:130490デフォルトの名無しさん
2005/10/01(土) 09:32:29C:
何か適当な値がreturnされる。
C++とC99:
そこにreturn 0;と書いたのと同じことになる。(main以外の関数ではCと同じ)
0491デフォルトの名無しさん
2005/10/01(土) 09:33:060492デフォルトの名無しさん
2005/10/01(土) 09:33:450493デフォルトの名無しさん
2005/10/01(土) 09:35:22現在 PHP
未来 Python
0494デフォルトの名無しさん
2005/10/01(土) 09:37:290495デフォルトの名無しさん
2005/10/01(土) 09:46:32強制的にJavaだよ・・・
今は、Javaばっかりでウンザリする
0496デフォルトの名無しさん
2005/10/01(土) 09:52:18Javaでいいよ。
Cはシステム記述言語。
アプリ書きには生産性が悪すぎる。
0497デフォルトの名無しさん
2005/10/01(土) 10:22:110498デフォルトの名無しさん
2005/10/01(土) 10:39:40無いからやりたきゃ自分で立ててください
>>492
質問には適切に答えましょう
>>493-494
個人的には色々書きたいですが、ここはそういう事を議論する場でありません、TPOをわきまえましょう
>>495-497
そういうのはマ板行ってやってください
0499デフォルトの名無しさん
2005/10/01(土) 10:47:090500デフォルトの名無しさん
2005/10/01(土) 12:00:35立てたら教えてくれるの?
0501デフォルトの名無しさん
2005/10/01(土) 12:59:510502デフォルトの名無しさん
2005/10/01(土) 13:04:37Man vs Man が出来たら Man vs Com も。
いわゆる AI なわけだが○×の AI は割と簡単。
0503デフォルトの名無しさん
2005/10/01(土) 13:08:440504デフォルトの名無しさん
2005/10/01(土) 13:16:390505デフォルトの名無しさん
2005/10/01(土) 13:17:58勉強にならない問題ってどれよ?
0506デフォルトの名無しさん
2005/10/01(土) 13:32:29>>502
0507デフォルトの名無しさん
2005/10/01(土) 13:41:04それじゃとりあえずC言語のコンパイラを書きなさい。
0508デフォルトの名無しさん
2005/10/01(土) 13:46:110509デフォルトの名無しさん
2005/10/01(土) 13:49:120510デフォルトの名無しさん
2005/10/01(土) 13:56:19プログラムを一から書かせても、
それはCの勉強にはならんだろう。
自己の乏しい知識のみで書くのだからな。
むしろ、○×ゲームの優れたソースを示し、
それを解読・改造させるべきではないのか?
教え方が間違っているような気がする。
0511デフォルトの名無しさん
2005/10/01(土) 14:18:40ブロックと当たり判定どうやってんの?
0512デフォルトの名無しさん
2005/10/01(土) 14:24:53乏しい知識でソースを読んでも「わかったつもりになる」だけじゃないのか?
自分で作ったバグを自分で修正してこそ得られるものもあると思うが
0513デフォルトの名無しさん
2005/10/01(土) 14:49:16java講座を一緒に受けよう!
http://pc8.2ch.net/test/read.cgi/tech/1110180044/
0514デフォルトの名無しさん
2005/10/01(土) 14:54:18>Z80マシン語
MSX2なら8bitじゃなかろーに?
0515デフォルトの名無しさん
2005/10/01(土) 14:57:50国産RISC CPUのR800を積んだ名機でした
2+まではZ80
0516デフォルトの名無しさん
2005/10/01(土) 15:08:14プログラムは書けなきゃ意味がない。
いくら読んでも書けなきゃ何もしないのと同じ。
0517デフォルトの名無しさん
2005/10/01(土) 15:10:490518デフォルトの名無しさん
2005/10/01(土) 15:10:500519デフォルトの名無しさん
2005/10/01(土) 15:16:49始まったんですけどついていけません・・・
誰か良い勉強方法を教えてください!
0520デフォルトの名無しさん
2005/10/01(土) 15:23:30学校辞めればいいじゃん
馬鹿は無理してやらなくていいよ
0521デフォルトの名無しさん
2005/10/01(土) 16:39:161・200510.txt ファイルに「2005.10.01 start」を書き込むプログラムを作ってください
「2005.10.01 start」はユーザが入力するものとします。
2・上記のファイルに書かれた「2005.10.01 start」の次の行に、
「2005.10.30 end」を書き込むプログラムを作ってください。
この「2005.10.30 end」もユーザが入力するものとします。
3・上記のファイルに書かれた「2005.10.01 start」と「2005.10.30 end」の間に、
「2005.10.02 test-1」を挿入するプログラムを作ってください。
この「2005.10.02 test-1」もユーザが入力するものとします。
4・上記のファイルに書かれたなかから、
「2005.10.02 test-1」の行だけを削除するプログラムを作ってください。
これらのプログラムでは、実行時に複数のファイルを作成しても構いませんが、
最終的に、200510.txt に書き込み(または削除)されるようにしてください。
0522デフォルトの名無しさん
2005/10/01(土) 17:21:07三角形の各辺の長さを表す整数を入力として、
・正三角形
・二等辺三角形
・不等辺三角形
・三角形じゃねー
を判断する
[制約]
三辺の長さをパラメータとし、以下の値を返す関数を作って使う事
・正三角形なら1
・二等辺三角形なら2
・不等辺三角形なら3
・三角形じゃねーなら-1
0523デフォルトの名無しさん
2005/10/01(土) 17:36:20・3x3に留まらず、5x5、或いは自由に設定できるように拡張せよ。
・三次元○×を考えよ。例えば4x4x4限定でもよいが、どう見せるか工夫のし甲斐があるだろう。
#実は3x3x3だと明らかにゲームを破綻させる問題がある。回避できるか検討せよ。
0524デフォルトの名無しさん
2005/10/01(土) 17:37:29どっちが早いかは人それぞれ
実践か解析していくのか好きなほうでやれば良い
0525デフォルトの名無しさん
2005/10/01(土) 17:37:50戻り値は一致する辺の数を返すのがいいんでない?
正三角形は3、不等辺三角形は1って感じで。
0526デフォルトの名無しさん
2005/10/01(土) 17:44:58一致する辺の数を返す関数を作る
そいつを使って
・正三角形なら1
・二等辺三角形なら2
・不等辺三角形なら3
でいいんじゃね?
0527デフォルトの名無しさん
2005/10/01(土) 17:49:30不等辺三角形は1、って一致する辺の数かよ?
一致する辺がない != 三角形ではない のでちうい
一致する辺が2
一致する辺が3
だろ?
0528デフォルトの名無しさん
2005/10/01(土) 17:49:43521の1の問題はこれでいいんですか!?
スペースが出力の対象になるかが心配ですけど…
include <stdio.h>
int main(void)
{
FILE *fp;
fp=fopen("200510.txt","w");
fprintf(fp,"2005.10.01 start");
fclose(fp);
return 0;
}
0529デフォルトの名無しさん
2005/10/01(土) 17:54:00問題をよく読みましょう
ファイル名は決まってるけど、入力は任意だよ
0530デフォルトの名無しさん
2005/10/01(土) 17:56:46Σ(´□`;)すいません
出直してきます…
0531デフォルトの名無しさん
2005/10/01(土) 17:57:49授業は教える側のペースで進むから、その速度で理解できない人は当然出てくる。
だから適当に良書と言われている簡単なCの入門書を読んで自分で勉強しよう。
授業でわからなかったとことか、次にやる部分とかを中心にやれば単位も余裕でもらえるさ。
0532デフォルトの名無しさん
2005/10/01(土) 18:00:400533デフォルトの名無しさん
2005/10/01(土) 18:02:30今度はできましたか!?
521の1
include <stdio.h>
int main()void
{
FILE *fp;
int i;
fp=fopen("200510.txt","w");
fscanf(fp,"%s",&i);
fprintf(fp,"%s",i);
fclose(fp);
return 0;
}
0534デフォルトの名無しさん
2005/10/01(土) 18:08:22スルーして下さい
0535デフォルトの名無しさん
2005/10/01(土) 18:09:050536デフォルトの名無しさん
2005/10/01(土) 18:12:35礼儀がなってませんでした…
コンパイラDLしてきます
0537デフォルトの名無しさん
2005/10/01(土) 18:14:53まじかよ!
0538デフォルトの名無しさん
2005/10/01(土) 18:17:02なにか間違ってましたか!!(;´д`)
0539デフォルトの名無しさん
2005/10/01(土) 18:18:54荒れるだけだからしばらく来るな
0540デフォルトの名無しさん
2005/10/01(土) 18:19:070541デフォルトの名無しさん
2005/10/01(土) 18:22:07あり得るなんて思わなかった。
想定外。
0542デフォルトの名無しさん
2005/10/01(土) 18:22:13死んできます
0543デフォルトの名無しさん
2005/10/01(土) 18:27:37ヒント:家庭教師
0544デフォルトの名無しさん
2005/10/01(土) 18:30:02おいおい、>522と>525をあわせれば
正三角形:3
二等辺三角形:2
不等辺三角形:1
非三角形:-1
だから辻褄は合ってるだろ?
要は、>522のように正三角形を1とするか>525のように正三角形を3とするかの違いだろ。
0545デフォルトの名無しさん
2005/10/01(土) 18:36:420546デフォルトの名無しさん
2005/10/01(土) 18:50:04"一致する辺の数"っていってるのに
1 = 同じ長さの辺が無い
ってのが理解しがたいんだと思われ
例えば
正三角形:3
二等辺三角形:2
不等辺三角形:0
非三角形:-1
ならどーよ?
0547デフォルトの名無しさん
2005/10/01(土) 19:48:19>このあたりもうちょっと分解して出題してくれないかな
神経衰弱
・マーク4種(スペード/ハート/ダイヤ/クラブ)、数字13種(A,2,...,10,J,Q,K)
の計52枚使用
・シャッフルしてテーブルに並べる。例えば13×4とする
・プレイヤーはテーブルから2枚を指定する。
2枚の数字が同じならテーブルから取り除く(≒次に指定できなくする)
・全部取り除かれたら終了
→拡張
・複数人数で対戦できるように
ブラックジャック
・マーク4種(スペード/ハート/ダイヤ/クラブ)、数字13種(A,2,...,10,J,Q,K)
の計52枚使用
・シャッフルして台札とする。
・プレイヤーの手札として最初に2枚配る。
・プレイヤーはもう1枚必要かどうか指定し、台札から取り出す...を繰り返す。
・手札の追加不要の場合は点数を計算し終了。
→拡張
・対CPUで対戦できるように(コインを賭けてやり取りするようにするもよし)
0548デフォルトの名無しさん
2005/10/01(土) 19:50:13初心者なのでMan vs Comとか無理ぽ'`,、('∀`) '`,、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/944.c
0549デフォルトの名無しさん
2005/10/01(土) 19:58:05> if (array[0][i] == 1) strcpy(line1[i], "○");
> if (array[0][i] == 2) strcpy(line1[i], "×");
> }
> for (i = 0; i < 3; i++){
> if (array[1][i] == 1) strcpy(line2[i], "○");
> if (array[1][i] == 2) strcpy(line2[i], "×");
> }
> for (i = 0; i < 3; i++){
> if (array[2][i] == 1) strcpy(line3[i], "○");
> if (array[2][i] == 2) strcpy(line3[i], "×");
> }
【常識】同じような処理をソース上で繰り返してはいけない
・ループで記述
・場合によっては関数化
0550デフォルトの名無しさん
2005/10/01(土) 20:04:04できればやり方を教えて頂ければありがたいのですが・・・
もっと短くできると思ったのですが、どうしたらいいのかわからなくて・・・
0551デフォルトの名無しさん
2005/10/01(土) 20:09:391.lineも配列の配列にする
2.二重のforループで
0552デフォルトの名無しさん
2005/10/01(土) 20:13:48ありがとうございます
さっそくやってみます
0553デフォルトの名無しさん
2005/10/01(土) 20:20:13誰が決めたんだ?
0554デフォルトの名無しさん
2005/10/01(土) 20:21:55常識って"誰か"が決める事なのか?
0555デフォルトの名無しさん
2005/10/01(土) 20:22:570556デフォルトの名無しさん
2005/10/01(土) 20:24:43・プログラムが無駄にでかくなる
・重複部分を変更する時に面倒(部分的に忘れてバグ招くこともある)
0557デフォルトの名無しさん
2005/10/01(土) 20:24:46ヒント:動作するきれいなソースコード
0558デフォルトの名無しさん
2005/10/01(土) 20:28:09> if (scanf("%d", &x) != 1) return 1;
:
> printf("横:");
> if (scanf("%d", &y) != 1) return 1;
...厳しすぎorz
(英文字入れると即死亡)
0559デフォルトの名無しさん
2005/10/01(土) 20:35:12短くできますた(・∀・)
ありがとうございます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/945.c
>>558
何でだろう・・・(´・ω・`)
ウチのBccなら死亡はしないのですが・・・
0560ちぁ ◆7YYts5tb9s
2005/10/01(土) 20:37:45これは違うんじゃないの?
同じ処理を繰り返さないのは同意できるけど
同じような処理だと、別に書いたほうが速度的にもコード的にも良くなることもある
0561デフォルトの名無しさん
2005/10/01(土) 20:40:34コンパイラがloop unrollして最適化することもあるしな。
0562デフォルトの名無しさん
2005/10/01(土) 20:40:45そこだけでも関数化すりゃええやん
0563デフォルトの名無しさん
2005/10/01(土) 20:41:12大抵は >556
0564デフォルトの名無しさん
2005/10/01(土) 20:42:02速度的にねらって書く人は次元が違うし
今日からCを学ぶ人には繰り返すなと言うだろ
0565デフォルトの名無しさん
2005/10/01(土) 20:42:19次からは使わないように
0566デフォルトの名無しさん
2005/10/01(土) 20:45:39疑問に思ったら自分でも相手の書いたとおりに実行してみよう。
scanf("%d",...)は、数字以外の入力があると(他の関数でその文字を引き取らない限り)
何度呼び出しても永遠にこぬ数字を待ち続けてしまう。
0567デフォルトの名無しさん
2005/10/01(土) 20:46:19Error1してほすいって事だね >死亡
0568デフォルトの名無しさん
2005/10/01(土) 20:46:47荒らしは去れ
0569デフォルトの名無しさん
2005/10/01(土) 20:48:40もまえ...よく嫁w
0570デフォルトの名無しさん
2005/10/01(土) 20:55:030571デフォルトの名無しさん
2005/10/01(土) 20:55:070572デフォルトの名無しさん
2005/10/01(土) 20:55:30>559
0573デフォルトの名無しさん
2005/10/01(土) 20:58:11つーかむしろもれは hantei() で結果表示せず、呼び元ですりゃええやんって思つた
>559
0574デフォルトの名無しさん
2005/10/01(土) 21:00:15萌えw
0576デフォルトの名無しさん
2005/10/01(土) 21:16:10> if (scanf("%d", &y) != 1) return 1;
ってなソースについての話題だということなのは読んで理解できたのか?
0578566
2005/10/01(土) 21:23:35正直すまんかった。
0579デフォルトの名無しさん
2005/10/01(土) 21:24:58だからそーゆー話題ぢゃねーってw
0580デフォルトの名無しさん
2005/10/01(土) 21:27:09正直すまんかった。
0581デフォルトの名無しさん
2005/10/01(土) 21:29:560582デフォルトの名無しさん
2005/10/01(土) 21:30:39scanf()の問題点を指摘するより先ず、そこがmain()ルーチンだと言うことが問題だ。
ソースくらい読んでから指摘しろ。
>>566にレスする香具師ら
釣られるな。
0583デフォルトの名無しさん
2005/10/01(土) 21:34:03ハローワールドと1から50までの和を計算するプログラム(階差数列使ってない)
を作り終わった俺は次に挑戦するものとして妥当なものは何だろう?
0584デフォルトの名無しさん
2005/10/01(土) 21:35:26好きなものを作れ。
0585デフォルトの名無しさん
2005/10/01(土) 21:36:01どんな問題だ?教えちくりくり
0586デフォルトの名無しさん
2005/10/01(土) 21:36:26上の方に問題あったな
0587デフォルトの名無しさん
2005/10/01(土) 21:38:14>>522 なんかいいんじゃない
0589デフォルトの名無しさん
2005/10/01(土) 21:38:57数学・・・知識が乏しいもので・・
0590デフォルトの名無しさん
2005/10/01(土) 21:39:51どっちかっつーと小学校の算数だな
0591デフォルトの名無しさん
2005/10/01(土) 21:41:25多くのアドバイスありがとうございましたm(_ _)m
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/946.c
0592デフォルトの名無しさん
2005/10/01(土) 21:44:43小学校かぁ・・・
そういや、テキストエディタ作れるレベルにいくのが目標だったよ・・。
それ目指して頑張ります。
文字打てて保存できるぐらいのやつ。
0593デフォルトの名無しさん
2005/10/01(土) 21:44:49>>207>>46>>215
過去問一通り見たけどファイル操作は少ないね
検索・置換と計算・ループの問題が多く傾向に偏りがある
0594デフォルトの名無しさん
2005/10/01(土) 21:53:03・1〜50の和計算の応用で、ファイルに書かれた数値の和計算
・電話帳ファイルへの登録、検索 → 上級編:削除
・○×の応用:ゲームの手順をファイルに保存、後で読み込んでゲームを再生
とかどうかな?
0595デフォルトの名無しさん
2005/10/01(土) 21:57:02ファイルに書かれた数値の和を計算 をやってみます。
プログラムの流れとしては、
ファイルから読み込んだ数値を変数に代入〜
みたいな感じでやってみます。
0596デフォルトの名無しさん
2005/10/01(土) 21:58:230597デフォルトの名無しさん
2005/10/01(土) 22:08:330598デフォルトの名無しさん
2005/10/01(土) 22:12:04三角形の3辺ABCは、
Aの2乗=Bの2乗+Cの2重、がなりたつ。
というのが分かれば後は何となくできるはず。ガンガレ
0599デフォルトの名無しさん
2005/10/01(土) 22:19:490600デフォルトの名無しさん
2005/10/01(土) 22:24:06もっと落としてくれよ。
0601デフォルトの名無しさん
2005/10/01(土) 22:26:23役が決まっている部分は関数化するといい。
(既出だけど)○×判定部分はgudge()とか、税金の加算なら*1.05(*105/100)はtax()とか、ファイルに保存するならsave_file()とか。
役割を洗い出す作業ができれば、C++やJavaのオブジェクト指向で綺麗にモデリングできる。
それに関数をさけることで速度低下を気にする時代は終わった。あとから単調に糞長いソースをバグ取りするのは死ぬほど面倒だし挫折する。
main()内が30行を越えるくらいになれば関数化を勧める。無理矢理する必要はないけどね。
0602デフォルトの名無しさん
2005/10/01(土) 22:30:10細かいようだけど最後の、
>もう一度やりますか?(はい= 1 / いいえ= 2)\n->
で1以外を入れたら2でなくても終了するのは直した方が良いかも。
0603デフォルトの名無しさん
2005/10/01(土) 22:46:530604デフォルトの名無しさん
2005/10/01(土) 22:50:21ウソツキ
0605デフォルトの名無しさん
2005/10/01(土) 22:52:170606デフォルトの名無しさん
2005/10/01(土) 22:56:02100,000までの素数の数とその計算にかかるコストを求めよ
もっともコストが少ない者を優勝とする
締め切りは10月2日の終わりまで
コストは次の通り(コストの計算にかかるコストは考慮しなくてよい)
1 代入
1 +-
2 */%
3 ループ
これ以外のコストは0とする
あらかじめ答えや類するものを用意するのは禁止
偶数はチェックしなくてよい
抜け道イパーイあるので実力に応じた方法でご参加ください
0607デフォルトの名無しさん
2005/10/01(土) 22:57:55せんせー
コストってなーに?
0608デフォルトの名無しさん
2005/10/01(土) 22:58:18ループにかかるコスト の定義が曖昧だなぁ。
ループ一周につき無条件でコスト3かかるのか?
途中でbreakした場合は?
条件分岐のコストは0でいいのか?
0609デフォルトの名無しさん
2005/10/01(土) 23:01:55*と/%のコストが同じなのはいかがなものか。
0610デフォルトの名無しさん
2005/10/01(土) 23:09:06+-を使った計算やa=bといった代入を使うたびに足される点数
少ないほうが勝ち
>>608
終了判定で発生
>>609
ゲームバランス考えたら落しどころかなと
0611デフォルトの名無しさん
2005/10/01(土) 23:19:30解る奴はともかくこれじゃ初心者は何の何にレスしてるかわからんぞwww
雑談はともかくプログラムの採点の場合元のソースにレス付けろ
【>>xxxの採点】こんなのを1行目とか名前に入れてしまえ
0612デフォルトの名無しさん
2005/10/01(土) 23:39:13難易度:低
問題:aとbはそれぞれいくつになりますか?実行せずに考えてください。
#include <stdio.h>
void add1(int *a, int b)
{
b *= 2;
*a += b;
}
void add2(int *a, int *b)
{
*b *= 2;
*a += *b;
}
int main()
{
int a, b;
a=2;
b=3;
add1(&a,b);
add2(&a,&b);
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
0613デフォルトの名無しさん
2005/10/01(土) 23:49:310614デフォルトの名無しさん
2005/10/01(土) 23:54:40どうしてそうなるんですか?
手順を追って説明をお願いします
0615デフォルトの名無しさん
2005/10/01(土) 23:55:41難易度:低〜中
問題:
その1:
実行回数を数えるカウンタを作ってください
初めて実行するときはファイルがないので作成し"1"を保存して終了します
2度目以降はファイルを読み込み1加算し保存します
実行するたびに2,3,4,5と増えていきます
その2:
1万回を超えたら(その1)とは別のファイルに現在の日付と時刻を書き出して
カウンタを1にもどしてください
ファイルが無い場合は新規作成し日付と時刻は次の行に追加で書き込むようにしてください
その3:
複数起動しても大丈夫なように修正してください
※OSの不具合を考慮する必要はありません
0616デフォルトの名無しさん
2005/10/01(土) 23:56:12実際に動かして見ろよ
まず
0617デフォルトの名無しさん
2005/10/01(土) 23:59:00612 = 614 で、613に説明つきの回答を要求してるんじゃまいか?
>実際に動かして見ろよ
問題
0618デフォルトの名無しさん
2005/10/01(土) 23:59:51どんな問題だ?教えちくりくり
0619デフォルトの名無しさん
2005/10/02(日) 00:06:140620デフォルトの名無しさん
2005/10/02(日) 00:33:06解る奴はともかくこれじゃ初心者は何の何にレスしてるかわからんぞwww
雑談はともかくプログラムの採点の場合元のソースにレス付けろ
【>>xxxの採点】こんなのを1行目とか名前に入れてしまえ
0621デフォルトの名無しさん
2005/10/02(日) 01:03:06漏れの脳内インタプリタは
a = 20
b = 12
を吐いた
バグか...orz
0622デフォルトの名無しさん
2005/10/02(日) 01:06:00俺の脳内インタプリタは>>613と同じだったな
add1のbには*が付いて無いからmainのbはadd1を抜けた時点では変わらないぞ
0623デフォルトの名無しさん
2005/10/02(日) 01:09:29処理し切れませんって。
みんな脳内インタプリタ性能よすぎ
0624621
2005/10/02(日) 01:11:13a=14,b=6になりました
0625デフォルトの名無しさん
2005/10/02(日) 01:57:490626デフォルトの名無しさん
2005/10/02(日) 02:13:07いまさらDelphiも無いとおもうが、自分で立てたほうが良いんじゃない?
0627デフォルトの名無しさん
2005/10/02(日) 02:15:25答えはa=14, b=6でいいんだよね。よっしゃよっしゃ。
ちょっと頭がズキズキしてきたから寝る。
0628デフォルトの名無しさん
2005/10/02(日) 02:28:41ポインタくらいか?
説明書いてやるよ
0629デフォルトの名無しさん
2005/10/02(日) 02:30:13ああ。ポインタの説明書いてくれ
チラシの裏にでもな。
0630デフォルトの名無しさん
2005/10/02(日) 02:31:51ポインタのポインタの説明が欲しい
>>629
分かる人は黙ってて下さい
0631デフォルトの名無しさん
2005/10/02(日) 02:41:46ファイルポインタについての説明がほしい
0632デフォルトの名無しさん
2005/10/02(日) 04:55:22こういう問題もっとほしいです。
0633デフォルトの名無しさん
2005/10/02(日) 05:50:44ジャンル:型
難易度:低
問題:以下のコードは正しい結果を出力しません。間違いを指摘しなさい。
#include <stdio.h>
int main(void)
{
//table配列の10個の要素の値の平均を求め、出力する。
int table[] = { 16, 21, 17, 32, 24, 21, 27, 19, 24, 28 };
int i;
double sum = 0;
for( i = 0; i < 10; i++ ){
sum += table[i] / 10;
}
printf("%f\n\0", sum);
scanf("%d", &i);
return 0;
}
0634デフォルトの名無しさん
2005/10/02(日) 05:52:430635デフォルトの名無しさん
2005/10/02(日) 05:54:51整数除算してるから
0636ちぁ ◆7YYts5tb9s
2005/10/02(日) 05:55:13型の問題じゃないじゃん
0637ちぁ ◆7YYts5tb9s
2005/10/02(日) 05:56:06そういう意味か
そういう意味で型なのか
0638デフォルトの名無しさん
2005/10/02(日) 05:57:51table[] が整数型だから?
ポインタの問題が欲しいにょろ
0639デフォルトの名無しさん
2005/10/02(日) 06:00:00にすればオッケーオッケー
0640デフォルトの名無しさん
2005/10/02(日) 06:06:04勝手にされるとかなり不便なんだけど
0641デフォルトの名無しさん
2005/10/02(日) 06:06:15最後に割ったほうがいいってことかな
for( i = 0; i < 10; i++ ){
sum += table[i];
}
sum /= 10;
0642デフォルトの名無しさん
2005/10/02(日) 06:06:42読み書きの挙動を決定するフラグが入ってるっぽい。
なんとsizeof(FILE) == 32
0643デフォルトの名無しさん
2005/10/02(日) 06:09:23double d;
d = 1;
error: 整数を実数型に代入することはできません。
とか言われたらそれはそれでいやだが。
0644デフォルトの名無しさん
2005/10/02(日) 06:10:50なんで?
勝手に変換するからできないだけで、変換しないようにすれば普通に代入できると思うけど
0645デフォルトの名無しさん
2005/10/02(日) 06:11:24その場合はキャストされないと代入されるかと。
0646デフォルトの名無しさん
2005/10/02(日) 06:11:35ん、整数と実数の内部表現はだいぶ違うよ。
0647デフォルトの名無しさん
2005/10/02(日) 06:13:54あいたたたたたたた
0648デフォルトの名無しさん
2005/10/02(日) 06:15:51聞いてるだけで勉強になった
0649デフォルトの名無しさん
2005/10/02(日) 06:17:05痛かったら我慢しないで救急車呼んだほうがいいにょろ
0650デフォルトの名無しさん
2005/10/02(日) 06:57:38その1出来たヽ(・∀・)ノ
でもその3全然わかんねー
perlならファイルロックすればいいけどC言語にそんな命令あったっけ?
#include <stdio.h>
int main()
{
FILE *fin, *fout;
int counter;
char *filename="counter.txt";
//ファイルを読み込むか、無ければカウント数を1にセット
fin=fopen(filename, "r");
if (fin!=NULL)
{
fscanf(fin, "%d", &counter);
fclose(fin);
counter++;
}
else
{
counter=1;
}
//カウント数をファイルに書き込む
fout=fopen(filename, "w");
fprintf(fout, "%d", counter);
fclose(fout);
return 0;
}
0651ポポ素 ◆Qgm8RFT0/.
2005/10/02(日) 07:28:00スレ主のはずのあたいはぜんぜんついていけず…(∵)
0652ちぁ ◆7YYts5tb9s
2005/10/02(日) 07:42:060655デフォルトの名無しさん
2005/10/02(日) 07:48:130656デフォルトの名無しさん
2005/10/02(日) 08:30:34処理系依存だからFILE構造体の中は触っちゃダメ。
>>633
・この程度の平均処理なら、sumはintでいいね。
・printf()は%fを使う人が多いけど、寧ろ%g推奨。%fは不必要に小数点以下6桁まで出てしまう。
・文字列リテラルに"\0"を含めることは(意図的に利用する場合を除き)無意味。
・配列の要素数は人間が数えるべきじゃないし、コンパイラは既に知っている。
・ましてループが終わった段階ではループ制御変数がまさしくその値になっている。
よって、>633の場合こうなる。
--
int table[] = ...;
int i;
int sum = 0;
for (i = 0; i < sizeof(table) / sizeof(*table); ++i) {
sum += table[i];
}
printf("%g\n", (double) sum / (double) i);
/* 要素数を取得するのに毎度毎度sizeofの割り算をするのがいやならマクロを組むといい */
--
尚、C++ではこんなコード書いてたらダメ。
0657デフォルトの名無しさん
2005/10/02(日) 09:09:01その2
http://gamdev.org/up/img/3462.phps
0658デフォルトの名無しさん
2005/10/02(日) 11:04:25flock版を作ったけど、もしかして意味間違ってる…?
0659デフォルトの名無しさん
2005/10/02(日) 12:04:53このアップローダ形式って今は見られるし見やすいとは思うんだけど、例えば過去ログ落ちして
アップローダから削除もされると情報として無価値になってしまわない?
現在進行形で見てる人だけでいいならそれでも構わないけど、わりと有用なスレになってるし
ここに直接プログラムを書いたほうが後々のことを考えるといいかも。
0660デフォルトの名無しさん
2005/10/02(日) 12:14:09#include <stdio.h>
#include <time.h>
int read_count(const char *filename)
{
FILE *fin;
int counter;
//ファイルを読み込むか、無ければカウント数を1にセット
fin=fopen(filename, "r");
if (fin!=NULL)
{
fscanf(fin, "%d", &counter);
fclose(fin);
counter++;
}
else
{
counter=1;
}
return counter;
0661デフォルトの名無しさん
2005/10/02(日) 12:14:40{
FILE *fout;
//カウント数をファイルに書き込む
fout=fopen(filename, "w");
fprintf(fout, "%d", counter);
fclose(fout);
}
void write_log(const char *logfilename)
{
//日付と時刻をファイルに書き込む
FILE *fout;
time_t now;
struct tm *tm_now;
char buf[80];
now = time(NULL);
tm_now = localtime(&now);
sprintf(buf, "%d/%d/%d - %d:%d:%d\n",
tm_now->tm_year+1900, tm_now->tm_mon, tm_now->tm_mday,
tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec);
fout=fopen(logfilename, "w+");
fprintf(fout, buf);
fclose(fout);
}
0662デフォルトの名無しさん
2005/10/02(日) 12:15:12{
const char *filename="counter.txt";
const char *logfilename="log.txt";
int counter;
counter=read_count(filename);
if (counter > 10000)
{
write_log(logfilename);
counter=1;
}
write_count(filename, counter);
return 0;
}
0663デフォルトの名無しさん
2005/10/02(日) 12:21:00>>615その2に対する解答です
採点よろしくお願いします
その3がわからないのでヒントをお願いします
ファイルロックの問題とは思いますが手元の本(K&R)には
そういった命令が見当たりません(今読み返してる最中です)
0664デフォルトの名無しさん
2005/10/02(日) 12:33:50add1の関数内では
a=8
b=6
になる
aはポインタだからmainでも計算結果が残る
bはコピーされた別の変数だから残らないので
add1が終わったmain関数ではa=8,b=3
add2の関数内ではa=14,b=6
両方ポインタだからmainの変数も内容が変わる
答えはa=14,b=6
0665デフォルトの名無しさん
2005/10/02(日) 12:34:31そして、記号があるときは他からは書き換えられないようにすればいいのでないのかな
素人考えだけど
0666デフォルトの名無しさん
2005/10/02(日) 12:41:510667デフォルトの名無しさん
2005/10/02(日) 13:06:05要はロックできるかどうかだろ
0668デフォルトの名無しさん
2005/10/02(日) 14:07:15Windowsなら#include <windows.h>でLockFile
UNIXならlockf (fcntl)なりflock
0669デフォルトの名無しさん
2005/10/02(日) 16:27:34これですか?lockfだとundefined functionエラーがでてしまいました
0670デフォルトの名無しさん
2005/10/02(日) 17:11:460671デフォルトの名無しさん
2005/10/02(日) 17:24:120672デフォルトの名無しさん
2005/10/02(日) 17:26:19処理とか、よけいめんどい。
0673デフォルトの名無しさん
2005/10/02(日) 20:21:470674デフォルトの名無しさん
2005/10/02(日) 20:26:01異常終了した時の事を考えたらパーミション変更は得策じゃないな
0675デフォルトの名無しさん
2005/10/02(日) 20:45:510676デフォルトの名無しさん
2005/10/02(日) 21:07:43http://briefcase.yahoo.co.jp/light_blue_8671
問題はいってます
0677デフォルトの名無しさん
2005/10/02(日) 21:40:43宿題は宿題スレへ
0678デフォルトの名無しさん
2005/10/02(日) 21:41:24マルチの宿題ですのでスルーします( ノ゚Д゚)ヨッ!
0679デフォルトの名無しさん
2005/10/03(月) 00:14:37問題。
文字列を受け取って、その並びを逆順にして返す関数を書きなさい。
簡単すぎ?
0680デフォルトの名無しさん
2005/10/03(月) 00:31:54数字の文字列を受け取って、3桁区切りに','カンマを付けた文字列を返す関数を書きなさい
簡単杉?
0681デフォルトの名無しさん
2005/10/03(月) 00:45:220682デフォルトの名無しさん
2005/10/03(月) 00:55:31文字列を受け取って逆順という事で、以下の手順
1.受け取った文字列の先頭と最後の文字を入れ替える、
2.2文字目と最後から2文字目を入れ替える
3.上記を文字列の真ん中まで繰り返す。(※最後まで繰り返すと元に戻るので注意)
>>680
intの範囲に限定すると、表現できる数値は2^31〜-2^31の範囲(2147483648)で10桁、符号用に1桁、カンマが3回入るのでchar out[15]で宣言すればよい
あとは、3桁ずつ割った余りを後ろから順に割り当てていけば良い
1.1000で割った余りをout[12]から出力(右詰、商が0で無いなら"0"埋め)
2.1000で割った商が0でないなら、out[11]にカンマを出力
以下適当に
0683デフォルトの名無しさん
2005/10/03(月) 01:01:300684デフォルトの名無しさん
2005/10/03(月) 04:48:05というところで
implicit declaration of function `sleep'
というウォーニングがでるのですがなぜですか?
0685デフォルトの名無しさん
2005/10/03(月) 04:50:43OSは?
0686684
2005/10/03(月) 04:53:34unameすると、Open-BSD_Model-MA となります
多分その友達がOpenBSDに手をいれたものだと思います
0687デフォルトの名無しさん
2005/10/03(月) 04:55:22#include <unistd.h>
しても出る?
0689デフォルトの名無しさん
2005/10/03(月) 05:00:540690684
2005/10/03(月) 05:03:55でいいでしょうか?
どうかいしゃくしたらいいかわからない・・・
0691デフォルトの名無しさん
2005/10/03(月) 05:05:13カーネルとかOSに手を入れれる人だからかなりの腕の持主だと思うけど
0692デフォルトの名無しさん
2005/10/03(月) 05:06:44libcはリンクされてるからヘッダがなくても呼び出すことはできる。
コンパイル時に引数の数や型のチェックされないけど。
0693684
2005/10/03(月) 05:10:32その人はなんか自分で使うものは自分で作るのが一番とかいって
OSも自分で作ったりしてるマニアです
あんまり喋ったりしたくありません。
それにプログラミングで分からないことは自分で考えて解決するべきで
数日考えても分からない箇所以外は聞くなといわれています
>>692
そうですかわかりませんけどありがとうございました
0694デフォルトの名無しさん
2005/10/03(月) 05:10:40#include <stdio.h>
void reverse(char str[], char tmp[]){
int i, j, k = 0;
for (i = 0; str[i] != '\0'; i++);
for (j = i - 1; j >= 0; j--, k++)
tmp[k] = str[j];
tmp[k] = '\0';
}
0695デフォルトの名無しさん
2005/10/03(月) 05:11:20void insert_comma(char tmp[], char ans[]){
int i = 0, j = 0, cnt = 0;
while(tmp[i] != '\0'){
if (cnt == 3){
ans[j] = ',';
j++;
cnt = 0;
continue;
}
ans[j] = tmp[i];
i++;
j++;
cnt++;
}
ans[j] = '\0';
}
0696デフォルトの名無しさん
2005/10/03(月) 05:11:51int main(){
char str[250], tmp[250], ans[500], ans2[500];
gets(str);
reverse(str, tmp);
insert_comma(tmp, ans);
reverse(ans, ans2);
puts(ans2);
return 0;
}
0697デフォルトの名無しさん
2005/10/03(月) 05:13:17お友達嫌われたもんだなw
0698ちぁ ◆7YYts5tb9s
2005/10/03(月) 05:25:17>その人はなんか自分で使うものは自分で作るのが一番とかいって
自分の手料理が一番っていってるとあんまり変わらないと思うけど
何がご不満?
0699デフォルトの名無しさん
2005/10/03(月) 05:38:550700デフォルトの名無しさん
2005/10/03(月) 05:39:550701デフォルトの名無しさん
2005/10/03(月) 05:42:55丁度いい、朝飯にWindows互換OSでも作ってくれ。
0702ちぁ ◆7YYts5tb9s
2005/10/03(月) 05:46:02自分が好きなように、自分が必要なものを作るっていういみでは似たようなものっていいたかったんだけど・・・
0703デフォルトの名無しさん
2005/10/03(月) 05:51:16だからOS作るのは手料理みたいなもんなんだろ?えらいひとなんだねえ
0704デフォルトの名無しさん
2005/10/03(月) 05:53:44息子(12才)、娘(9才)と嫁を連れて行くのが楽しみで仕方が無い
息子の友達の家族とかもよんだりして楽しいよ
丸太っていうのが阿呆みたいに高いけど自分が好きなように、自分の作りたいように作るっていうのは
非常に素晴しい
あ…
これは関係ないか… ごめん
0705デフォルトの名無しさん
2005/10/03(月) 05:57:04俺もそう思ってるけど何が不満なんだ?
0706デフォルトの名無しさん
2005/10/03(月) 05:58:220707デフォルトの名無しさん
2005/10/03(月) 05:58:37おっさんだな
0708デフォルトの名無しさん
2005/10/03(月) 06:00:080709デフォルトの名無しさん
2005/10/03(月) 06:02:35今日からC言語を学んでいくぞーという人にOS作れと言うのはちょっとねー
0710デフォルトの名無しさん
2005/10/03(月) 06:11:28作れるって言うならOracleやPowerPointの動くOS作ってよ。話はそれからだ。
0711デフォルトの名無しさん
2005/10/03(月) 06:22:37このばか
0712デフォルトの名無しさん
2005/10/03(月) 06:26:25性能の劣る再発明ならなおさら。
0713デフォルトの名無しさん
2005/10/03(月) 06:28:430714デフォルトの名無しさん
2005/10/03(月) 06:30:450715デフォルトの名無しさん
2005/10/03(月) 06:41:11自己満足のOSになる罠
あほなのか?
0716ちぁ ◆7YYts5tb9s
2005/10/03(月) 06:46:57君が何のOSを使ってるかはしらないけれど
君なりにいろいろディレクトリの配置とか決めてるんじゃないの?
それが自分が使いやすいようにって事
他人がその環境を使って使いやすいと思うとは限らないでしょ?
0717デフォルトの名無しさん
2005/10/03(月) 07:58:31#include <stdio.h>
void reverse(char *str)
{
if (str[0]==NULL)
return;
else
reverse(&str[1]);
printf("%c", str[0]);
}
int main()
{
char *str="vip quolity";
reverse(str);
return 0;
}
0718デフォルトの名無しさん
2005/10/03(月) 08:06:330719デフォルトの名無しさん
2005/10/03(月) 08:13:31再帰は遅いしCRTリンクを必然にしてしまうからあんまり感心しない。
大体にそれは逆順にstdoutに出力してるだけ。文字列の反転じゃないじゃん。
おもいっきし愚直に書けばこうかな。
#include <string.h>
void strrev(char *str)
{
char* p1 = str;
char* p2 = str + strlen(str) -1;
char tmp;
while (p1 < p2) {
tmp = *p1;
*p1 = *p2
*p2 = tmp;
p1++;
p2--;
}
}
0720デフォルトの名無しさん
2005/10/03(月) 08:16:19#include <string.h>
char* strrev(char *str)
{
char* p1 = str;
char* p2 = str + strlen(str) -1;
char tmp;
while (p1 < p2) {
tmp = *p1;
*p1 = *p2
*p2 = tmp;
p1++;
p2--;
}
return *str;
}
0721デフォルトの名無しさん
2005/10/03(月) 08:17:55#include <stdio.h>
#include <string.h>
void kanma(char *str)
{
if (str[0]==NULL)
return;
if ((strlen(str)%3)==0)
printf(",");
printf("%c", str[0]);
kanma(&str[1]);
}
int main()
{
char *str="1234567890";
kanma(str);
return 0;
}
0722デフォルトの名無しさん
2005/10/03(月) 08:20:330723デフォルトの名無しさん
2005/10/03(月) 08:27:36VC++なんかだとATLプロジェクトの利用でCランタイムをリンクしない小さなバイナリが吐けるの。
再帰コールはCランタイムによって提供される機能だから、必然的にCRTが必要になる。
0724デフォルトの名無しさん
2005/10/03(月) 08:28:10ポインターミズレー。
配列使えよ。
0725デフォルトの名無しさん
2005/10/03(月) 08:31:50よくわかりました
ありがとうございます
0726デフォルトの名無しさん
2005/10/03(月) 08:43:07再帰なんてコンパイラはただの関数呼び出しのコードを吐けばいいだけだからCRTは関係ないだろ。
0727デフォルトの名無しさん
2005/10/03(月) 08:46:23#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define BUFFER 256
#define MBMAX 2
void reverse(char *dest, const char *src)
{
wchar_t wbuf1[BUFFER], wbuf2[BUFFER];
int i, j;
size_t len;
mbstowcs(wbuf1, src, BUFFER);
len = wcslen(wbuf1);
for (i = len - 1, j = 0; i >= 0; i--, j++)
wbuf2[j] = wbuf1[i];
wbuf2[j] = L'\0';
wcstombs(dest, wbuf2, BUFFER);
}
0728デフォルトの名無しさん
2005/10/03(月) 08:48:36{
char buf[BUFFER];
setlocale(LC_ALL, "");
fgets(buf, BUFFER - 1, stdin);
buf[strlen(buf) - 1] = '\0';
reverse(buf, buf);
puts(buf);
return 0;
}
0729デフォルトの名無しさん
2005/10/03(月) 08:57:39はじめからワイド文字入出力を使えよ。
0730デフォルトの名無しさん
2005/10/03(月) 09:28:11crtって何
0731デフォルトの名無しさん
2005/10/03(月) 09:34:22だから、その吐き出した再帰コール関数をサポートするのがCランタイムライブラリなの。
Schemeみたいに見た目上再帰をサポートするものでも実行時にループに展開する言語処理系もあるし
再帰がまったく実現できないものもある。
アセンブラで再帰呼び出しができるか試してみたら?
0732デフォルトの名無しさん
2005/10/03(月) 09:35:06C RunTime library
0733デフォルトの名無しさん
2005/10/03(月) 09:45:13コンパイルしてアセンブリソースをダンプしてみたけど、再帰関数に直接CRTが関わってる箇所は一個もないんだが・・・
どこに使われてるの?
>アセンブラで再帰呼び出しができるか試してみたら?
特にできなくなる理由が見あたらないんだけど・・・
教えてエロい人
0734デフォルトの名無しさん
2005/10/03(月) 10:25:42ようするにprintfとかの標準関数の本体が入っていると思えばいい。
0735デフォルトの名無しさん
2005/10/03(月) 10:30:39サポートなんて必要ないの。
アセンブラでも再帰呼び出しは普通の関数呼び出しと同じようにできる。
なぜか?やることは普通の関数呼び出しと何も変わらないからに決まっている。
ちなみに再帰をループにするのはC/C++でも行われることもあるが、それは最適化の問題でコンパイラの仕事。
0736デフォルトの名無しさん
2005/10/03(月) 11:02:160737デフォルトの名無しさん
2005/10/03(月) 12:28:410738デフォルトの名無しさん
2005/10/03(月) 12:46:08「そんな言葉知るか」という発言を聞くと、ああ
「インターフェースを軽視するのだから単体で動くプログラムしか書いたことがないのだな」
と考えてしまう
0739デフォルトの名無しさん
2005/10/03(月) 13:13:18分かってるような肝するが分かってないような着もする
0740デフォルトの名無しさん
2005/10/03(月) 13:15:56> void reverse(char str[], char tmp[]){
> 以下略
この関数に関してはちゃんと動いてるっぽい。
気になる点は、まず仮引数の名前。どっちが入力でどっちが出力なのかが
分かりやすい名前だとありがたい。
それから、仮引数の順番。これは単なる私の好みなのかもしれないけど、
出力となるほうを左に持って来て欲しい。なぜそうして欲しいかと言うと、
引数の戻り値として結果を返す関数とかでも、結果の型を知ろうとすると、
当然左側に目が行くし、代入文だって右から左に入れるっていうイメージだから。
以上2点を踏まえている >>727 さんの、
> void reverse(char *dest, const char *src)
は、非常に読みやすい。const が付いてるので、
「ああ、この関数では、src が示すメモリの中身は変更しないんだな」と、
はっきりさせてくれている点もすごくいい。
0741デフォルトの名無しさん
2005/10/03(月) 13:49:130742デフォルトの名無しさん
2005/10/03(月) 13:52:43ソレダ!
0743デフォルトの名無しさん
2005/10/03(月) 15:39:54そこで関数型言語ですよ
0744デフォルトの名無しさん
2005/10/03(月) 15:59:510745デフォルトの名無しさん
2005/10/03(月) 16:26:240746デフォルトの名無しさん
2005/10/03(月) 16:33:56ポインタを使う利点や意味がわかんねえああああ
ポインタが何かは理解できたが
使わんでもええやん!
ポインタ使わないとCを理解してないとか言われたし
どーなん!?
0747デフォルトの名無しさん
2005/10/03(月) 16:36:57ポインタを使わないでできることをポインタを使わないだけなら寧ろよく理解できているのではないかと。
ポインタを無闇と使うことこそ理解が足りてないと思う。
0748デフォルトの名無しさん
2005/10/03(月) 16:51:28よかったありがとうさんきゅう!
0749デフォルトの名無しさん
2005/10/03(月) 17:04:12下位関数側で値を設定する引数はすべて引数のポインタを渡さなければならない
ということが理解できていれば充分だよ
0750デフォルトの名無しさん
2005/10/03(月) 17:19:560751デフォルトの名無しさん
2005/10/03(月) 17:21:070752デフォルトの名無しさん
2005/10/03(月) 17:28:01調べれば調べるほど謎い
数値を受け取った関数は、
それを元に計算して、戻り値として返す。
「しかし変数の中身を直接変更したい場合に困る」
この変数の中身を直接変更しなきゃならない場合がわからない・・・。
あーもうわかんね!
0753デフォルトの名無しさん
2005/10/03(月) 17:30:10関数内から呼び出し側の変数を操作したい時・・かな?
すっごい連投すんまそヒマだったらこの馬鹿めにかみくだいてポインタを・・・
0754デフォルトの名無しさん
2005/10/03(月) 17:33:270755デフォルトの名無しさん
2005/10/03(月) 17:35:490756デフォルトの名無しさん
2005/10/03(月) 17:39:04散々書き込んでなんだが
ttp://homepage3.nifty.com/mmgames/c_guide/
ここで結構理解できたありがとうここの人
0757デフォルトの名無しさん
2005/10/03(月) 17:39:044つの<>で区切られた5つのデータがあります
(※データに<や>は含まれますが<>は含まれません)
左から名前、メールアドレス、日付、本文、タイトルです
タイトルは1行目だけに含まれています。
それぞれの長さはわかりません。0文字以上です。
これがたくさんあります(大抵は1001行以下ですが超えることもあります)
これをHTMLに整形してもらいます
全体の一番初めは<html><body>です
タイトルを<h1>(タイトル)</h1>で囲みます
整形済みのデータが複数行並びます
最後に</body><html>を入れます
次に1行ごとの整形方法を示します
(行数):<font color=green>(名前)</font>(日付)<br>(本文)<br>
これを行数分だけ繰り返します
最後に拡張子をhtmlで保存して完成です
元になるデータが入ったファイルはこちらです
http://pc8.2ch.net/tech/dat/1127501670.dat
整形後の例)
<html><body>
<h1>おまいら!今日からC言語を学んでいくぞー!</h1>
1 :<font color=green><b>ポポ素 </b>◆Qgm8RFT0/. <b></b></font>:2005/09/24(土) 03:54:30<br>あたいのスペックは <br>
26歳フリーター、パソコン歴インターネット歴は6年 <br>しかしそれ以外の事は何もできにゃーい… <br>
</body><html>
0758デフォルトの名無しさん
2005/10/03(月) 17:56:510759デフォルトの名無しさん
2005/10/03(月) 18:06:33処理するのは、すごくむずかしいです。
0760デフォルトの名無しさん
2005/10/03(月) 18:25:080761デフォルトの名無しさん
2005/10/03(月) 18:32:30#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
typedef struct seiseki_tag
{
int no;
struct seiseki_tag *next;
} seiseki;
seiseki *head=NULL;
seiseki *pos, *prev;
int i;
head=(seiseki*)malloc(sizeof(seiseki));
pos=head;
for (i=0 ; i<10 ; i++)
{
prev=pos;
pos=(seiseki*)malloc(sizeof(seiseki));
pos->no=i;
pos->next=NULL;
prev->next=pos;
}
pos=head->next;
while(pos!=NULL)
{
printf("%d\n", pos->no);
pos=pos->next;
}
return 0;
}
0762デフォルトの名無しさん
2005/10/03(月) 18:33:19そもそも使い方がわかりません。コンパイルしたら
Error test01.rc 1 10: Cannot open file: stdio.h
とか言われる……。設定の仕方が悪いのかな。
こういう初歩の初歩みたいな質問はどこでやったらいいんでしょうか……
0763デフォルトの名無しさん
2005/10/03(月) 18:34:150764デフォルトの名無しさん
2005/10/03(月) 18:36:55そんな質問するなよ。
付属の説明や解説サイト見ればできるようになっている。
0765デフォルトの名無しさん
2005/10/03(月) 18:38:36だからreadmeを嫁とあれほd(ry
0766デフォルトの名無しさん
2005/10/03(月) 18:41:02readmeは読んだyo! 読んでもわかんないんだyo!
解説サイトって何処ですか?
0767デフォルトの名無しさん
2005/10/03(月) 18:43:43じゃあバカでも使えるコンパイラ買って来いや
0768デフォルトの名無しさん
2005/10/03(月) 18:49:06バカが使えるかどうかは知らんが無料ダウンロード可能
マイクロソフトが勉強するのに使えって言ってるからこれでいいんじゃね
0769デフォルトの名無しさん
2005/10/03(月) 18:54:34http://homepage3.nifty.com/norinoyama/c_lang/c_lang_setup_bcc.html
0770デフォルトの名無しさん
2005/10/03(月) 19:01:230771デフォルトの名無しさん
2005/10/03(月) 19:02:26難易度:低
問題:このプログラムには2箇所間違いがある
画面に2と表示されるように修正しなさい
#include <stdio.h>
int main()
{
int *a;
int b=1;
a=b; //間違い1
b++;
printf("%d", a); //間違い2
return 0;
}
0772デフォルトの名無しさん
2005/10/03(月) 19:11:480773デフォルトの名無しさん
2005/10/03(月) 19:14:51int main()
{
int *a;
int b=1;
a = &b;
b++;
printf("%d", *a);
return 0;
}
0774デフォルトの名無しさん
2005/10/03(月) 19:23:03int main()
{
int *a;
int b=1;
/* a=b; */
b++;
printf("%d", b);
return 0;
}
0775デフォルトの名無しさん
2005/10/03(月) 19:24:55初心者捕まえてバカバカ言うことないだろー
いじわるーヽ(`Д´)ノ ウワァァン!!
0776デフォルトの名無しさん
2005/10/03(月) 19:37:32正解
問題の題意を汲み取った完璧な回答です
100点
>>774
正解
出題者の想定してなかった意外な回答です
120点
0777デフォルトの名無しさん
2005/10/03(月) 20:14:501行目にタイトルが含まれていないんですけど・・(´・ω・`)
0778デフォルトの名無しさん
2005/10/03(月) 20:38:41ポポ素 </b>◆Qgm8RFT0/. <b><><>2005/09/24(土) 03:54:30 <> あたいのスペックは <br
> 26歳フリーター、パソコン歴インターネット歴は6年 <br> しかしそれ以外の事は何もでき
にゃーい… <br> というわけで今日から参考書を買ってがんばります! <br> 今まさに私み
たいに、これからCを勉強するぞって人いたら
<br> よろしくね <>おまいら!今日からC言語を学んでいくぞー!
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
あるじゃん
0779デフォルトの名無しさん
2005/10/03(月) 20:42:29初心者という単語をバカの免罪符にされてはかなわんな
0780デフォルトの名無しさん
2005/10/03(月) 20:44:55ばーかばーかm9(^Д^)プギャー
0781デフォルトの名無しさん
2005/10/03(月) 21:40:110782デフォルトの名無しさん
2005/10/03(月) 22:29:29int main(void)
{
printf("775は馬鹿ですw");
return 0;
}
//勉強になったろ?
0783デフォルトの名無しさん
2005/10/03(月) 22:37:18明日からやって見る
0784デフォルトの名無しさん
2005/10/03(月) 22:55:23http://edu.stackart.net/c/c_seihin.html
ワラタ
なんか昔ワープロ(ソフトでなく単体ハードのね)についてたタイピング練習ゲームみたいな雰囲気。
0785デフォルトの名無しさん
2005/10/03(月) 23:07:37<>で区切れば。
0786デフォルトの名無しさん
2005/10/03(月) 23:12:130787デフォルトの名無しさん
2005/10/03(月) 23:15:15>ワープロ(ソフトでなく単体ハードのね)についてたタイピング練習ゲームみたいな
馬鹿にするなよ。ワープロのタイピングゲームには流麗なイベントCGなんてついてなかったんだから。
0788デフォルトの名無しさん
2005/10/04(火) 00:06:30うそwww120点?
ポインタ使わなかったから0点かと思った
0789デフォルトの名無しさん
2005/10/04(火) 01:36:200790デフォルトの名無しさん
2005/10/04(火) 02:07:27n文字の文字列が与えられたとして、m文字目(n>m)までを回転シフトする関数を作れ
例) ABCDEFG の 3文字目までを回転シフト → DEFGABC
制約1)ポインタ使うこと
制約2)作業領域は 1文字分だけしか使ってはいけない
→応用)上記制約の元、できるだけ高速にシフトできるものを作れ
0791デフォルトの名無しさん
2005/10/04(火) 05:03:290792デフォルトの名無しさん
2005/10/04(火) 05:49:210793デフォルトの名無しさん
2005/10/04(火) 05:52:48#include<stdio.h>
int main(void)
{
char *p="ABCDEFG";
int i;
for(i=0;i<7;i++){
putch(*(p+(i+3)%7));
}
return (0);
}
0794デフォルトの名無しさん
2005/10/04(火) 07:26:37一生懸命考えましたが、初心者なのでこれが限界です_| ̄|○
もっと短くしたいのでアドバイスよろしくお願いします
#include <stdio.h>
int main(){
char str[100], *str_p, ans[100], *ans_p, *p;
int num, i;
str_p = str;
ans_p = ans;
p = str;
printf("文字列を入力してください:");
gets(str);
printf("整数を入力してください:");
scanf("%d", &num);
0795デフォルトの名無しさん
2005/10/04(火) 07:27:10while(*str_p){
*ans_p = *str_p;
str_p++; ans_p++;
}
for (i = 0; i < num; i++){
*ans_p = *p;
ans_p++; p++;
}
*ans_p = '\0';
printf("%s\n", ans);
return 0;
}
0796デフォルトの名無しさん
2005/10/04(火) 07:30:120797デフォルトの名無しさん
2005/10/04(火) 07:35:48どんなのが楽しいんだ?
俺が新人研修で使ったのは、簡単な画像処理だったなぁ。
BMPの読み込み、書き出しだけはスケルトンで用意しておいて、
エフェクト部分の関数だけ作らせる。モザイクとかグレースケール化とか。
ポインタの基礎とビットシフトさえ使えれば作れるからそれなりに好評だったけど
このスレのレベルよりはちょい高めだろうか
0798デフォルトの名無しさん
2005/10/04(火) 07:37:370799デフォルトの名無しさん
2005/10/04(火) 07:40:250800デフォルトの名無しさん
2005/10/04(火) 07:41:45今までの問題で楽しかった奴どれ?
0801デフォルトの名無しさん
2005/10/04(火) 09:00:170802デフォルトの名無しさん
2005/10/04(火) 10:03:35ポインタの勉強としては良いが、実際のプログラムでこんな事はするな
絶対にだ
こんなことをしなきゃならないのは設計が悪い
0803デフォルトの名無しさん
2005/10/04(火) 10:13:28基本的な認識の共有が回答者側に出来ていない気がします。
>>790
> n文字の文字列が与えられたとして、m文字目(n>m)までを回転シフトする関数を作れ
> 例) ABCDEFG の 3文字目までを回転シフト → DEFGABC
「3 文字目までを回転させる」と言われれば、4 文字目以降は回転させないんだな、
と考えるのが普通じゃないか? 例で示されているほうを信じたとして、俺が問題を
書き直すとすれば、「与えられた文字列の全体を m 文字分回転させる」という表現
になる。
>>793 >>794
問題文は、「……する関数を作れ」とあるわけだから、その機能を main 関数内に
閉じ込めてしまうのは違うと思う。問題文にきちんと従えと言いたい訳じゃなくて、
キーボードから入力させた文字列を回転させるのか、ファイルから読んだ文字列を
回転させるのか、もっと他のどこかから持って来た文字列を回転させるのか、という
選択を、関数を「使う側」に任せる形で切り離した方が勉強になると思うのです。
回転させた結果をどうするか(ファイルに書くのか画面に出すのか)という選択も然り。
0804デフォルトの名無しさん
2005/10/04(火) 11:16:00プロトタイプ宣言で調べていると
戻り値のデータ型 関数名(データ型 引数1,データ型 引数2…) ;
↑のようになっています。
それで猫やこのスレでもたびたび、戻り値のデータ型の所が
voidになってるのですが、これで宣言すればどんな型の戻り値でも
対応してくれるものなんですか?
0805デフォルトの名無しさん
2005/10/04(火) 11:19:450806デフォルトの名無しさん
2005/10/04(火) 11:23:17void型は何も返さない
今抽出して見て見たがvoid型の関数を使ってるやつは
ポインタのアドレスを渡して使ってるから何も返さなくても値が変更される
0807デフォルトの名無しさん
2005/10/04(火) 11:25:21ちがうよ。
戻り値のデータ型が void ってなってる関数は、戻り値を返せないよ。
この関数は値を返しません、っていう印として、 void を書きます。
この説明で、
「全く完全にちっともさっぱり値を返さない関数に意味があるのか?」とか、
「値を返さない関数の内部から、外部に向けて情報を渡すことは100%不可能なのか、」
という疑問を持ってくれるとうれしいんだけどな。
0808デフォルトの名無しさん
2005/10/04(火) 11:25:43そうなんですか(゚∀゚)ありがとうございます!!
アドレスの場合にはvoidでもいいという事ですか。
勉強になりました!
0809デフォルトの名無しさん
2005/10/04(火) 11:31:05猫でも返せないと言っていたんですが、実際には情報を
返せてますが、これはどういう事なんですか?
0810デフォルトの名無しさん
2005/10/04(火) 11:32:42>>806
>今抽出して見て見たがvoid型の関数を使ってるやつは
>ポインタのアドレスを渡して使ってるから何も返さなくても値が変更される
読んでくれよ(´・ω・`)
0811デフォルトの名無しさん
2005/10/04(火) 11:38:26すいませんでした・・・以後、気をつけます(。_。)
何となく理解できました!答えてくださった方々
ありがとうございました<(_ _*)>
0812デフォルトの名無しさん
2005/10/04(火) 11:48:17/*よろしくおねがいします*/
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 80
void rotate(char *str, const int shift)
{
int str_length;
int i;
char str_tmp;
if (shift<=0)
return;
str_length=strlen(str);
str_tmp=str[0];
for (i=0 ; i<(str_length-1) ; i++)
{
str[i]=str[i+1];
}
str[str_length-1]=str_tmp;
rotate(str, shift-1);
return;
}
0813デフォルトの名無しさん
2005/10/04(火) 11:48:48int main()
{
char str[MAX_LENGTH];
char char_shift[MAX_LENGTH];
int int_shift;
printf("%d文字以内の文字列を入力してください(1バイト文字のみ使用可)\n", MAX_LENGTH);
fgets(str, MAX_LENGTH, stdin);
str[strlen(str)-1]='\0';
printf("何文字分シフトさせますか?\n");
fgets(char_shift, MAX_LENGTH, stdin);
sscanf(char_shift, "%d", &int_shift);
printf("%sを%d文字シフトさせます\n", str, int_shift);
rotate(str, int_shift);
printf("%s\n", str);
return 0;
}
0814デフォルトの名無しさん
2005/10/04(火) 11:53:570123456789って表示される
0815デフォルトの名無しさん
2005/10/04(火) 12:11:4624bitビットマップをグレイスケール化するプログラムを書け
無茶か
0816デフォルトの名無しさん
2005/10/04(火) 12:22:22ヘッダとかの知識がないと無理だと思われ。
0817デフォルトの名無しさん
2005/10/04(火) 12:36:31ヘッダ(先頭の30バイトくらい)をちょっといじれば出来る
0818デフォルトの名無しさん
2005/10/04(火) 12:38:37これはcharの変数のポインタを渡してあげて関数内で中身を変更してもらうという意味ですか?
charの配列の名前を渡すと、配列の中身を変更してもらうということですか?どっちでもOK?
0819デフォルトの名無しさん
2005/10/04(火) 12:40:00xpm2ppmを作れ。xpmフォーマットもppmフォーマットも気の利いたグラフィックツールなら読めるし、
どちらもテキストベースだ。資料もWebで充分見つかるだろう。
0820デフォルトの名無しさん
2005/10/04(火) 12:42:47どっちの意味でも使えるけど、説明がなくchar *なら普通は後者の配列を想像する。
0821デフォルトの名無しさん
2005/10/04(火) 12:43:02一概には言えない。
例えば、その関数は単に文字列を受け取りたいだけかもしれない。
0822デフォルトの名無しさん
2005/10/04(火) 13:10:10実際にはそうしていないプログラムも多いんだな。
0823デフォルトの名無しさん
2005/10/04(火) 13:35:12いくら二次元が好きだからって時と場所を考えてくださいです><
0824デフォルトの名無しさん
2005/10/04(火) 13:54:18大学の演習で ppm 画像関連の課題が出て、ぐぐったらそこにぶちあたったよ
0825デフォルトの名無しさん
2005/10/04(火) 14:16:13数バイト程度ならまだしも、数十キロのエリアを実体で渡す事は...
と言うわけで、仕様書次第 関数マニュアルみれ
しかしこういう所みてると
有効桁数50桁の割り算作れとか言いたくなるよなぁ〜
採点できないからグッとこらえて..
0826デフォルトの名無しさん
2005/10/04(火) 17:25:17問題増えてきたからwikiに書いた
まだ途中だけど
0827デフォルトの名無しさん
2005/10/04(火) 17:59:030828デフォルトの名無しさん
2005/10/04(火) 18:28:03俺か?826に語りかけてるのか?このはずかしんぼめ!!
過去問解きたい人のために決まってるじゃないかおバカさん
0829デフォルトの名無しさん
2005/10/04(火) 18:30:05か、か、か、
かみ!!!
0830デフォルトの名無しさん
2005/10/04(火) 18:30:360831デフォルトの名無しさん
2005/10/04(火) 22:20:57猫のページでC++1.51が必要って時点で、既に挫折したんだけど・・・
調べてみると今は、6.0じゃないと駄目だって言うし・・・
どうしろと?
0832デフォルトの名無しさん
2005/10/04(火) 22:29:390833デフォルトの名無しさん
2005/10/04(火) 22:33:24俺、エクセル2002の資格もってるけど、会社のエクセル2000、やっぱ分かりづらかったもん
ましてや、C言語なんて、きっちりいっしょの事やっていかないと、途中で分からなくなりそう・・・
0834デフォルトの名無しさん
2005/10/04(火) 22:52:560835デフォルトの名無しさん
2005/10/04(火) 22:55:260836デフォルトの名無しさん
2005/10/04(火) 23:05:33CやC++自体はISOやJISが標準を定めていて、どこもこれに従っているから、
とりあえず自分の環境でのコンパイルの仕方さえわかれば、後は基本的に猫でも何でも問題ない。
>>833
バージョンが下がると「あれがないこれがない」になるから使いづらくなる。
逆に上がるほうなら使いやすくなるのか、というわけでもないけどさ。
0837デフォルトの名無しさん
2005/10/04(火) 23:09:48ふーむ、ならばやってみるかな・・・
再三悪いけど、買うのはそれれ6.0でいいの?
なんかVisual Studio .NET 2003 Professional
とかいうのもあるけど、どっちがいいとかあったら教えて
0838デフォルトの名無しさん
2005/10/04(火) 23:12:030839デフォルトの名無しさん
2005/10/04(火) 23:14:05調べてみるわ
みんなどうも、ありが�d
0840デフォルトの名無しさん
2005/10/04(火) 23:16:17ダウンロードして解凍して設定ファイル書き換えれば1時間以内にプログラミング開始できる。
Linux とか FreeBSD いれてみる余裕がハードディスクにあるなら、是非それを勧めるけどね。
手にはいるソースコードとドキュメントの、質と量が半端じゃない。
「strlen 関数って、中身どうなってんだ?」と思ったときにすぐに見に行ける環境って、
初心者にとって最高だと思う。
0841デフォルトの名無しさん
2005/10/04(火) 23:25:090842デフォルトの名無しさん
2005/10/04(火) 23:42:48良いサイトを教えてくれてサンキュー!
0843デフォルトの名無しさん
2005/10/05(水) 00:01:13売ってるぞ?MSのサイトで。
0844デフォルトの名無しさん
2005/10/05(水) 02:02:06nCr=n!/r!(nーr)!を計算する関数のプログラム
2次方程式 ax2+bx+c=0の解を複素解まで求められるような関数のプログラム
作っていただけませんか??
0845デフォルトの名無しさん
2005/10/05(水) 02:09:37とりあえず、マルチやめろ
0846デフォルトの名無しさん
2005/10/05(水) 03:37:422バイトかな文字列を入力させ
回文になっているかどうかを判定するプログラムを作れ
例)たけたぶやけた
応用→回文を作るプログラムを作れ(意味のある文を作るのは難易度高し)
0847デフォルトの名無しさん
2005/10/05(水) 03:58:01回転シフトというのは ABCDEFG → BCDEFGA
この操作を1として、
→ CDEFGAB
→ DEFGABC
最初の文字列の3文字目まで、という意味で書いた
>「与えられた文字列の全体を m 文字分回転させる」
なるほど
ついでにこの問題の解答(?)としては
文字列を2つに分けて AB
Aをひっくり返し [AR]B
Bをひっくり返し [AR][BR]
全体をひっくり返す [[AR][BR]]R = BA
とするのが良いとされている
要素が多い場合でも 1要素分の作業領域しか使わずにすみ
それなりに早いプログラムとなる
0848デフォルトの名無しさん
2005/10/05(水) 04:18:09void reverse(char str[]){
int i,j;
char tmp;
for (i = 0; str[i] != '\0'; i++); /* i=strlen(str); */
for (j = 0; j <i-1; ++j,--i){
tmp=str[j]; str[j]=str[i-1]; str[i-1]=tmp;
}
}
とかすれば別の領域が不要になる
0849デフォルトの名無しさん
2005/10/05(水) 06:01:310850デフォルトの名無しさん
2005/10/05(水) 06:10:570851デフォルトの名無しさん
2005/10/05(水) 06:13:380852ポポ素 ◆Qgm8RFT0/.
2005/10/05(水) 06:45:04>>850…正解(;。;)
あたいはあたいのペースでがんばるね…
なんかすごいね皆さん、はたしてこれらのソースを理解できる日が
あたいにもくるのかな?…
また分からなくなったら聞くね…そのときは先生方、よろしくお願いしま〜す♪
>>851
あたいでいいのかい?笑
まだC言語のドアのノブを握ってまわそうとしてる所くらいの知識だよん★
0854デフォルトの名無しさん
2005/10/05(水) 09:10:25#include <stdio.h>
#include <assert.h>
#define ASSERT assert
int input()
{
char buf[10];
int ret_num=0;
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &ret_num);
return ret_num;
}
int kaijo(int num)
{
ASSERT(num>=0);
if (num<2)
{
printf("1 = ");
return 1;
}
printf("%d * ", num, num-1);
return num*kaijo(num-1);
}
0855デフォルトの名無しさん
2005/10/05(水) 09:11:07{
int ans, num;
printf("数値を入力してください\n");
num=input();
printf("%dを入力しました\n", num);
printf("計算をはじめます\n");
ans=kaijo(num);
printf("%d\n", ans);
return 0;
}
0856デフォルトの名無しさん
2005/10/05(水) 09:50:04おれも理解できてないのにゃ
0857デフォルトの名無しさん
2005/10/05(水) 09:53:23#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
//マクロ定義
#define ASSERT assert
#define BUFSIZE 4096
//プロトタイプ宣言
int iskaibun_2byte(char *src);
int main();
//実装部
//! 回文か判定します
/*!
1文字以上の2バイト文字のみの文字列が必要です
半角文字が含まれるとうまく動きません
戻り値
回文なら1
回文でないなら0
*/
int iskaibun_2byte(char *src)
{
int src_size, i;
src_size=(int)strlen(src);
ASSERT( (src>0) && (src_size%2==0) );
0858デフォルトの名無しさん
2005/10/05(水) 09:54:01{
if(src[i] != src[src_size-i-2])
return 0;
if(src[i+1] != src[src_size-i-1])
return 0;
}
return 1;
}
//!全角カナを受け取り回文か判定するプログラム
int main()
{
char buf[BUFSIZE];
printf("全角カナで回文を入力してください\n");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf)-1]='\0';
if (iskaibun_2byte(buf))
printf("回文です\n");
else
printf("回文じゃないです\n");
return 0;
}
0859デフォルトの名無しさん
2005/10/05(水) 10:43:52標準入力が閉じられることを考慮して、戻り値もチェックしておいたほうが無難。
strlen()の戻り値をキャストするのはなぜ? コンパイラを黙らせるためのキャストは避けるべき。
0860デフォルトの名無しさん
2005/10/05(水) 12:00:47ワイドキャラかマルチバイト文字列関数で書いてくれw
まあ、動くのは認めるけど
0861デフォルトの名無しさん
2005/10/05(水) 13:13:56たとえばファイルは、
1334
234
5698
556
76
のように1つの行に1つの数字のみ書いてあると仮定していいんでしょうか?
0862デフォルトの名無しさん
2005/10/05(水) 13:21:330863デフォルトの名無しさん
2005/10/05(水) 13:27:14ありがとうございます
0864デフォルトの名無しさん
2005/10/05(水) 14:44:18#include <stdio.h>
int main(void)
{
FILE *file;
int s[100];
int i,j,n;
file=fopen("number.txt","r"); //number.txtは読み込むファイルです
for(i=0;(fscanf(file,"%d",&s[i])!=EOF);i++){
for(j=i;j>0;j--)
if(s[j-1] < s[j]){
n=s[j];
s[j]=s[j-1];
s[j-1]=n;
};
};
for(j=0;j<=i-1;j++)
printf("%d\n",s[j]);
fclose(file);
return 0;
}
0865デフォルトの名無しさん
2005/10/05(水) 15:07:19#要らなくなったらできるだけ早く開放しましょう。
0866デフォルトの名無しさん
2005/10/05(水) 15:55:27自作の sort と、ライブラリの qsort 両方試してみたら、qsort メチャはやい。
もちろん要素数は 100 じゃなく、65536 個で試してみた。
遅いほうのソート関数。
void sort(unsigned short *ia, int size) {
int i, j, tmp;
for (i=0; i<size-1; i++) {
for (j=i+1; j<size; j++) {
if (ia[i] < ia[j]) { tmp = ia[i]; ia[i] = ia[j]; ia[j] = tmp; }
}
}
}
データとして現れる数字は、0-65535だから、
私の環境では unsigned short int が 2byte なのでぴったり。
0867デフォルトの名無しさん
2005/10/05(水) 16:10:03データ数が多い場合qsortより遥かに速い。
void sort(unsigned short*ia,int size){
int count[65536]={0};
for(int i=0;i<size;++i)++count[ia[i]];
for(int i=65536;--i>=0;)
for(int j=count[i];--j >= 0;)
*ia++ = i;
}
0868デフォルトの名無しさん
2005/10/05(水) 16:24:36おめでとう。遅いコードを書けたということはqsort相当に向けて改善の余地がたくさんあるということジャマイカ。
0869デフォルトの名無しさん
2005/10/05(水) 17:04:49こんな感じで作ってみました。
作ってから>>847を見たけど、なるほどそういう方法があるのかと思っちゃいますね。
#include <stdio.h>
void rotate(char *str, int m)
{
char *head=str, temp;
int i;
for(i=0; i<m; i++){
temp = *str;
while(*str != '\0'){
*str = *(str+1);
str++;
}
*--str = temp;
str=head;
}
return;
}
int main(void)
{
char p[]="ABCDEFG";
rotate(p, 3);
printf("%s\n", p);
return 0;
}
0870デフォルトの名無しさん
2005/10/05(水) 19:18:42宿題で「画面にクラス・番号を表示して次の行に名前を表示するプログラムを作れ」というのがでました
まったく分からないので教えてくれませんか?
0871デフォルトの名無しさん
2005/10/05(水) 19:21:09int main(void)
{
puts("クラス:番号\n名前");
}
0872デフォルトの名無しさん
2005/10/05(水) 19:23:39ありがとうございますm( __ __ )m
かなり助かりました〜
0873デフォルトの名無しさん
2005/10/05(水) 19:23:39int main(name)
{
}
0874870
2005/10/05(水) 19:25:55今頃気づいたのですが問題の最後に「2回printf文を使う」って書いてあるorz
すみませんが もういちどお願いできますか?
0875デフォルトの名無しさん
2005/10/05(水) 19:28:46なんというか、これで詰まってるようじゃ先が心配だが......
#include <stdio.h>
int main(void)
{
printf("クラス:番号\n");
printf("名前");
}
0876デフォルトの名無しさん
2005/10/05(水) 19:45:28わざわざvoidかかなくても・・・。
0877875
2005/10/05(水) 19:49:490878デフォルトの名無しさん
2005/10/05(水) 19:53:100879870
2005/10/05(水) 19:53:20今日はまだprintfの意味しか教えてもらっていないので全然分からないんですorz
ありがとうございました
0880デフォルトの名無しさん
2005/10/05(水) 19:55:39そんなの各自の勝手だろ
0881デフォルトの名無しさん
2005/10/05(水) 19:56:160882デフォルトの名無しさん
2005/10/05(水) 19:58:07自虐は良くないな
0883デフォルトの名無しさん
2005/10/05(水) 20:00:390884デフォルトの名無しさん
2005/10/05(水) 20:21:57まったくわからないけど今日から参加おk?
0885デフォルトの名無しさん
2005/10/05(水) 20:23:25せめて入門書のようなものを一冊読んでからにしない?
0886デフォルトの名無しさん
2005/10/05(水) 20:29:21そう…明日コーチャンフォー逝って買ってくるわ。
わかった出直してきまつ
0887デフォルトの名無しさん
2005/10/05(水) 20:45:250888デフォルトの名無しさん
2005/10/05(水) 21:05:31バケットソートっていう名前で呼べよ。
0889デフォルトの名無しさん
2005/10/05(水) 21:10:36Youハッカーじゃん
0890デフォルトの名無しさん
2005/10/05(水) 21:14:100891デフォルトの名無しさん
2005/10/05(水) 23:39:02まとめwikiのRSSはこのアドレスなんでヨロシク
0892デフォルトの名無しさん
2005/10/06(木) 00:38:46Nにゼロまたはマイナスの値が入力された場合、エラー出力は行わず再びNの値の
入力をユーザに促し、入力を待つところがうまく書けない。
#include <stdio.h>
int fact(int N);
main()
{
int N;
printf("N = ");
scanf("%d",&N);
N = fact(N);
printf("N! = %d\n" , N);
}
int fact(int N)
{
if(N == 0) return(1);
else return( N * fact(N - 1));
}
0893デフォルトの名無しさん
2005/10/06(木) 00:41:41void reverse(char *str, int left, int right){
char temp;
for( ; left<right; left++, right--){
temp = str[left];
str[left] = str[right];
str[right] = temp;
}
return;
}
void rotate(char *str, int m){
int length = strlen(str);
reverse(str, 0, m-1);
reverse(str, m, length-1);
reverse(str, 0, length-1);
return;
}
0894デフォルトの名無しさん
2005/10/06(木) 00:42:51do{
printf("N=");
scanf("%d",&N);
}while(N<=0)
とかはダメかな
0895デフォルトの名無しさん
2005/10/06(木) 00:50:51Nの階乗の計算はどうすればいいの?
0896デフォルトの名無しさん
2005/10/06(木) 00:55:29>>894でいけるよ。
階乗計算はdo-whileを抜けてからやるから問題ない。
あと変数は小文字がいいかと。
#include <stdio.h>
int fact(int n);
int main()
{
int n;
do{
printf("N=");
scanf("%d",&n);
}while(n<=0);
n = fact(n);
printf("N! = %d\n" , n);
}
int fact(int n)
{
if(n == 0) return(1);
else return( n * fact(n - 1));
}
0897デフォルトの名無しさん
2005/10/06(木) 01:07:200898デフォルトの名無しさん
2005/10/06(木) 01:08:22レスありがとうございますm(__)m
0899デフォルトの名無しさん
2005/10/06(木) 01:10:570とマイナスは無視して書かないといけません。
0900デフォルトの名無しさん
2005/10/06(木) 03:46:13voidなら
最後のreturnは
いらないよ
0901デフォルトの名無しさん
2005/10/06(木) 06:38:46voidでも書いておけって人もいるし、そこは結構宗教論になるからなぁ。
どちらでもいいんじゃない?
0902デフォルトの名無しさん
2005/10/06(木) 08:38:520の階乗は1と定義されていた希ガス。
0903デフォルトの名無しさん
2005/10/06(木) 10:40:32わからないので調べてきました
charの替わりにwchar_tを使えってことでいいですか?
0904デフォルトの名無しさん
2005/10/06(木) 10:43:35そういうこと。
0905デフォルトの名無しさん
2005/10/06(木) 11:40:350906デフォルトの名無しさん
2005/10/06(木) 11:57:24それとも自由に全部つくっていい問題?
qsortで終わりだと思うが問題は一字一句変えずに全部転載してくれ
0907デフォルトの名無しさん
2005/10/06(木) 12:16:51日本語?
0908デフォルトの名無しさん
2005/10/06(木) 13:35:290909デフォルトの名無しさん
2005/10/06(木) 13:53:32Cに含まれている。特定のヘッダをインクルードすると使えるようになる。
C++ではintやcharと同じ基本型となった。
0910えすぱー
2005/10/06(木) 15:23:57こういうことか?
http://gamdev.org/up/img/3486.phps
0911デフォルトの名無しさん
2005/10/06(木) 16:04:41まさか。
文からして大学の宿題の丸投げだろ。
たぶんこんなん↓
JANUARY APRIL
FEBRUARY AUGUST
MARCH DECEMBER
APRIL FEBRUARY
MAY JANUARY
JUNE → JULY
JULY JUNE
AUGUST MARCH
SEPTEMBER MAY
OCTOBER NOVEMBER
NOVEMBER OCTOBER
DECEMBER SEPTEMBER
0912デフォルトの名無しさん
2005/10/06(木) 16:24:450913デフォルトの名無しさん
2005/10/06(木) 16:27:010914910
2005/10/06(木) 16:35:47長くなっちゃったので、こっちには載せなかったんだけど、
できましたら、突っ込み宜しくお願いします。
0915デフォルトの名無しさん
2005/10/06(木) 16:35:50納得
0916デフォルトの名無しさん
2005/10/06(木) 17:00:02#include<stdio.h>
void func1(int x, int y);
int func2;
void func3(int x, int y);
void func4(int *p, int *q);
void func5(int x);
int a = 1, b =2;
main()
{
int a = 3, c = 4;
printf("in main a = %d\n",a);
printf("in main b = %d\n",b);
printf("in main c = %d\n",c);
func1(++c, b);
a = func2();
func3(a,c);
printf("in main2 a = %d\n",a);
printf("in main2 b = %d\n",b);
printf("in main2 c = %d\n",c);
b = func4(&a, &c);
printf("in main3 a = %d\n",a);
printf("in main3 b = %d\n",b);
printf("in main3 c = %d\n",c);
func5(a);
}
0917デフォルトの名無しさん
2005/10/06(木) 17:02:30void func1(int x ,int y)
{
double z;
z = x / y;
printf("in func1 x = %d\n",x);
printf("in func1 y = %d\n",y);
printf("in func1 z = %.3f\n",z);
}
int func2()
{
int b = 5, c = 6;
printf("in func2 a = %d\n",a);
printf("in func2 b = %d\n",b);
printf("in func2 c = %d\n",c);
return(b);
}
void func3(int x, int y)
{
a = x + y;
}
int func4 (int *p. int q)
{
*p = 7;
*q = 8;
return(*p + *q);
}
void func5(int x)
{
printf("in func5 a = %d\n",a);
}
0918デフォルトの名無しさん
2005/10/06(木) 17:20:13×int func2;
○int func2();
0919デフォルトの名無しさん
2005/10/06(木) 17:22:210920デフォルトの名無しさん
2005/10/06(木) 17:26:33なるべく強いCPU希望
0921デフォルトの名無しさん
2005/10/06(木) 17:29:180922デフォルトの名無しさん
2005/10/06(木) 17:30:50しかも必勝法あり
ツマンネ
0923デフォルトの名無しさん
2005/10/06(木) 17:31:400924デフォルトの名無しさん
2005/10/06(木) 17:38:13ジャンル:ランダムの取り扱い
問題:ランダムにパーツを組み合わせて簡単な顔AAを作る
詳細:
あらかじめ「輪郭」「目」「口」といったパーツを文字配列に用意しておき、(格納の仕方は各自工夫する)
実行時に各パーツからランダムに1つ選び出して組み合わせ、AAにして出力する。
標準関数のsrand、randを用いること。
ちなみにここで言う簡単なAAとは、(´・ω・`)や(・∀・)のようなものを指します。
暇だったらドウゾ
0925デフォルトの名無しさん
2005/10/06(木) 17:40:280926デフォルトの名無しさん
2005/10/06(木) 17:53:42他にパーツあったっけ?
0927デフォルトの名無しさん
2005/10/06(木) 17:54:460928デフォルトの名無しさん
2005/10/06(木) 17:57:100929デフォルトの名無しさん
2005/10/06(木) 17:59:380930デフォルトの名無しさん
2005/10/06(木) 18:14:480931デフォルトの名無しさん
2005/10/06(木) 18:37:00作ってみた。超適当だけど'`,、('∀`) '`,、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/964.c
0932デフォルトの名無しさん
2005/10/06(木) 18:39:440933デフォルトの名無しさん
2005/10/06(木) 19:25:07顔の右輪郭と左輪郭もランダムかよw
);皿・[
↑こんなのとか。w
0934デフォルトの名無しさん
2005/10/06(木) 19:32:310935933
2005/10/06(木) 19:45:39それから、-Wall でコンパイルすると、「time ってなんだよ?」って言って来たので、
time.h を include しました。
0936デフォルトの名無しさん
2005/10/06(木) 19:46:340937デフォルトの名無しさん
2005/10/06(木) 20:08:14#include<stdlib.h>
#include<math.h>
void main(void)
{
/* 宣言 */
FILE *fout;
float a,b,c,d,e,n,m,r;
char fnout[20];
printf("nとrを入力してください(ただしn>r):");
printf("n= \n");
scanf( "%5d" , &n);
printf("r= \n");
scanf( "%5d" , &r);
/* nの階乗 */
a=1.0;
while(n>1.0){
a=a*n;
n--;}
どこが間違ってますか?!
0938デフォルトの名無しさん
2005/10/06(木) 20:09:25/* rの階乗 */
b=1.0;
while(r>1.0){
b=b*r;
r--;}
/* n-rの階乗 */
c=1.0;
e=n-r;
while(e>1.0){
c=c*e;
e--;}
/* 計算結果 */
d=(a/(b*c));
お願いします!
0939デフォルトの名無しさん
2005/10/06(木) 21:09:430940デフォルトの名無しさん
2005/10/06(木) 21:28:58No such file or directory
↑こんなふうなエラーが出て、先に進めません
どうしたら良いですか?
ttp://support.microsoft.com/default.aspx?scid=kb;ja;841226
このとおりにやったのに・・・
0941デフォルトの名無しさん
2005/10/06(木) 21:30:50組み合わせを求めたいんだよね。
scanf( "%5d" , &n); 間違い
scanf( "%5f" , &n); 正解
でも最後のdの計算をいじればd以外はintでいいと思うけど。
0942デフォルトの名無しさん
2005/10/06(木) 21:32:030943デフォルトの名無しさん
2005/10/06(木) 21:35:06今買おうか迷ってるんだが・・・
0944デフォルトの名無しさん
2005/10/06(木) 21:36:07スレにふさわしく、C言語にてwinnyを1から作ってみよう。
0945デフォルトの名無しさん
2005/10/06(木) 21:40:22内容めちゃ難しい?
ネットで買おうかどうか迷ってる
0946デフォルトの名無しさん
2005/10/06(木) 21:41:22英語のとおりやろ
cppファイルどこに置いてんのさ
0947デフォルトの名無しさん
2005/10/06(木) 21:53:30とりあえず、Administrator\My Documents\Visual Studio Projects\CPP
となってます
ちなみにCPPフォルダだけは自分が作りました
ハローワールドのファイルを格納するために
で、アドミニストレーターのフォルダに直接ぶち込んだら、出来ました・・・
アドミニストレーターに、CPPフォルダを作ってそこにいれても、できませんでした
つまりアドミニストレーター以上は、フォルダを作れないみたいです。
これってひょっとして、アドミニストレーター以降も、フォルダ名打ち込まないといけないんですか?
0948デフォルトの名無しさん
2005/10/06(木) 22:03:310949デフォルトの名無しさん
2005/10/06(木) 23:04:35>「int」は、「main関数が整数を返す」という意味です。
>return文を使って「0」を返している。
と書いてあったのですが「返す」とはどういうことでしょうか?
先輩方教えてください。
0950デフォルトの名無しさん
2005/10/06(木) 23:11:57難しいけどじっくり読めばわかる感じ
内容のわりに、スゲーわかりやすく書いてる
0951デフォルトの名無しさん
2005/10/06(木) 23:26:06返すとは結果を伝えると言えばいいかな。
main以外の関数を使い出せばわかってくると思う。
0952デフォルトの名無しさん
2005/10/06(木) 23:47:03そうなんですか。恩に着ます!
何せ今日から始めたもんで。
0953デフォルトの名無しさん
2005/10/07(金) 00:07:50いろいろ google した結果、 main 関数の返す値は、プログラムの終了コード(終了ステータス)に
なることがわかりました、UNIX だと、直前に終了したプログラムの終了コードを確認するには、
sh だと、echo $? で、csh だと echo $status で表示させることが出来ることもわかりましたが、
Windows のコマンドプロンプトでは、どうやればいいでしょうか。
0954デフォルトの名無しさん
2005/10/07(金) 00:21:42既知のアルゴリズムだよ。
ただ実際にはqsortやマージソート、ヒープソートなんかが使われるのは
この方法にはいろいろ問題があるわけで
・整数しか扱えない。
・数字のとりうる値の範囲が大きいとメモリを馬鹿食いする。たとえば32ビット値なら要素数2^32の配列が必要になる。
考え方自体は有用ではある。
ちょっと改良すればハッシュ法なんかに応用できる。
0955デフォルトの名無しさん
2005/10/07(金) 00:53:280956デフォルトの名無しさん
2005/10/07(金) 00:58:44サンクス
0957デフォルトの名無しさん
2005/10/07(金) 02:31:23echo %errorlevel%
0958ポポ巣 ◆Qgm8RFT0/.
2005/10/07(金) 07:28:06新しいのたてたよーー!
0959デフォルトの名無しさん
2005/10/07(金) 12:25:12#pragma comment (lib, "WSock32.lib")
#define WIN32_LEAN_AND_MEAN
#define MAJORVERSION 2
#define MINORVERSION 2
#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
int main()
{
WSADATA wsaData;
int err;
err=WSAStartup(MAKEWORD(MAJORVERSION, MINORVERSION), &wsaData);
if (err != 0)
{
printf("エラーコード %d\n", err);
switch (err)
{
case WSASYSNOTREADY:
printf("ネットワークサブシステムがネットワークへの接続を準備できていない\n");
break;
case WSAVERNOTSUPPORTED:
printf("要求されたwinsockのバージョンがサポートされていない\n");
break;
case WSAEINPROGRESS:
printf("ブロッキング操作の実行中であるか、またはサービスプロバイダがコールバック関数を処理している\n");
/*
0960デフォルトの名無しさん
2005/10/07(金) 12:25:54break;
case WSAEPROCLIM:
printf("winsockが処理できる最大プロセス数に達した\n");
break;
case WSAEFAULT:
printf("第二引数であるlpWSAData は有効なポインタではない\n");
break;
default:
printf("原因不明\n");
}
}
else
{
printf("正常に初期化できました\n");
}
printf("iMaxSockets %d\n", wsaData.iMaxSockets);
printf("iMaxUdpDg %d\n", wsaData.iMaxUdpDg);
printf("lpVendorInfo %x\n", wsaData.lpVendorInfo);
printf("szDescription %s\n", wsaData.szDescription);
printf("szSystemStatus %s\n", wsaData.szSystemStatus);
printf("wHighVersion %d.%d\n", HIBYTE(wsaData.wHighVersion), LOBYTE(wsaData.wHighVersion) );
printf("wVersion %d.%d\n", HIBYTE(wsaData.wVersion), LOBYTE(wsaData.wVersion) );
/*
0961デフォルトの名無しさん
2005/10/07(金) 12:26:26err=WSACleanup();
if (err == SOCKET_ERROR)
{
printf("リソース解放失敗\n");
}
else
{
printf("リソース解放成功\n");
}
return 0;
}
//EOF
0962デフォルトの名無しさん
2005/10/07(金) 16:14:200963デフォルトの名無しさん
2005/10/07(金) 16:27:030964デフォルトの名無しさん
2005/10/07(金) 16:58:57いまでも入門書はしょっちゅう手にして確認するけど、
にーちゃんの本棚のCマガジンとかは良く読んだ。
あと、関係ないけど、新スレに書く前にこっち埋めようぜー。
0965デフォルトの名無しさん
2005/10/07(金) 17:12:56Cマガジンですか?さっそく本屋行って見てきます!
0966デフォルトの名無しさん
2005/10/07(金) 17:25:51「C言語ポインタ完全制覇」と「定本Cプログラマのためのアルゴリズムとデータ構造」を読んだ。
本もいいけど、勉強におすすめのソースコードとかが知りたい。
0967デフォルトの名無しさん
2005/10/07(金) 18:10:13善いも悪いもCのソースならWebでいくらでも転がってる。
0968デフォルトの名無しさん
2005/10/07(金) 18:15:10通して読むようなのないなぁ、書籍でも
ANSI規格書が昔は無料だったらしいけど
今は1万円以上するしちょっとつらい
K&R買ったけど全部載ってるわけでもなし
MSDNが良さそうだけど目次が全然でてこないorz
0969デフォルトの名無しさん
2005/10/07(金) 18:20:26JISのPDFはタダで読める。
MSDN(日本語)ではこうたどっていくとC関連の記事がある。
開発ツールと言語→Visual Studio .Net→製品ドキュメント→Visual C++
→Visual C++ リファレンス→Visual C++ ライブラリ→Visual C++ のリファレンス
→Visual C++のライブラリ→ランタイム ライブラリ リファレンス
0970その1
2005/10/07(金) 19:18:47#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
int main(int argc, char **argv) {
const char *hostname = "www.google.co.jp";
const char *path = "/";
const unsigned short port = 80;
int sock;
struct hostent *host;
struct sockaddr_in server;
int read_size;
char buf[1024];
0971その2
2005/10/07(金) 19:19:58return -1;
bzero(&server, sizeof(server));
server.sin_family = AF_INET;
bcopy(host->h_addr, &server.sin_addr, host->h_length);
server.sin_port = htons(port);
if ((sock=socket(AF_INET, SOCK_STREAM, 0))==-1)
return -1;
if (connect(sock, (struct sockaddr *)&server, sizeof(server))==-1)
return -1;
sprintf(buf, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n", path, hostname);
write(sock, buf, strlen(buf));
while ((read_size = read(sock, buf, sizeof(buf)))>0)
write(1, buf, read_size);
close(sock);
return 0;
}
0972デフォルトの名無しさん
2005/10/07(金) 20:30:48ありがとうございます見つかりました
0973デフォルトの名無しさん
2005/10/08(土) 11:33:22問題。
自分の環境で使うことが出来るC言語の型 (char, short int, int, long int 等など)
と、そのサイズを標準出力に吐き出すプログラムを書け.
出力例
char 1
short int 2
int 4
long int 4
制約
型のサイズはプログラム内に直接書くのではなく、sizeof 演算子を用いて、
実行時に取得して表示すること。
挑戦項目
その型が持つことが出来る最大の数と最小の数も出るようにしておくと便利かも。
完成したプログラムは、環境変数 PATH が指すディレクトリのどこか一つにいれておくと便利かも。
0974デフォルトの名無しさん
2005/10/08(土) 11:39:59こういう横やりを入れるのも何だけど、sizeofはコンパイル時に定数式扱いされるから
実行時に取得してるわけじゃないんだけどね
0975デフォルトの名無しさん
2005/10/08(土) 11:42:460976デフォルトの名無しさん
2005/10/08(土) 11:53:30まさに横やりだな。
実行形式ファイルは実行するまでは
何の効果も生み出さないのだから、
実行時に取得される、と理解して何の不具合もないだろ。
ホント、ヲタはどうでもいいところにこだわるな。
0977デフォルトの名無しさん
2005/10/08(土) 11:58:23>>976で最悪
言ってること滅茶苦茶だし
問題出すにはまだ早い知識ですね =P
0978デフォルトの名無しさん
2005/10/08(土) 11:59:55おまいさん、RTTI使ったことないだろ。
さすがに初心者にそこまでの注意を払わせるのはどうかと思うが、
実行時にコストを支払うのか、コンパイル時に支払うのかの違いは大切だぞ。
0979デフォルトの名無しさん
2005/10/08(土) 12:03:110980デフォルトの名無しさん
2005/10/08(土) 12:08:02話をそらすな。
このスレの主題に照らして
>>974がどれだけ無意味な発言であるか。
君らは技術に溺れ、場に応じた適切なレベルの
コミュニケーションを取れないタイプの間だな。
人にものを教えようなどと思わない方がいいぞ。
あと俺は>>973とは別の通りすがりだ。
0981デフォルトの名無しさん
2005/10/08(土) 12:10:14そんな事は誰も聞いてない件について。
アイアムザパニーズに近いものを感じるなw
0982デフォルトの名無しさん
2005/10/08(土) 12:12:12そういう下らない論争をする君が一番場違いだということに気づかないのか?
スレが埋まっていいんだけどさ。
そもそも間違いを指摘してなぜ悪い?
初心者相手なら嘘を教えていいとでも?
適切なフォローはこの場合「今は気にしなくていい」であって
「実行時だと理解していい」ではないだろう。嘘を教えてどうする。
0983デフォルトの名無しさん
2005/10/08(土) 12:13:12せっかく>>973が必死こいて言い訳を考えて来てくれたんだから
静かに見守ろうぜおまいらw
0984デフォルトの名無しさん
2005/10/08(土) 12:13:28場に応じた適切な発言できてないのは、いったい誰なのやら。
0985デフォルトの名無しさん
2005/10/08(土) 12:15:190986デフォルトの名無しさん
2005/10/08(土) 12:16:380987デフォルトの名無しさん
2005/10/08(土) 12:17:210988デフォルトの名無しさん
2005/10/08(土) 12:17:510989デフォルトの名無しさん
2005/10/08(土) 12:21:11>>977を読め。俺を>>973だと思っている。
君も場の状況を見ず思いつきで発言するタイプだな。
コミュニケーション能力が足りない人間が多いな。
>>982
実行時に取得しているのと表面的には
変わらないのだから嘘ではない。
初心者のキャパはすごく小さいのだ。
他人のレスに横やりいれてスレの流れを乱すな。
0990973
2005/10/08(土) 12:23:03大変勉強になります。
私が >>973 の問題で伝えたかったことは、自分のためにプログラミングするのも
楽しいよな。ってことです。
あと、ある程度C言語をわかってる人は、あんまり難しい問題を出すんじゃなくて、
今日からC言語を学ぼうと思った人でも、「これなら出来るかも」と思えるような
問題を出して行くといいんじゃないかと思います。
あ、すげー伸びてる。
0991デフォルトの名無しさん
2005/10/08(土) 12:23:430992デフォルトの名無しさん
2005/10/08(土) 12:23:440993デフォルトの名無しさん
2005/10/08(土) 12:25:06邪魔だから。
0994デフォルトの名無しさん
2005/10/08(土) 12:25:09あんた根本的に考え違いしてるよ
自分がプログラミングやり始めた頃のこと思い出してみろよ
0995デフォルトの名無しさん
2005/10/08(土) 12:26:060996デフォルトの名無しさん
2005/10/08(土) 12:27:550997デフォルトの名無しさん
2005/10/08(土) 12:32:150998デフォルトの名無しさん
2005/10/08(土) 12:34:030999デフォルトの名無しさん
2005/10/08(土) 12:36:131000デフォルトの名無しさん
2005/10/08(土) 12:36:5010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。