C言語なら俺に聞け(入門編)Part 86
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/06/26(日) 21:03:13.81★前スレ
C言語なら俺に聞け(入門編)Part 85
http://hibari.2ch.net/test/read.cgi/tech/1306704064/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 150代目
http://hibari.2ch.net/test/read.cgi/tech/1308749241/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/06/26(日) 23:31:53.45乙
0003デフォルトの名無しさん
2011/06/27(月) 00:30:21.910004デフォルトの名無しさん
2011/06/27(月) 09:21:11.17double型の精度について質問させてください。
doubleの有効桁は、調べたところ16桁と書いてありました。
これはつまり、
a=1.0*10^(-15)
b=1.0*10^(-14)
b-a = 0.9*10^(-14)
が正しく表示されるくらいの精度はあるということでしょうか?
0005デフォルトの名無しさん
2011/06/27(月) 10:42:06.17そもそも、cでは規格では精度について詳細に言及していないので、16桁が保証されている訳ではありません。
0006デフォルトの名無しさん
2011/06/27(月) 10:47:36.240007デフォルトの名無しさん
2011/06/27(月) 11:47:34.3216桁で丸めれば正しく見えるな。
0008デフォルトの名無しさん
2011/06/27(月) 15:00:12.48以下の説明は10進法で説明してるから例え話のようなものです(実際は2進数です)
1.0*10^(-15)は1.0っていう情報とそれを15桁ずらすっていう情報に分けて保存するの、小数点をずらす感じだから不動小数点と呼ばれる
で、16桁程度の精度ってのは1.0の部分の話なので1.0*10^(-15)はもっと精度がある
どのみちdouble型の誤差を気にするなら気をつけないといけないことがいくつかあるので
他の人が入ってる通り調べたほうがいい
0009デフォルトの名無しさん
2011/06/27(月) 15:02:36.14それって計算精度3桁だから余裕
0010デフォルトの名無しさん
2011/06/27(月) 20:22:01.42なにを言っているんだ・・・
0011デフォルトの名無しさん
2011/06/27(月) 21:11:28.455の倍数かどうかを判定するプログラムを作っているのですが
ifの後の計算式がどうしてもわかりません…
どのように訂正したらいいでしょうか。以下ソースになります。
0012デフォルトの名無しさん
2011/06/27(月) 21:12:50.66int main(void)
{
int a;
int b;
b = 5;
printf("整数を1つ入力せよ\n");
scanf("%d",&a);
if(a/b ==5 )
{
printf("【 %d 】は5の倍数である\n",a/b);
}
else
{
printf("【 %d 】は5の倍数でない\n",a/b);
}
return 0;
}
0013デフォルトの名無しさん
2011/06/27(月) 21:18:38.010014デフォルトの名無しさん
2011/06/27(月) 21:18:42.61釣れますか?
0015デフォルトの名無しさん
2011/06/27(月) 21:23:01.66その式をやってみたのですが、
「50」等を入力しても「5の倍数ではない」と言われてしまいました…
printfのa/bが間違っているからでしょうか?
>>14
すいません、多分初歩とかそんなレベルじゃないですよね
学校の授業について行けず独学で頑張っていますが
数学というか算数が元々苦手なもので…もしスレ違いだったらすみません
0016デフォルトの名無しさん
2011/06/27(月) 21:25:04.150017デフォルトの名無しさん
2011/06/27(月) 21:30:38.300018デフォルトの名無しさん
2011/06/27(月) 21:31:24.96ありがとうございます!プログラムは出来上がりました。
ただ計算式の意味がまだ理解できていません…
aが50だったとして、それを5で割ると10ですよね?
10と0が等しかったら何故5の倍数だと判定できるのでしょう…
うまく説明できないのですが、数式の読み解き方を教えて頂けると嬉しいです…
0019デフォルトの名無しさん
2011/06/27(月) 21:33:02.300020デフォルトの名無しさん
2011/06/27(月) 21:36:16.74今少し考えていて、解ったかも知れません。
50を5で割ると割り切れて10で、
余りが出ないから 0と等しくなるという考え方でよいのでしょうか?
0021デフォルトの名無しさん
2011/06/27(月) 21:42:11.860022デフォルトの名無しさん
2011/06/27(月) 21:43:08.15初等整数の受験用参考書買え
0023デフォルトの名無しさん
2011/06/27(月) 21:49:54.920024デフォルトの名無しさん
2011/06/27(月) 22:40:28.298 * 16 の格子に、色が配置されてます。色は赤・青・黄・緑・オレンジの5色です。
+ー+ー+ー+ー・・・
|赤|緑|赤|黄|・・・
|赤|赤|黄|青|・・・
|橙|赤|黄|青|・・・
縦横で同じ色の場合はリンクしてると考えて、4つ以上リンクした状態の領域を検索したいです。
検索結果は同じく8*16の格子に TRUE と
002524
2011/06/27(月) 22:43:20.048*16の色の配列アドレスを渡して、8*16のtrue/falseの配列を得る関数を作りたいのですが、どうやればいいですか?
C言語で可能ですか?
0026デフォルトの名無しさん
2011/06/28(火) 00:17:50.930027デフォルトの名無しさん
2011/06/28(火) 00:21:19.09作ってみればいい
落ちゲーでも作るのか
0028デフォルトの名無しさん
2011/06/28(火) 00:58:55.33002924
2011/06/28(火) 00:59:50.69http://codepad.org/St12kXIa
意外に簡単だった(^_^v
0030デフォルトの名無しさん
2011/06/28(火) 01:58:09.24これってどうなの
0031デフォルトの名無しさん
2011/06/28(火) 02:06:54.36int a; srand(a); と同じ。
処理系によっては、繰り返し実行しても a の値が変わらない場合があるから、この場合 srand() したことになっていない。
0032デフォルトの名無しさん
2011/06/28(火) 02:29:47.740033デフォルトの名無しさん
2011/06/28(火) 09:26:16.610034デフォルトの名無しさん
2011/06/28(火) 09:39:16.48_は変数名だから定義されてる
0035デフォルトの名無しさん
2011/06/28(火) 09:42:27.090036デフォルトの名無しさん
2011/06/28(火) 09:53:47.50C FAQで呼んだ話であって規格のどこに書いてあるのかは知らないんだが
未初期化変数の利用は一応未定義動作らしいな、普通は動くけど
0037デフォルトの名無しさん
2011/06/28(火) 09:57:21.580038デフォルトの名無しさん
2011/06/28(火) 10:38:52.35まぁ目線云々はなくて単に訳を断定口調で統一させてるだけのハナシであるっつーのは分かるんだけど
特にヌルポインターの章とかたまらん
0039デフォルトの名無しさん
2011/06/28(火) 12:58:05.61たとえばターミナルの大きさを変えたらそれに応じて表示する一行の文字数が変わるみたいなことをしたいんだけど
0040デフォルトの名無しさん
2011/06/28(火) 13:30:17.590041デフォルトの名無しさん
2011/06/28(火) 15:33:59.570〜4まで等間隔で打たれてる時計の文字盤のようなものを創造してみるんだ
50 だと10回転して 0 の位置を指してる
13 だと2回転して 3 の位置を指してる
# 高度計って一般的じゃないからなぁ…
# % の左側が負の値の時は… とりあえず思考停止だw
0042デフォルトの名無しさん
2011/06/28(火) 15:39:04.650043デフォルトの名無しさん
2011/06/28(火) 15:49:45.09問題ないぞ
0044デフォルトの名無しさん
2011/06/28(火) 15:55:06.29適当なこと言うなよハゲ
0045デフォルトの名無しさん
2011/06/28(火) 16:00:32.94x % y で x, y 何れかが負の場合には処理系依存 って書いてあったが
C89 でもそうなのかどうかは知らない
0046デフォルトの名無しさん
2011/06/28(火) 16:02:04.810047デフォルトの名無しさん
2011/06/28(火) 16:02:11.2650の倍数か判定するのに問題ある例を挙げよ
0048デフォルトの名無しさん
2011/06/28(火) 16:08:10.72いきなり定義書いていったらだめなの?
0049デフォルトの名無しさん
2011/06/28(火) 16:12:42.21複数ソースであちこちのソースから呼び出されるならヘッダーにプロトタイプ宣言書く
0050デフォルトの名無しさん
2011/06/28(火) 16:20:59.70勝手に割り切れる時の判定の話にされても困る
0051デフォルトの名無しさん
2011/06/28(火) 16:21:50.15そうなんですか
まだファイル分割するようなレベルまで来ていないので
いまいちピンッときませんが
ありがとうございました
0052デフォルトの名無しさん
2011/06/28(火) 16:23:06.42実際そうなんだから
はやく謝れよクズ
0053デフォルトの名無しさん
2011/06/28(火) 16:32:33.220054デフォルトの名無しさん
2011/06/28(火) 16:38:42.31C99だと仕様で決められた
除算は0方向に丸める
Javaもそう
0055デフォルトの名無しさん
2011/06/28(火) 16:51:57.71たとえばこんなときプロトタイプが欲しくなる
dir(p)
char *p;
{
file((char *)0);
}
file(p)
char *p;
{
dir((char *)0);
}
別になくても詰みはせんが
0056デフォルトの名無しさん
2011/06/28(火) 16:58:40.41yが非0前提で
x/y は整数での割り算のルールに則ったまま
(x/y) * y + (x % y) が 常に x と等しい ってこと? < C99 の仕様
0057デフォルトの名無しさん
2011/06/28(火) 17:01:06.44ああ 式の構文解析なんかは そういうパターンになるね
0058デフォルトの名無しさん
2011/06/28(火) 17:06:25.93倍数の意味わかってるのかな…
0059デフォルトの名無しさん
2011/06/28(火) 17:07:12.670060デフォルトの名無しさん
2011/06/28(火) 18:54:06.140061デフォルトの名無しさん
2011/06/28(火) 23:48:02.57横から。厳密な事を言うと、「x/yが表現可能ならば」という前提がつく
こういうめんどくさい述べ方をするのは、ゼロ除算ともう一つ、2の補数でINT_MIN / (-1)ってケースだと
オーバーフローが生じるから
0062デフォルトの名無しさん
2011/06/28(火) 23:58:12.62if(i==1)
if(i==2)
・
・
・
とif文が10個あった場合全部吟味されますか?
0063デフォルトの名無しさん
2011/06/29(水) 00:02:18.53unsigned char hoge;
hoge = 1000. / (unsigned char)(moge);
のようなコードがあるのですが、数値の後に ’.’ があるとどういう扱いになるのでしょうか?
少数の意味なのかなとも思うのですが…
0064デフォルトの名無しさん
2011/06/29(水) 00:17:11.40暗黙の型変換でぐぐるよろし
0065デフォルトの名無しさん
2011/06/29(水) 00:22:04.68浮動小数点定数という理解であってる
0066デフォルトの名無しさん
2011/06/29(水) 00:25:59.48ありがとうございます。
ピリオドとかだと上手く検索できなくて困っていました。
1000.0 のようにピリオドの後に数字がなくても大丈夫なんですね。
勉強になりました。
0067デフォルトの名無しさん
2011/06/29(水) 00:53:03.20よくあるforループのパターンで
for(j=0; j<10; j++) {
A:
for(i=0; i<10; i++) {
B:
}
C:
}
2次元配列などにアクセスする場合、度々この2重ループが現れるので、
これを抽象化すれば、コードがよりシンプルになるだろうと思ったのですが上手くいきませんでした。
シンプルどころか、グチャグチャのドロドロでカオスなコードになってしまいました。
(内容は>>29とほぼ同じなのに、どう考えても逆に読み辛くなってる気がする。)
よく上級者が「イテレーターを用いるとコードがシンプルになる」と言ってますが、いまいち実感が沸かないです。
Cでシンプルにイテレーターを実現する例を教えてほしいです。
0068デフォルトの名無しさん
2011/06/29(水) 01:08:31.09なにこれキモイ
0069デフォルトの名無しさん
2011/06/29(水) 03:28:31.00コンパイラによっては最適化されることもあり、なんともいえません。
ただ、そういうコンパイラでも最適化を行わないようにコンパイル時に指定することができるのがほとんどですが、
そういうときには、if 文を 10 個かけば、10個とも吟味されるコードを生成すると思います。
0070デフォルトの名無しさん
2011/06/29(水) 03:45:21.39>抽象化すれば、コードがよりシンプルになる
まず「抽象化する」という言葉の内容がなになのか、明確に意図する必要があります。
関数やマクロを使うことなのでしょうか?
>「イテレーターを用いるとコードがシンプルになる」と言ってますが、いまいち実感が沸かないです。
そもそも、すでに「配列にアクセスする」という処理主体で書かれている内容にイテレータを導入しても仕方がないと思います。
あるいは、いわゆる foreach() 文を導入したいのであれば、それについて、shiro さんがなんかしゃべってはったのを記憶しているのですが、ググってもでてきませんね。
>{volatile int _;srand(_);}
残念ながら volatile をつけても意味は変わらず、この文では srand() を意図したとおりには使えていません。
0071デフォルトの名無しさん
2011/06/29(水) 08:17:44.53ifの内容見るかぎり1つ目のif通っても2つ目のifで蹴られるだけだろ。
吟味って値チェックするか?ってことだろ
mov eax,[i]
cmp eax,01h
jnz end1 ;i==1でなきゃ終了
cmp eax,02h
jnz end1 ;i==2でなきゃ終了
...
{}内処理
end1:
...
こんな感じのコード書くんじゃね?
最適化で削除される可能性もあるが。
0072デフォルトの名無しさん
2011/06/29(水) 18:53:11.46スクリプトでかくなよ・・・
全然わからん。
0073デフォルトの名無しさん
2011/06/29(水) 19:05:02.420074デフォルトの名無しさん
2011/06/29(水) 19:05:54.79自然対数loge X をlog関数を使わずに近似等で計算するコードってありますか。
組み込みではlog関数使えないと言われたので別の計算法探してます。
0075デフォルトの名無しさん
2011/06/29(水) 19:11:25.24>組み込みではlog関数使えないと言われたので
誰に言われたのかな?
logが使えないということは浮動小数点計算が出来ないってことになるような?
0076デフォルトの名無しさん
2011/06/29(水) 19:12:11.64口ぶりからしてコードには自力で落としこめるだろうし
007774
2011/06/29(水) 19:17:59.24Xは、定数ではありません。
logだめ言われたのは上司です…
0078デフォルトの名無しさん
2011/06/29(水) 19:20:15.520079デフォルトの名無しさん
2011/06/29(水) 19:34:01.65超いい加減な数値でよければ
double damelog(double x)
{
double tmp;
int i;
for(i=0,tmp=x;tmp>=2.0;i++,tmp*=0.5);
if(i==0) for(i=0;tmp<=0.5;i--,tmp*=2.0);
return i*0.3010;
}
0080デフォルトの名無しさん
2011/06/29(水) 19:45:31.11>>79 より格段に精度アップしたよw
double damelog(double x)
{
static double table[]={0.0, 0.0000, 0.3010, 0.4771, 0.6021, 0.6990, 0.7782, 0.8451, 0.9031, 0.9542};
int i;
for(i=0;x>=10.0;i++,x*=0.1);
if(i==0) for(i=0;x<1.0;i--,x*=10.0);
return table[(int)x]+i;
}
0081デフォルトの名無しさん
2011/06/29(水) 19:57:04.25ミスってるな
0082デフォルトの名無しさん
2011/06/29(水) 20:09:47.670083デフォルトの名無しさん
2011/06/29(水) 20:13:26.560084デフォルトの名無しさん
2011/06/29(水) 20:42:17.09web検索
0085デフォルトの名無しさん
2011/06/29(水) 20:42:30.00wwwww
0086デフォルトの名無しさん
2011/06/29(水) 21:30:52.480087デフォルトの名無しさん
2011/06/29(水) 21:39:34.14マクローリン展開を使ったもの
劇的に精度が上がったよ
マクローリン展開の収束範囲になるまで 2 で割り続けてる(掛け続けてる)
double damelog(double x)
{
double ret, x_1, x_1_n;
int i;
for(i=0;x>1.0;i++,x*=0.5);
if(i==0) for(i=0;x<0.5;i--,x*=2.0);
ret=i*0.69314718055994530941723212145818;
x_1=x-1;
x_1_n=-1.0;
for(i=1;i<15;i++)
{
x_1_n*=-x_1;
ret+=x_1_n/i;
}
return ret;
}
0088デフォルトの名無しさん
2011/06/29(水) 22:30:06.07例えばAPPLEみたいなのを12という整数に直すってことですか?
0089デフォルトの名無しさん
2011/06/30(木) 00:28:42.56書いてレスしてる人なんなの?
>>71さんとか。
エディタでつくるほうのC言語で答えてくれ・・・
0090デフォルトの名無しさん
2011/06/30(木) 00:32:48.49>>86
Cは知ってた方が良いけど、後回しでも良いよ
Javaはサーバサイドやりたいなら必須に近い感じ
作りたい物を一番簡単に作れる言語から手を付けるのがお勧め
0091デフォルトの名無しさん
2011/06/30(木) 00:33:46.72あれはアセンブラだよ
ところで、「コマンドラインで書くスクリプト用のC言語」ってなんなの?
0092デフォルトの名無しさん
2011/06/30(木) 00:35:57.14まずは、C を覚えて宿題スレで沢山コードをかいていると、自然に C++ に移行したくなると思います。それからでも遅くはないでしょう。
0093デフォルトの名無しさん
2011/06/30(木) 00:37:56.59そのとおり。
広意には、任意のオブジェクトに対して、それに対応する数値を計算する関数をハッシュ関数といいます。
0094デフォルトの名無しさん
2011/06/30(木) 00:39:26.95i386 のアセンブラでしょう。
C をやる人間は必然的にマシン語レベルまで意識するようになるというものです。
0095デフォルトの名無しさん
2011/06/30(木) 00:41:15.61何かと捗るからね
0096デフォルトの名無しさん
2011/06/30(木) 00:42:29.950097デフォルトの名無しさん
2011/06/30(木) 00:44:02.88だから勘違いですよ・・・
0098デフォルトの名無しさん
2011/06/30(木) 00:46:53.06Cだけで良いよ
Cを覚えたら、何か一つLLを習得すると良いと思います
RubyとかPythonとか、日常のスクリプティングに使える言語を知っておくと便利です
あとはJavaScriptかな
C++はどうしても必要になった時以外は無視してオケ
0099デフォルトの名無しさん
2011/06/30(木) 00:51:19.08素直にC言語から始めるのを勧める。
0100デフォルトの名無しさん
2011/06/30(木) 01:03:00.25次質問するときは礼儀とかマナーとか覚えてから質問してね。
0101デフォルトの名無しさん
2011/06/30(木) 01:38:37.10自分で問題意識を持って技術を磨けるのが脱初心者の状態だと思いますぜ
0102デフォルトの名無しさん
2011/06/30(木) 13:20:13.37C言語のビット演算は二進数として正常に動作する?しない?
0103デフォルトの名無しさん
2011/06/30(木) 13:24:51.59規格に準拠してるなら正常に動作する
でも規格無視な環境(コンパイラ)もあるので確実ではない
0104デフォルトの名無しさん
2011/06/30(木) 13:26:14.17void tes(void *d){
int *b;
b=(void *)d;
b++;
}
int main(void){
int k[2]={100,200};
int *a=k;
printf("%8d\n",*a);
tes(&a);
printf("%8d\n",*a);
return 0;
}
int型のポインタaのアドレスを受け取り其のポインタが指しているアドレスを一つ進める関数を作ろうとしたが
うまい事いかない。
実行結果が
100
100
に成ってしまう
どこに問題が有るのか教えてください
0105デフォルトの名無しさん
2011/06/30(木) 13:30:35.35#include <stdio.h>
void tes(int **d){
*d+=1;
}
int main(void){
int k[2]={100,200};
int *a=k;
printf("%8d\n",*a);
tes(&a);
printf("%8d\n",*a);
return 0;
}
0106デフォルトの名無しさん
2011/06/30(木) 13:39:28.52ありがとう
0107デフォルトの名無しさん
2011/06/30(木) 14:03:39.570108デフォルトの名無しさん
2011/06/30(木) 15:46:02.35これをハッシュツカッテ高速化しようとしたら
http://codepad.org/N9q37bou
ぎゃくに遅くなったしcodepadコンピューター知能からkillとか言われた怖い
0109デフォルトの名無しさん
2011/06/30(木) 17:11:44.02http://codepad.org/oBZbNCEg
0110デフォルトの名無しさん
2011/06/30(木) 17:33:29.42プログラムだとどっちが遅いですか?
0111デフォルトの名無しさん
2011/06/30(木) 17:36:40.860112デフォルトの名無しさん
2011/06/30(木) 17:51:10.79i=1がmallocより遅い可能性は実例を見つけてから論ずべきことだ
0113デフォルトの名無しさん
2011/06/30(木) 18:14:24.64実行時間1万分の1になったww
ハッシュ値が一緒になる場合はでもどうしたらいいんだろ・・・
0114デフォルトの名無しさん
2011/06/30(木) 18:15:19.250115デフォルトの名無しさん
2011/06/30(木) 18:16:39.370116デフォルトの名無しさん
2011/06/30(木) 21:33:47.380117デフォルトの名無しさん
2011/06/30(木) 22:24:53.33なんだそりゃ
0118デフォルトの名無しさん
2011/06/30(木) 23:05:16.83そのときに皆様たくさんの方がコードを書いてくださったのを思い出しました
0119デフォルトの名無しさん
2011/07/01(金) 00:49:46.39出さねばならんのに全部同じ値がでます・・・
何故でしょうか?
0120デフォルトの名無しさん
2011/07/01(金) 00:51:37.03意味わかんねーよ
エスパーに挑戦してみるとsrandもいちいち呼んでるとかかね
0121デフォルトの名無しさん
2011/07/01(金) 00:53:41.350122デフォルトの名無しさん
2011/07/01(金) 00:54:52.29俺がアホだったなすまん
どのみち原因分からんが
0123デフォルトの名無しさん
2011/07/01(金) 00:55:35.52この範囲内じゃないともっぺんrand()で探すよっていう条件を付け加えると
100個とも全部同じ値になります・・・
単にforループ内でrand()だけだと100個とも違う値なんですが・・・
0124デフォルトの名無しさん
2011/07/01(金) 00:55:50.01→srandを呼びましょう。その引数は実行のたびに変わる値、例えば現在時刻などにしましょう。
0125デフォルトの名無しさん
2011/07/01(金) 00:57:29.441度srandしたら基本的にそれ以降はsrandしなくてよい
0126デフォルトの名無しさん
2011/07/01(金) 00:58:19.24for(100)
{
rand()
}
全部違う値
for(100)
{
while(条件)
{rand()}
}
全部同じ値
0127デフォルトの名無しさん
2011/07/01(金) 00:59:06.22ソースコード出してみろよ馬鹿
0128デフォルトの名無しさん
2011/07/01(金) 00:59:22.98実際にだめだったコードを問題が発生する最小までけずって出してこいハゲ
そんなんで分かるかボケ
0129デフォルトの名無しさん
2011/07/01(金) 01:00:21.28srandではなくてrandです。
randしか使いません。
0130デフォルトの名無しさん
2011/07/01(金) 01:02:46.96そんな糞情報はいらねーんだよ死ね
0131デフォルトの名無しさん
2011/07/01(金) 01:08:59.010132デフォルトの名無しさん
2011/07/01(金) 01:12:01.690133デフォルトの名無しさん
2011/07/01(金) 01:13:57.99もう一ついいですか・・?
forループの中ではint i;と宣言してもエラーでないのですが
whileループの中ではint i;と宣言するとエラーがでるのですが
何故でしょう?他に問題があるのでしょうか?
0134デフォルトの名無しさん
2011/07/01(金) 01:15:14.79お前の頭かな
0135デフォルトの名無しさん
2011/07/01(金) 01:17:05.28ガチで真面目にお願いします。頭悪くても結構ですから・・
0136デフォルトの名無しさん
2011/07/01(金) 01:18:37.05真面目にお前の頭だよ
少し前の指摘も見えんのか
可能性としてはint i;がスコープの先頭に無いとかじゃね?
0137デフォルトの名無しさん
2011/07/01(金) 01:22:33.56動きました。
ありがとうございました。
0138 ◆tWL/wYPcVw
2011/07/01(金) 01:23:12.70偽者やめてください・・・
0139デフォルトの名無しさん
2011/07/01(金) 01:34:37.060140デフォルトの名無しさん
2011/07/01(金) 01:36:07.080141デフォルトの名無しさん
2011/07/01(金) 01:37:35.25そのままでも十分アレなのに
0142デフォルトの名無しさん
2011/07/01(金) 01:38:27.730143デフォルトの名無しさん
2011/07/01(金) 01:40:11.84バカだから終わらなくて頭も働かなくて効率悪くなって悪循環してるんだろ
俺・・・早く寝ろ
0144デフォルトの名無しさん
2011/07/01(金) 01:46:01.84rand() なのに同じ値が云々は、やっぱりソースを晒さないことには、なんとも。
あと、while () の中には変数宣言はできません。
0145 ◆tWL/wYPcVw
2011/07/01(金) 01:48:57.42それだけは傷つくから言わないでください・・
>>144
そうなんですか?
whileの中でも変数宣言してもちゃんと動くときもあります・・
int j;
j=0
while(j<100)
{
int i;
i=1;
j++;
}
これだめなんですか?
0146デフォルトの名無しさん
2011/07/01(金) 01:50:32.06馬鹿だと見越してwhile()の括弧の中にねじ込んでる可能性に対してのレスかもしれないが
whileループ中では普通宣言できる
C89であってもね
スコープだから
0147デフォルトの名無しさん
2011/07/01(金) 01:51:18.31行数が多すぎるって言うならhttp://codepad.orgとかに貼ってでも出せよ
説明が下手だと解決できんぞ
0148 ◆tWL/wYPcVw
2011/07/01(金) 01:52:07.57それは違います。
while(){}の{}の部分です。
while(){}の()のことを言っているのではありません。
0149デフォルトの名無しさん
2011/07/01(金) 01:54:15.86変数宣言がエラーって言うソースを貼れば間違いを指摘できるよ
0150 ◆tWL/wYPcVw
2011/07/01(金) 01:54:45.95そのプログラムシュミレーションサイトってテキストファイル読み込みもできるんですか?
0151デフォルトの名無しさん
2011/07/01(金) 01:56:41.94できねーよ、でもそんなことはどうでもいいだろ
お前のとこで動かはなかった奴をそのままコピペしろよ
0152デフォルトの名無しさん
2011/07/01(金) 02:01:55.29>>147のサイトのソースコードを貼る
■どうでもいいから雑談をしていたい場合
ソースコードを貼るなんてとんでもない!
0153デフォルトの名無しさん
2011/07/01(金) 02:02:07.460154デフォルトの名無しさん
2011/07/01(金) 02:55:09.090155デフォルトの名無しさん
2011/07/01(金) 02:58:27.560156デフォルトの名無しさん
2011/07/01(金) 03:50:25.15ひとつの変数(int s)に代入しまくってるときに
みっつめのスレッドCが s を読みだして
AやBが代入してもいない変数を読み出すことってある?
仕様的に余裕でありえることは理解してるんだけど
どんなCPUだったら起こり得るのかってのが知りたい
0157デフォルトの名無しさん
2011/07/01(金) 03:51:54.40どっちかというとコンパイラ依存
0158デフォルトの名無しさん
2011/07/01(金) 08:05:32.64ローカル変数なら当然そうなるんじゃねww
0159デフォルトの名無しさん
2011/07/01(金) 08:11:05.53代入しても居ない変数ってなんだよ
代入しても居ない値って言いたかったのか?
0160デフォルトの名無しさん
2011/07/01(金) 09:49:23.07ファイル
height
170.5
165.8
とあり、2行目と3行目の和をとり平均をとりたいです。
0161デフォルトの名無しさん
2011/07/01(金) 09:55:59.850162デフォルトの名無しさん
2011/07/01(金) 09:57:20.240163デフォルトの名無しさん
2011/07/01(金) 10:00:13.830164デフォルトの名無しさん
2011/07/01(金) 10:01:40.940165デフォルトの名無しさん
2011/07/01(金) 10:01:56.130166デフォルトの名無しさん
2011/07/01(金) 10:07:37.30wine
0167デフォルトの名無しさん
2011/07/01(金) 10:20:00.96できたらマルチプラットフォームがいいですが、windows用にしてもいいです
やはりMFCとかになるんでしょうか?
0168デフォルトの名無しさん
2011/07/01(金) 10:21:15.570169デフォルトの名無しさん
2011/07/01(金) 10:27:27.84今はよくわからないので、我流で
関数を呼ぶだけのmainを書いて
結果の判定をperlでおこなってるんですが
そういう感じでいいんでしょうか。
0170デフォルトの名無しさん
2011/07/01(金) 10:29:08.71判定までC言語内でやればいいのに
0171デフォルトの名無しさん
2011/07/01(金) 10:38:28.64例えば
void test_func1(){
int arg = 入力;
int ret;
0172デフォルトの名無しさん
2011/07/01(金) 10:41:20.30void test_func1(){
int arg = 入力;
int ret;
ret = func(arg); /* テスト対象関数 */
assert(ret == 期待値);
}
みたいなテスト関数を作る
printfの出力が結果になるような関数であれば、それをperlで確認というのもまあありだろう
・fgets()で一行目を読み捨てる。但し、バッファが必要。
・fgetc()で一行目を読み捨てるループを作る。
・fscanf()で一行目を読み捨てる。
fscanf(fp, "%*[^\n]%*c");
0174デフォルトの名無しさん
2011/07/01(金) 11:00:35.78まともに動かなかった。どこに問題があるのか分りません
http://codepad.org/HbcbK5nA
0175デフォルトの名無しさん
2011/07/01(金) 11:04:14.56型の理解ができていないところが問題
0176デフォルトの名無しさん
2011/07/01(金) 11:07:34.46yes
OS によって違うし、同じ OS でも CPU 毎に違う
それと、「メモリの上位」というより「上位アドレス」と言う方が多いと思う
0177デフォルトの名無しさん
2011/07/01(金) 11:08:41.85たとえばあるフォーマットにのっとったファイル出力をするプログラム
とかをテストするとき、Cで検査コード書くのが面倒だったので
perlで検査してます。
>>172
やはりそういうコードをルート数分書かないとだめなんですね
ありがとうございました。
0178デフォルトの名無しさん
2011/07/01(金) 11:09:52.87そう言いたかった。
0179デフォルトの名無しさん
2011/07/01(金) 11:10:11.91C++じゃん
0180デフォルトの名無しさん
2011/07/01(金) 11:22:15.44なぜデバッガを使わないんだ?複数の入力を検査したいなら、なおさら
0181デフォルトの名無しさん
2011/07/01(金) 11:28:52.690182デフォルトの名無しさん
2011/07/01(金) 11:32:39.85デバッガでテストが書くんですか?
やり方が想像できないのでちょっと具体的な例をお願いします。
0183デフォルトの名無しさん
2011/07/01(金) 11:41:46.10どうやってテストするんだろ
0184デフォルトの名無しさん
2011/07/01(金) 11:44:02.910185デフォルトの名無しさん
2011/07/01(金) 11:52:14.80無限ループ内の機能部分は別関数にしておいて普通にテスト(無限ループはほぼガワだけにする)
デバッガをスクリプトで操作して、ブレークして期待値になってるか確認
長時間稼動させて出力部分(コンソールとかファイルとか?)に異常が出ていないか確認
想像で書いてみたけどこんなんじゃないの?
実際はどうするものなんでしょうね
0186デフォルトの名無しさん
2011/07/01(金) 11:55:21.35>無限ループはほぼガワだけにする
やっぱこれやって無限部分は手確認かねぇ
0187デフォルトの名無しさん
2011/07/01(金) 11:58:02.950189デフォルトの名無しさん
2011/07/01(金) 12:00:54.230190デフォルトの名無しさん
2011/07/01(金) 12:17:19.41改行文字を含まない文字列を読み飛ばし、一文字(すなわち改行文字)を読み飛ばす。
0191デフォルトの名無しさん
2011/07/01(金) 12:25:29.42例えば、Aが65536、Bが1を代入していてCが65537を読む出すのは、バスの狭いCPUなら起きるんじゃね。
0192デフォルトの名無しさん
2011/07/01(金) 12:42:27.01基本的にはブラックボックステストをしたいです
ブラックボックステストとして項目を作成して
中身はほぼルートカバーするのが理想だけど
それはまああとのお楽しみとしてとっときます。
0193デフォルトの名無しさん
2011/07/01(金) 12:45:29.15なるほど
0194デフォルトの名無しさん
2011/07/01(金) 13:34:47.960195デフォルトの名無しさん
2011/07/01(金) 13:51:10.26おそらくその希望の動作は別の方法で実現するものだろう
0196デフォルトの名無しさん
2011/07/01(金) 13:53:31.871つ目のmain関数が終了したら
次のmain関数
0197デフォルトの名無しさん
2011/07/01(金) 13:54:23.680198デフォルトの名無しさん
2011/07/01(金) 13:55:17.49main1();
main2();
main3();
}
これじゃだめなの?
0199デフォルトの名無しさん
2011/07/01(金) 13:56:29.67だめ
0200デフォルトの名無しさん
2011/07/01(金) 13:56:52.33なら好きなだけ書けるよ!
0201デフォルトの名無しさん
2011/07/01(金) 13:58:37.510202デフォルトの名無しさん
2011/07/01(金) 14:00:56.700203デフォルトの名無しさん
2011/07/01(金) 14:01:08.470204デフォルトの名無しさん
2011/07/01(金) 14:03:40.02main関数1つしかないじゃん
0205デフォルトの名無しさん
2011/07/01(金) 14:10:58.660206デフォルトの名無しさん
2011/07/01(金) 14:14:29.15どうダメなのか理由を述べよ
>>196の要件は十分満たしているはず
「そんなことはどうでもいいよmainが3つ書きたい」ならば>>203
0207デフォルトの名無しさん
2011/07/01(金) 14:15:50.420208デフォルトの名無しさん
2011/07/01(金) 14:16:56.87できました。次の3つのファイルを作ってコンパイルすればおk
/* main1.c */
static int __attribute__ ((constructor)) main(void);
int main(){ printf("main1\n"); return 0; }
/* main2.c */
int main(){ printf("main2\n"); return 0 }
/* main3.c */
static int __attribute__ ((destructor)) main(void);
int main(){ printf("main3\n"); return 0 }
実行すると
$ ./a.out
main1
main2
main3
0209デフォルトの名無しさん
2011/07/01(金) 14:18:17.99好きなだけ main() をつくってくだしあ
0210デフォルトの名無しさん
2011/07/01(金) 14:22:17.430211デフォルトの名無しさん
2011/07/01(金) 14:22:35.52自分に出来ない要求をする者をキチガイ呼ばわりするのは
あまり良くないと思うんです。
0212デフォルトの名無しさん
2011/07/01(金) 14:26:38.45>>206
0213デフォルトの名無しさん
2011/07/01(金) 14:27:09.20main1.c と main3.c の2行目は
int main(){ printf("main1\n"); return 0; }
じゃなくて
static int main(){ printf("main1\n"); return 0; }
の間違いだ
0214デフォルトの名無しさん
2011/07/01(金) 14:28:25.28警告出るけど
#include <stdio.h>
int main(void)
{
{
int main(void){puts("main1");return 0;}
main();
}
{
int main(void){puts("main2");return 0;}
main();
}
{
int main(void){puts("main3");return 0;}
main();
}
return 0;
}
0215デフォルトの名無しさん
2011/07/01(金) 14:29:03.30>>194によれば main関数を3つ書きたいと書いてある
main1関数はmain関数ではないから仕様は満たされてないよね
0216デフォルトの名無しさん
2011/07/01(金) 14:30:38.94もうあきらめろよ
0217デフォルトの名無しさん
2011/07/01(金) 14:31:39.81超ずりぃwww でも条件満たしてるwww
いやまて・・・よく見るとmain関数を4つ書いてるぞ・・・ゴゴゴゴゴ
0218デフォルトの名無しさん
2011/07/01(金) 14:32:07.720219デフォルトの名無しさん
2011/07/01(金) 14:34:23.89まあ確かにこういうアイデアの出し合いは面白いから好きだけどね
0220デフォルトの名無しさん
2011/07/01(金) 14:35:04.890221デフォルトの名無しさん
2011/07/01(金) 14:36:02.45グローバル変数とローカル変数の名前の衝突時のふるまいと同じ考え方か。
(アプリケーションエントリーポイント) ↓
グローバルスコープの main() 呼び出し ↓
ローカルスコープの main() 呼び出し
ローカルスコープの main() 呼び出し
ローカルスコープの main() 呼び出し
>>208 の機構はさっぱりわからんが、
__attribute__ ((constructor)) ってのが
アプリケーションエントリーポイントから呼ばれる関数の追加?
0222デフォルトの名無しさん
2011/07/01(金) 14:38:17.29十分だと思うのはお前のレベルが低いからだ
0223デフォルトの名無しさん
2011/07/01(金) 14:39:46.41本来はライブラリの初期化ルーチン用の仕組みです
ライブラリをリンクしただけで、起動時に自動的に
管理スレッドを起こしてみたり変数初期化したりといった
ことを実現するためのgcc拡張よ
0224デフォルトの名無しさん
2011/07/01(金) 14:43:15.02コンパイルできても実行すると落ちるな(gcc version 4.3.4 20090804 (release) 1 (GCC))
ちゃんと動くものなのか?
0225デフォルトの名無しさん
2011/07/01(金) 14:44:41.45リアルも怖いのに俺どこにいればいいんでしょうか
0226221
2011/07/01(金) 14:45:23.30ありがとー
windows でいう DllMain() みたいなやつなのね。
__attribute__ ((constructor)) が ロード時用
__attribute__ ((destructor)) が アンロード時用 と。 (プロセスなのかスレッドなのか OSの事情次第だろうけど…
0227デフォルトの名無しさん
2011/07/01(金) 14:54:17.30GLUT
0228デフォルトの名無しさん
2011/07/01(金) 14:55:23.23念のため3.3.5と4.3.2と4.4.5で確認したけど、動いた
0229デフォルトの名無しさん
2011/07/01(金) 15:00:55.550230デフォルトの名無しさん
2011/07/01(金) 16:38:37.34scanfを使って入力された二つの数を変数に格納し、カウンタ用の変数を用意して
for文を使って繰り返しaをb回掛け合わせるところまで分かったんですが
肝心のfor文の中の処理が全く分かりません、結果を格納する変数cを用意して
aを何度か掛け合わせればできると思ったんですが、どうも上手くいきません(bに3を入れたのに5乗の結果が帰ってくる等)
特別な関数を用いずに累乗を実現する繰り返し構文の解説をお願いしたいです
for(i=1; i<=b; i++)
{
/*ここの処理が分かりません*/
}
0231デフォルトの名無しさん
2011/07/01(金) 16:42:56.76c = 1;
for(i=1; i<=b; i++)
{
c *= a;
}
0232デフォルトの名無しさん
2011/07/01(金) 16:43:55.44こうやったんじゃないか?
(int ? double) c = 1;
for (i=1; i<=b; i++) { c *= a; }
0233230
2011/07/01(金) 16:56:06.11即レスありがとうございます。
結果の格納用の変数cの初期化を忘れていたようです
{a *= a;}もやってましたw
下らない質問ですいませんでした、精進します
0234デフォルトの名無しさん
2011/07/01(金) 17:17:44.06こんな方法もあるよ
http://codepad.org/KTVB38pE
0235デフォルトの名無しさん
2011/07/01(金) 18:27:27.32くわしく
0236デフォルトの名無しさん
2011/07/01(金) 20:51:09.890237デフォルトの名無しさん
2011/07/01(金) 21:53:14.95下のイメージのようにargvで取得した可変引数のうち、
第4引数以降を別の配列(subopt)に格納したいのですが、
必要数分をmalloc出来ません。
間違っている点はどこですか?
+++イメージ
argv → ./cmd a b c d e
subopt → c d e
argv → ./cmd 1 2 3
subopt → 3
+++ヘッダ
extern char *subopt[];
+++ソース
subopt = (char *)malloc(sizeof(char) * (argc-3));
0238デフォルトの名無しさん
2011/07/01(金) 22:02:07.06もちろん、その先も個別に malloc する必要がある
0239デフォルトの名無しさん
2011/07/01(金) 23:55:59.60+++ヘッダ
extern char *subopt[];
これだと、どっかでchar *subopt[N];みたいな定義を期待しているからchar **subopt;にすべき
(ここに、Nは正数)
0240デフォルトの名無しさん
2011/07/02(土) 00:32:47.550241デフォルトの名無しさん
2011/07/02(土) 00:52:31.68実用的じゃない。
ちょっと凝ったことやろうとするとすぐ破綻する。
sscanf は便利なのにな。
0242デフォルトの名無しさん
2011/07/02(土) 01:36:47.38すると必ずハマるわかりにくい仕様
・ストリームを消費する単位が、行でも文字でも固定長でもなくて
しかもエラーが発生したときに消費されないという独特の仕様で、
使いこなせるようになってもほかの入力関数に応用がきかない。
・入門用のテキストを卒業したらまず使わないから
「使いこなせるようになれ」とか、時間の無駄感がすごい
・scanf("%10s", str) のようにバッファサイズを直で書かなきゃならない
ださい仕様
・数値入力ではオーバーフローを検知できない
・最初scanf()で作っていて、エラーチェックを厳密にする必要がでてきて
途中でfgets()などの関数に切り替えると、ストリームの消費の仕様の違いから
動きの互換性を保つのが難しい。
最初からfgets()で入力を受け付けてatoi()などで処理してるのをstrtol()などに
変更してエラーチェックを厳密にするとしたらそういう問題はない。
0243デフォルトの名無しさん
2011/07/02(土) 01:41:36.22> 使いこなせるようになってもほかの入力関数に応用がきかない。
ダウト
事故状況が保存されていてば修復処理はどうにでも書きようがある
0244デフォルトの名無しさん
2011/07/02(土) 01:41:47.45>>242
>ストリームの消費の仕様の違いから
のせいだと思いますが、fscanf() と fgets() とを混在できないのがつらいところ。
fgets() -> sscanf() でいいや、と思ってしまいます。
0245デフォルトの名無しさん
2011/07/02(土) 01:45:14.99そんなに面倒なら、もっと腕のいい PG やとえばいい
「互換性が保てる」という条件は喜ぶ奴や喜ぶよ
どんな連中が PG 廃業しはじめてて、そこにどんなベンチャーがあるか知ってるから
0246デフォルトの名無しさん
2011/07/02(土) 01:47:11.07scanf()のバッドノウハウ的なテクニックを覚えても、ほかの入力関数で
使えないだろって話。
0247デフォルトの名無しさん
2011/07/02(土) 01:48:35.37地の言葉を使いたまえ。君にあわせよう。
0248デフォルトの名無しさん
2011/07/02(土) 02:00:31.19そーね、そんなヘボやけんそんな仕事しよーとねw
0249デフォルトの名無しさん
2011/07/02(土) 02:04:44.67scanf()の使いこなしにプライドとかもってるから、馬鹿にされて
暴れるんだろうな。
0250デフォルトの名無しさん
2011/07/02(土) 02:12:03.18この程度が「信者」に見えるほどの下郎がいるってことか
0251デフォルトの名無しさん
2011/07/02(土) 02:13:55.45それならわかる。
sscanfは無いともう生活に困るレベルで使ってるわ。
0252デフォルトの名無しさん
2011/07/02(土) 02:15:14.450253デフォルトの名無しさん
2011/07/02(土) 04:11:09.140254デフォルトの名無しさん
2011/07/02(土) 05:04:44.23どうだろ。そのへんはあまり意識しないな。
ていうか、「入力は寛容に、出力は厳格に」の原則にのっとって
人間だろうと機械だろうとどちらが入力しても問題ないように
作るのが一番だと思うんだが。
0255デフォルトの名無しさん
2011/07/02(土) 06:16:32.97fgtes()とscanf()をまぜて使えるPGが優秀だって時点でダメ。
0256デフォルトの名無しさん
2011/07/02(土) 10:12:32.590257デフォルトの名無しさん
2011/07/02(土) 10:36:04.62単純でシンプルなの。
0258デフォルトの名無しさん
2011/07/02(土) 11:00:17.97readは?
0259デフォルトの名無しさん
2011/07/02(土) 13:33:55.22つputs
0260デフォルトの名無しさん
2011/07/02(土) 15:54:07.160261デフォルトの名無しさん
2011/07/02(土) 15:55:21.970262デフォルトの名無しさん
2011/07/02(土) 16:23:55.09なるほどありがとうw
0263デフォルトの名無しさん
2011/07/02(土) 18:17:10.36この意味教えて
0264デフォルトの名無しさん
2011/07/02(土) 18:26:37.960265デフォルトの名無しさん
2011/07/02(土) 18:26:46.68a かつ b
0266デフォルトの名無しさん
2011/07/02(土) 18:50:32.580267デフォルトの名無しさん
2011/07/02(土) 19:22:15.44moji[100][100]
moji[0]="MORITA"
moji[1]="TERADA"
moji[2]="ISHII"
・
・
・
これができません・・・
何故でしょう?
0268デフォルトの名無しさん
2011/07/02(土) 19:24:38.090269デフォルトの名無しさん
2011/07/02(土) 19:24:56.02char *moji[100];
にするといいよ
0270デフォルトの名無しさん
2011/07/02(土) 19:26:26.88char moji[100];
moji="ABCDEF";
0271デフォルトの名無しさん
2011/07/02(土) 19:27:08.220272デフォルトの名無しさん
2011/07/02(土) 19:29:14.96ってのは"MORITA"という文字列が格納されている先頭アドレスをmoji[0]に突っ込もうとしてるけど
moji[0]はchar型だから型が合わないでコンパイルエラーということ
ポインタと配列の違いについて学習されると良かろう
0273デフォルトの名無しさん
2011/07/02(土) 19:29:45.070274デフォルトの名無しさん
2011/07/02(土) 19:30:42.99お前がな
0275デフォルトの名無しさん
2011/07/02(土) 19:35:15.86moji[][1]=
moji[][2]=
0276デフォルトの名無しさん
2011/07/02(土) 19:37:29.12ポインタと配列の違いについて学ぶ必要があるのはおまえだな
0277デフォルトの名無しさん
2011/07/02(土) 19:37:48.82moji[0]の0のは行が0番目って意味で
100文字まで入れれるってことじゃないのですか?
0 1 2 3 4 5
0 M O R I T A
1
2
3
4
じゃないんですか?
0278デフォルトの名無しさん
2011/07/02(土) 19:38:00.880279デフォルトの名無しさん
2011/07/02(土) 19:40:25.590280デフォルトの名無しさん
2011/07/02(土) 19:40:44.83うむw
char moji[100][100];
でmojiの領域は確保されてて
moji[0] = "MORITA"
ではmoji[0]のアドレスを書き換えることができないからコンパイルエラーになるのの間違い
あうw
0281デフォルトの名無しさん
2011/07/02(土) 19:42:54.87char moji[100][100]で
101*101=10201の領域の文字列を入れれるんですよね?
この配列の5個の領域にMORITAって入れたいときはどうすればいいんですか?
多次元配列に限ります。char*とかstrcpyは関係ないので無しということで。
0282デフォルトの名無しさん
2011/07/02(土) 19:43:07.321次元配列で動くものを書いてみませう
0283デフォルトの名無しさん
2011/07/02(土) 19:44:37.45何が言いたいのか、さっぱりわからん
0284デフォルトの名無しさん
2011/07/02(土) 19:45:36.00いきなりアウトすぎる
最初からやり直してこいこの馬鹿は
0285デフォルトの名無しさん
2011/07/02(土) 19:45:42.260286デフォルトの名無しさん
2011/07/02(土) 19:48:40.65何がアウトなんだよ。
101行、101列だとchar1バイトの要領が10201だろ?
0287デフォルトの名無しさん
2011/07/02(土) 19:49:47.72moji[99][99]までだろ?
0288デフォルトの名無しさん
2011/07/02(土) 19:50:25.99ポインターにしか入れたら駄目だよ。
0289デフォルトの名無しさん
2011/07/02(土) 19:51:54.52うん、だから設定時は数、実際に単位にわけると添え字は設定数-1とか
そういう細かいことはどうでもいいです・・
ただ単に
moji[0][1]=M
moji[0][2]=R
moji[0][3]=I
・
・
これがしたいだけ、ただそれだけ。
0290デフォルトの名無しさん
2011/07/02(土) 19:54:01.50で&(moji[0][0])が1000番地として
"MORITA"で"MORITA"が2000番地に確保されたとして
moji[0] = "MORIATA"
でmoji[0]が2000になったとしたら
moji[0][0]の番地が2000になるだろ?
0291デフォルトの名無しさん
2011/07/02(土) 19:56:38.19では文字は代入できないわけですか?
='文字'
だと代入できるんですが・・
0292デフォルトの名無しさん
2011/07/02(土) 19:56:45.500293デフォルトの名無しさん
2011/07/02(土) 20:02:38.83C言語は文字型がないのか。
文句言っても仕方ないな。
ちょっと別の方法考えますわ。
0294デフォルトの名無しさん
2011/07/02(土) 20:03:35.09例えば
int a[5], b[5];
a = b;
のようなことはできません
同様に
char c[5];
c = "ABC";
のようなこともできません
文字列文字列と言っていますが、Cでは文字の配列ですので
0295デフォルトの名無しさん
2011/07/02(土) 20:08:47.96どうでもよくない
致命的な間違いだ
いいか、どうでもよくないぞ、絶対に
実際に長さ 101 の文字列を入れて結果を確認すれば
ことの重大さがわかる
文字数とは別な話、行数を1つ余計に数えるのは何のためだと教わった?
師匠によっては破門を宣告されるほどのことだぞ
0296デフォルトの名無しさん
2011/07/02(土) 20:11:53.00なるほど・・・・
となると多次元配列で文字列使うときはstrcpyか。
0297デフォルトの名無しさん
2011/07/02(土) 20:31:18.26>この配列の5個の領域にMORITAって入れたいときはどうすればいいんですか?
初期化時点なら下記。
char moji[100][100] = {"MORITA", "MORITA","MORITA","MORITA","MORITA"};
式中ならstrcpyを使う。
>101*101=10201の領域
100*100じゃないの?
>C言語は文字型がないのか。
charもあるし文字型リテラルもあるけど?
0299デフォルトの名無しさん
2011/07/02(土) 20:38:22.390300デフォルトの名無しさん
2011/07/02(土) 20:39:09.070301デフォルトの名無しさん
2011/07/02(土) 20:45:27.97初期化の場合はできて式中ではそれができないってやっぱり不便でしょうか?
何故できないのでしょう?何都合が悪いのでしょうか?
0302デフォルトの名無しさん
2011/07/02(土) 20:45:57.81#typedef struct {
char name[100]:
} ST_NAME;
ST_NAME meibo[100] = {"MORITA", "MORITA","MORITA","MORITA","MORITA"};
printf("%s\n",(char *)meibo[0].name);
meibo[0]=meibo[1];
DOSのTurboC++で作ってたときはchar *のキャストもいらんかった。
エラーレベルの設定が低かったからかな?
0303デフォルトの名無しさん
2011/07/02(土) 20:49:04.12#typedef ×
typedef ○
0304デフォルトの名無しさん
2011/07/02(土) 20:53:38.180305デフォルトの名無しさん
2011/07/02(土) 20:54:19.65とっつぁんよ、いつからキャストがいるようになったんだい?
プリプロセッサ指令はともかくコロンとか、そんな時代なかったぞ
static の件も健忘か、コレステロールは怖いねえ
0306デフォルトの名無しさん
2011/07/02(土) 21:00:03.540307デフォルトの名無しさん
2011/07/02(土) 21:00:58.42おやすいご用で
main() {}
main() {}
main() {}
main() {}
コンパイルや実行がしたいとは言わなかったよな
0308デフォルトの名無しさん
2011/07/02(土) 21:03:39.05キモくて結構、おまえにモテようとは思ってないさ
メカをキモがるバカ女みてえのは願い下げだ
0309デフォルトの名無しさん
2011/07/02(土) 21:10:03.09なんつうかさ、このスレにいる必要ないよね、おまえ
0310デフォルトの名無しさん
2011/07/02(土) 21:14:56.08おお!!!!!
その手があったか。
構造体の中って要素が型名+変数名で型名になってややこしくて
(typedef{char KOIRU[100],int REAKOIRU}JIBAKOIRUだと
JIBAKOIRUは型名、int REAKOIRUは変数宣言じゃなくてintとREAKOIRUで
int REAKOIRU型の変数てか単にint型があるよってだけでREAKOIRUとか
変数名っぽく記述するのって約束なのかな?)
であんま考えた事なかったんだよな
0311デフォルトの名無しさん
2011/07/02(土) 21:20:11.77上のはGCC拡張でできた気がするが、まぁいいや
0312デフォルトの名無しさん
2011/07/02(土) 21:21:25.03に対してありがとうすぎる・・・・・
勉強に励むわ・・
0313デフォルトの名無しさん
2011/07/02(土) 21:23:49.22まじで目から鱗だ。
本当にありがとう>>302
0314デフォルトの名無しさん
2011/07/02(土) 21:28:10.93ST_NAME meibo[100] = {{"MORITA"}, {"MORITA"}, ...以下略
のように、外側は配列のブレース、内側は構造体のブレースが必要
まぁ、もっと言うと{{{"MORITA"}}, ...のようにchar []のブレースも必要だけど文字列での初期化時にはなくてもいい(冗長だから)
まぁ、構造体のブレースも要素が一つだから気を利かせてくれているんだろうけど
0315デフォルトの名無しさん
2011/07/02(土) 21:28:15.280316デフォルトの名無しさん
2011/07/02(土) 21:46:27.90何いってるんだ・・・・
0317デフォルトの名無しさん
2011/07/02(土) 22:12:17.900318デフォルトの名無しさん
2011/07/02(土) 22:13:58.28言ってしまえば終わり、確かにいわれてみればそうかも的なことを
あらゆる事に関して付け加えるのは止めろ。
0319デフォルトの名無しさん
2011/07/02(土) 22:21:40.57やめねーよハゲ
2chでなに命令してんだ
0320デフォルトの名無しさん
2011/07/02(土) 22:39:04.900321デフォルトの名無しさん
2011/07/02(土) 22:42:34.590323デフォルトの名無しさん
2011/07/02(土) 22:53:53.03サンプルソース作って動作確認。
#include<stdio.h>
typedef struct {
char name[100];
} ST_NAME;
ST_NAME meibo[100]={"TANAKA","SUZUKI","SATO","\0"};
int main(void)
{
int i=0;
while(meibo[i].name[0]) {
printf("%s\n",meibo[i].name);
i++;
}
return 0;
}
結果
ttp://ichigo-up.com/cgi/up/qqq/nm38263.jpg
0324デフォルトの名無しさん
2011/07/02(土) 22:56:41.76…絶望の壁…
0325デフォルトの名無しさん
2011/07/02(土) 22:57:10.99この条件って大丈夫なの?
大丈夫だとしてもなんか怖い
0326デフォルトの名無しさん
2011/07/02(土) 22:59:13.28こういうのはふつうは
for(int i=0;meibo[i].name[0]!=0;i++) {
と書く。
!=0は好みだけどオレは省かない
0327デフォルトの名無しさん
2011/07/02(土) 22:59:40.21慣れれば気にしなくなる
while(meibo[i].name[0] != '\0'){
と等価だけどこっちのほうがいい?
0328デフォルトの名無しさん
2011/07/02(土) 23:00:40.100329デフォルトの名無しさん
2011/07/02(土) 23:28:54.82最大公約数的なことを教えてくれればそれでいい。
>>321
>>323はまちがってねーだろうが
0330デフォルトの名無しさん
2011/07/02(土) 23:35:22.54分かってて書いててそれを伝えてるならいいがそうでないなら書くな
あ、過去レスが合ってるかとかは見てないから知らん
0331デフォルトの名無しさん
2011/07/02(土) 23:35:56.430332デフォルトの名無しさん
2011/07/03(日) 00:00:45.12処理系依存は原理的なことじゃねーだろ。
基礎概念的なことがまず先にあって処理系だろ。
概念→応用だろ。
0333デフォルトの名無しさん
2011/07/03(日) 00:05:56.42\0入れなくても要素数に大して初期化値数が足らない場合は0埋されるよ。
俺から質問。
"\0"ってした場合、 0が2つ入るってことだよね?
0334デフォルトの名無しさん
2011/07/03(日) 00:08:17.05じゃ、原理的なことって何だよ? C 以外の言語で話せばご満足か?
E7 6D 26 4A CC 6F 2A 13 00 80 32 14 …
0335デフォルトの名無しさん
2011/07/03(日) 00:11:02.73最大公約数つっただろ。
そういうな、分かってて、あえて自分の知恵をヒケラカスノやめろ。
参考書にのってる文法的なことがこのスレの場合原理的なことくらい
わかんだろ。
0336デフォルトの名無しさん
2011/07/03(日) 00:13:06.200337デフォルトの名無しさん
2011/07/03(日) 00:13:24.63違う処理系の人はうまく動かなくて混乱するだけだな
処理系依存だって書いてくれれば、意図(概念)を汲み取ろうとできるかも知れんけど
0338デフォルトの名無しさん
2011/07/03(日) 00:16:03.87結局何が言いたいの?
処理系依存のコード書くなってこと?
処理系依存だと言う指摘がいらないってこと?
前者なら賛成 後者なら反対
0339デフォルトの名無しさん
2011/07/03(日) 00:20:13.85じゃ、最大公約数って何だよ? 知恵がないから聞きに来てる身の者が根拠もなく
処理系依存はイヤよって拒否反応を勝手に作って耳ふさいでるだけだろ
お仕事は職場に依存しなきゃできないんだよ
いやならせいぜいコンビニのバイトでもしてたら? (コンビニのバイトさんに失礼だが)
あそこでも通貨は円だったり色々あるが
0340デフォルトの名無しさん
2011/07/03(日) 00:24:45.78i386系amd64系で動くコードにしときゃだいたい問題ないんだよ
0341デフォルトの名無しさん
2011/07/03(日) 00:26:02.920342デフォルトの名無しさん
2011/07/03(日) 00:29:38.570343デフォルトの名無しさん
2011/07/03(日) 00:29:42.79ふーん、それで TANAKA SUZUKI SATO が出せればいいのか
C は最大公約数でも原理でもねえな
0344デフォルトの名無しさん
2011/07/03(日) 00:32:03.670345デフォルトの名無しさん
2011/07/03(日) 01:07:34.560346デフォルトの名無しさん
2011/07/03(日) 01:10:01.37メモリが解放されません><
0347デフォルトの名無しさん
2011/07/03(日) 01:26:35.61型のサイズがわかったらいいんだろ?
0348デフォルトの名無しさん
2011/07/03(日) 01:30:39.680349デフォルトの名無しさん
2011/07/03(日) 01:31:51.45自分で考えろタコスケ
0350デフォルトの名無しさん
2011/07/03(日) 01:34:20.64人に丸投げするような下郎とは次元の違うところで
0351デフォルトの名無しさん
2011/07/03(日) 01:37:41.50よう低脳
0352デフォルトの名無しさん
2011/07/03(日) 02:15:35.77北村 謙 (著)
商品の説明
内容(「BOOK」データベースより)
弱音を吐くな!―やれば出来るのさ。あなたは死ぬまでに幾つの夢を手にする事が出来るだろうか?絶望という壁を乗り越えて。
0353デフォルトの名無しさん
2011/07/03(日) 03:33:21.49配列でn要素取得するのと
ポインタ配列をn要素取得した後malloc関数で
n要素領域確保して割り当てた場合では
後者のほうがポインタ変数n-1個分多くなる?
0354デフォルトの名無しさん
2011/07/03(日) 03:35:45.93管理領域があるから差はもっと大きくなるよ
0355デフォルトの名無しさん
2011/07/03(日) 03:38:03.09管理領域でぐぐってくる
0356デフォルトの名無しさん
2011/07/03(日) 16:04:35.76{
if(m < n)
{
/* do something */ ;
return Func(m , n - 1) ;
}
}
こういうコードはループに置き換えられるって本当?
0357デフォルトの名無しさん
2011/07/03(日) 16:10:15.65末尾再帰の最適化の事なら、出来るよ
0358デフォルトの名無しさん
2011/07/03(日) 20:59:12.19アセンブラ読めるようになれ
0359デフォルトの名無しさん
2011/07/03(日) 21:13:07.60returnするということは、もうその関数内でm,nは使われない
ということは変更してしまってもいい
ということで以下のように変換できるし、勝手にコンパイラが最適化してくれる
voidじゃなかったとしても大体同じ感じで書き換えられる
void Func(int m, int n)
{
while(m < n)
{
/* do something */ ;
n = n - 1;
}
}
0360デフォルトの名無しさん
2011/07/03(日) 21:22:48.700361デフォルトの名無しさん
2011/07/03(日) 21:24:44.39ポインタのポインタや
構造体のポインタをやるといい
0362デフォルトの名無しさん
2011/07/03(日) 21:28:02.63隅から隅まで説明することもできないし
0363デフォルトの名無しさん
2011/07/03(日) 21:32:35.03str==&str[0]
0364デフォルトの名無しさん
2011/07/03(日) 21:34:21.91配列
□□□□□□□
↑
ポインタ
0365デフォルトの名無しさん
2011/07/03(日) 21:38:42.07○ポインター
0366デフォルトの名無しさん
2011/07/03(日) 22:25:44.650367デフォルトの名無しさん
2011/07/03(日) 22:30:41.82int *pi=mi;
pi+1 == &mi[1]
long ml[10];
long *pl=ml;
pl+1 == &ml[1]
0368デフォルトの名無しさん
2011/07/04(月) 02:08:47.99知事との握手を拒否
http://www.youtube.com/watch?v=VtUqWdbjnTk
「客を出迎えるときはおまえが先に部屋に入ってから俺を呼べ」
「今のはオフレコで」
「書いたらその社は終わりだからな!」
0369天使 ◆uL5esZLBSE
2011/07/04(月) 12:27:52.78変数に$ついてる言語触ってるって事だよね
いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
土方が何をほざいて
0370デフォルトの名無しさん
2011/07/04(月) 15:01:34.280371デフォルトの名無しさん
2011/07/05(火) 00:21:58.72float x, y, z, pad;
};
struct VECTOR A, B;
f()
{
A = B;
}
このコードを gcc -S a.c して出力されたアセンブラコードを見たら
.file "a.c"
.comm A,16,4
.comm B,16,4
.text
.globl f
.type f, @function
f:
pushl %ebp
movl %esp, %ebp
movl B, %eax
movl %eax, A
movl B+4, %eax
movl %eax, A+4
movl B+8, %eax
movl %eax, A+8
movl B+12, %eax
movl %eax, A+12
popl %ebp
ret
.size f, .-f
.ident "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
.section .note.GNU-stack,"",@progbits
0372371
2011/07/05(火) 00:28:38.03gcc -S a.c -O4 -msse3 -march=core2とした場合だと
.file "a.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
movl B, %eax
pushl %ebp
movl %eax, A
movl %esp, %ebp
movl B+4, %eax
movl %eax, A+4
movl B+8, %eax
movl %eax, A+8
movl B+12, %eax
movl %eax, A+12
leave
ret
.size f, .-f
.comm A,16,4
.comm B,16,4
.ident "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
.section .note.GNU-stack,"",@progbits
SSEの128bitレジスターを使った転送をしてくれるかと思ったら、ぜんぜん普通にmovlで32bitづつだった。
(gcc version 4.5.2)
最適化によるSSEのフル活用って、実際はあまり期待できないのかもしれない。
この辺はインラインアセンブラなどで手書きするのが確実なのかもしれない。
0373デフォルトの名無しさん
2011/07/05(火) 01:53:57.580374デフォルトの名無しさん
2011/07/05(火) 01:56:33.97SSEの128bitレジスターを使った転送
だとどのくらい早くなるの?
0375デフォルトの名無しさん
2011/07/05(火) 04:47:29.300376デフォルトの名無しさん
2011/07/05(火) 05:56:53.87SSEはMMXと違ってOSのサポート云々があるからgccが躊躇してるとか?
0377デフォルトの名無しさん
2011/07/05(火) 07:54:30.59// 構造体だったりローカル変数だったりするとどうも弱いね。
typedef struct {float x, y, z, w;} Foo;
static void f(float * A, float * B, int cnt)
{
for (int ic = 0; ic < cnt; ++ic) A[ic] = B[ic];
}
void foo()
{
static Foo A;
static Foo B;
f((float *) & A, (float *) & B, sizeof(A) / sizeof(float));
}
0379デフォルトの名無しさん
2011/07/05(火) 17:47:44.510380デフォルトの名無しさん
2011/07/05(火) 18:56:58.320381デフォルトの名無しさん
2011/07/06(水) 07:51:18.880382デフォルトの名無しさん
2011/07/06(水) 08:06:21.500383デフォルトの名無しさん
2011/07/06(水) 12:51:44.26使い道が想像つかない...
0384デフォルトの名無しさん
2011/07/06(水) 12:54:52.900385デフォルトの名無しさん
2011/07/06(水) 13:01:58.80想像つかないうちは使わないほうが良いプログラムをかけるから使わないほうがいいよ
0386デフォルトの名無しさん
2011/07/06(水) 13:22:05.15swap関数とか作った事ないの?
うまく実行できず、困ってます
#include <stdio.h>
#include <stdlib.h>
void main (void){
FILE*fp;
int ou,co,su,nn,kk;
char fn[20];
printf("ファイル名を入力してください \n");
scanf("%s",&fn);
fp=fopen(fn,"r");
if(fp==NULL){
printf("ファイルが開けません。\n");
exit(0);
}
ご指摘お願いいたします。
if((kk>='a')&&(kk<='z')){
co++;
}
else if((kk>='A')&&(kk<='Z')){
ou++;
}
else if((kk>='0')&&(kk<='9')){
su++;
}
else if(kk=='\n'){
nn++;
}
kk=fgetc(fp);
}
printf("英大文字は%d文字\n",ou);
printf("英小文字は%d文字\n",co);
printf("数字は%d\n",su);
printf("改行は%d\n",nn);
fclose(fp);
}
0389デフォルトの名無しさん
2011/07/06(水) 13:32:00.08大量のデータを関数に渡すor複数のデータを関数から受け取るとき。
最大データ量が不明のとき。
0390デフォルトの名無しさん
2011/07/06(水) 13:41:46.20ファイル読み込むとき、
「このファイルのデータをここ(ポインター指定)に最大nバイト読み込んでください」
って指定をする。
gfetc、fscanfとか例外もあるけど。
突っ込みどころが多過ぎるが、取り敢えず1レスに収まらないソースはcodepadかideoneに貼れ。
それからコンパイラの警告レベルを引き上げて、警告をきちんと読め。
0392デフォルトの名無しさん
2011/07/06(水) 13:49:51.60fscanf()は例外じゃないな。
0393デフォルトの名無しさん
2011/07/06(水) 14:44:41.280394デフォルトの名無しさん
2011/07/06(水) 19:23:24.59この1111を1000+100+10+1に分解して
出てきた2のn乗をそれぞれ記録したいんですが
1111を分解するいい方法はありませんか?
0395デフォルトの名無しさん
2011/07/06(水) 19:31:37.130396デフォルトの名無しさん
2011/07/06(水) 19:32:02.24右シフト >> と 1との&
0397394
2011/07/06(水) 19:33:58.530398デフォルトの名無しさん
2011/07/06(水) 19:40:07.20unsigned int b0=a&1;
unsigned int b1=a&2;
unsigned int b2=a&4;
unsigned int b3=a&8;
unsigned int b4=a&16;
0399デフォルトの名無しさん
2011/07/06(水) 19:40:51.52int i=0;
int n=15;
while(n) {
b[i]=n%2;
n/=2;
i++;
}
0400デフォルトの名無しさん
2011/07/06(水) 19:44:47.480401デフォルトの名無しさん
2011/07/06(水) 19:46:49.33int b0,b1,b2,b3;
} ST_BIT;
ST_BIT mBit[16] = {
1,0,0,0,
0,2,0,0,
1,2,0,0,
0,0,4,0,
1,0,4,0,
0,2,4,0,
1,2,4,0,
1,0,0,8,
0,2,0,8,
1,2,0,8,
0,0,4,8,
1,0,4,8,
0,2,4,8,
1,2,4,8}
int a=15;
printf("%d %d %d %d\n",mBit[a].b0,mBit[a].b1,mBit[a].b2,mBit[a].b3);
0402デフォルトの名無しさん
2011/07/06(水) 21:01:10.550403デフォルトの名無しさん
2011/07/06(水) 21:09:52.810404デフォルトの名無しさん
2011/07/06(水) 21:10:33.370405デフォルトの名無しさん
2011/07/06(水) 21:19:51.87関数内関数はCには無いな
手続き型言語で非オブジェクト指向言語だとpascal位かな
0406デフォルトの名無しさん
2011/07/06(水) 21:25:05.30gccだとできる
0407デフォルトの名無しさん
2011/07/06(水) 21:27:43.13今課題で書いてる宿題プログラムがあるんだが
パクられたくないから、ネット上に保存されたくない。
codepadってどういう仕組み?
0408デフォルトの名無しさん
2011/07/06(水) 21:31:35.20privateにチェック入れる
あとで削除する
0409デフォルトの名無しさん
2011/07/06(水) 21:33:10.140410デフォルトの名無しさん
2011/07/06(水) 21:36:31.24privateの横の?あるけど英語分からんかった。
日本語に翻訳してもちょっと理解しにくいんで
翻訳してくれ。
絶対に誰にもばれたくない。
0411デフォルトの名無しさん
2011/07/06(水) 21:38:37.670412デフォルトの名無しさん
2011/07/06(水) 21:40:13.82何か簡単なプログラミング環境ないですか?
Cygwinしか入ってないです。
0413デフォルトの名無しさん
2011/07/06(水) 21:41:17.59MinGW/GCC
VirtualBox/Ubuntu
0414デフォルトの名無しさん
2011/07/06(水) 21:42:34.65前半は省略して
privateにチェック入れるとRecent Pastesってところにリンクを張らない
検索エンジンにも引っかからない
URLを知っている人しか見られない
0415デフォルトの名無しさん
2011/07/06(水) 21:47:09.8430分くらいで出来る奴頼む・・・
cygwinは20〜30分くらいで導入出来た。
もちろんパッケージは制限してだよ。
窓の杜とかも見たけど、何かいいのないですか?
0416デフォルトの名無しさん
2011/07/06(水) 21:48:24.32つLSI-C
学習用途ならこれで十分だろ
0417デフォルトの名無しさん
2011/07/06(水) 21:51:17.08cygwinみたいに実行時の端末もデフォでありますか?
0418デフォルトの名無しさん
2011/07/06(水) 22:21:56.00つcommand.com/cmd.exe
0419デフォルトの名無しさん
2011/07/06(水) 22:28:10.61つーかcygwinの何が不満なの?
インストールが楽なのはVC++だけど、
Cの学習用としてCygwinよりBetterだとは思わない。
0420デフォルトの名無しさん
2011/07/06(水) 22:36:53.330421デフォルトの名無しさん
2011/07/06(水) 22:37:58.34今じゃ辛いな
0422デフォルトの名無しさん
2011/07/06(水) 22:38:27.09二つの環境で動作OKだったら安心だから。
安心チェック!
0423デフォルトの名無しさん
2011/07/06(水) 22:39:18.48TCC はインストール不要
http://bellard.org/jslinux/
プロンプトが出たら tcc hello.c でコンパイル
必要なのはウェブブラウザだけ
バイナリもあるからインストールも簡単だと思われ
http://bellard.org/tcc/
0424デフォルトの名無しさん
2011/07/06(水) 22:42:01.39cygwinってやっぱ良いの?
何が具体的に良いの?
メモリを効率よく多く呼び出せるとか?
0425デフォルトの名無しさん
2011/07/06(水) 22:44:36.62んじゃ、gcc系はダブルチェックにならないのでVC++かな。
インストールは簡単。インストーラを起動して、次々、同意、
とかしていればよい。
だが、ネットワークインストールになるので
ダウンロードに時間はかかる。
分かっている人にはなんでもないけど、初めのうちはC++として
コンパイルしがちなので注意。
0426デフォルトの名無しさん
2011/07/06(水) 22:45:29.37ビジュアルスタジオのことじゃないよね?
0427デフォルトの名無しさん
2011/07/06(水) 22:48:35.14おっと、回答しているうちにレスが。
期待した答えと違うかもしれないが、cygwinが
優れているわけではない。
gccがコンパイラの定番であり、同時に最前線といえる存在だから、
ということが大きいかな。
>>426
VC++ = Visual C++
0428デフォルトの名無しさん
2011/07/06(水) 22:48:37.25externのほかになにかありますか?
0429デフォルトの名無しさん
2011/07/06(水) 22:50:25.200430デフォルトの名無しさん
2011/07/06(水) 22:54:37.89externは記憶クラス指定子(storage-class-specifier)のひとつ。
同じく記憶クラス指定子に属するのは
auto, register, static, typedef
実際はstaticとexternだけ気にすれば良い。
0431デフォルトの名無しさん
2011/07/06(水) 22:56:20.80visual studioとvisual C++は一緒?
0432デフォルトの名無しさん
2011/07/06(水) 22:58:23.34ちがう
0433デフォルトの名無しさん
2011/07/06(水) 23:00:18.18え?でもgoogleでvisual C++で検索かけると
Microsoft visual studio expressってのが一番上にくるんだが・・・
0434デフォルトの名無しさん
2011/07/06(水) 23:02:21.880435デフォルトの名無しさん
2011/07/06(水) 23:06:48.160436デフォルトの名無しさん
2011/07/06(水) 23:08:27.78VisualStudioはMSの開発用スイート
MS Officeにワード、エクセル、パワポ・・・が含まれているように
VisualStudioにVB,VC#、VC++…が含まれている。
ネットワークインストールっていうのは、ネットワークを介して
インストールすること。VC++のインストーラは、インストールイメージの
ダウンロードやその実行をしてくれる。レジュームなどの面倒も
見てくれる。
0437デフォルトの名無しさん
2011/07/06(水) 23:12:54.21前は(VS2005とか2007あたりだったとおもうが)インストールイメージを
まるごとダウンロードできた。
インストールイメージは600MB位だったので、
いっぺんに10台とかインストールするときには
ダウンロードしたイメージをCD-Rに焼いてから、実行すると
効率的だった。
0438デフォルトの名無しさん
2011/07/06(水) 23:16:32.18メモ帳とかワードパッドとか、編集用のアプリケーションとかあったんですか?
0439デフォルトの名無しさん
2011/07/06(水) 23:18:13.62定番はその頃からVIとemacs。どちらも元々ターミナル用のエディタだった。
0441デフォルトの名無しさん
2011/07/06(水) 23:21:23.540442デフォルトの名無しさん
2011/07/06(水) 23:23:30.27全然言ってる意味わからんくてワロタww
環境を導入するときってzipファイルとかじゃないんですか?
0443デフォルトの名無しさん
2011/07/06(水) 23:23:53.80cat で
0444デフォルトの名無しさん
2011/07/06(水) 23:31:22.74CD-ROMドライブにいれてないのに、それが入ってる状態としてハードディスク
が認識している状態のファイルのことですか?
良く分かりません。
0445デフォルトの名無しさん
2011/07/06(水) 23:36:40.66タイピングゲームで単語の先頭から1 文字ずつ比べて初めてミスタイプした文字をミスタイプ文字とし
て記録し、一番多くミスタイプした文字を表示するようにせよ。というものがでました。途中までは頑張ったのですが
27行目をどうしたらよいか悩んでいます。教えてください。途中までhttp://codepad.org/o56IuzN8
言語:C言語
OS:Linux
コンパイラ;gcc
0446デフォルトの名無しさん
2011/07/06(水) 23:51:54.68そういうのは宿題スレへ
ttp://hibari.2ch.net/test/read.cgi/tech/1308749241/
0447デフォルトの名無しさん
2011/07/06(水) 23:54:07.18どこかに面白いソースとか転がってないかな?
0448デフォルトの名無しさん
2011/07/06(水) 23:56:51.45すみませんでした。
0449デフォルトの名無しさん
2011/07/06(水) 23:58:29.18vi、emacs以前はわからない。ラインエディタとかあったのだろうか。
もしかしてパンチングカード?
>>443
catって編集できないぞ。まぁ釣りだろうけど。
>>444
当たっていそう。CD-Rにそのまま焼けたり、deamon Toolでマウント出来たりする。
>>442
>全然言ってる意味わからんくてワロタww
わからんのは、あなたが無知だから。
無知すぎて説明のしようがない。
0450デフォルトの名無しさん
2011/07/06(水) 23:58:49.94基本的に面白いソースってどういうものをいうの?
プログラムって基本的に計算だよね、面白さはどこに見出すの?
0451デフォルトの名無しさん
2011/07/07(木) 00:06:24.58>catって編集できないぞ。まぁ釣りだろうけど。
Bill Joy cat で検索
0452デフォルトの名無しさん
2011/07/07(木) 00:08:56.53>どこかに面白いソースとか転がってないかな?
http://bellard.org/otcc/
これはどう?
0453デフォルトの名無しさん
2011/07/07(木) 00:10:24.89>vi、emacs以前はわからない。ラインエディタとかあったのだろうか。
http://web.cecs.pdx.edu/~kirkenda/joy84.html
0454デフォルトの名無しさん
2011/07/07(木) 00:10:59.20英語読めってのか?って突っ込まれたいだけだろお前。
0455デフォルトの名無しさん
2011/07/07(木) 00:11:49.540456デフォルトの名無しさん
2011/07/07(木) 00:13:00.29英語は読まなくていいよ
そこにある otccn.c と otccelfn.c が面白そうなので紹介しただけ
0457449
2011/07/07(木) 00:14:44.07>>449書いたあとで、ワンライナー位なら行けるか、と思っていたらviですか。
まぁそれは都市伝説にしても、ラインエディタでコーディングとか、
とても想像できない。
0458デフォルトの名無しさん
2011/07/07(木) 00:15:15.81学習用途でバイトの違いって重要か?
変な所にこだわるな。。。
0459デフォルトの名無しさん
2011/07/07(木) 00:16:22.760460デフォルトの名無しさん
2011/07/07(木) 00:17:27.34どんなプログラムなの?
0461デフォルトの名無しさん
2011/07/07(木) 00:18:27.20これはどう?
ある意味すごく面白いよ。
改訂新版 Cプログラミング診断室
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/
0462デフォルトの名無しさん
2011/07/07(木) 00:19:33.56vi,emacs以前というと。。。edだな
まんまediterの略
0463デフォルトの名無しさん
2011/07/07(木) 00:22:01.32C コンパイラ
>>447
これも良いかも
ドキュメント合わせても 1000 行以下の仮想マシン
https://github.com/GenTiradentes/tinyvm
0464デフォルトの名無しさん
2011/07/07(木) 00:22:24.03>>461の8章がまさにそれ。
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.1.html
0465デフォルトの名無しさん
2011/07/07(木) 00:24:35.43学習用途でバイトの違いって重要か?
しかも独学じゃなく、学校のお授業だぞ?
独学ならwinじゃvcかcygwin+gcc薦めるとこだが
(bccが個人的に一番好きだったが、亡くなったしね)
0466デフォルトの名無しさん
2011/07/07(木) 01:48:35.76こういうマクロの組み方には
有名な元ネタがあるんじゃなかったっけ?
何かで読んだ気がする
自分ではなぜかうまくいかないので、参考にしたいのでお願いします。
0468デフォルトの名無しさん
2011/07/07(木) 05:20:11.59宿題を丸投げするなら宿題スレへ
ttp://hibari.2ch.net/test/read.cgi/tech/1308749241/
intが2バイトじゃ、ちょっと買い物したら覿面にオーバーフローしちまう。
おまけにprintf("%g", price * 1.05)なんてやろうと思った日には、リンクするライブラリにまで気を遣わなくちゃなんねぇ。
それがLSI-Cを使うってこった。
0470デフォルトの名無しさん
2011/07/07(木) 11:04:50.92なぜ long を使わないんだ?
0471デフォルトの名無しさん
2011/07/07(木) 11:17:31.310472デフォルトの名無しさん
2011/07/07(木) 11:29:08.15ってバカ避けを増やしていかないといけないってことか
バカを取り除くほうが有用な気もするが
0473デフォルトの名無しさん
2011/07/07(木) 11:52:50.200474デフォルトの名無しさん
2011/07/07(木) 18:53:34.16CのOOPページを紹介してくれ 最近ホットな話題なんで
0475デフォルトの名無しさん
2011/07/07(木) 18:54:22.750476デフォルトの名無しさん
2011/07/07(木) 19:00:42.47http://www.kijineko.co.jp/tech/superstitions/there-is-not-16bit-int-now.html
0477デフォルトの名無しさん
2011/07/07(木) 19:05:48.22ホット。。。か?
あんな苦し紛れな事するぐらいなら、C++をベターCとして使った方が良いだろ
漢の浪漫としても2流
0478デフォルトの名無しさん
2011/07/07(木) 19:07:21.470479デフォルトの名無しさん
2011/07/07(木) 19:08:10.76LSI-CはDOSでも動きますが?
0480デフォルトの名無しさん
2011/07/07(木) 19:11:18.93てか C++でROMとヒープに納めきられる?
0481デフォルトの名無しさん
2011/07/07(木) 19:12:23.25LSI-C は 32bit Windows 上で動きますが?
0482デフォルトの名無しさん
2011/07/07(木) 19:13:12.69で、マクロ書くのメンドクサくなってValaへ移行するんだ
0483デフォルトの名無しさん
2011/07/07(木) 19:21:50.88内容見てから口あけろ
0484デフォルトの名無しさん
2011/07/07(木) 19:27:31.07むしろ、そんな小さいプログラムにOOPが必要有るのかと。。。
0485デフォルトの名無しさん
2011/07/07(木) 19:35:39.140486デフォルトの名無しさん
2011/07/07(木) 19:45:55.35>>475
ほう... デザパタのメディエーターの実装例を見たいんじゃが
>>484
もはや512KROM 64KSRAMも当たり前のチップ世界なんだが 小さいのか?
ただC++ではオーバフローするが...
>>485
残念ながらCでのOOPの導入は済んでる... がデザパタがいまいちしっくりきていない
入門編はOOPの入門編もある このスレの範疇であれば良いが...
0487デフォルトの名無しさん
2011/07/07(木) 19:59:29.20...
>では、int 型が 16 ビットの処理系は過去の遺物で、今では極例外的な存在でしかないのでしょうか?
>もし、本気でそのように考えているのであれば、井の中の蛙になっていることを疑わなければなりません。
>現在でも、H8 や M16C、PIC など、組込み向けの処理系では int 型が 16 ビットのことは普通にあります。
>それらの処理系は、レガシーなものだといえばそうかもしれませんが、広く普及し、現在でも広く使われているわけですから、
>これらを無視して「今どき int が 16 ビットの処理系なんて無い」という論は成り立ちません。
そもそも「今どき int が 16 ビットの処理系なんて無い」という主張を聞いたこと無いんだけど…。
0488デフォルトの名無しさん
2011/07/07(木) 20:07:03.90良く読め馬鹿野郎
その規模だとオブジェクト指向で作る事自体が無駄だって言ってんだろ
linuxのカーネルの規模でさえc++使ってねーよ
(linusがc++嫌いってのもあるが)
オブジェクト指向が生きるのはメモリがMB単位になってからだ
0489デフォルトの名無しさん
2011/07/07(木) 20:22:04.280490デフォルトの名無しさん
2011/07/07(木) 20:26:20.20今言った
でも、これなら聞いた事無いか?
オブジェクト指向は規模が小さいと逆にコード量が増える
0491デフォルトの名無しさん
2011/07/07(木) 20:37:11.120492デフォルトの名無しさん
2011/07/07(木) 20:45:37.13むしろ昔から言われてるがな。。。
オブジェクト指向は万能薬じゃないんだし
マンセーし過ぎ
0493デフォルトの名無しさん
2011/07/07(木) 20:48:00.980494デフォルトの名無しさん
2011/07/07(木) 20:51:55.22再利用できそうな部分はうまく分離できるように作ってあれば、なんでもいいんじゃない。
0495デフォルトの名無しさん
2011/07/07(木) 22:03:04.58char *po=malloc(size);
...
if(...){
/*ここにあるエラー処理から下のfree(po);へジャンプしたい*/
}
...
free(po); /* ← ここに飛びたい*/
return 0;
}
goto使用以外にジャンプする手段ありますか?
0496デフォルトの名無しさん
2011/07/07(木) 22:08:47.350497デフォルトの名無しさん
2011/07/07(木) 22:10:22.93malloc と free の間を関数にするか do{}while(0); で囲む
0498デフォルトの名無しさん
2011/07/07(木) 22:10:27.91> if(...){
> /*ここにあるエラー処理から下のfree(po);へジャンプしたい*/
> }
...
if(...){
/*ここにあるエラー処理から下のfree(po);へジャンプしたい*/
} else {
...
}
とか。関数にしてreturnさせるとか。
0499デフォルトの名無しさん
2011/07/07(木) 22:11:55.80[1] 授業単元:C演習
[2] 問題文(含コード&リンク)
getopt_longを使ったargv引数解析を行いなさい。
引数:
--apple 1 (省略形はなし,ハイフンは2つ,続引数は必ずあり)
-peach (省略形はなし,ハイフンは1つ,続引数はなし)
-lemon (省略形はありで-l,ハイフンは1つ,続引数はなし)
-melon (省略形はなし,ハイフンは1つ,続引数はあってもなくてもよい)
※続引数がある場合はそれを表示しなさい
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 本日中
0500デフォルトの名無しさん
2011/07/07(木) 22:12:52.200501デフォルトの名無しさん
2011/07/07(木) 22:16:58.110502495
2011/07/07(木) 22:18:59.26どうもありがとうございます。
0503デフォルトの名無しさん
2011/07/07(木) 23:34:41.54switch (...){
case true: 〜; if (error) btrak; 〜break;
case false: 〜}
〜;
free(po);
0504デフォルトの名無しさん
2011/07/07(木) 23:49:10.07char ch[2];
} S;
S s[100];
ってやるのと
char ch[100][2];
ってやるのではどっちのほうがメモリ節約できますか?
0505デフォルトの名無しさん
2011/07/07(木) 23:50:24.29理由はウェブで!
0506デフォルトの名無しさん
2011/07/08(金) 00:49:10.75管理領域が関係してるのか
0507デフォルトの名無しさん
2011/07/08(金) 01:16:38.480508デフォルトの名無しさん
2011/07/08(金) 01:26:28.93添え字のアクセスはコンパイル時に決定されるから領域使わない
0509デフォルトの名無しさん
2011/07/08(金) 01:28:22.860510デフォルトの名無しさん
2011/07/08(金) 01:28:24.26sizeof(S) == 4
となる可能性無い?
0511デフォルトの名無しさん
2011/07/08(金) 01:33:49.650512デフォルトの名無しさん
2011/07/08(金) 01:46:39.410513デフォルトの名無しさん
2011/07/08(金) 01:52:41.420514デフォルトの名無しさん
2011/07/08(金) 01:56:26.930515デフォルトの名無しさん
2011/07/08(金) 05:02:09.030516デフォルトの名無しさん
2011/07/08(金) 19:02:10.20通常はこの文章を
sizeof(S) == 4
が正となる可能性無い?
と読み解く。
0517デフォルトの名無しさん
2011/07/08(金) 19:06:30.100518デフォルトの名無しさん
2011/07/08(金) 19:09:42.74前者だと
sizeof(S) = 4
となる可能性無い?
こう書けばいいだろ。
0519デフォルトの名無しさん
2011/07/08(金) 19:11:56.770520デフォルトの名無しさん
2011/07/08(金) 19:17:45.92どうしたら格好いい?
0521デフォルトの名無しさん
2011/07/08(金) 19:19:44.52$ cp `which touch` elegant_touch
0522デフォルトの名無しさん
2011/07/08(金) 19:33:26.08C言語でお願いします
0523デフォルトの名無しさん
2011/07/08(金) 19:57:23.36$ cat elegant_touch.c
#include <sys/syslimits.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if(argc < 2) exit(1);
char buf[ARG_MAX];
snprintf(buf, ARG_MAX, "/usr/bin/touch %s", argv[1]);
system(buf);
}
0524デフォルトの名無しさん
2011/07/08(金) 20:23:38.48なあ、これバグってね?
0525デフォルトの名無しさん
2011/07/08(金) 20:24:41.80ギャグがすべるのはしょうがないとしても、噛んじゃうのはダサいな。
0526デフォルトの名無しさん
2011/07/08(金) 20:26:07.42そうじゃなくてエレガントな実装をお願いします
0527デフォルトの名無しさん
2011/07/08(金) 20:33:57.55コードを書かない阿呆は
どっちが偉いんだろう?
0528デフォルトの名無しさん
2011/07/08(金) 20:44:38.140529デフォルトの名無しさん
2011/07/08(金) 20:48:14.100530デフォルトの名無しさん
2011/07/08(金) 20:51:04.220531デフォルトの名無しさん
2011/07/08(金) 21:24:05.270532デフォルトの名無しさん
2011/07/08(金) 22:15:50.02上には上がいる
0533デフォルトの名無しさん
2011/07/08(金) 22:49:50.15元データ : int32 = 0x00FFAA11; // FFは赤、AAは緑、11は青
先データ : char[3] = {R, G, B};
へとコピーしたいです。
たとえば
long src[10] = {
0x00FFAA11, 0x00FFAA11, 0x00FFAA11, 0x00FFAA11, 0x00FFAA11,
0x00FFAA11, 0x00FFAA11, 0x00FFAA11, 0x00FFAA11, 0x00FFAA11
};
char dst[3 * 10];
として、現状は
void convert(char* dst, long* src, int pixel_len)
{
int i;
for(i=0; i < pixel_len; i++) {
dst++ = (src>>16) & 0xFF;
dst++ = (src>>8 ) & 0xFF;
dst++ = (src>>0 ) & 0xFF;
src++;
}
}
としてるのですが、これをSSEで置き換えようとしたら、1ピクセルのデータ長さが24bitと32bitで異なることが原因で、
効率的にxmmレジスター上で展開するというパズルが解けなくてこまってます。
convert()を、128bit単位の変数操作を効率的に駆使して行う方法が思いつきません。だれか良い方法を編み出してください。
0534デフォルトの名無しさん
2011/07/08(金) 23:18:53.23で済むようにデータを並び替えろ。
SSEはしらんが。
0535デフォルトの名無しさん
2011/07/09(土) 03:24:41.930536デフォルトの名無しさん
2011/07/09(土) 05:00:00.560537デフォルトの名無しさん
2011/07/09(土) 05:16:35.69に書いてある解説は読むと言っていることは理解出来ます。
ですが、ポインタのメリットが良く分からないのでイマイチ使い所が分かりません。
郵便番号に例えられても、ああそれで?となってしまうので、ポインタのメリットとポインタを使う意義を教えて貰えませんでしょうか?
0538デフォルトの名無しさん
2011/07/09(土) 07:28:34.7110Mのデータを渡したとすると、呼び出し元関数、呼び出し先関数両方で合計20Mのメモリを消費し、
呼び出し先関数がさらに別の関数に渡せばさらに消費します。
またデータのコピーするのに時間も消費します。
ポインターを使うと2〜8バイト程度の処理で済みます。
0539デフォルトの名無しさん
2011/07/09(土) 07:31:03.22ですがポインタを利用することで多数のデータを返すことが可能です。
0540デフォルトの名無しさん
2011/07/09(土) 08:08:26.210541デフォルトの名無しさん
2011/07/09(土) 09:42:16.78ずっと複雑な構成のプログラムになると、ポインタでなければ表現できないものも存在します。
「アルゴリズムとデータ構造」
でググッてみてください。
ポインタの存在そのものが計算機科学にかかせないのです。
0542デフォルトの名無しさん
2011/07/09(土) 09:48:20.090543デフォルトの名無しさん
2011/07/09(土) 10:07:31.70UnixのプログラムをWindowsに移植しています.
initstate(2, rngState, 256)
って関数はマイクロソフトのCのライブラリには無いようで
調べてみると乱数と関係する関数の用です.
これを移植するにはどんな関数や代替的な処理をすればよいでしょうか?
0544デフォルトの名無しさん
2011/07/09(土) 10:22:37.16ポインタと陽にいっていないだけで、ポインタと同じだったり(Java)、あるいは、ポインタのかわりに参照があったり(Pascal)、
ポインタがなくとも、自分で領域管理をして配列の添え字をもってポインタとしたり、手はいろいろあります。
・initstate()を使用している目的を調査する。
・その結果、必要があれば自前で同等の乱数生成器を作る。
・それができないならrand()を何らかの方法で変更し、呼び出す毎に値を保存する。
・そもそも乱数系列がUnixのそれと一致していないといけないのなら、諦める。
要は、乱数をどう利用しているかの調査が必要。
0546デフォルトの名無しさん
2011/07/09(土) 10:49:24.52言語仕様上はポインターが無くても、チューリング完全であれば、実装は理論的には可能です。(Brainf*ckなど)
ただしアプリケーションの目的によっては、実行パフォーマンスなどが、実用的でない場合も多々あります。
逆に言えば、アプリケーションの分野ごとに最優先事項が異なるため、多数のプログラミング言語が考案された、とも言えます。
0547デフォルトの名無しさん
2011/07/09(土) 10:58:04.13このバカは、比較演算子が正負を返すとでも思っているのだろうか?
0548デフォルトの名無しさん
2011/07/09(土) 10:58:40.81clearで初期化できるけど全変数消えちゃうし。
まぁ、アロケート出来ないなら出来ないなりの処理を考えるけど。
0549デフォルトの名無しさん
2011/07/09(土) 10:59:26.16まだ居たの?粘着キモイよ。
0550デフォルトの名無しさん
2011/07/09(土) 11:09:50.83それとも関数の中でもらったほうがいいの?
0551デフォルトの名無しさん
2011/07/09(土) 11:10:49.550552デフォルトの名無しさん
2011/07/09(土) 11:12:13.13バカ発見。ねえねえ、比較演算子って正負を返すと本気で思ってたの?
0553デフォルトの名無しさん
2011/07/09(土) 11:13:55.02グローバル変数で渡すのが簡単だよ
0554デフォルトの名無しさん
2011/07/09(土) 11:15:38.750555デフォルトの名無しさん
2011/07/09(土) 11:16:34.520556デフォルトの名無しさん
2011/07/09(土) 11:16:55.75テキスト入力させるのが一般的だよ
0557デフォルトの名無しさん
2011/07/09(土) 11:19:57.60ありがとうございます
0558デフォルトの名無しさん
2011/07/09(土) 11:20:41.58http://www.wakhok.ac.jp/~kanayama/C/98/node18.html
0559デフォルトの名無しさん
2011/07/09(土) 11:21:32.55正となる可能性
真となる可能性
どちらもおんなじ
0560デフォルトの名無しさん
2011/07/09(土) 11:23:02.53真:0以外
0561デフォルトの名無しさん
2011/07/09(土) 11:23:40.02それは真偽判定の場合だボケ
0562デフォルトの名無しさん
2011/07/09(土) 11:25:09.97559は関係演算子での話ね
0563デフォルトの名無しさん
2011/07/09(土) 11:26:55.870564デフォルトの名無しさん
2011/07/09(土) 11:28:14.63Cでは関係演算子は全部1か0だが
0565デフォルトの名無しさん
2011/07/09(土) 11:30:23.400566デフォルトの名無しさん
2011/07/09(土) 11:30:25.10アンカー間違えてない?
559=562=俺
0567デフォルトの名無しさん
2011/07/09(土) 11:34:49.91バカはお前だ。
549は比較演算子の話しなんかしてねぇよ。お前がキモイってこと以外書いてないだろ。
林先生「まさかとは思いますが、549が「比較演算子って正負を返す」と主張したというのは、
あなたの想像上の出来事にすぎないのではないでしょうか。」
0568デフォルトの名無しさん
2011/07/09(土) 11:35:16.82"連続的な量"の事例をプリーズ。
0570デフォルトの名無しさん
2011/07/09(土) 11:39:23.59連続的な量=アナログ量
0571デフォルトの名無しさん
2011/07/09(土) 11:40:27.61どうやら0を認識出来ないようだ
0572デフォルトの名無しさん
2011/07/09(土) 11:41:18.94インド人すげー
0573549
2011/07/09(土) 11:43:08.11赤の他人だよ。妄想乙。
0574デフォルトの名無しさん
2011/07/09(土) 11:55:25.350575デフォルトの名無しさん
2011/07/09(土) 12:00:46.380576デフォルトの名無しさん
2011/07/09(土) 12:11:40.930577デフォルトの名無しさん
2011/07/09(土) 12:14:44.750578デフォルトの名無しさん
2011/07/09(土) 12:22:43.22PCMデータについて色々調べてみたら?
0579デフォルトの名無しさん
2011/07/09(土) 13:23:59.91アナログもクソもない。
0580デフォルトの名無しさん
2011/07/09(土) 13:50:37.520581デフォルトの名無しさん
2011/07/09(土) 14:38:41.380582デフォルトの名無しさん
2011/07/09(土) 15:40:28.06な に い っ て ん の ?
0583デフォルトの名無しさん
2011/07/09(土) 17:38:16.81物理勉強しなおしてこい
0584デフォルトの名無しさん
2011/07/09(土) 20:16:35.300585デフォルトの名無しさん
2011/07/09(土) 20:20:47.46Cでは出来ません、が正しい答えだけど、どうなれば「削除」したことになると思っている?
0586デフォルトの名無しさん
2011/07/09(土) 20:24:30.450587デフォルトの名無しさん
2011/07/09(土) 20:43:26.600588デフォルトの名無しさん
2011/07/09(土) 20:45:24.830589デフォルトの名無しさん
2011/07/09(土) 21:47:04.70if(a[i] = b || a[i] == c) continue;
a[j++] = a[i];
}
0590デフォルトの名無しさん
2011/07/09(土) 21:47:25.210591デフォルトの名無しさん
2011/07/09(土) 22:10:15.61質問が曖昧すぎる。
0592デフォルトの名無しさん
2011/07/09(土) 23:55:46.44例えば
a[10]で2と5の要素を詰めようとすると2の要素を詰めることで5の要素でなくなるということじゃまいか
0593デフォルトの名無しさん
2011/07/10(日) 00:04:01.69if(i == b || i == c) continue;
a[j++] = a[i];
}
0594デフォルトの名無しさん
2011/07/10(日) 01:05:13.07Visual Studio コマンドプロンプト(2010)を使っての操作です。
Winのメモ帳で
#include <stdio.h>
int main(void)
{
printf("Hello World!!");
return 0;
}
って書いて、「smp1.c」って保存したんだ。
ここでコマンドプロンプトをつかって、
notepad smp1.c
って入力してEnterを押したんだが、
メモ帳
「ファイルsmp1.cが見つかりません。新しく作成しますか?」
ってでてくる。
ちゃんとはじめにメモ帳に保存したのにできんのはなぜなんだあああああああああああああああああ
0595デフォルトの名無しさん
2011/07/10(日) 01:09:09.46void
del(int a[], int n, int p1, int p2){
int i;
if (p1 < p2) {
i = p1;
p1 = p2;
p2 = i;
}
for (i = p1; i < n - 1; i++)
a[i] = a[i + 1];
for (i = p2; i < n - 1; i++)
a[i] = a[i + 1];
}
0596デフォルトの名無しさん
2011/07/10(日) 01:11:02.57cdコマンド打て
0597デフォルトの名無しさん
2011/07/10(日) 01:16:04.30cd notepad smp1.c
ってことでふか?
これ入力したけど指定されたパスが」見つかりませんってでるお( ^ω^)
やり方間違えてたら指摘よろ
0598デフォルトの名無しさん
2011/07/10(日) 01:19:13.97help cd
で使い方を
0599デフォルトの名無しさん
2011/07/10(日) 01:41:52.58別の関数bで、関数aが真なら0からカウントアップしていく、という事をさせたいです。
//関数a
int a(){
if (A) {
「ある動作」;
return 1;
}
else {return 0;}
}
//関数b
int b(){
int n;
n=0;
if(関数a()==1){n++;}
return n;
}
色々省いて概ねこのように組んでるんですが、nが0で帰ってきます。何がおかしいんでしょうか…
0600デフォルトの名無しさん
2011/07/10(日) 01:49:03.65if(関数a()==1){n++;}
はfor文で何度か式を評価させてます。
0601デフォルトの名無しさん
2011/07/10(日) 01:53:40.680602デフォルトの名無しさん
2011/07/10(日) 02:09:58.360603デフォルトの名無しさん
2011/07/10(日) 02:11:36.02それだと
int b(){ return a(); }
と同じ意味になってしまうけどいいの?
カウントアップするなら
int b(){
static int n = 0; // 最初に呼ばれた時だけnを0に設定する
if(関数a()==1){n++;}
return n;
}
こうすればa()が1を返す毎にnが+1される
0604600
2011/07/10(日) 02:41:28.22こういうプログラムを組んでいます。printfで関数aの値を表示させてもやはり0ばかり帰ってきます…。
0605デフォルトの名無しさん
2011/07/10(日) 02:54:24.95>if(sudoku_del(s,r1,c,k)==1){n++;}
0606デフォルトの名無しさん
2011/07/10(日) 03:01:58.76すみません、sudoku_del(s,r1,c,k)の行を消しておくのを忘れていました。
しかしそれでも依然0が返ってきます。よろしくお願いします。
0607デフォルトの名無しさん
2011/07/10(日) 03:56:55.64sudoku_t dat = { // cell[0][0]は3で確定してるものとする
0x004, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff,
0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff, 0x1ff
};
int main() {
int n = sudoku_del_col( &dat, 0, 0);
return 0;
}
これでn=8になるよ。
0608デフォルトの名無しさん
2011/07/10(日) 04:37:09.25たとえばこんな感じ
int sudoku_del(struct sudoku_t *s, int r, int c, int k) {
int mask = 1 << (k-1);
int *cell = &(s->cell[r][c]);
if(*cell & ~mask) {
*cell &= ~mask;
return 1;
}
return 0;
}
0609デフォルトの名無しさん
2011/07/10(日) 05:56:39.60出来ました!
どうもありがとう
0610608
2011/07/10(日) 07:48:26.50if(*cell & mask) {
だった
0611デフォルトの名無しさん
2011/07/10(日) 11:55:25.05ありがとうございます!テキストのデータは与えられていて、読み込みには成功してると思うのですが…
http://codepad.org/HUSe1tPQ
全プログラムはこうなってます。再三申し訳ないですがご鞭撻の程お願いします。(ブロックによる制約が煩雑なのはすみません)
0612608
2011/07/10(日) 12:44:45.750613デフォルトの名無しさん
2011/07/10(日) 12:49:11.560614608
2011/07/10(日) 13:11:23.64コラコラw
>>611
mainの中だけの変更でできたっぽい
//*** start update ***
// int r0,c0,n0;
int r0,c0,n0 = 1; // n0をちゃんと初期化する
//*** end update ***
for(c0=0;c0<=8;c0++){
//*** start update ***
// sudoku_kill_col(&s,r0,c0);
// sudoku_kill_row(&s,r0,c0);
// sudoku_kill_block(&s,r0,c0);
// いらない
//*** end update ***
n0 = n0 + sudoku_kill_col(.....
<出力>
258|736|941
619|824|357
437|915|268
---+---+---
395|271|486
762|498|135
841|653|729
---+---+---
184|369|572
576|142|893
923|587|614
0615デフォルトの名無しさん
2011/07/10(日) 13:21:12.61ビット反転多用するくらいなら
01の意味を逆にしたほうがよくね?
0617デフォルトの名無しさん
2011/07/10(日) 14:31:21.680618デフォルトの名無しさん
2011/07/10(日) 14:49:14.890619デフォルトの名無しさん
2011/07/10(日) 15:34:33.860620デフォルトの名無しさん
2011/07/10(日) 15:34:59.56{
int i, j, k, n = 0, tr, tc;
for(k = 1; k <= 9; k++) {
i = 0001 << (k - 1);
if(s->cell[r][c] == i) {
for(j = 0; j < 9; j++) {
if(j != r && s->cell[j][c] & i) s->cell[i][c] &= ~i, n++;
if(j != c && s->cell[r][j] & i) s->cell[r][c] &= ~i, n++;
tr = r / 3 * 3 + j / 3, tc = c / 3 * 3 + j % 3;
if((tr != r && tc != c) && s->cell[tr][tc] & i) s->cell[tr][tc] &= ~i, n++;
}
break;
} }
return n;
}
0621デフォルトの名無しさん
2011/07/10(日) 15:35:39.91値Xを受け取るとします。
{
if(){Xの操作 return X}
else if(){Xの操作 return X}
}
とするのと
{
if(){Xの操作 }
else if(){Xの操作 }
return X
}
とするのでは結果が違います・・・何故でしょうか?
Xが決まった段階でreturnするのだから結果は同じだろうと思うのだが・・・
0622デフォルトの名無しさん
2011/07/10(日) 15:40:33.83コード晒してみな
0623デフォルトの名無しさん
2011/07/10(日) 15:41:07.590624デフォルトの名無しさん
2011/07/10(日) 15:41:11.890625デフォルトの名無しさん
2011/07/10(日) 15:41:50.15{
if(){Xの操作 }
else if(){Xの操作 }
else{ }
return X
}
0626デフォルトの名無しさん
2011/07/10(日) 15:42:42.070627デフォルトの名無しさん
2011/07/10(日) 15:45:04.25else ifってのは先行のifを満たしたらその操作はしないってことでは?
else ifを使わずに
if二連続だと
if(){}
if(){}
となってれば
後者のifが前者の〜ryだと思い諦めがつくんですが。
0628デフォルトの名無しさん
2011/07/10(日) 16:09:41.30コード晒してみな
0629デフォルトの名無しさん
2011/07/10(日) 16:15:42.680630デフォルトの名無しさん
2011/07/10(日) 16:31:17.71{
if(th<=-PI)
{
while(-PI<th&&th<=0||0<=th&&th<=PI)
{
th=th+PID;
}
return th;
}
else if(th>PI)
{
while(-PI<th&&th<=0||0<=th&&th<=PI)
{
th=th-PID;
}
return th;
}
else return th;
}
です。
0631デフォルトの名無しさん
2011/07/10(日) 16:40:36.210632デフォルトの名無しさん
2011/07/10(日) 16:43:48.40は何かおかしいですか?
0633デフォルトの名無しさん
2011/07/10(日) 16:46:36.36角度を-π<x<=πの間に直す関数です。角度=x
この間にあれば直す必要ないので、受け取った引数をそのまま返したいのです。
PID=2π
PI=π
です。
0634デフォルトの名無しさん
2011/07/10(日) 16:48:35.970635デフォルトの名無しさん
2011/07/10(日) 16:53:26.05なんかおかしいでしょうか?
改良してください・・・
ちなみにラジアンです。
ですが分かりにくいので弧土法だと
430°=70°
230°= -130°
1000°= -80°
1200°=120°
という感じです。
実際のプログラムはこれのラジアンです。
3.15だと、PIより大きいですから、3.15-6.28=-3.13ですね。
0636デフォルトの名無しさん
2011/07/10(日) 17:03:48.24どうせ使わない変更後のコードの話なんかしてたら、時間が幾らあっても(ry
0637デフォルトの名無しさん
2011/07/10(日) 17:30:42.560638デフォルトの名無しさん
2011/07/10(日) 17:31:39.51こうだろ
double normalize(double th)
{
if(th<-PI)
{
while(th<-PI)
{
th=th+PID;
}
return th;
}
else if(th>PI)
{
while(th>PI)
{
th=th-PID;
}
return th;
}
else return th;
}
0639デフォルトの名無しさん
2011/07/10(日) 17:32:27.28こうじゃね?
< if (th <= -PI) {
< while ((-PI < th && th <= 0) || (0 <= th && th <= PI)) {
< th = th + PID;
< }
< return th;
< } else if (th > PI) {
< while (-PI < th && th <= 0 || 0 <= th && th <= PI) {
< th = th - PID;
< }
< return th;
< } else
< return th;
---
> while (th <= -PI)
> th += PID;
> while (th > PI)
> th -= PID;
> return th;
書くならこんなかんじかと。
http://codepad.org/uzTNDg44
よく読んでいないけれども、>>630 は、0<=th&&th<=PI がおかしいかもしれません。0<=th && PI <= th なら意味が通ります。
>>635
ここの住人はラジアンは大丈夫だと思います。
ちなみに「弧度法」=「ラジアン」であり、0°〜 360°等であらわすのは「度数法」といいます。
>>621
どちらも同じ意味です。
たぶんどちらかがポカミスしていると思います。今後の思考整理のため、この機会に突き詰めて納得しておくことをお勧めします。
0641デフォルトの名無しさん
2011/07/10(日) 18:29:15.07th = fmod(fmod(th, PID) + PID, PID);
return th <= PI ? th : th - PID;
}
0642621
2011/07/10(日) 18:57:40.70そうだそうだww
while()の中が抜けないときの条件になってないww
逆だww
0643デフォルトの名無しさん
2011/07/10(日) 19:13:59.75a≦x≦b c≦y≦dの範囲に出したい場合どうしたら??
x=b*rand()/RAND_MAX;
y=d*rand()/RAND_MAX;
ですか?
0644643
2011/07/10(日) 19:17:53.37どうすればいいでしょう?
0645デフォルトの名無しさん
2011/07/10(日) 19:28:32.490646デフォルトの名無しさん
2011/07/10(日) 19:30:30.95http://homepage3.nifty.com/mmgames/c_guide/21-02.html
0647デフォルトの名無しさん
2011/07/10(日) 19:30:47.28double x = r * (b - a) + a;
double y = r * (d - c) + c;
0648デフォルトの名無しさん
2011/07/10(日) 19:58:32.67do
{
x = rand() / RAND_MAX;
y = rand() / RAND_MAX
}while(x<a || b<x || y<c || d <y);
0649デフォルトの名無しさん
2011/07/10(日) 20:12:59.78それだと0≦x≦bになってしまうぞい。
x, a, bが整数、かつb-aがRAND_MAXよりも十分小さい場合限定で、
x = rand() % (b - a) + a;
というのはよく使ったなぁ。
あとは、オーソドックスに
x = (b - a) * rand() / RAND_MAX + a;
VC++のRAND_MAXは32767しかないので、精度が欲しい場合は、rand() | (rand() << 15) などとしたほうがいいかも…。
あと所詮は「疑似」乱数に過ぎないので、テストをお忘れなく。
ちゃんと検証しないと、こういうことになるので…
ttp://slashdot.jp/it/article.pl?sid=06/12/06/0155253
0650デフォルトの名無しさん
2011/07/10(日) 20:24:08.85ありがとうございました!!
0651デフォルトの名無しさん
2011/07/10(日) 20:25:19.52>それだと0≦x≦bになってしまうぞい。
?
0652デフォルトの名無しさん
2011/07/10(日) 20:37:51.09それでも条件で範囲に収まらないとはじいてるので大丈夫です。
0653デフォルトの名無しさん
2011/07/10(日) 23:33:06.67ありがとうございました!やはりmain関数のほうで良くない動作してたみたいですね・・・
0654デフォルトの名無しさん
2011/07/11(月) 00:23:27.820655デフォルトの名無しさん
2011/07/11(月) 00:34:10.100656デフォルトの名無しさん
2011/07/11(月) 01:18:49.12ども
0657デフォルトの名無しさん
2011/07/11(月) 02:19:38.110658デフォルトの名無しさん
2011/07/11(月) 04:58:37.51Bの次
0659デフォルトの名無しさん
2011/07/11(月) 21:36:25.27ACPLという言語があって、
BCPLという言語があって、
その頭文字をとったBという言語があって、
次に2番目の文字とってCになった。
0660デフォルトの名無しさん
2011/07/11(月) 21:38:04.770661デフォルトの名無しさん
2011/07/11(月) 21:52:23.000662デフォルトの名無しさん
2011/07/11(月) 21:55:09.04そういう文化だったから、ってことなんだろう。
0663デフォルトの名無しさん
2011/07/11(月) 21:55:54.460664デフォルトの名無しさん
2011/07/11(月) 21:56:13.060665デフォルトの名無しさん
2011/07/11(月) 21:58:34.64AAだよ
0666デフォルトの名無しさん
2011/07/11(月) 22:00:54.03CCA
0667デフォルトの名無しさん
2011/07/11(月) 22:18:49.670668デフォルトの名無しさん
2011/07/11(月) 22:20:37.500669デフォルトの名無しさん
2011/07/11(月) 22:25:12.540670デフォルトの名無しさん
2011/07/11(月) 22:25:31.52テトリスとか作ってみたくなりました。
0671デフォルトの名無しさん
2011/07/11(月) 22:30:00.95環境依存なので実行環境を決めないと無理
0672デフォルトの名無しさん
2011/07/11(月) 22:31:54.430673デフォルトの名無しさん
2011/07/11(月) 22:42:10.72実行環境はWindows7です。
0674デフォルトの名無しさん
2011/07/11(月) 23:00:22.02SetConsole〜 が使えるかも
0675デフォルトの名無しさん
2011/07/11(月) 23:27:35.83グラフィクスよりも問題はキーボード
0676デフォルトの名無しさん
2011/07/11(月) 23:31:37.80ずーっとキーボードカタカタ言わせてた。
0677デフォルトの名無しさん
2011/07/11(月) 23:34:52.76これが一般的かどうかは知らない
0678デフォルトの名無しさん
2011/07/11(月) 23:35:14.770679デフォルトの名無しさん
2011/07/12(火) 00:33:46.960680デフォルトの名無しさん
2011/07/12(火) 01:18:49.570681デフォルトの名無しさん
2011/07/12(火) 01:21:54.25評価に値せず
0682デフォルトの名無しさん
2011/07/12(火) 11:22:04.22取得した領域は
free関数で先頭アドレス指定するだけで全領域解放されますか?
それとも要素数分free関数を呼ぶ必要がありますか?
0683デフォルトの名無しさん
2011/07/12(火) 11:25:06.630684デフォルトの名無しさん
2011/07/12(火) 11:46:33.760685デフォルトの名無しさん
2011/07/12(火) 13:29:46.09mallocした全ての分についてfreeする必要がある
0686デフォルトの名無しさん
2011/07/12(火) 15:01:09.900687デフォルトの名無しさん
2011/07/12(火) 15:38:47.80一度だけfreeの引数に渡して呼び出して良い
0688デフォルトの名無しさん
2011/07/12(火) 15:55:12.79一度の確保に対して
一度の開放という認識であってますか?
0689デフォルトの名無しさん
2011/07/12(火) 16:13:22.330690デフォルトの名無しさん
2011/07/12(火) 16:47:47.04読んだほうがいいと思う。
0691デフォルトの名無しさん
2011/07/12(火) 17:03:59.710692デフォルトの名無しさん
2011/07/12(火) 18:16:22.15alloc「はい、使い終わったらfree課に返しておいてください」
プログラム「free課さん、使い終わったメモリ返しに来ました」
free課「只今担当者が不在のためまた後ほどお越しください」
...
プログラム「あとで返しに来いといわれ、いま来たのですが」
free課「ちょっと処理機の調子が悪くて…また後日に(ry]
...
プログラム「今日返しに来いと言われたんですが」
free課「どのメモリか照合しますので少々お待ちください。」
...
free課「お待たせいたしました。このメモリはうちの課ではなく(ry」
プログラム「いい加減にせぇや!ゴルァ!!」
などと脳内コントがorz
0693デフォルトの名無しさん
2011/07/12(火) 19:10:01.000694デフォルトの名無しさん
2011/07/12(火) 19:51:07.950695デフォルトの名無しさん
2011/07/12(火) 22:00:21.790696デフォルトの名無しさん
2011/07/12(火) 23:14:18.840697デフォルトの名無しさん
2011/07/12(火) 23:26:33.300698デフォルトの名無しさん
2011/07/12(火) 23:49:05.170699デフォルトの名無しさん
2011/07/13(水) 00:22:01.30例えば1ピクセルが32bitの、320*240の画像データを、1次元配列に格納する場合は、
int a[320*240];
として、x=60, y = 30 のピクセルに書き込むには a[(320 * 30) + 60] とするのが常套手段ですが、これだと乗算が一回現れてしまいます。
乗算は遅いので、乗算は避けたいです。そこで
int a[240][320];
とした場合、a[30][60] でアクセスできますが、この場合、内部的には乗算が使われるのですか?
それとも、a[0]〜a[239]までの定数テーブルが定義されてて、乗算無しでアクセスされるのでしょうか?
これは仕様として内部動作の実装方法は規定されてるのでしょうか?
いずれにしてもint x[240] の配列を int* y[320]に登録する形にして、
x=60, y = 30 のピクセルに書き込むには、*((y[30])+60)とすれば、乗算を節約できて速くなるような気がするのですが、
これは a[(320*30)+60]や、a[30][60]でよりも高速になりますか?
それとも、CPUのパイプラインレベル等、何らかのオーバーヘッドが発生して逆に遅くなりますか?
試したいので誰か速度検証用に実験コード書いて下さい。
0700デフォルトの名無しさん
2011/07/13(水) 00:25:12.79コンパイラによっても違うしそれだけでは何とも言えない
0701デフォルトの名無しさん
2011/07/13(水) 00:27:14.49ランダムアクセスを想定してます。
0702デフォルトの名無しさん
2011/07/13(水) 00:28:32.40a[(320*30)+60] と a[30][60] は同じ速度になる可能性が高く
このアドレス演算は1命令で実行されるので早い
*((y[30])+60) にすると最低でも二回アドレス計算するので確実に遅くなる
0703デフォルトの名無しさん
2011/07/13(水) 00:29:06.04コンパイラーはGCC or ヴぃすあlC++を想定してます
0704デフォルトの名無しさん
2011/07/13(水) 00:29:40.310705デフォルトの名無しさん
2011/07/13(水) 00:31:27.37いやだからa[240][320]と大きさが固定されてるっしょ?
だからコンパイラはこれをヒントに大幅な最適化が可能なわけです
ポインタ配列はそのデータがL1/L2/L3キャッシュに乗っているかいないかで
大幅に速度が違ってくるので、CPUによっても異なり、なおさら一般的な
事は言えなくなる
0706デフォルトの名無しさん
2011/07/13(水) 00:31:58.901命令で実行されるとしても、その命令のレイテンシーはどうなのですか?割り算だって1命令ですよ。
0707デフォルトの名無しさん
2011/07/13(水) 00:32:31.79自分の書いたコードがどんな汗吐いてるか見るところからやったら
0708デフォルトの名無しさん
2011/07/13(水) 00:33:08.85あんた誰?
0709デフォルトの名無しさん
2011/07/13(水) 00:33:56.38y[240]のテーブルを予めprifetchしておけば、これだとどうですか?
0710デフォルトの名無しさん
2011/07/13(水) 00:35:27.10頭のいいふりするバカって嫌いなんだよ
0711デフォルトの名無しさん
2011/07/13(水) 00:41:00.31320は定数だけど30と60は変数です。
この場合も1命令で可能なのですか?
0712デフォルトの名無しさん
2011/07/13(水) 00:42:15.95そのための -S オプションだよ
0713デフォルトの名無しさん
2011/07/13(水) 00:42:24.33ここで聞けばとっくに誰かが測定コード書いてるだろうと思ったからです
0714デフォルトの名無しさん
2011/07/13(水) 00:43:01.86エディター開くのめんどくさい・・・
0715デフォルトの名無しさん
2011/07/13(水) 00:44:25.85ここまで基本的な処理の検証だと測定するよりまずアセンブラを読んでみるのが普通だと思う
お前もがんばれ
0716デフォルトの名無しさん
2011/07/13(水) 00:45:11.250717デフォルトの名無しさん
2011/07/13(水) 00:45:32.800718デフォルトの名無しさん
2011/07/13(水) 00:46:17.660719デフォルトの名無しさん
2011/07/13(水) 00:55:50.010720デフォルトの名無しさん
2011/07/13(水) 01:06:41.52ベンチマークに最適
0721デフォルトの名無しさん
2011/07/13(水) 01:09:00.220722デフォルトの名無しさん
2011/07/13(水) 01:14:20.990723デフォルトの名無しさん
2011/07/13(水) 01:15:01.50gcc -O0
a[240*y + x]
time seconds seconds calls Ts/call Ts/call name
100.00 4.18 4.18 main
a[y][x]
time seconds seconds calls Ts/call Ts/call name
100.00 4.18 4.18 main
*(Y[y] + x)
time seconds seconds calls Ts/call Ts/call name
100.00 4.18 4.18 main
z=240*y+x;
a[z]
time seconds seconds calls Ts/call Ts/call name
100.00 4.18 4.18 main
なにこの骨折り損感…
だ〜から聞いたんだっつ〜の…
ねるわ…orz
0724デフォルトの名無しさん
2011/07/13(水) 01:17:43.12最初のポインタ配列へのアクセスでキャッシュに残りが乗っちゃったようだね
そうなるとメインメモリへのアクセスが以降発生しなくなるからレイテンシがほとんどない
逆にL2/L3キャッシュが小さいCPUだとまた違う結果が出そうだ
0725デフォルトの名無しさん
2011/07/13(水) 01:18:41.27同じコードを吐いている可能性もあるしなあ
それで満足するのも・・・・
0726デフォルトの名無しさん
2011/07/13(水) 01:51:32.28全然差がないワロタ
0727デフォルトの名無しさん
2011/07/13(水) 02:22:57.54ideoneなら(一部の)boostも使えて便利だよ
0728デフォルトの名無しさん
2011/07/13(水) 02:24:45.660729デフォルトの名無しさん
2011/07/13(水) 02:29:14.100730デフォルトの名無しさん
2011/07/13(水) 02:32:09.00ためしにこうしてみた
ちょ・・・・・・・・
0731デフォルトの名無しさん
2011/07/13(水) 02:43:17.95ボトルネックは配列アクセスやアドレス生成じゃないだろ
やっぱりrand()?
0732デフォルトの名無しさん
2011/07/13(水) 02:56:12.03二次元配列を使おうが、普通に乗算しようが基本的に同じだと思う。
そこまで速度にこだわるなら、画像幅を2の累乗(320なら512)に切り上げて、ビットシフトだけで演算できるようにしたほうが良い。
コンパイラがどういう命令を吐いているかは、VC++なら/Faオプションで調査できる。
最適化レベルによっては、整数倍を勝手にビットシフトに展開することがある。例えば320倍ならば、(x << 8) | (x << 6)などに。
自分でインラインアセンブラで書いて検証するのも一つの手だが、コンパイラの吐いたコードはそれなりにCPUの特性を考慮してくれているので、まずそれを参考にするのがお勧め。
各ラスタの開始アドレスを覚えておく方法は、乗算一個ごときのためならお勧めしかねる。メモリアクセスにだってコストはあるし、キャッシュの無駄。
ところでx86のmul命令って、今でもまだクソ遅いのかな…。ターゲット機によるかも知れんが。
0733デフォルトの名無しさん
2011/07/13(水) 03:58:17.81乱数を最初に生成しておいたら0.00sになりやがった
0734デフォルトの名無しさん
2011/07/13(水) 04:06:36.50おっこれなら結構差が出るじゃん
0735デフォルトの名無しさん
2011/07/13(水) 08:17:55.60誤 : (x << 8) | (x << 6)
正 : (x << 8) + (x << 6)
0736デフォルトの名無しさん
2011/07/13(水) 09:23:38.03だとしたらこの初心者スレで聞いても住人の数学レベルじゃ
ついていけないんじゃね?
このスレは高卒もいるだろうし。
0737デフォルトの名無しさん
2011/07/13(水) 09:29:39.610738デフォルトの名無しさん
2011/07/13(水) 09:37:57.29だからこの手のはアセンブラみねーと意味ねーつってるだろ?
http://ideone.com/AONhS
お前のその差はアクセス方法からくる差じゃない
0739デフォルトの名無しさん
2011/07/13(水) 09:38:29.540740デフォルトの名無しさん
2011/07/13(水) 09:39:37.74ごめん間違えたこっち
いや結果は変わらないんだけど
0741デフォルトの名無しさん
2011/07/13(水) 09:40:10.38高卒の知識なら説明よめば理解可能だろうって意味だろどう考えても
0742デフォルトの名無しさん
2011/07/13(水) 09:42:59.12大学生は普通高校卒業してからなるものだから
0743デフォルトの名無しさん
2011/07/13(水) 09:48:15.10フーリエ変換ってなにするもの?
0744デフォルトの名無しさん
2011/07/13(水) 09:49:08.880745デフォルトの名無しさん
2011/07/13(水) 09:49:33.25それは承知だが大学受験しない奴は�VCを習ってないんじゃないか?とも思うが。
0746デフォルトの名無しさん
2011/07/13(水) 09:50:35.940747デフォルトの名無しさん
2011/07/13(水) 09:51:32.36そういうえばそうだごめんなさい
さすがにそこからだと隔絶大きいな
0748デフォルトの名無しさん
2011/07/13(水) 09:53:17.730749デフォルトの名無しさん
2011/07/13(水) 09:54:13.510750デフォルトの名無しさん
2011/07/13(水) 09:55:22.56画像とか音とかアナログ量をコンピュータ上で扱うのに便利かもね
0751デフォルトの名無しさん
2011/07/13(水) 09:59:50.74一般的にいったら、ベクトル空間の基底変換だろ。
特殊なケースとして、関数空間(ある性質をもった関数全体)がベクトル空間となり
そこでの特殊な基底変換がフーリエ変換。
基底変換はフーリエ変換に限らずいくらでもある。
0752デフォルトの名無しさん
2011/07/13(水) 10:01:37.84それに受験しないんだから1A2Bの知識だってかなり薄いんじゃね?
フーリエ変換ってのは画像の色の変化を波でとらえること。
数学においては全ての波は正弦波に分解できる。
0753デフォルトの名無しさん
2011/07/13(水) 10:02:11.34ありがとうございました
0754デフォルトの名無しさん
2011/07/13(水) 10:22:55.06ローレンツ変換は、2 つの慣性系の間の座標を結びつける線形変換で、
電磁気学と古典力学間の矛盾を回避するために、ジョセフ・ラーモア(1897年)とオランダのヘンドリック・ローレンツ(1899年、1904年)により提案された。
アルベルト・アインシュタインが特殊相対性理論(1905年)を構築したときには、慣性系間に許される変換公式として、理論の基礎を形成した。
幾何学的には、ミンコフスキー空間における 2 点間の世界間隔を不変に保つような、原点を中心にした回転変換を表す。
ローレンツ変換のうち、空間と時間が関与する方向への変換をローレンツブースト (Lorentz boost) と呼ぶ。
特殊相対論が導く、我々の直感に反する事柄のほとんどは、このローレンツブーストからの帰結である。
ローレンツ変換 - Wikipedia
0755デフォルトの名無しさん
2011/07/13(水) 10:34:51.47サポートベクターマシンは、教師あり学習を用いる識別手法の一つである。多くの手法の中で一番認識性能が優れた学習モデルの一つである。
各データ点との距離が最大となる超平面を求めるマージン最大化という基準で線形入力素子のパラメータを学習する。
線形分離不可能な問題への適用
再生核ヒルベルト空間の理論を取り入れたカーネル関数を用いてパターンを特徴空間へ写像し、
特徴空間上で線形分離を行う手法が 1992年に Vladimir Vapnik らによって提案された。
これにより、非線形分類問題にも優れた性能を発揮することがわかり、近年特に注目を集めている。
サポートベクターマシン - Wikipedia
0756デフォルトの名無しさん
2011/07/13(水) 10:36:27.800758デフォルトの名無しさん
2011/07/13(水) 11:23:16.16習得するだけなら頭使わなくても参考書適当にひきゃ十分だろ
0759デフォルトの名無しさん
2011/07/13(水) 11:59:23.29のし
ラプラス変換ではなくて?あと線形微分方程式ね。
フーリエ級数展開の拡張形という見方もわかりやすい。フーリエ級数展開、なら高校生にも理解できる(証明はべつとして)。
ポインタ/キーワードを提供していただく、という意味で、好意的に捉えています。
0764デフォルトの名無しさん
2011/07/13(水) 12:56:21.850765デフォルトの名無しさん
2011/07/13(水) 13:02:53.90数式はないの?
0766デフォルトの名無しさん
2011/07/13(水) 13:03:47.040767デフォルトの名無しさん
2011/07/13(水) 13:06:10.78熱伝導の研究からフーリエ解析に発展した
高校教師の時代もあったし考古学の研究をしてたときもあった
0768デフォルトの名無しさん
2011/07/13(水) 13:09:08.90実空間の畳み込みのフーリエ変換は、元の関数のそれぞれのフーリエ変換の単純な積になる。
多項式の乗算、即ち、離散系の畳み込みをフーリエ空間で行い、それを実空間に戻して、数値の乗算をしたことにする。
今、4096個の一次元データに4096個データの一次元フィルタを掛けるとすれば、
実空間では、4096*4096 約1678万回の乗算が必要となるが、DFTでは、畳み込みだけでは、0.4万回で済む。
前後に3回のDFTが必要となるが約200倍のスピードとなる。
http://www.nextftp.com/swlabo/m0_pctech/hp_ultraprecision/up_815_1.htm
実空間では総当り フーリエ空間では要素間
http://www.nextftp.com/swlabo/m0_pctech/hp_ultraprecision/up_815_1.files/image001.gif
0769デフォルトの名無しさん
2011/07/13(水) 13:47:17.250770デフォルトの名無しさん
2011/07/13(水) 14:40:16.23もう休んでいいよ
0771デフォルトの名無しさん
2011/07/13(水) 14:44:29.622次元グラフなんかを習う時に、直交基底、直交基底関数の概念習うから
中学1年でも解るんじゃないのか
0772デフォルトの名無しさん
2011/07/13(水) 14:49:22.20何かの面積習うだけで積分の概念思いついちゃう人もいるしな
0773デフォルトの名無しさん
2011/07/13(水) 14:59:38.32そういうところで低脳と高脳の違いがでるんだろうな
0774デフォルトの名無しさん
2011/07/13(水) 15:02:59.000775デフォルトの名無しさん
2011/07/13(水) 15:17:33.500776デフォルトの名無しさん
2011/07/13(水) 15:54:11.47で、その映された君の瞳の中には彼女が映って...という具合だ。
突き詰めていくと彼女の心がわかる。それが微分。
反対に君の心がわかるのが積分というわけ。
0777デフォルトの名無しさん
2011/07/13(水) 15:58:01.970778デフォルトの名無しさん
2011/07/13(水) 16:02:49.380779デフォルトの名無しさん
2011/07/13(水) 16:07:37.93積分すれば三次元になるぞ!
0780デフォルトの名無しさん
2011/07/13(水) 17:24:25.12例えばワークで
03 DATE-WK PIC 9(08).
03 FILLER REDEFINES DATE-WK.
05 YEAR-WK PIC 9(04)
05 MONTH-WK PIC 9(02).
05 DAY-WK PIC 9(02).
とあって、DATE-WKに20110711が入っていたら
MONTH-WKは07、DAY-WKは11という値が入ります。んでCでは共用体っつーのが
あって、これと似たような事が行えると聞きましたが、本読んでもぴんと
きません^^;
この例で日付の変数に20110711が入っていて、月、日を利用する例を示して
いただけませんか
0781デフォルトの名無しさん
2011/07/13(水) 17:59:08.57#include <string.h>
#include <stdio.h>
union shine {
char s[8];
struct {
char year[4];
char month[2];
char date[2];
} unko;
};
int main( void ) {
union shine p;
memmove(p.s, "20110711", 8);
fwrite(p.unko.year, 1, sizeof p.unko.year, stdout);
putchar('\n');
fwrite(p.unko.month, 1, sizeof p.unko.month, stdout);
putchar('\n');
fwrite(p.unko.date, 1, sizeof p.unko.date, stdout);
putchar('\n');
return 0 ;
}
無理矢理やってこんな感じかね
Cではprintf("%s".....)で使えるような文字列は\0終端のchar配列なのでこんな有様になる
0782デフォルトの名無しさん
2011/07/13(水) 18:01:42.41unko の人か
printf("%.4s\n", p.unko.year);
とかもできるよ
0783デフォルトの名無しさん
2011/07/13(水) 18:03:29.05それをしないためのsizeofでしょ
0784デフォルトの名無しさん
2011/07/13(水) 18:06:31.07どういうこと?
%.*s もあるよ
0785デフォルトの名無しさん
2011/07/13(水) 18:06:41.83Cは数値はバイナリだし、文字列もあんまり便利にならないから
YYYYMMDDから要素を取り出すのに普通は共用体は使わない。
やりたいなら↑の人みたいにできるけど。
0786デフォルトの名無しさん
2011/07/13(水) 18:08:52.16そんなのあったなぁ
%s使えないという表現で言いたかったのは
つねにサイズを意識しなきゃいけないからめんどいからやめたほうがいいと言いたかった
printfを挙げたげたのは不適切でしたすいません
0787デフォルトの名無しさん
2011/07/13(水) 18:12:33.74それなら分かる
0788780
2011/07/13(水) 18:52:21.74回答見て勉強してみます
0789デフォルトの名無しさん
2011/07/13(水) 20:41:43.66for (i = 0; str[i]; i++);
while(i--)
printf("%c",str[i]);
printf("\n");
というソースがあるのですがこれは
for (i = 0; str[i]; i++){
while(i--){
printf("%c",str[i]);
printf("\n");
}
}
だと実行出来ないのは何故ですか?
またwhile(i--)の意味がよく分からないのですがこれはどういう意味ですか?
while(i != 0)のような条件を入れるものだと聞いていたのですがこの場合は違いますよね・・・?
0790デフォルトの名無しさん
2011/07/13(水) 20:44:56.13実行は出来るんじゃないの。
それと元のコードと同様の意味になるのは下記。
for (i = 0; str[i]; i++){
while(i--){
printf("%c",str[i]);
}
printf("\n");
}
while(i--)
だが while (x) と while (x != 0)は同等
0791デフォルトの名無しさん
2011/07/13(水) 20:58:34.52ありがとうございます
書きなおしたのですが実行すると
無限ループ?になってしまうのですが何が原因でしょうか?
以下全文です
#include<stdio.h>
int main( void ) {
char str[256] ;
int i ;
scanf("%s", str) ;
for (i = 0; str[i]; i++){
while(i!=0){
printf("%c",str[i]);
}
printf("\n");
}
return 0 ;
}
0792デフォルトの名無しさん
2011/07/13(水) 21:03:27.99元のコードはfor文で文字列の長さを求めてからwhile文を実行している
下のコードは1文字毎にwhileを実行している
0793デフォルトの名無しさん
2011/07/13(水) 21:13:55.010794デフォルトの名無しさん
2011/07/13(水) 21:18:17.83ありがとうございます
自分の理解力が足りてないみたいなんでもう少し考えてきます
0795デフォルトの名無しさん
2011/07/13(水) 21:18:47.550796デフォルトの名無しさん
2011/07/13(水) 21:39:53.600797699
2011/07/13(水) 22:11:24.50おつです。
どうやら速度的にはa[y][x]か*(y_table[y] + x)が速いみたいですね。
>>732のコードも気になるので、
>>723の横幅を320から512に変更したint a[512 * 240] の配列に対して、
a[(y << 9) + x]でアクセスする場合も、追記おねがいします!
フーリエ変換は知らないけど、jpgの圧縮の原理にも関係してるみたいです。jpgデコーダー組んだこと無いので詳しくは知りませんが、
たとえば、簡単の為に(RGBそれぞれではなく)、1次元の画像データの各ピクセルの明度だけの場合で考えてみると、
たとえば a[8] = {0.45, 0.46, 3.47, 0.48, 0.49, 0.50, 0.51, 0.52};っていう8ピクセル分の明度データがあったとして、
float w = 3.14 / 8;
float f(float* A, int k){
s = 0;
for(i=0; i<8; i++) {
s += A[i] * cos( w * (i+(1/2)) * (k+(1/2)) );
}
return s
}
によって b[0] = f(a, 0); b[1] = f(a, 1); ... b[7] = f(a, 7);とした結果が
b[8] = {2.4, -0.9, 0.5, -0.4, 0.3, -0.29, 0.27, -0.26}; という値になるのですが、
この f() を通した結果は、大抵の画像で、最初ほど数字が大きくて、後ろに行くほど数字が小さいというデータになるので、
後ろの数字ほど、記録に使うビット数(桁数や精度)を少なくできるので、これを利用してデータ圧縮してるそうです。
このb[]を再び a[0] = f(b, 0); a[1] = f(b, 1); ... a[7] = f(b, 7);とすれば、元の明度データ(と似た値)が得られます。
このb[]に記録する際の、精度の落とし具合が、圧縮率と再現度に反比例して影響してるのだと思います。
jpgエンコーダー組んだこと無いのでよく知りませんが。
誰か簡単なjpgエンコーダー書いてくれるとおもしろいです。よろです。(独自フォーマットのなんちゃってjpgや、機能限定的でもいいので)
0799デフォルトの名無しさん
2011/07/14(木) 02:31:43.91こんな感じでポインタ配列が一番速いですね
CPUはi7か何かなんでしょうね
ポインタ配列がL3に乗ってしまってるんじゃないでしょうか
0800デフォルトの名無しさん
2011/07/14(木) 02:32:07.35http://ideone.com/DH4Pm
0801デフォルトの名無しさん
2011/07/14(木) 06:17:12.78>>734は思い切りつっこみ入れられてるようだが鵜呑みにしちゃうのか?
0802デフォルトの名無しさん
2011/07/14(木) 06:32:21.72キャッシュのせいだろうね
http://ideone.com/4e0l2
こうすると他のも速くなるし
0803デフォルトの名無しさん
2011/07/14(木) 16:02:18.04C言語できたら何が作れる?
彼女くらいは作れるの?
0804デフォルトの名無しさん
2011/07/14(木) 16:07:32.770805デフォルトの名無しさん
2011/07/14(木) 16:38:00.740806デフォルトの名無しさん
2011/07/14(木) 16:44:30.85お前が教えた言葉を覚えてどんどん会話がうまくなるAI作ればいいよ
0807デフォルトの名無しさん
2011/07/14(木) 16:56:27.76成長せんだろうな
0808デフォルトの名無しさん
2011/07/14(木) 20:18:07.59なぜか、いつの間にか後輩の世話をさせられ、顧客との折衝させられ、
ドキュメンテーションと生意気な後輩の成果物のチェック作業ばかり・・・
3年以上コーディングしてねぇ・・・なんでこうなるんだorz
0809デフォルトの名無しさん
2011/07/14(木) 20:40:24.05一度確認してもらったらもうあとは先輩の責任ですからね
0810デフォルトの名無しさん
2011/07/14(木) 21:07:53.210811デフォルトの名無しさん
2011/07/14(木) 22:44:43.23プロトタイプ宣言のとき引数は省略してもいいらしいですが*も省略していいんですか?
0812デフォルトの名無しさん
2011/07/14(木) 22:51:22.290813デフォルトの名無しさん
2011/07/14(木) 22:53:37.860814デフォルトの名無しさん
2011/07/14(木) 23:00:28.270815デフォルトの名無しさん
2011/07/14(木) 23:01:54.870816デフォルトの名無しさん
2011/07/14(木) 23:07:24.610817デフォルトの名無しさん
2011/07/14(木) 23:09:27.21int b ,c ; /*問題生成用*/
int t=1;
int h=2;
int k=3;
int w=4;
int i = t,h,k,w ;
char* enzasi=("+","-","*","/");
char t='+'; /*式の+-/*の役目*/
char h='-'; /*同*/
char k='*'; /*同*/
char w='/'; /*同*/
これをコンパイルすると複数宣言でエラーが出るんですがどうやったら治りますか?
0818デフォルトの名無しさん
2011/07/14(木) 23:19:22.80別の名前に変える
0819デフォルトの名無しさん
2011/07/14(木) 23:21:42.610820デフォルトの名無しさん
2011/07/14(木) 23:24:18.270821デフォルトの名無しさん
2011/07/14(木) 23:26:42.660822デフォルトの名無しさん
2011/07/14(木) 23:29:11.22他人はおろか自分でもその内何がどの値を持ってるか混乱するのがオチだ。
そしてちゃんと意味のある単語をそれぞれに付ければ自然と重複も解消する。
0823デフォルトの名無しさん
2011/07/15(金) 00:00:58.11Unixの文化ってのはそういうものだよ。
むしろ昨今のやたらと長い識別子の方が有害だわ。
0824デフォルトの名無しさん
2011/07/15(金) 00:01:57.190825デフォルトの名無しさん
2011/07/15(金) 00:02:49.77そこでのプログラムが一文字変数のオンパレードで「難しくする所違うだろ!」って突っ込みたくなった
0826デフォルトの名無しさん
2011/07/15(金) 00:13:24.980827デフォルトの名無しさん
2011/07/15(金) 00:16:38.48この手の自己満足には付き合ってられないよなw
0828デフォルトの名無しさん
2011/07/15(金) 00:24:32.21「グローバル変数は分かりやすくした方がいいけど、ローカル変数なら短くてもよくね?」
って書いてある
0829デフォルトの名無しさん
2011/07/15(金) 00:26:56.12なんでも長い名前にしたりする前に、
変数を整理したりスコープを適切にしたり、
そっちに注力しる、と。
0830デフォルトの名無しさん
2011/07/15(金) 00:43:32.15まあスコープ絞って宣言にコメントつけておけば意味は分かるしいいのか
0831デフォルトの名無しさん
2011/07/15(金) 00:54:52.81どいつもこいつも大嘘つき野郎だと思う
0832デフォルトの名無しさん
2011/07/15(金) 00:55:50.80だなw 俺も実はかつて陥ったことがあるからわかるw
工夫した変数名でカバーできる? そーいう問題じゃなかった。
0833デフォルトの名無しさん
2011/07/15(金) 01:07:55.15大抵>>826のように空白すらロクに使えないからな。
可読性を語ること自体おこがましいレベルの傲慢さ。
0834デフォルトの名無しさん
2011/07/15(金) 08:08:37.37長い変数名にしてコメントなしで分かる方がマシ
0835デフォルトの名無しさん
2011/07/15(金) 08:39:53.75コメントにはコードを補足する情報
(例えば、使用するアルゴリズムが載ってる論文とか)
を書く俺に死角は無かった
0836デフォルトの名無しさん
2011/07/15(金) 08:56:17.890837デフォルトの名無しさん
2011/07/15(金) 15:42:58.39空白入れれば見やすくなるとか そういう次元超えてるだろ
0838デフォルトの名無しさん
2011/07/15(金) 15:44:04.641画面以内で役目を終えるような短命な変数には
iとかaとかpとか適当につけてるな
0839デフォルトの名無しさん
2011/07/15(金) 17:23:30.30やっぱ仕事でってなると
変数名やら関数名、コメントの書き方まで
しっかりテンプレみたいなのがあるのか?
0840デフォルトの名無しさん
2011/07/15(金) 17:27:14.90#define 登録しろだってさ。
自分が派遣された先ではデバッガーとして派遣されたからそういうルールは指導されなかった。
0841デフォルトの名無しさん
2011/07/15(金) 17:29:32.36まあ、常識だしな。
0842デフォルトの名無しさん
2011/07/15(金) 17:56:00.900843デフォルトの名無しさん
2011/07/15(金) 18:42:44.65オーバーヘッドみたいなもんかな
0844デフォルトの名無しさん
2011/07/15(金) 18:52:23.96Cじゃないけど「Google C++スタイルガイド」でググると
仕事で使うような規約が見られるよ
0845デフォルトの名無しさん
2011/07/15(金) 19:42:48.080846デフォルトの名無しさん
2011/07/15(金) 19:44:18.020847デフォルトの名無しさん
2011/07/15(金) 20:20:47.75腐ってやがる。
0849デフォルトの名無しさん
2011/07/15(金) 20:31:03.64マジックナンバーなんかあるプロジェクトに出くわしたら、早めに逃げるが勝ち
0850デフォルトの名無しさん
2011/07/15(金) 20:33:49.670851デフォルトの名無しさん
2011/07/15(金) 20:36:25.80でいろんなとこでいろんな意味の0として使うのはまったく意味無いよな
後で変えようにも変えられない
0852デフォルトの名無しさん
2011/07/15(金) 20:45:59.69errnoってどんな機能なんですか?
ヘッダファイルとして使ってるプログラムあるけど
良く分かりません。
0853デフォルトの名無しさん
2011/07/15(金) 20:51:58.13エラー情報を管理するグローバル変数持ってて
その他の関数が吐いたエラーに応じて値が変わるから
エラー管理が容易になるとかじゃね?
0854デフォルトの名無しさん
2011/07/15(金) 21:02:22.66見たけど
#ifndef #endifとかってなんですか?
入門書のってないです。
0855デフォルトの名無しさん
2011/07/15(金) 21:05:49.300856デフォルトの名無しさん
2011/07/15(金) 21:20:02.81頭悪すぎだろ
0857デフォルトの名無しさん
2011/07/15(金) 21:27:44.61int main(){
return ZERO;
}
0858デフォルトの名無しさん
2011/07/15(金) 21:52:14.140859デフォルトの名無しさん
2011/07/15(金) 22:10:22.51ttp://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/errno.3.html
0860デフォルトの名無しさん
2011/07/16(土) 01:25:09.35float x, y, z, pad;
} __attribute__((aligned(16)));
void tt_inner_cube_vertex(
struct TT_VECTOR* dst,
struct TT_VECTOR* src,
struct TT_VECTOR* min_cube,
struct TT_VECTOR* max_cube
)
{
if(src->x < min_cube->x) {dst->x = min_cube->x;} else {dst->x = src->x;}
if(src->y < min_cube->y) {dst->y = min_cube->y;} else {dst->y = src->y;}
if(src->z < min_cube->z) {dst->z = min_cube->z;} else {dst->z = src->z;}
if(dst->x > max_cube->x) {dst->x = max_cube->x;}
if(dst->y > max_cube->y) {dst->y = max_cube->y;}
if(dst->z > max_cube->z) {dst->z = max_cube->z;}
}
頂点XYZが、キューブのXYZ最小値と最大値の範囲外の場合は、その境界位置までアジャストする関数。
よくあるmin,maxテストのようなもの。それにアジャスト機能を追加したもの。
0861860
2011/07/16(土) 01:31:59.79このページを眺めつつ
SSEに置き換える方法を考えてたら、おもしろいことになった。
#define TT_INNER_CUBE_VERTEX(dst, src, min_cube, max_cube) { \
__asm__ volatile( \
"movaps (%1), %%xmm0;" \
"maxps (%2), %%xmm0;" \
"minps (%3), %%xmm0;" \
"movaps %%xmm0, (%0);" \
: \
:"r"((dst)), "r"((src)), "r"((min_cube)), "r"((max_cube)) \
:"memory" \
); \
}
たった4行で同じ処理が書けた
SSEスゲー!!
0862デフォルトの名無しさん
2011/07/16(土) 01:58:53.770863デフォルトの名無しさん
2011/07/16(土) 11:53:41.14MMX、SSEって、そーゆーことだったのかwww なんか使いたくなったw
0864デフォルトの名無しさん
2011/07/16(土) 12:48:56.89UI配置とかウインドウとかメニューつけたりするプログラミングできるのってなに?
win32っていうやつみたら これ自分で全部ウインドウつくったりメニューコードかいたり
すごいめんどくさそうなんだけど
xcodeみたいでCocoaみたいでObjective-cみたいな言語はウインドウズにないの?おしえてください
0865デフォルトの名無しさん
2011/07/16(土) 13:09:23.36for( int i = 0; i < N; i++ )
{
for( int i = 0; i < M; i++ )
{
B[ i ] = A[ i ]
}
}
って書くと、内側のiが使われるんですが、
これってC++の規格レベルで規定されていることなんでしょうか??
0866デフォルトの名無しさん
2011/07/16(土) 13:14:46.85で、B と A のどちらに外側の i を使って欲しかったんだ?
これを見る限り手がかりは全くないが
0867デフォルトの名無しさん
2011/07/16(土) 13:21:52.18c#とかvbじゃ?
0868デフォルトの名無しさん
2011/07/16(土) 13:30:12.61Java
お間抜けなボクちゃんには難しいかもしれないが、スレ違いだ。、
0870865
2011/07/16(土) 13:53:34.20人様のコードなのですが、意味的にはA、Bのどちらにも内側のiが使われるのが正しいので、大丈夫なのですが、
ちょっと怖い記述だなぁ、と思いまして・・・
やっぱりコンパイル通るのおかしいですよね・・・
0871デフォルトの名無しさん
2011/07/16(土) 14:12:42.14おかしいのはお前の頭だから消えろ
0872デフォルトの名無しさん
2011/07/16(土) 14:13:33.29cでもc++でも問題ない。
0873デフォルトの名無しさん
2011/07/16(土) 14:31:25.260874デフォルトの名無しさん
2011/07/16(土) 14:32:31.10こんな感じ
0875デフォルトの名無しさん
2011/07/16(土) 14:38:37.17> 8:for(i=0; i<=5; i++) {
ソース換わってるやん。
0876デフォルトの名無しさん
2011/07/16(土) 14:42:47.21すまん、良く見てなかった
人様のコードにこんな処理が出てくる事は無いわな
0877デフォルトの名無しさん
2011/07/16(土) 14:53:30.34http://ideone.com/oyGai
language: C99 strict (gcc-4.3.4)
http://ideone.com/3tLqM
0878デフォルトの名無しさん
2011/07/16(土) 14:53:32.05同名の変数があった場合、内側を優先するのは決まってる
0879864
2011/07/16(土) 14:57:43.22#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
};
}
これってC#の言語?
C++?どっち?
MFCっていうのやろうと思いました xcodeみたいだったしVisucalC++の
よくわからない言語が
MFCってC使うの?それともC++?それともC#?どれ・・・あいまいにしか乗ってない
0880デフォルトの名無しさん
2011/07/16(土) 15:00:07.40xcodeみたいなのは.netだよ
mfcはコードガリガリ
0881864
2011/07/16(土) 15:03:05.99いまVisual C++2010のExpress使ってるんだけど
Xcodeみたいじゃない?
これコードガリガリなの?
なんかちゃんと ボタン配置とかウインドウのサイズをマウスでかえられるけど
.netのまた探すの大変だから
どれやればいい・・・なんか開発ソフトとか使う言語がわかればすぐできる
.netのどれ?.netを使うにはVisualC++2010?
0882デフォルトの名無しさん
2011/07/16(土) 15:07:58.44それが.netだよ。。。
mfcは有料版にしか付いてない
0883デフォルトの名無しさん
2011/07/16(土) 15:10:01.23win32 程度で「面倒臭そう」なら、おまえ GUI には向いてないよ
自由度が高いほどパラメータ指定が増えるのは必然で
定型的なプログラムならわざわざ C で書く必要性がない
MFC は C++ だが C++ として変則的な使い方をしまくっている
0884864
2011/07/16(土) 15:15:19.71ありがとう
.NETでやってみる
うるせーーかす
あほか
win32どうみてもめんどくせーよ
メニューとか全部コードでかくんだろアホくさ
0885デフォルトの名無しさん
2011/07/16(土) 15:17:01.45適当なライブラリ使えばいいだろ
0886デフォルトの名無しさん
2011/07/16(土) 15:21:17.86は? メニューはリソースで作るんだが、アホなの? 死ぬの?
それがメニューはコードからも記述できるのです。
つ http://wisdom.sakura.ne.jp/system/winapi/win32/win80.html
0888864
2011/07/16(土) 15:47:46.05すごいうれしい
0890デフォルトの名無しさん
2011/07/16(土) 15:49:08.08ひっこんでろ。うんこ。
0892864
2011/07/16(土) 15:50:17.11おかげで参考にしっ
0893864
2011/07/16(土) 15:50:32.180894864
2011/07/16(土) 15:55:40.83ってことは
コード以外でやるほうほうあるの?win32
なんかマウスでウインドウ出したりできないの?
>それがメニューはコードからも記述できるのです。
これおしえて メニューはメニュー配置の部品みたいなのドロップするとかあるの?おしえて
それは.NETでやるの?
0895デフォルトの名無しさん
2011/07/16(土) 15:57:29.230896デフォルトの名無しさん
2011/07/16(土) 16:01:09.36expressにはリソースエディタ付いてないのか?
0897デフォルトの名無しさん
2011/07/16(土) 16:03:18.310898デフォルトの名無しさん
2011/07/16(土) 16:03:23.62今は知らない。
0899864
2011/07/16(土) 16:06:08.02それでウインドウとかボタンとかドロップできる
Xcodeみたいに
だけどそれ.NETじゃないの????
win32だとコードかくみたいだけど(SDK)
うわああめんどくさい
かすみたい
C言語
0900デフォルトの名無しさん
2011/07/16(土) 16:14:37.22いやです。いずれモリタポスレに誘導をかけまくりますので、そのときはよろしく。
0902デフォルトの名無しさん
2011/07/16(土) 16:20:29.860903デフォルトの名無しさん
2011/07/16(土) 16:24:20.02http://msdn.microsoft.com/ja-jp/beginner/bb964629(en-us).aspx
0904デフォルトの名無しさん
2011/07/16(土) 17:49:23.130905デフォルトの名無しさん
2011/07/16(土) 17:59:41.15リソースコンパイラ通してバイナリになるぞ
0906デフォルトの名無しさん
2011/07/16(土) 18:21:17.230907デフォルトの名無しさん
2011/07/16(土) 18:23:06.710908デフォルトの名無しさん
2011/07/16(土) 19:07:19.77使いまわせる資源。かな
英語版と日本語版作る時、出来上がったファイルに.res(バイナリにしたリソースファイル)を再リンクさせればおk
0910デフォルトの名無しさん
2011/07/16(土) 20:35:14.10ここはcスレだ。
0911デフォルトの名無しさん
2011/07/16(土) 20:41:57.79なに独占しようとしてんだカス
0912デフォルトの名無しさん
2011/07/16(土) 21:12:10.76バカ1匹が仕事なくすだけだからw
0913デフォルトの名無しさん
2011/07/16(土) 21:15:01.450914デフォルトの名無しさん
2011/07/17(日) 01:22:01.09ちょっと高いところにとまったので、ティッシュでくるんで外に逃がしてやろうと
キャスター付きの椅子に登って捕まえたらバランスを崩し、右腕の肘に近い所を
強打しました
蜂は無事逃がしましたが、痣になってて痛いんですけどどうしたらいいでしょうか?
0915デフォルトの名無しさん
2011/07/17(日) 01:26:17.230916デフォルトの名無しさん
2011/07/17(日) 01:32:08.360918デフォルトの名無しさん
2011/07/17(日) 01:34:26.77それはBのスレで聞くと良いんじゃないかな
ここはCのスレだからね
0919デフォルトの名無しさん
2011/07/17(日) 02:06:51.02Bee(蜂)か
誰がうまい事言えと(ry
0920デフォルトの名無しさん
2011/07/17(日) 13:09:30.01まとめて読み出すのでは全然速度が違いました。
具体的には、
( HDD → 2Byte → エンディアン変換 → メモリ上配列 ) × 要素数
よりも
HDD → 18KB → メモリ上配列 → ( エンディアン変換 × 要素数 )
が遥かに速かったです。
これはHDDにアクセスする際、最初のオーバーヘッドが大きいためなんでしょうか??
0921デフォルトの名無しさん
2011/07/17(日) 13:17:07.04何使って読み込んだんだ
0922デフォルトの名無しさん
2011/07/17(日) 13:21:06.00C標準だけでできる巨大ファイルの扱い方を教えてください
ReadFile()を2バイトずつ使ったのならそりゃ遅くて当然。
APIを使う必然性がないなら標準関数を使うのが無難。
0925デフォルトの名無しさん
2011/07/17(日) 15:14:52.98それをまともに扱えるosと処理系があれば、普通に標準関数で充分。
0926デフォルトの名無しさん
2011/07/17(日) 17:17:52.10Windowsの場合、標準関数(freadの事か?)はReadFileを使って実装されてるんじゃないか?
0927デフォルトの名無しさん
2011/07/17(日) 17:23:48.46そっちはそっちでバッファ持ってるし
0928デフォルトの名無しさん
2011/07/17(日) 17:33:00.78やってみりゃ分かるんだろうが、面倒だからやらないけど、
ReadFileの2byteずつ読みが遅いとして、その速度改善のアプローチとしてfreadに
するってのはどうなの?
0929デフォルトの名無しさん
2011/07/17(日) 17:35:12.60何か問題ある?
0930デフォルトの名無しさん
2011/07/17(日) 17:37:53.83エラーチェックのオーバーヘッドを考えれば、どのみち自前のバッファ用意するハメになると思うんだけど
0931デフォルトの名無しさん
2011/07/17(日) 17:42:37.42freadの方がReadFileよりバッファの使い方がうまいとかで、速くなるのは確定なの?
それとも速度に影響する別のファクターがあって(パラメータの数の違いとか、
APIを呼び出す時のシステムコールが遅いとか)そういう理由?
速くなるわけを教えてくれ
0932デフォルトの名無しさん
2011/07/17(日) 17:50:19.60もっと(言葉を)優しくしてほしいな・・・///
0933デフォルトの名無しさん
2011/07/17(日) 18:16:23.49ということと
バッファリングしてる
という2つを考えたら、バッファで間に合う範囲では
ReadFileを呼ばずに済むと言うことにならんか?
そして、>>920でもReadFileの呼び出し回数が違うだろう
0934デフォルトの名無しさん
2011/07/17(日) 18:18:31.64そうだよ
一番効率がいいのは自前のバッファ
0935デフォルトの名無しさん
2011/07/17(日) 18:42:34.54freadにするだけで速くなるそうだ。
試して結果報告よろしく
0936デフォルトの名無しさん
2011/07/17(日) 18:50:02.920938デフォルトの名無しさん
2011/07/17(日) 21:23:36.26読み込むルーチンを作ったことあるな
0939デフォルトの名無しさん
2011/07/17(日) 21:26:32.950940デフォルトの名無しさん
2011/07/17(日) 21:35:42.77そんなんで勝ち誇ったつもりになるな
0941デフォルトの名無しさん
2011/07/17(日) 21:43:37.670942デフォルトの名無しさん
2011/07/17(日) 22:39:49.51たいして効果なかったろ?
0943デフォルトの名無しさん
2011/07/18(月) 01:28:59.79いまどきだとOSが先行して読んでくれるから
あんまり効果ないんじゃない?
0944デフォルトの名無しさん
2011/07/18(月) 02:12:32.69なぜ言う事聞いてくれないんだww馬鹿めw
0945デフォルトの名無しさん
2011/07/18(月) 02:17:03.66アナタノシジガマチガッテイルノデス
0946デフォルトの名無しさん
2011/07/18(月) 02:22:13.850947デフォルトの名無しさん
2011/07/18(月) 03:28:21.54お前が馬鹿だよw
先ずは日本語の勉強をどうぞ。
0949デフォルトの名無しさん
2011/07/18(月) 08:26:36.15どんまい。あせらずに何が起こっているかを確実に把握してから、ひとつひとつ潰していくしかないです。
まずは要所に printf() を入れるのが吉。
0950デフォルトの名無しさん
2011/07/18(月) 08:30:16.48○もあけあふる(=もっと注意しろ)
0951デフォルトの名無しさん
2011/07/18(月) 12:21:53.83どんとまいんどが、どんまいになるって
手抜き大好きだから、ぽぽぽーんの原発事故やセシウム味付き肉販売起だろな
0952デフォルトの名無しさん
2011/07/18(月) 12:32:37.74Never mind!
0953デフォルトの名無しさん
2011/07/18(月) 12:46:56.46コレがない日本人なんて豚以下だわ
0954デフォルトの名無しさん
2011/07/18(月) 12:51:20.27http://twitter.com/ssig33
真性キチガイのRuby使い(rails)
Rubykaigiのトイレで、親指の腐った肉を洗い流すなど血をばらまくなど
衛生害テロをやったキチガイ
奇声をあげるなどキチガイ行為
挙句の果てに、Perl使いのOと大喧嘩して殴りあいになって、警備員に追い出されるざま
Perl使いにパッシング浴びて退場
そのあとツイッターで反省無し
こいつRubykaigi一生立ち入り禁止だってさ
0955デフォルトの名無しさん
2011/07/18(月) 12:52:25.230956デフォルトの名無しさん
2011/07/18(月) 12:53:11.23安定だけ求めて何もやりたいことないやつが大事に保護されてるからモノの品質が下がって日本のゲームはつまらなくなったし
家電製品で韓国に負けるんだ。メイドインジャパンの品質が下がったのは全部こいつらの責任
良いものを作りたいなんてこれっぽっちも思ってなくて楽すること他人に面倒を押し付けることしか考えない
大体会社来てソリティアだけして帰る毎日になんのやりがいがあるんだ生きてる意味あるのか
そもそも正社員の人件費負担が重過ぎて利益が出せないなら正社員の待遇を下げるのか倒産するのが正解だろ
それをやらずに偽装請負特定派遣で若者使い捨てで人件費カットして技術の蓄積を放棄して日本の技術レベルを落として
自分達は組合がうるさいからとか言ってバブル期の待遇を維持したままとか人道的におかしいだろ日本の大手は全部倒産すべき
0957デフォルトの名無しさん
2011/07/18(月) 12:54:23.730958デフォルトの名無しさん
2011/07/18(月) 18:03:20.570959デフォルトの名無しさん
2011/07/18(月) 18:07:41.810960デフォルトの名無しさん
2011/07/18(月) 18:25:40.55○ ポインター
0961デフォルトの名無しさん
2011/07/18(月) 18:27:15.73>538
0962デフォルトの名無しさん
2011/07/18(月) 19:21:27.05関数名で使えることは勉強で知っているのですが、
一度も使ったことがないです。
どんなところで使うんでしょうか。
0963デフォルトの名無しさん
2011/07/18(月) 19:25:56.41ttp://e-words.jp/w/E382B3E383BCE383ABE38390E38383E382AFE996A2E695B0.html
大学のC言語の授業でqsort()関数の時にもつかったけど、
あの時は初心者レベルだったのでわけわからんかった。
ttp://www.geocities.jp/ky_webid/c/061.html
0964デフォルトの名無しさん
2011/07/18(月) 19:26:49.77ソートとかスレッドとかシグナルとかコールバックとか状態遷移とか、色んな所で必要になるよ
問題 http://hibari.2ch.net/test/read.cgi/tech/1307166756/543 に対して、
http://hibari.2ch.net/test/read.cgi/tech/1307166756/601
http://hibari.2ch.net/test/read.cgi/tech/1307166756/607
などで効果的に使用されています。
0966デフォルトの名無しさん
2011/07/18(月) 19:53:47.38落ちてる
0967デフォルトの名無しさん
2011/07/18(月) 19:54:21.080968デフォルトの名無しさん
2011/07/18(月) 21:39:56.29printf("aho");
↑
これだけでも printf へのポインタを使っている
・・・こう言うとポインタ変数がどうのと言い出すアフォが湧くがそういうことじゃない
0969デフォルトの名無しさん
2011/07/18(月) 22:36:59.660970デフォルトの名無しさん
2011/07/18(月) 22:52:32.22main(){
int i,j,max=atoi(argv[1]);
for(i=0;i<max;i++){for(j=max;j>i;j--)printf(" ");for(j=0;j<i*2+1;j++)printf("*");printf("\n");}
}
0971デフォルトの名無しさん
2011/07/19(火) 00:43:56.62#include <time.h>
void main(void)
{
clock_t c1 = clock();
int i;
for(i = 0; i < 5000; i++){
printf("\r");
printf("Hello,World%d",i);
}
printf("%f秒かかりました。",(double)((clock() - c1) / CLOCKS_PER_SEC));
}
これでHell,Worldを表示させるのにかかった時間を測りたいのですが、毎回0.000秒になってしまうのですがどうしたらいいですか。
0972デフォルトの名無しさん
2011/07/19(火) 00:45:39.200973938
2011/07/19(火) 01:02:46.07処理時間がおよそ 2 分の 1 になったよ
そのままやると HDD のアクセスランプが付いていない時間があったのが、対策後
付きっぱなしになった
まあ Windows XP での結果だから、最新 OS とか SSD ではわからんけど
0974デフォルトの名無しさん
2011/07/19(火) 01:02:58.45整数で割算してからdoubleにキャストしても、小数点以下に0が付くだけだぞ。
そりゃ1秒以上かかってないと0になるよ。
0975デフォルトの名無しさん
2011/07/19(火) 01:05:22.690976デフォルトの名無しさん
2011/07/19(火) 01:10:21.480977デフォルトの名無しさん
2011/07/19(火) 01:18:16.180978デフォルトの名無しさん
2011/07/19(火) 01:21:41.46なるほど。
今はPSPでカキコしてるんで明日やってみます。
0979デフォルトの名無しさん
2011/07/19(火) 01:48:25.80ポインターを理解できてない典型。
0980デフォルトの名無しさん
2011/07/19(火) 06:46:12.46おはよう、アフォ
0981デフォルトの名無しさん
2011/07/19(火) 06:59:26.780982デフォルトの名無しさん
2011/07/19(火) 07:00:36.86C言語なら俺に聞け(入門編)Part 87
http://hibari.2ch.net/test/read.cgi/tech/1311026419/
0983デフォルトの名無しさん
2011/07/19(火) 09:40:52.13死ね
0984デフォルトの名無しさん
2011/07/19(火) 10:12:29.910985デフォルトの名無しさん
2011/07/19(火) 12:44:02.190986デフォルトの名無しさん
2011/07/19(火) 15:09:13.30マジで理解できてなかったのか……
0987デフォルトの名無しさん
2011/07/19(火) 16:53:26.25じゃ、ちょっと相手してやろうか
煽れそうなとこ煽ってみな
0988デフォルトの名無しさん
2011/07/19(火) 17:04:06.080989デフォルトの名無しさん
2011/07/19(火) 17:05:56.33「使っている」というのは普通「全ての場合で」が省略されていると解される。
ところが、使っていない場合なんか何通りも思いつく。
「使っている場合がある」ならば正しい。
0990デフォルトの名無しさん
2011/07/19(火) 17:15:30.02いや「全ての場合で」だよ?
何言ってんの、おたく
0991デフォルトの名無しさん
2011/07/19(火) 17:16:08.89(*printf)("aho"); と同じ意味であり
printfへの関数ポインタを使ってる……なんてことだったりして
0992デフォルトの名無しさん
2011/07/19(火) 17:18:12.84962 で予言したとおりのが湧いてきたw
0993デフォルトの名無しさん
2011/07/19(火) 17:18:23.55#define printf(s)
0994デフォルトの名無しさん
2011/07/19(火) 17:20:00.87いやー
printf("aho");
が
;
と展開されるマクロはあんまり見かけないな
0995デフォルトの名無しさん
2011/07/19(火) 17:22:14.70>>962ってそういう意味とは思えんが?お前エスパーじゃね?
0996デフォルトの名無しさん
2011/07/19(火) 17:22:36.58ま、アマチュアさんだったらしょうがないか。ww
0997デフォルトの名無しさん
2011/07/19(火) 17:23:54.39「ポインタを理解できてない」と大きく出たアフォはおまえじゃなかったのか? 違ったら失礼
0998デフォルトの名無しさん
2011/07/19(火) 17:24:25.92底辺開発者くせぇ書き込み止めてもらえますか?www
0999デフォルトの名無しさん
2011/07/19(火) 17:25:03.50inline 宣言されてても、ポインタとして取り扱う文言が出てきた場合
inline 化は抑止される んだっけ?
1000991
2011/07/19(火) 17:25:11.7210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。