天才Perlハッカー&天才釣師ですよろしく
3 :
デフォルトの名無しさん :2011/01/06(木) 17:56:37
C言語の文法定義で ANSI Cでは 代入式の定義が assignment_expression : conditional_expression | unary_expression assignment_operator assignment_expression ; となっていますが、2番目の unary_expression まで飛んでしまうのは *abc = 123; などはじめて左辺値として評価されるのが、unary_expression だからでしょうか? C++ では assignment_expression : conditional_expression | logical-OR-expression assignment_operator assignment_expression | 送出式 ; となっていると思いますが、何か違いに意味があるのでしょうか?
あ、それっすか わかりますよ^^
6 :
デフォルトの名無しさん :2011/01/06(木) 21:10:21
入力クロックをFPGAボード上の6MHzクロックとして、これを6*10^6カウンタで1秒クロック変換する。 この1秒クロックでアキュムレータを駆動する。 このプログラムを教えてください。
8 :
デフォルトの名無しさん :2011/01/06(木) 23:36:27
自動変数int a[5][4]を宣言するより 頭にstaticつけて静的変数として扱ったほうが安全?とかきくけどそどうしてですか スタック領域が小さいから?
聞いたんだろ?言った奴がいるんだろ?そいつに聞けよ。
10 :
デフォルトの名無しさん :2011/01/06(木) 23:44:26
きいたことがある。誰がいったかは記憶にない。
>>8 安全かといわれると、はて、どうだろうか?
バッファオーバーランを引き起こす悪いコードを書いてしまっても、アーキテクチャによっては、被害がちょっとだけましになるかもしれません。
12 :
デフォルトの名無しさん :2011/01/06(木) 23:52:00
なぜですか?
autoの配列自体は普通に使われてるしな。 危険だからstaticにするとか、言った本人に理由を聞かないと分からない。
14 :
デフォルトの名無しさん :2011/01/07(金) 00:05:38
あなたに聞いてません。
15 :
デフォルトの名無しさん :2011/01/07(金) 00:14:34
staticつけると勝手に初期化してくれる autoの場合うっかり不定値を参照することもなくはない
使うのが一回限りなら確かにそうかもしれないが 二回目以降は前回の結果が残っているのだからあんまり変わらないんじゃないか?
安全?じゃなくて、 Cがよくわかりません と言ってるようなもんでしょ
//
>>8 // いちども関数uuu()を実行してないのに、なぜかuuu()が実行される不思議コード。
// ubuntu10.10(32bit) gcc4.4.5 で確認。 他のコンパイラだと上手くいかないかもしれない。未確認。
#include <stdio.h>
#include <stdlib.h>
// 不思議コード部分
void uuu(void) {puts("hello git!");}
unsigned int _______i;
// ---------- 元のプログラム ----------
void aaa(void) {
unsigned long a[4];
puts("hello world!");
_______i=42; while(_______i-->0){a[_______i]=uuu;} // 不思議を挿入ぅ〜〜♪
}
void main() {aaa();}
// aaa() の 配列a に、uuu()の ”アドレスを代入しただけ” なのに… なぜかuuu()が実行されてしまう。ろまんちっくぅ〜〜☆(^_^/
だせぇコード
21 :
デフォルトの名無しさん :2011/01/07(金) 14:56:31
C言語勉強したいです、 初心者が無料で使えるので、エディタとかの開発環境でいいのありませんでしょうか?
expressじゃだめ?
23 :
デフォルトの名無しさん :2011/01/07(金) 15:05:23
>>22 visual c++ expressのことでしょうか?
ダウンロードしてみたけど使い方わからなくて挫折してた,,orz
使い方覚えてこれでやってみます、ありがとお。
c言語でカーナビ作ってください
Cpad+bccが初心者にはお手軽じゃねーかな bccがちょっとアレだけど
Linux入れればいいのに
28 :
デフォルトの名無しさん :2011/01/07(金) 18:30:30
visual c++ express で下のコード打ってみたら、 error C4430: 型指定子がありません - int と仮定しました。 メモ: C++ は int を既定値としてサポートしていません のようなエラーが出たんですが、なんか間違えてるかな? 教えていただいた、codepadていうブラウザで打つやつやってみたらちゃんと実行しました、 visual c++ express の使い方悪いのかな? #include<stdio.h> main() { int a ; a=0; printf("aの値は%dです",a); }
int main(void)
int main() でもいいの?
31 :
デフォルトの名無しさん :2011/01/07(金) 18:52:04
ありがとうございます。 int main(void)にしたら、エラーでなくなりました、 でも、一瞬コマンドプロンプト見たいのが現れたけど、 すぐ消えて実行結果が出てこない・・
system("pause");
33 :
デフォルトの名無しさん :2011/01/07(金) 19:09:59
>>18 スタックに詰まれたmain関数への戻りアドレス(次のプログラムカウンタ)
が uuu() 関数のアドレスに置き換わっている。バッファオーバーランの例
こういうことがstatic変数ではおきないだけ(他の静的変数の領域が
上書きされる)
34 :
デフォルトの名無しさん :2011/01/07(金) 20:51:16
Ctrl+F5で実行したら結果が表示されたけど、 計算結果をメッセージボックスに表示させるだけでも、 WinAPIとか使わないとできないんだよね、 挫折しそうだけど、ここであきらめたら一生プログラムできない、 APIも勉強しないとだめかなぁ
ここはC言語スレ 場違いな事もわからない奴は消えてくれないかな
36 :
デフォルトの名無しさん :2011/01/08(土) 00:05:47
VC++ のビルドシステムは、コンパイルの結果を一時的に、アセンブラテキスト に出力しているのでしょうか?(gcc と同様に) アセンブラ出力している場合は、どのアセンブラを起動しているのでしょうか? ml コマンド version 9でアセンブルしようとすると、大きな静的局所変数(500kbyte程度) が存在するとアセンブルが終了しないようですが?なにか制限があるのでしょうか? (cl コマンドでビルドすると正常に終了します。)
VCはいきなり、objファイルを吐きますです。
昔の cl はパイプで呼んだり、中間ファイルからの別プロセス起動してた 今はどうか知らない SSE 非対応な VC6 でインラインアセンブラ可能にする Processor Pack の中身ってlink.exe cl.exe 以外になんか変えてたような(MASM?) どうだっけなぁ… VC++ といっても他のバージョンでは事情が違うかもしんない
39 :
デフォルトの名無しさん :2011/01/08(土) 02:07:07
>>37 ありがとうございます。
ということは、 cl の /FAs オプションでアセンブラテキストを吐くのは
単なるサービス機能ということなのでしょうか?
ml コマンドの制限でも何かご存知でしたらご教示願えませんか?
>>39 そのとおり。
随分前に根本的な問題でMASMではアセンブル出来ないテキスト吐いてたぞ。
一時期直った気もするが再発したんじゃねーの?
41 :
デフォルトの名無しさん :2011/01/08(土) 08:57:09
42 :
デフォルトの名無しさん :2011/01/08(土) 10:14:02
質問です。 整数の範囲をチェックするには、 0 < a && a < 100 とか書けば良いと思いますが、これをビット演算等でやる方法はあるでしょうか?
>>42 ビット演算のみなら特定の値の場合しか無理だよ。
例えば0〜7の場合、
(a & ~0x07) == 0
が成り立てばよい。
if使って良いなら任意の値で可能。
コンパイラの最適化にまかせておけば良いようにやってくれる
初心者にありがちな何でもビット演算使ってしまいたくなる病だな 大抵コンパイラがどうとでもやってくれる
46 :
デフォルトの名無しさん :2011/01/08(土) 11:01:11
数字を三つ入力してそれを計算させたいのですが、 エラーがでてうまく計算してくれません、やり方間違ってるでしょうか? #include<stdio.h> #include <math.h> int main() { double a,b,c,d; printf("最初の値を入力してください\n"); scanf("%f" , &a); printf("2番目の値を入力してください\n"); scanf("%f" , &b); printf("三番目の値を入力してください\n"); scanf("%f" , &c); d=a+b+c; printf("dの値は%fです",d); }
>>46 コンパイルエラーは出ないと思うけど…
scanfの%fを%lfに変えてみ
>最初 >2番目 >三番目 イライラする!アホか!
49 :
デフォルトの名無しさん :2011/01/08(土) 11:40:24
>>47 おお、できました!
%lfのlつけるのは魔法なのかな、
昨日見た千と千尋の神隠しみたいです。
>>48 イライラしてもいいことないお
scanf では %f は float で %lf は double というそれだけのこと printf では両方 %f だけど
最初 2番目 三番目 よっつ目
52 :
42 :2011/01/08(土) 12:23:49
>>43 ありがとうございます。
ビット演算等はあまり詳しくはないため質問させて貰いました。
なんとなく特定の条件でないと無理そうかなとは思いましたが、無理なのですね。
いえいえ
そういえばビット演算なんて使ったことがないんだけどやっぱり覚えないとダメかな。例えばどんな時に使うんでしょうか?
フラグの組み合わせ (論理和 | で連結してくの)
>>54 ビット演算は、数値演算の代わりに使うときと、ビットの集まりとして使うときの2つの使い方がある。
数値演算の代わりに使うときは、1ビット左にシフトすると2倍になる、右にシフトすると半分になる、2の累乗をその-1で&すると剰余になる、等
10 << 1 = 20 (10 * 2)
10 >> 1 = 5 (10 / 2)
10 & 7 = 2 (10 % 8)
ビットの集まりとして使うときは、その数値としての面は無視する。0101が5だからといって、その5という数値には何の意味もない。
特定のビットを1にしたり0にしたり、1か0か調べたりする。
bool変数を32個持つよりint変数1個の方がコンパクトだというだけの理由でそのように使う。
画像処理とか
>>55-57 詳しい解説どうもありがとう。
まぁ言われてもイマイチ有効性が分からないのはまだまだ理解出来てない証拠なんだろうけどとりあえず勉強した方が良いですね。。
有効性か。 ビット演算の何が嬉しいかというと、別に大したことじゃなくて、ほんのささいなことだ。 乗除算よりビット演算の方が速い。(同じことをするなら速い方がいいだろ?) bool変数32個よりint1個の方が使うメモリが少ない。(同じことをするならメモリ少ない方がいいだろ?) これらに価値を感じないなら使わなくても別に何も困らないが、他の人は価値を感じて使いたがるかもしれないから、 人のコードを読めるように勉強はしておいた方がいい。 人の作ったライブラリを使うこともあるだろうし。
>>54 メモリ/リソースを節約するため
大量のデータを処理する場合、int単位など贅沢なメモリの使い方ができず、必要なビット数に収めるのにビット演算を使う。
→画像、動画、データ圧縮
通信やハードウェアの設計はリソースを節約したものになっているので、処理にはビット演算が必要。
→通信データの処理、ハードウェアレジスタのアクセス(ドライバ)
論理演算をするため
ビット演算(論理演算)は当然ながら論理値の取り扱いに親和性が高いので、自然とビット演算を使う。
算術演算の代用
すでに前の人が説明しているとおり。
>>59-60 なるほどリソースの節約と算術演算する速度が速いんですね。
使用例もあげて詳しく説明してくれて本当にありがとうございました。
C言語のとあるネットのソースで2行目の”{”と9行目の”}” は何か意味があるのでしょうか? 初めて見たのですが printf("文=[%s]\n", buf); { int i; printf("文=[0x"); for ( i=0 ; i<len ; i++ ){ printf("%X", buf[i]); } printf("] (16進数)\n"); }
ブロックでスコープを区切りたかっただけかな
64 :
62 :2011/01/08(土) 21:06:20
>>63 なるほど、ありがとうございます。
ところでこれって一般的なのでしょうか?
俺はやらないが、やりたい人はいる。否定もしない
>>64 おおそうだ、switc内のcase: break; 間に使う変数が
他のcase:とぶつかったので、ブロックスコープしたことがあった。
いや、ちょっと長いswitchだったからね。
67 :
デフォルトの名無しさん :2011/01/08(土) 21:20:50
>>62 >>63 のいうように局所変数 i を for のイテレータとして使うことが慣用
になっていて、かといって関数内で他に i を使うこともなかったので
ここで便宜的に導入したのでは?
あと、用途にもよるけどprintf("%X", buf[i]); → printf("%02X", buf[i]);
として'\n','\t'も2桁で表示できるようにした方がいいと思う。
>>66 今まで見たこと無かったせいか、ちょっと違和感がありましたが
便利そうですね。
>>67 なるほど、勉強になりました。
でもこれってforループのブロックで宣言されれば分かり難いですね
下の場合はエラーになります。
for(int j=0;j<100;j++)
{
int i;
i=0;
}
printf("%d",i);
switch の case 内だけで変数追加したい時なんかも switch (hode) { case xxx: { int i; ... } break; } こういう感じ。 わざわざ外の先頭ブロックに戻って変数の追加の必要がないので つらつらと思いつきつつ書き流す時は楽
71 :
デフォルトの名無しさん :2011/01/08(土) 21:48:18
>>69 for(int j=0;j<100;j++) としているので C++ でコンパイルしている?
C, C++ でも同じですが、 i の有効範囲は for ブロックの最後の } で終りなので
} の後では、 i は未定義状態またはより外部のスコープで定義された i です。
ダサイ
>>71 説明不足ですみません。
C++ でコンパイルしています。
エラーはコンパイルエラーのことです。
i は未定義状態のエラーが出ました。
↓サドルマン
目が覚めるとサドルになっていた
∧∧ ヽ(・ω・)/ ズコー \(\ ノ 、ハ,、  ̄
77 :
デフォルトの名無しさん :2011/01/09(日) 10:05:45
C言語をはじめたばかりであまりわからないのですが、 ビットシフトはなんの役に立つのでしょうか?
78 :
デフォルトの名無しさん :2011/01/09(日) 10:45:24
80 :
デフォルトの名無しさん :2011/01/09(日) 11:34:11
>>62 bufは上で文字列として出力しているのでおそらくchar配列
となると printf("%02X", (unsigned char)buf[i]); とキャストしないとな
よくあるバグだ(処理系設定や使用状況によっては問題は無いが)
{ } は int i; の範囲を限定させたかったんだろうが、
printf("文=[0x"); は { } の外に出したので良いな
何か中途半端だ
X書式指定ってunsigned charじゃないとダメなん?
そんなことはない。 char buf[]; なら、符号拡張されるからでしょ
for文の初期化で変数宣言できたら便利なんだけどね C99だと出来るんだっけ?
BASIC的な発想は好きじゃないな
BASIC的ってforで変数宣言できるのが?
static void 関数() このstaticってどういう意味?
その翻訳単位内でしか使いませんよ的な
>>87 複数の c ファイルからなるプログラムで意味を持ちます。
static 宣言された関数は、その関数が書かれた .c ファイルに書かれている関数からしか呼び出すことができません。
>>83 そう
符号付きだと判定され、... に渡す時に int に拡張され、
8桁とかで表示されちゃうの
charが符号なしな環境か
符号付きの値が入れられないならいいんだけどねえ
92 :
デフォルトの名無しさん :2011/01/09(日) 15:36:33
テキストを読み込んで そのテキストの中にある区切られた文字列から ランダムにテキストの中身を表示させるようにできないですか 日本語がおかしくてすみません ----テキストの中身---- a,b,c,d,e,f,g,hello,y,j,k,l ---------------------- -プログラムの実行結果- 1回目 結果:a 2回目 結果:hello 3回目 結果:f 見たいな感じにできればいいです・・・
できます。
(strcmp(array[a],array[b])) a,bはint型です array[]で何してるんでしょうか?
できます
>>94 a番目の文字列とb番目の文字列を比べてる
>>97 それRAND_MAXがintの最大値と同じ環境だったらおかしくなるんじゃないの?
>>97 そうだねこれに変更しとくよ
((double)RAND_MAX + 1)
rand()の下位ビットの周期が極端に短い処理系なんていまどき無いだろうから rand()%n で十分だとは思うけど・・・
RAND_MAX + 1.0の方が楽
102 :
デフォルトの名無しさん :2011/01/09(日) 17:44:23
今VC++を使ってmysqlのデータベースに接続するプログラムをコンパイルしようとしてるのですが、mysql.hが存在しないとかでコンパイルできません 一応ぐぐってみたんですが、そのとおりにしてもエラー100個で強制終了とかでまともに動いてくれません。 プログラムは参考書のプログラムをCDからひらいてそのままコピペしたんで、間違いがあるわけがないので、どう考えてもコンパイル の仕方が悪いとしか思えないです。 でも解決法が見つからなくて困ってます。どうすればいいでしょうか
参考書のコピペでも動かないなんてよくある話だがな
104 :
デフォルトの名無しさん :2011/01/09(日) 17:52:50
>>103 え、コンパイラーの問題じゃないかもなんですか。それだったら普通に困る・・・・
せめてmysqlのライブラリの登録の仕方さえわかればいいんですが、ここじゃスレチですか?
どんなエラーないようなかも分からないし 100個もここに書きこまれたら困るけど
106 :
デフォルトの名無しさん :2011/01/09(日) 18:05:39
>>105 たしかに情報が少なすぎましたね・・・
じゃああした代表的なエラーをここにさらしてみます。
お騒がせしてすいませんでした
>>104 まずはエラーメッセージで検索しましたか?
ほとんどはそれで解決すると思いますが
さてはお前、サドルマンだな?
はい と言ったら信じますか?
ロシヒカリでも食ってろよ屑
112 :
デフォルトの名無しさん :2011/01/09(日) 20:17:19
C言語とO言語どっちがむずいっすか?
S言語かな
ほっほっ
ふっほっ
116 :
デフォルトの名無しさん :2011/01/09(日) 20:51:47
>>109 >>111 サドルマン、ロシヒカリ 何のたとえなの 教えて
自分が屑でないと思っているならみんなにわかるように教えて
mysql.hが存在しないっつーんなら存在しないんだろ mysqlのライブラリを持ってきてないんだろ
パスが通ってないんだろ
お前らよりゆっくり実況の方が分かりやすいなwwwwwww
http://www9.plala.or.jp/sgwr-t/lib/strcmp.html ↑ネットでC言語の解説しているページ
strcmp(ABC, ABC) の結果:0
strcmp(ABC, ABD) の結果:-1
strcmp(ABC, B) の結果:-1 ← 文字数によらず、文字の大小関係で結果が決まる
strcmp(ABC, AAAA) の結果:1 ←
↑この実行結果だけでもわかりますがstrcmp(ABC, B)はなんでBのほうが大きいんですか?
ABCの先頭のAとBを比べてるから
strcmp(ABC, AAAA) の結果:1 これは>?
少しは自分で考えろよ 一文字づつ比べていって、同じなら次の文字 違ってたら大小比較した結果が返るだけだろ
先頭から1文字づつ取りだして異なった瞬間の大小を戻してるだけ c1) c2) A A 一致 B A c1 > c2 → 1 で戻り C A \0 A \0
辞書引いたことの無い人?
Windows XP 以降のエクスプローラーのファイル名ソートと等価な比較が難しい… 単純な辞書順じゃないんだよね
129 :
デフォルトの名無しさん :2011/01/09(日) 22:37:20
gcc で、 1ull << 65 の結果が 0 ではなく、 1ull << (65 % 64) と解釈されて、結果が 2になります。 64bit以上のシフトは環境依存なのでしょうか?
その型のビット幅以上のシフト量や負のシフト量は未定義です
131 :
129 :2011/01/09(日) 23:02:10
132 :
デフォルトの名無しさん :2011/01/09(日) 23:56:05
ファイルの中から 指定した行を出力するプログラムがほしいのですが サンプル書いてくれないですかね
void test(int *p) { p = (int *)malloc(sizeof(int)); } int main() { int *p; test(p); free(p); } として実行すると、メモリを二重解放していると怒られました。 友人にアドバイスをもらって、 void test(int **p) { *p = (int *)malloc(sizeof(int)); } int main() { int *p; test(&p); free(p); } としたらエラーが出なかったのですが、理由がよくわからないです…。 ご教示の程よろしくお願いいたします。
それは2重開放じゃないな。mainのpはメモリ確保してねえんだよ。メモリリークするの。
これは配列だが。初心者はこのようにメモリ確保すべき。new、mallocはよほどのことで無い限り使うこと無い。 int main() { vector<int> p(100); }
初心者はまずSTLをやったほうがいい。C言語のメモリ確保や文字列は不便。
void test(int *p) { p = (int *)malloc(sizeof(int)); } これは、新規に生成したint*型に対してメモリ確保してるんだ。呼び出し元とは関係なし。 もしC++の参照使えれば。こうすれば期待する動作になる。 void test(int* &p) { p = (int *)malloc(sizeof(int)); }
配列だけは例外で、C言語は値渡ししか出来ない思った。ポインタも値渡しになってしまう。 なんとか回避するためにポインタのポインタという技が開発される。
CのスレにC++のコード書いて得意気になってる奴何なの
きっとC++が好きなのさ スレ違いも甚だしいけど
エラーを読んでくれ…
質問です。
http://wwww.vis.ne.jp/mt/archives/000680.html 上記ページの使い方以降にあるソースのmain関数で、二次元配列をstaticで宣言してるんですけど、
これはどういった理由からなんでしょうか。
実際にstatic抜きで、ただのdoubleとして二次元配列を宣言してプログラムを走らせてみるとcoreを吐いてしまうんですね。
staticありだと確かに正常に動きます。
staticについて検索して調べたんですが、何処を調べてもmain関数を例に取ってるサイトが見つからなく、
関数を呼び出すごとに値が記憶されている、みたいな例しかないんですね。
#include<stdio.h>
void fn();
main()
{
int i;
for(i=0;i<10;i++)fn();
}
void fn()
{
auto int a=0;
static int b=0;
a++; b++;
printf("a=%d, b=%d\n",a,b);
}
↑こんな感じでstaticありとなしとで比べてるだけで、確かにこれだとなんとなくはわかるんですが、
上記サイトの二次元配列でstaticをどういう風に使用しているのかよくわかりません。よろしければご教授お願いしたいです
また、もしstaticなしで動くのであれば、それを試してみたいんですが何か方法はありますか?
static付けると、スタック領域とは別にメモリ確保できるからでは。 つけないとメモリ不足に陥るケースあり。 初心者はヒープからこうとれよ。 vector< vector<double> > x;
>>144 staticなしで動かしたいなら、コンパイラにスタックサイズを指定するオプションがあると思うから、
それでスタックのサイズをでかくしてみたら?
147 :
144 :2011/01/10(月) 02:04:35
なるほど。メモリ不足が原因だったんですね。ありがとうございました。
>>145 ,146
ヒープやスタックサイズについても検索して調べてみますね。
あと気になったことがありまして、
>>144 では二次元配列を用いてますけど、ポインタで宣言してあげて、mallocなどを用いて動的にメモリを確保すれば、
ひょっとしてスタックサイズらを気にする必要はなくなります?
気にする必要はなくなります
わかりました。ありがとうございました。
153 :
デフォルトの名無しさん :2011/01/10(月) 04:46:44
テキストの中身 abcd efgh ijkl 結果 出力させたい行を入力 2 efgh こんなプログラムがほしいのですが 書いてくれませんか
宿題は宿題スレにどうぞ ソフトが欲しいってだけならソフトウェア板で聞けカス
>>133 void test(int *p)
{
*p = (int)malloc(sizeof(int));
}
void main()
{
int p;
test(&p);
free(p);
}
voidmainw
158 :
デフォルトの名無しさん :2011/01/10(月) 10:31:27
>>133 >>157 と同じことですが、
C言語での関数呼び出しは特別なオプションをつけていなければ
スタックに実引数と戻りアドレス(次の実行コードのアドレス)を
積んで実行フローが呼び出し先の関数になります。
スタックに積む実引数は、プログラムテキストが示す式(変数等)
を評価した値のコピーです。呼び出し先の関数で、その引数に
代入すると、スタックに積まれたコピーの方が更新されます。
>>133 の上の例では、不定なmain()のp のポインタの値のコピーにtest()で
代入していて、元のmain() のp は更新されませんので、free()
のp はmalloc() したp とは無関係となります。
初心者が理解出来ない返しをして悦に入るアホの典型
>>158 は一見わけわからんプログラム組みたがるタイプ
サドルマンか
void t1(int a) { a = 5; } void t2(int *a) { *a = 5; } void main() { int a=0; t1(a); printf("%d ",a); t2(&a); printf("%d",a); } →実行結果は 0 5 関数の引数変数への代入操作は、呼び出し元の変数の値を変えない ポインタの指してる先の内容を変えることはできるが、 ポインタそのものを変えても呼び出し元に伝わらない
ゆっくり実況見るといいよ
__ いいえ。わたしです ヽ(・‐・(ノ ) ) | |
はっきり言ってニコニコ技術部の方が上
確かに
ロシヒカリってなんですか?
人名
え
サドルマンになりたいな
ほっほっ
174 :
デフォルトの名無しさん :2011/01/10(月) 14:06:32
>>133 別に問題なくね?ポインタ変数渡してるから参照渡しにあたるだろ。
その友人はなんで怒ったんだ?
http://codepad.org/B9B1KbkU (サブ2
http://codepad.org/Lm8xcH0B (メイン
http://codepad.org/NEYKMnLJ (サブ1
これcygwinでコンパイルするとき
gcc メイン サブ1 サブ2 ←このようにすると
/cygdrive/c/Users/mituru/AppData/Local/Temp/cc69kqsO.o:c.c:(.text+0x5e): undefin
ed reference to `_i_print'
/cygdrive/c/Users/mituru/AppData/Local/Temp/cc69kqsO.o:c.c:(.text+0xaa): undefin
ed reference to `_i_print'
collect2: ld returned 1 exit status
こうなっちゃうんですが解消法はないですか
C++でmallocなんか使うかよww
ふっほっ
RAND_MAX厨はいないのか?ww
180 :
デフォルトの名無しさん :2011/01/10(月) 15:20:55
>>176 i_print() の定義がない。 i_printf() はあるけど
C言語でWebプログラムって出来ますか
>>182 できるかできないかで言うとできない
C言語は組み込み用の言語だからWindowdやUNIxなどの組み込み高度機器限定のソリューションだ
CGI・Cはできる。
C言語単体では無理だが。ネットワーク機能などを追加して、スクリプト動作させたらいい。
いまどきCでwebアプリ作るやつはいないと思うけど、やればできる。 標準入出力と環境変数の読み込みができる言語ならなんでもOK むかし公開された2chのソースはCだった。
>>186 >>いまどきCでwebアプリ作るやつはいない
いまVCで作ってる真っ最中なんだけどw
188 :
187 :2011/01/10(月) 17:11:06
なんだウェブアプリってCGIか 間違えた
webアプリというより、ボトルネックの部分をネイティブに置き換えるとかそういう利用では? 全部、Cで作ったら生産性が悪い。
動画サイトでオセロを打つプロウラムを作ってる人の動画があったんだけど、 まずはインターフェイスから作りましょうかとかいってたんだけど インターフェイスって何ですか?盤や白黒のコマの事でしょうか?
インターフェイスは入出力では。キーボード、マウスとか。あとテキスト出力とか。
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │○│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│○│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
>>192 入出力って何ですか?電源とか?
>>193 そうそう、そんな感じのプログラム作る動画が
ニコニコにあがってたんですよ、インターフェイスって何かなぁと思って。
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │●│●│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│●│●│ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛ 終わり
インタフェース(英語:interface)は、ものごとの境界となる部分と、その境界でのプロトコルを指す。主に情報技術関連で用いられる用語で、「ハードウェアインタフェース」、「ソフトウェアインタフェース」、「ユーザインタフェース」の三つに大別される。 インタフェース (情報技術) - Wikipedia
int fnc(int, int);とかの型指定するのもインターフェイスだろ。中身は無視した他とのやりとり部分。
それはそうだけど、普通にオセロの外枠から作ろうってことだろ インターフェースが何かとかじゃなくて文脈読み取れよ。どうせプログラムのプの字も分かってないんだから
>>197 もう何でもかんでもインターフェイスじゃないですかww
いくらプログラミング作っても出力が理解できないと意味できないから
プログラミング組む前に、盤面、コマの形、場所、大きさを決めるって
意味だったんですね。
そういうことだな。人間と思考エンジンのインターフェイス。
型指定が何でインターフェイスなの
エヴァンゲリオンのインターフェイスはどういう意味なんだろ
関数にアクセスするためのインターフェース公開した事になるだろ。 集大成としてこんなのもそう。 Windows API (Windows Application Programming Interface) Windows上で動作するアプリケーションにとって、Windows APIはWindowsの各機能にアクセスするための接点である。 Windows APIに属する各APIは主にDLLからの関数またはCOMインタフェースとして機能を公開している。 関数の呼出規約はstdcallを採用するなど統一されたインタフェースで多数のプログラミング言語からの使用を容易なものとしている。
ああなんだ、結合テストのことを言ってるのかと思った
インターフェイス・ヘッドセット エヴァとの神経接続の為、パイロットが頭に着けるもの。
>>150 まず4行目の最後にセミコロン (;) が抜けているのを正してみてはどうでしょうか?
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │○│ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
ロシヒカリとビットシフトはあな痔でしょうか
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
結局1時間でテトリス作る奴ってすごかったの?
211 :
デフォルトの名無しさん :2011/01/10(月) 19:21:42
質問です。 y.txtというアルファベットしか含まれていない単純なテキストファイルを用意します。 それをC言語にて読み込んでランレングス圧縮します。 そしてそれを圧縮したz.txtを新たに作り出します。 という問題なのですがうまく動きませんでした。 よかったらご指摘をよろしくお願いします。 #include <stdio.h> #include <stdlib.h> void func(FILE *fp1, FILE *fp2) { int c1, c2, l = 0; for(c1 = c2 = fgetc(fp2); c1 != EOF; c2 = fgetc(fp2)){ if(c1 != c2){ fprintf(fp1, "%c%d", c1, l); l = 1; c1 = c2; } else ++ l; } } int main(void) { FILE *fp1 = fopen("y.txt", "w"), *fp2 = fopen("z.txt", "r"); if(!fp1 || !fp2) exit(EXIT_FAILURE); func(fp1, fp2); fclose(fp1); fclose(fp2); return 0; }
>>211 y.txtから読み込んでz.txtに出力するってことだけど、
処理をみると、zから読み込んでyに書き込んでる。
書き込んでるね。
書き込んでるな。
>>210 プログラムできる奴なら、下準備してれば誰でもできるよ。
>>215 おれには1時間じゃ無理だわ。
前にテトリス作ったときは1、2週間くらいかかったよ。
定番というようなものはありません
>>216 だから下準備=既につくってある+何回も同じ手順を踏む。
誰でもできるだろ
一度もテトリス作ったこともない人間が即興でコーディングしてるとか思っちゃったのかw
そんなのテンポが悪すぎて見てられんだろうな
222 :
デフォルトの名無しさん :2011/01/10(月) 22:02:25
以下のプログラムをコンパイルしようとすると、undefined reference to 'sqrt'と出てしまうのですが、それはなぜでしょうか。 よろしくお願いします。 #include<stdio.h> #include<math.h> struct point{double x,y;}; double distance(struct point a, struct point b) {double dis; dis = sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); return(dis); } int main() {double d; struct point p1={4.5,7.9},p2; printf("Input p2 zahyou (x,y)!"); scanf("%lf%lf",&p2.x,&p2.y); d=distance(p1,p2); printf("distance=%lf\n",d); return(0); }
223 :
デフォルトの名無しさん :2011/01/10(月) 22:04:27
>>223 fgets()で読み込むと最後に改行コードがつくけど、scanf()だとつかないから、
それで39−40行の判定が失敗してる。
bufの後ろについてる改行コードを0でつぶすとかすればいい。
225 :
デフォルトの名無しさん :2011/01/10(月) 22:44:12
>>222 gcc -o test test.c -lm
>222 とりあえずgcc on cygwinではコンパイルできて、実行もできた。 環境はどうなっていますか?mathライブラリを明示的にリンクする 必要があったりしませんか?(-lm でリンクする。)
>>210 元々作っておいたソースコードを打ち込んでいくだけだぞ
ニコニコの連中はちょっとプログラミングを見せれば「神!技術部認定!才能の無駄遣い!」とか騒ぐからね
229 :
デフォルトの名無しさん :2011/01/10(月) 22:59:03
>>224 さん
無事にできました
ありがとうございます
fgets使っても末尾に改行がつかないケースもあるが 改行コードは1バイトの場合と2バイトの場合とがあるが
231 :
デフォルトの名無しさん :2011/01/10(月) 23:09:16
>>225 ,226
授業でプログラミングをとってるだけのにわかなので、環境という話はよく分かりませんが、とりあえずコンパイルの最後に-lmと付けたらうまくいきました。
ありがとうございました!!
>>230 >fgets使っても末尾に改行がつかないケースもあるが
fgets()は末尾に改行が付くとニコ動でも言われている
>改行コードは1バイトの場合と2バイトの場合とがあるが
ニコ動の解説動画によると、改行コードは1バイト(¥n)だよ
もうちょっと勉強してから書き込めや
233 :
デフォルトの名無しさん :2011/01/10(月) 23:20:22
>>230 入力ファイルの最終行が改行で終わっていなければ、改行コードは付かないよね
int型の整数を文字列にキャストする方法ってありますか?
>>233 fgetsで指定したサイズ以上の入力を受けた場合、分割された文字列に改行はつかない
237 :
234 :2011/01/10(月) 23:37:02
>>236 それはキャストではないと思いますが・・・
>>232 >>fgets使っても末尾に改行がつかないケースもあるが
>fgets()は末尾に改行が付くとニコ動でも言われている
いや、つかない場合もある。fgets() の第二引数分だけ読み込んでも改行があらわれなかったとき。
>もうちょっと勉強してから書き込めや
あんたも足りんのとちゃうか?
>>237 unsigned int i = 0x00434241;
char *s = (char*)&i;
printf("%s\n",s);
こういう事?でもなかったら意味が分かんないのでヒントお願い
str()
241 :
234 :2011/01/10(月) 23:55:18
>>237 は質問者じゃないのですが・・・
例えば
int型の「a = 12345」という数字をchar型のmoji[10]に「12345」のまま格納できれば
いいのですが、sprintf を使えばよいのでしょうか?
>>241 使わなくてもできるけど、まぁ使うと簡単。
◆QZaw55cn4c ↑これがロシヒカリ?
ただの荒らしだよ
おしっこぺろぺろ〜wwwwwwwwwwwwwwwwwwwwwww
main()を実行しているファイルにある関数のプロトタイプ宣言がなくても 一緒にコンパイルしているファイルにその関数が定義されていた場合 (たとえば、gcc main.c sub.cのsub.cにその関数が定義されている場合、main() では未宣言,未定義) コンパイルはとおりましたが変じゃないですか? 言っていることわかるかな?
>>246 別に普通だけど
とりあえずコンパイルとリンクが別ってのを分かってもらわないと詳しく説明できない
>>248 いや、だからそれが普通だって
gccに必要なファイル全部指定してるんだから
・それぞれコンパイル(ここで関数の定義が見えてなくてもコンパイル可能)
・できたそれぞれのオブジェクトファイルをリンク(ここでsub.cの関数定義とくっつく)
で実行ファイルができる。
「gcc -c main.c」はエラーなし、「gcc main.c」はエラーはくから、試してみなよ
関数の勉強をしているんですが、スコープとは具体的にどういうことをいうのでしょうか? サイトでは寿命や有効範囲の事を言っていました。いまいちぱっとしません。
>>250 {
int i;
i = 0; /* OK */
}
i = 1; /* NG */
>>252 つまりね、何が分からないのか分からない。
254 :
デフォルトの名無しさん :2011/01/11(火) 00:48:51
スコープは有効範囲であって寿命は別な話 多くの書籍が2ついっぺんに話そうとするから初心者にはつらくなる あとで関係はしてくるが有効範囲の話がわかるまでいったん寿命の話は無視しろ
>>241 a=12345の固定ならそのまま
sprintf(moji,"%d",a);
でいいよ。
でも、固定で無い場合は
int型数値を10進文字列で表すのに
最長で -2147483648 に 終端0を加えた12バイトになるから
moji[12]にしたほうがいい。
222はコンパイルするファイルを間違えてないか確認するのと 中間ファイルを削除して再試行すれば解決しないか試せ。
配列より難しいですよね関数・・・ これからポインタも出てくるし、これからもお世話になると思います。
関数が難しい場合、大抵関数そのもの以外の部分でつまづいている。
260 :
デフォルトの名無しさん :2011/01/11(火) 00:56:49
といいますと?
ポインタとかスコープとか戻り値とか変数の寿命とか
関数のスコープの話とか初めて勉強した時でも当たり前のように感じてすんなり呑み込めたけどな。ポインタは知らん
return "test";が動いちゃうもんだから、勘違いして死んでるポインタ返して詰まるのはよくある話
そう…そのまま飲み込んで。僕のエクスカリバー…
「関数そのもの」ってのがわからん
それは中学からやり直せ
ポインタ変数が引数・戻り値の場合に混乱しやすいと思う
関数の後にポインタじゃないんですか?私は関数を先にやってます 関数の章にsizeof演算子とmenmcpy関数が出てきたんですけど、これってわりと頻繁に使いますか?
はい
これでどうだ #include <stdio.h> void func(void) { int i = 1; // funcの内部変数iの範囲ここから printf("%d\n", i); // funcの内部変数iの範囲ここまで } int main(void) { int i = 0; // mainの内部変数iの範囲ここから func(); printf("%d\n", i); return 0; // mainの内部変数iの範囲ここまで }
よくもまぁ、具体的に疑問点が挙げられていないレスに自己満レスできるね
公開オナニーですから
いやいや助かりました!
どうもありがとう
>>270 さん(^-^)/
>>270 さんほど分かりやすい解説はなかったです(^-^)/
どういたしまして(^-^)/
うるせー(^-^)/
277 :
デフォルトの名無しさん :2011/01/11(火) 01:59:59
以下のプログラムはコンパイルできるのですが、本当ならば実行結果がbubble→#u##leとなってほしいのに、bubble→bubbleになってしまいます。 何が問題なのでしょうか。 #include<stdio.h> void str_change(char *st,char c,char d) {while(*st){if(*st=='c')*st='d'; st++;}; } int main() {char st[]="bubble"; char c1='b',c2='#'; printf("%s ->",st); str_change(st,c1,c2); printf("%s\n",st); return(0); }
281 :
277 :2011/01/11(火) 02:10:11
>>280 助かりました!!本当にありがとうございます。
282 :
デフォルトの名無しさん :2011/01/11(火) 02:15:08
復活
二つの二次元配列の要素を全て交換する方法って二重ループを回す以外に何か方法はありますか? 二重ループだとすっきりしないので、ポインタなどを使って実現したいのですが・・・
>>284 一次元配列相当のポインタにキャストしちゃえば?
286 :
デフォルトの名無しさん :2011/01/11(火) 10:08:31
>>284 #include<stdio.h>
typedef int ELEM_T;
void swap_array(ELEM_T *a, ELEM_T *b, int elems){
ELEM_T t;
while(elems-- >0){
t = *a;
*a++ = *b;
*b++ = t;
}
}
int main(){
// A, B のサイズ, 要素の型は同じ
ELEM_T A[][3] = {1,2,3,4,5,6};
ELEM_T B[][3] = {11,12,13,14,15,16};
//int i;
//int *p = &A[0][0];
//int *q = &B[0][0];
swap_array((ELEM_T*)A,(ELEM_T*)B, sizeof A/ sizeof A[0][0]);
//for(i = 0; i < sizeof A/ sizeof A[0][0]; ++i){
// printf("%d ", p[i]);
//}
//printf("\n");
//for(i = 0; i < sizeof B/ sizeof B[0][0]; ++i){
// printf("%d ", q[i]);
//}
return 0;
}
ださっ
288 :
デフォルトの名無しさん :2011/01/11(火) 17:08:21
手本(というほどでもないか)見せてやってよ
289 :
デフォルトの名無しさん :2011/01/11(火) 18:12:14
勉強し始めて3日程度なのですがFizzBuzzというのを見つけたのでやってみました。 まだ1冊目の本も途中なのですがどうにも気になってしまって20分程度考えて書いたのですが これに対する突っ込みはどのようなものがあるでしょうか。 #include <stdio.h> int main(){int i,f;for(i=1;i<101;i++){f=0;if(i%3==0){printf("Fizz");f=1;}if(i%5==0){printf("Buzz\n");f=2;}if(f<2){if(f<1){printf("%d",i);}printf("\n");}}return 0;}
>>290 なんだそのコードは。他人に読んでもらう気ねーだろ。そういう突っ込み待ちか?
すみません短縮しまくったのをそのまんま貼ってしまいました 元はこんなんです。 #include <stdio.h> int main() { int i,f; for (i=1;i<101;i++) { f=0; if (i%3==0){printf ("Fizz");f=1;} if (i%5==0){printf ("Buzz\n");f=2;} if (f<2){if (f<1){printf ("%d",i);}printf ("\n");} } return 0; }
>>289 389,471 Clone(); の 引数は Node* である必要があるが static Node な a を渡している
(Clone(&a) の typo か?)
476 非ブロックで型宣言&初期化はできない
(else { ... } で囲うべし)
-----続予測されるエラー
471 の Node *copy1 = は if から抜けるとなくなる
そのため 476 の引数 copy1 は未宣言変数に
294 :
デフォルトの名無しさん :2011/01/11(火) 18:39:39
>>293 早い回答ありがとうございます!
copy1を未宣言変数にするとはどういうことですか?
素人なものですみません・・・
>>294 する じゃなくて 宣言されてない変数を参照してるよ ってこと
>>295 なるほど・・・
解決法はなにかありますか?
>>292 ゴルフがしたいなら専用スレがあるのでそちらへどうぞ。
>>296 コンパイルエラーをなくすだけなら 390 に Node* copy1 = NULL; とでも
意図したように動くかどうかは(意図がわからないので)別の話
あ ごめん 389 に copy1 居るじゃん。 × 471 Node *copy1 = Clone(a); ○ 471 copy1 = Clone(&a);
300 :
デフォルトの名無しさん :2011/01/11(火) 19:13:12
>>298 それをやると2回定義されているとエラーが出ちゃいます・・・
301 :
デフォルトの名無しさん :2011/01/11(火) 19:16:09
>>299 できました!
ありがとうございます!!
またなにかあったら質問させていただきます><
>>297 ゴルフが何なのかわからなかったですが・・・なるほど、そういうことですか
しかし自分が聞きたいのはそうではなくてここの動作は普通はこう書くよ、見たいな指摘が欲しいのです。
まあ動けば何でもいい、というのがプログラミングであるというのであればそれもそうなんですが。
for(i = 1; i <= 100; i++) { f = 0; if(i % 3 == 0) { printf("fizz"); f = 1;} if(i % 5 == 0) { printf("buzz"); f = 1; } if(f == 0) printf("%d", i); //if(!f)でも可 printf("\n"); }
ありがとうございます たしかにそうですね、なんでf=2にしてたんだろう・・・そしてif(!f)で真か偽かの判別ができたと・・・ 本の通りにやっているのと自分で考えながら書くのでは違うものですね。 そしてやはりi<=100のほうが一般的だったりわかりやすかったりするのでしょうか
305 :
デフォルトの名無しさん :2011/01/11(火) 22:02:24
2ch用語はナベアツ3、5バージョンより難しい
>>304 状況による
100までというなら
for(i=start;i<=end;i++)
の方が分かりやすいが
100回ならば
for(i=start;i<start+reps;i++)
の方がいいでしょ
>>306 なるほどです
とりあえずまずは慣れですね。
ありがとうございました。
ある文字列が十進数として扱えるか調べるには 文字列をisdigitで回す他にやりかたありやすか?
役不足ですね
米不足
ロシヒカリの出番だな
うはwwwwwwwwwwwwwwww誰が上手いこと言えとwwwwwwwwwwww
(^-^)/
// テトリス // linux依存部分(たぶんwindowsだと、書き方違う部分) #include <stdio.h> #include <stdlib.h> #include <string.h> // キーボードからの一文字入力(待ち無し) #include <termios.h> int gc(){ struct termios t0,t1;tcgetattr(fileno(stdin), &t0);t1=t0; t1.c_lflag &= ~ICANON;t1.c_cc[VMIN]=0;tcsetattr(fileno(stdin),TCSANOW,&t1); int r = getchar();tcsetattr(fileno(stdin), TCSANOW, &t0);return r; } // 1/60秒間、処理を停止する(ウエイト処理) #include <time.h> s6(){static struct timespec req={0,16*1000*1000},rem;nanosleep(&req,&rem);} // 画面の文字をすべてクリアーする関数 cl(){printf("%c[2J",0x1B );} // カーソル位置をセットする関数 sc(int x, int y){printf("%c[%d;%dH",0x1b, y+1, x+1 );}
317 :
316 :2011/01/12(水) 01:09:38
// テトリス本体部分(libcのみ) unsigned short V[32],B[32],M,*p,*q,m,a,t[]={0x72,0x132,0x462,0x223,0x226,0x2222,0x33},N=0xE007,F=0xFFFF; int i,j,k,x,y,r,c,_t[]={2,5,8,11,-3,0,3,6,-8,-5,-2,1,-9,-6,-3,16}; iB(){p=B;i=24;while(i-->0){*p++=N;}*p=F;}dB(){p=B+4;j=20;while(j-->0){if(*p==F){*p=N;}p++;}} sB(){p=q=B+4+20-1;i=j=20;while(j-->0){if(*p!=N){*q--=*p|N;i--;}p--;}j=i;while(j-->0){*q--=N;}} rrM(){int* t=_t;a=M;M=0;m=1;i=16;while(i-->0){M|=(*t>0)?(a&(m))<<*t++:(a&(m))>>-*t++;m<<=1;}} lrM(){rrM();rrM();rrM();}nM(){x=4;y=-2;M=t[rand()%7];}_p(char* s){fputs(s,stdout);}p0(){_p(" ");}p1(){_p("回");}pn(){_p("\n");} eV(){m=0;p=B;q=V;i=32;while(i-->0){if((*q&*p)!=*p){return 1;}p++;q++;}return 0;} nV(){p=B;q=V;i=32;while(i-->0){*q++=*p++;}m=M;q=V+4+(y-1);i=4;while(i-->0){*q^=(m&0xF)<<(3+x);m>>=4;q++;}r=0;if(eV()){r=1;}return r;} pV(){sc(0,0);pn();p=V;j=25;while(j-->0){m=1;i=16;while(i-->0){if(*p&m){p1();}else{p0();}m<<=1;}pn();p++;}} cT(){k=gc();if(k=='n'){y++;}else if(k==' '){while(!nV()){y++;}}else{if(c++>60){y++; c=0;}}if(k=='j'){x--;if(nV()){x++;}} if(k=='k'){x++;if(nV()){x--;}}if(k=='f'){rrM();if(nV()){lrM();}}if(k=='d'){lrM();if(nV()){rrM();}}} main(){cl();iB();nM();while(1){cT();if(nV()){y--;nV();memcpy(B,V,2*32);dB();sB();nM();}pV();s6();}} // 操作方法: // j,k 左右の移動 d,f 左右の回転 n 下移動 スペース ハードドロップ Ctrl+c 終了
消えろ
これがテトリス荒らしである。
ニコに感化された糞ガキか。ロシヒカリでも食ってろ。
ほっほっ
ふっほっ
どぴゅっどぴゅっ
んほぉぉぉぉ!!!!!!!
サドルマン
perlにあるcrypt関数ってcでは何に当たりますか?
標準にはないのでライブラリを当たってください Linuxやら使ってるのであれば多分何も入れなくてもcryptが使えます
331 :
デフォルトの名無しさん :2011/01/12(水) 09:11:07
eval_pv("print(crypt('foo','bar'));",TRUE);
お断りします
>>333 9 "tdy"
10 "PEOl",
で "tdyPEOl", 相当
11 "ddfd"
12 "dfcvh"
で "ddfddfcvh" 相当
要素数的には 20要素だよん
>>333 data の型は char*[20] なので 80 バイト
*data の型は char* なので 4 バイト
特に不思議なようには見えませんが
>>333 sizeof(data) が 88 を想定してたんなら 9 と 11 の末尾に ','(カンマ) が抜けてる
338 :
デフォルトの名無しさん :2011/01/12(水) 20:38:21
ゲーム作ってるんだが、2Dアクションゲーム作りたいんだけど アクションはどうやってプログラミングするの?
キャラクターの座標を動かすの
340 :
デフォルトの名無しさん :2011/01/12(水) 20:47:53
>>339 単純すぎないですかw?
腕とか足とか動かしたい
A) 股-脛-足の結節点を動かすの B) 動きの表現の数だけ絵を用意して差し替えるの
まぁどうせ納得はいかないんだろうが これでもかなりちゃんと答えてると知ってほしいな
ゲ製行けよ
>>340 パラパラ漫画しってるか?2Dならあれといっしょだ
なんか最近ゲーム制作ブームなのかその手の本をよく見るな。 いたいけな少年少女を悪の道にすすめるなと
少し知能があったらあんなところ目指さない
348 :
デフォルトの名無しさん :2011/01/12(水) 21:16:33
>>341 スーパードンキーコングシリーズみたいな高グラフィックの2Dスクロール
が作りたい、やっぱり言語よりアニメーションソフトのほうがいいですかね?
スーファミのドンキーコングってアニメーション綺麗すぎだろ。 どうやって作ったんだろ。
あれはプリレンダリング
型は変数のサイズを示す意外に役割があるのでしょうか? たとえば、自分の環境ではintとfloatは同じ4バイトの領域を確保しますが、 int a; float b; scanf("%f %d",&a,&b); のようにintとfloatの各4バイトの領域に逆のフォーマットで値を代入してみましたが、 内容をそれぞれのフォーマットで出力してみるとデタラメな内容が帰って来ました。 printf("%f %d\n",a,b); 型はその環境が定義したサイズ意外に何か役割があるのでしょうか?
>351 データの内部フォーマットを示している。 浮動小数については「IEEE 754」をググってみてください。
せっかく型つけて使いやすくしてんのに、なんで無駄なことしたがるんだろうなw
フォーマットは入力関数のフォーマットにしたがっているものかと思っていました。 入力関数のフォーマットはあくまで、入力されると期待できる形式を表しているんですね。 charとintだとうまくいってたのはint内部フォーマットが単純だからですね。 ありがとうございました。
>>352 IEEE754に準拠した32ビットの数値をint型変数に入れるとIEEE754ではなくなるのですか
printf("%f %d\n",a,b); 後半の b の値を詰む時に float → double の格上げがおきてるから表示値がくずれてる
そんなの分かった上でやってるんだけど
>>355 >>352 はいろいろと中途半端だから間に受けない方がいいよ
マジレスすると、IEEE形式のビット列をint型変数に格納することももちろん可能
>>360 のドヤ顔が想像できてしまうwwwwwwwwwwww
#include <stdio.h> #include <string.h> void dispval(const char* name, void* var, size_t len){ int i; printf("%s [", name); for (i=0; i<len; i++) { printf("%02x", ((unsigned char*)var)[i]); } printf("]\n"); } int main(){ int a, d; float b, c; int i; printf("sizeof a=%d\n", sizeof a); printf("sizeof b=%d\n", sizeof b); sscanf("1.0 5", "%f %d", &a, &b); dispval("a", &a, sizeof(a)); dispval("b", &b, sizeof(b)); sscanf("1.0 5", "%f %d", &c, &d); dispval("c", &c, sizeof(c)); dispval("d", &d, sizeof(d)); printf("%f %d\n", a, b); printf("%f %d\n", *(float*)&a, *(int*)&b); return 0; }
>>363 丁寧なテストコードありがとうございます。
最後のprintf文すごいですね。
一度それぞれの型を修正するんですね。
便利な方法を知ることができました。
#include<time.h> したんだけど、 localtime()ってすごく変な仕様だな。 なんで返り値がtm構造体じゃないの? なんでポインタなの? 結果の struct tm ってどこに保存されてるの? 何度もlocaltime()を呼んでたらメモリオーバーフローしないの? 毎回free()してやれば無問題? って疑問を持ったんだけど、解説してる日本語サイトが全くみつからん。 すっげー気になるところなんだが。
#include<time.h> したんだけど、 localtime()ってすごく変な仕様だな。 なんで返り値がtm構造体じゃないの? なんでポインタなの? 結果の struct tm ってどこに保存されてるの? 何度もlocaltime()を呼んでたらメモリオーバーフローしないの? 毎回free()してやれば無問題? って疑問を持ったんだけど、解説してる日本語サイトが全くみつからん。 すっげー気になるところなんだが。
>>368 freeしてもどうにもならなかったが・・・
・・・、 いや、何も言うまい。
初心者です。 ライフゲーム作ってて、初期の配列を別の配列に移して処理を行い 元の配列に移す操作がわかりません・・ もしよかったらソースコードを教えていただけるとうれしいです
>>367 何度localtimeしても同じアドレスが返ってくるよ
freeしちゃダメ
>>372 まったく同じ大きさの配列なら memcpy
>>372 メモリ系関数に慣れてないなら普通にforとかでなでこればいいじゃん
>>327 #define SIZE 100
typedef struct life_tag{
char p[SIZE][SIZE];
}life;
life a,b;
main(){
init(a);
while(1){
b=a;
b.p[0][0]=shori;
b.p[SIZE-1][SIZE-1]=shori_shori;
a=b;
}
}
>>376 構造体タグ名と型定義名は別の名前空間なので、life_tagとする必要はないです。
378 :
372 :2011/01/13(木) 00:47:29
みなさんありがとうございます 習いたてで、多分for文だけで書ければいいのですが、頭がごちゃごちゃしてしまって・・ for文のみで書くとどんな感じのソースになりますかね? 本当にすいません
なんで配列の代入はできないの?
持論(笑)
>>379 配列の大きさを覚えてないから無理っす。
>379 配列は代入可能な左辺値では無いため。
>>385 パーフェクトな回答をありがとっす。
localtime_r()か。
リエントラントとかはどうでもいいけど、手元で用意した構造体にさくっと入るとこが最高。
返値は捨てちゃっていいよね。
qsort で float データのソートの使い方がいまいちわからん・・・ 試行錯誤でなんとかちゃんと動くようになったが・・
どの辺が分からないというのだね
幾つも条件と処理があって、最終的には二手に分かれるコードがある。 func(){ do{ if(isA){ break; } 途中処理; if(isB){ break; } 成功処理; return 1; }while(0); 失敗処理; return 0; } こんな制御構造にするの初めてなんだけど、意外と見通しも良いし便利。 局所変数を全部引きずれる割りにダブるコードもないし、 fopenとfclose、malocとfreeなんかも対応させ易い。 ifのネストが無くなり、変なフラグも要らない。 何で今まで使ってなかったんだろ。 疲れて変な事してるかな?
392 :
デフォルトの名無しさん :2011/01/13(木) 02:08:41
perlにあるcrypt関数ってcでは何に当たりますか?
Cにもあるよ
do{}while(0);の中でbreak;を使うのは今更か。 なら良かった。 やってることはgotoと変わらん気がしてきたけど。
>>395 そう。だからそんな小手先の細工するより、分かりやすく書け。
まぁ、学生や底辺プログラマはこういう小さい小細工ばかりに目が行きがちなのは分からなくもない
優れたCプログラマだってさ。やったー!
まあ、学生だろうね
for( i=0; i<=10; i++) というfor文でiを1msごとに1プラスされるようにしたいのですがどうすればよいですか?
勉強するのにオススメの C言語の本教えてください
ほかでききます
405 :
デフォルトの名無しさん :2011/01/13(木) 03:11:51
リアルタイムOSでないwindowsだと、まず1msを出すのが難しいだろ
407 :
デフォルトの名無しさん :2011/01/13(木) 07:09:37
CUIアプリケーションの作成を行っています。 コマンドプロンプトからコマンドAを次のように実行するとき、 複数のファイルも同時に処理するためにはどうすればいいでしょうか? A file1 file2 file3 file4 ..... よろしくお願いします。
>>401 平均して1msならできるが
DWORD start, i;
start = GetTickCount();
for (i=0; i<1000; i++){
while (GetTickCount() - start <= i) Sleep(0);
}
>>407 main(){
if(argc>0){
const char *fname = (const char*)argv[1];
<処理>
}
}
としていたら
thread(void* p){
const char *fname = (const char*)p;
<処理>
}
main(){
int i;
for(i=1;i<argc;i++){
<スレッド生成>
}
<終了待ち>
}
とかにする
410 :
デフォルトの名無しさん :2011/01/13(木) 07:55:27
すみません。スレッドが何か分からないのですが、普通にargc回だけ 処理を繰り返すとかではだめなのでしょうか? また引数の数が幾つかるかは解るのでしょうか?
411 :
デフォルトの名無しさん :2011/01/13(木) 07:58:20
C言語にもスレッドなんてあるんですか。私はC++の話かと思いました。
>>410 > すみません。スレッドが何か分からないのですが、普通にargc回だけ
> 処理を繰り返すとかではだめなのでしょうか?
だめ。
"複数のファイルを順番に処理する" 事は出来ても
"複数のファイルも同時に処理する" 事が出来ない。
> また引数の数が幾つかるかは解るのでしょうか?
409では省略したけど、main関数の引数で分かる
int main(int argc,char **argv){}
413 :
デフォルトの名無しさん :2011/01/13(木) 08:41:18
自分のPCはAthlonXP2800なんですけど、スレッド処理ができるのでしょうか?
∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
できる
釣り針がでか過ぎて口に入りきらない
高度情報を教えてください
ここは試験対策スレではありませんので、他を当たってください
421 :
デフォルトの名無しさん :2011/01/13(木) 13:00:35
同時にの意味が皆さん厳格に解釈なさっているようですが、この場合の 「同時に」は一つのコマンドラインで複数のファイルを処理できるという意味です。
もちろんみんなわかってるさ 揚げ足を取って面白おかしく解釈して楽しんでるだけだよ
街で
>>422 を見かけたから顔面ぶん殴ってやったら涙目でなんかブツブツ言いながら顔真っ赤にしていたなwwwwwww
バスに乗って駅まで行く 駅に何時何分までに到着したいかを入力すると何時何分発のバスに乗れば良いのかを表示する っていうプログラムを作りたいんですけど、どういうふうに考えればいいのか分からないのでアドバイスください。
バスは分単位で正確に運行できない おわり
グーグルマップ使う
各駅に、他の各駅までの所要時間情報を持たせる。 A B C の駅があった場合、 AはBまでの時間、Cまでの時間の情報を持ち BはA、C CはA、Bへの所要時間の情報をもつ。 あとは、各駅が、バスの到着する時間の情報を持つ。 AはB行きがa1時 a2時、C行きがa3時 a4時 BはA行きがb1時 b2時、C行きがb3時 b4時 CはA行きがc1時 c2時、B行きがc3時 c4時 だとする。 この2つの情報から、答えを得る。 たとえば、スタート地点がA駅で、ゴールがB駅なら、 まずA駅の持ってる、各駅への所要時間から、C駅までかかる時間Tを得て 次にA駅の持ってる時刻表情報からC行きの時間 a3 と a4 からそれぞれ Tを引いて、値が0以上で最も小さい時間になる ax が、 乗るべきバスの時間になる。
計画妊娠させてやりたい
出産日を入力したら、何月何日にセックスすればいいか表示するプログラムを作りたいのですが、 どうすればいいのかわかりません。
俺にもわかりません
>>436 遅延評価を利用すれば、出産日を遅くすることが可能
>>422 おい無能で糞で低脳、何か言えよwwwwwwww
俺は高脳だからなwwwwwwwwwwwwwwwwwwwww
リエントラント(笑)
リエントラントとやらを説明できる奴なんてこのスレにいるわけがないw
基本情報技術者レベルの話だろ
>>442 基本情報技術者レベルの話すら説明できないお前って(笑)
/\___/ヽ //~ ~\:::::\ . | (・) (・) .:| | ,,ノ(、_, )ヽ、,, .::::| は? . | `-=ニ=- ' .:::::::| \ `ニニ´ .:::::/ /`ー‐--‐‐―´\
446 :
442 :2011/01/13(木) 20:03:38
422の時間は大学で授業受けてたっつーの。お前なんか幸せそうだな
446 :442:2011/01/13(木) 20:03:38 422の時間は大学で授業受けてたっつーの。お前なんか幸せそうだな
つーか流れ読んでなかったが
>>422 にレスしてるのってどうやら同一人物みたいだな
一人が悔しくて騒いでただけか
(1)とりあえず自演ということにする (2)「一人で悔しかったのか」というテンプレレスで勝った気になる
「糞」って連呼してる奴が何人もいるのか、語彙少なっw
422の時間は大学で授業受けてたっつーの(笑)
(3)とりあえず語彙の少なさに突っ込めば優位に立てると信じている
規制くらったから方針変更しただけじゃねーの
釣れたw
今年の春に基本情報受けますが何か?
受かってから言えよ まあ基本情報は合格率は低いが専門学校の奴が落ちまくってるだけだな 大学では周りにそんな資格に興味のある奴は少ないし、試しに受けてみたら2週間くらいの対策で受かったわ Cの問題の過去問は問題設定は置いといてもコードはK&Rの練習問題くらいだと思った それで俺が受けた回はCというよりただの文章読解の知能テストだったから焦った 選択問題だからC回避のためにJavaか表計算もやっといた方が良いかもな。俺は面倒だからC一択だったけど
457 :
316 :2011/01/13(木) 20:47:50
改造してスペーストルネードテトリスに改造した
http://codepad.org/8AImKgGH ちなみにボクのハイスコアです。すごいでしょ
[Scr: 5980] [Line: 99] [Lv: 5]
必勝法はきれいにブロックを積んでくこと。あと瞬時の判断力です(^_^v
>>456 お前の受けた回だけでも基本情報だけでもなくて、どの試験もいつもそんな感じ
国語力必須
>>458 過去問と比較して相対的にそうだったって言ってるのが分からないかな
そうか、すまんかった、許せ
仲良く!
462 :
316 :2011/01/13(木) 21:21:04
これが有名なレベル9の壁だ。 [Scr: 12180] [Line:178] [Lv: 9] 名人くらいになると、ときどきレベル9まで行けちゃうのさ♪ でもその先は・・・さすがの名人でもお手上げさ(>_・「 <コロコロ読者のみんなに、名人から特別アドバイス> 一本づつ消しても点数低いから、まとめて消すと点数高いよ。 でも、欲張りすぎると画面が埋まっちゃうから、そこは注意がひつようだ! あと、内部的な透明ブロックがどこまで下がってるのかを感ぢる”野性のカン”も大切。 それと、ゲームは一日一時間(>う<v
初期化子ってなんなんでしょうか…?(-_-; どなたか教えて下されませんか?
こんなスレに誤爆とは珍しいな
ここじゃだめですか? どこで聞けばいいんだ?
ごめん。それっぽいとこありました。byebye.
ここよりニコニコの方がスゴイしwwwwwww
468 :
デフォルトの名無しさん :2011/01/14(金) 02:41:36
C言語で文字列を逆順にするプログラムを書いています。 なるべくメモリ使用量を減らすことを念頭に置き、以下のような感じで作りました。 これだと、オリジナルの文字列がどんなに長くても、+1文字分しかメモリを使わないと思いました。 これはポインタを使っていないのですが、ポインタを使うように書き換えるにはどうしたらいいでしょうか? #include <stdio.h> #include <string.h> int main() { char orig[32] = "abcdef"; char tmp[1]; // 作業用 int i = 0; printf("origの内容 = %s\n", orig); printf("origのアドレス = %p\n", orig); for (i = 0; i < strlen(orig); i++) { printf("%c\n", orig[i]); printf("%p\n", &orig[i]); } int from = 0; int to = strlen(orig) - 1; char result[strlen(orig)]; for (i = 0; i < strlen(orig); i++) { tmp[0] = orig[from]; orig[from] = orig[to]; orig[to] = tmp[0]; from++; to--; if (from > to || from == to) { // from が to と逆転したら終了 break; } } // 続く
469 :
468 :2011/01/14(金) 02:41:56
// 続き printf("origの内容 = %s\n", orig); printf("origのアドレス = %p\n", orig); for (i = 0; i < strlen(orig); i++) { printf("%c\n", orig[i]); printf("%p\n", &orig[i]); } }
pを文字列の最後まで動かしてんのにそれを再利用しないでstrlen()使うとか、 ほんとに無駄なことが大好きなんだなw
メモリ減らすなら最初の文字列格納しているところを再利用しろ
474 :
468 :2011/01/14(金) 03:28:27
>>471 どうもありがとうございます。
ポインタ形式でも、
>>471 の5行目で char tmp として定義しているように、
詰め替え作業のための1文字は必要なのですね。
1点質問なのですが、4行目を
char *orig = "abcdef";
に書き換えると、
16行目の
*p = *q;
で segmentation fault で落ちるようになります。
これはどうしてでしょうか?
476 :
468 :2011/01/14(金) 03:32:44
>>474 お使いの環境では、char *p = "abcdef"; としたときに、p の指す領域が、書き込み不可能として扱われているのだと思います。
私の環境 cygwin/Windows XP, gcc4 では問題ありませんでした。
478 :
468 :2011/01/14(金) 03:38:00
>>477 レスどうもありがとうございます。
こちらの環境を書いていなくて申し訳ありませんでした。
Win Xp SP2、cygwin 1.5.21 、 gcc 3.4.4 (4年ぐらい前にインストールした環境)
で行いました。
$ uname -a
CYGWIN_NT-5.1 ***** 1.5.21(0.156/4/2) 2006-07-30 14:21 i686 Cygwin
>>474 >char *orig = "abcdef";
"abcdef"のアドレスをorigにおぼえさしてるだけでバッファは無い
481 :
468 :2011/01/14(金) 03:48:21
>>480 レスどうもありがとうございます。
char orig[] = "abcdef";
と
char *orig = "abcdef";
は同じものだと思っていたけど、
前者はちゃんとメモリを確保しているのに対し、
後者はあくまでも "abcdef" の先頭アドレスが、*orig というポインタ変数に入っているだけということか。
>>478 それは変ですね?環境は私とほぼ同じ。なんででしょう?
$ gcc-3 -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure -
-verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/s
hare/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --wit
hout-included-gettext --enable-version-specific-runtime-libs --without-x --enabl
e-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-li
bgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registr
y --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debu
g
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
$ uname -a
CYGWIN_NT-5.1 ***** 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin
483 :
468 :2011/01/14(金) 03:53:25
>>482 こちらではこんな感じになりました。(改行は手作業でやっています)
$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /gcc/gcc-3.4.4/gcc-3.4.4-1/configure --verbose --prefix=/usr --exec-prefix=/usr
--sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--enable-languages=c,ada,c++,d,f77,java,objc --enable-nls --without-included-gettext
--enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib
--enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm
--disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug : (reconfigured)
Thread model: posix
gcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
レジスタを使えば余分なメモリは1バイトも必要ないよ
低級言語と聞きましたがハッカー御用達言語ですか。
487 :
デフォルトの名無しさん :2011/01/14(金) 13:08:08
環境変数とAPIの違いが分からない、どちらもインターフェイスですよね?
488 :
デフォルトの名無しさん :2011/01/14(金) 15:22:52
へーそうなんだ
>>487 環境変数はメモリだよ。メモリに変数名と値がずらずら書かれてる。
環境変数をインターフェースとはあまり言わないと思うが、
まぁ実行環境とアプリケーション間のインターフェースなのかなぁ…んー。
余計な感動詞付けんな
491 :
デフォルトの名無しさん :2011/01/15(土) 07:02:59
C言語をはじめたばかりであまりわからないのですが、 ビットシフトはなんの役に立つのでしょうか?
1バイトずつrgb値が格納された変数からr値だけを取り出すときとか
画像から色がわかるやつ教えてください
色からその色の画像がわかるやつおしえてください
日本語で
日本語ですよどうみても あなたバカですか?
ひらがなと漢字を使ってますよ 文がおかしいといいたいのですか? 日本語でってなんかかっこつけていうんじゃねえよしね 死ねよかす 死ね
日本語でお願いします
だめだこりゃ
>>491 ビット演算をしたい時。
主に組み込み系。
デスクトップアプリやWEBアプリではほとんど使い道がない。
>>493 画像が格納されているVRAMのアドレスを調べてそのアドレスの値を取得。
画面モードによって画像データが何バイトずつ格納されているのか変わるので注意。
>>494 画像のVRAMのアドレスを調べて目的の色と同じ値をもつアドレスを走査。
そんなことしってんだよ!!
画像ってCで読み込むとバイナリで読み込まれるよな VRAM領域に読み込ませるにはどうやんの Windows7とLinux用に教えて APIとかあんの?
直接VRAMに読み込ませるAPIは無い。一般的にはRAMに読み込んでから転送。
Googleの色検索みたいなの もういいです
>>507 一般的にはRAMに読み込んでから転送
これをするPerlコード教えてください
510 :
デフォルトの名無しさん :2011/01/15(土) 18:41:47
ランレグス圧縮についてここまでできたのですが、 #include<stdio.h> int main(void){ char x1=0, x2=0; int x, count=0; while((x=getchar())!=EOF){ x2=x1; x1=x; if(x1==x2){ count++; }else{ if(count>1) printf("%d", count); printf("%c", x1); count=1; } } if(count>1) printf("%d", count); return 0; } これだと手入力でaaabbbだとa3b3と表示されます。 これをtxtファイルからaaabbbを読み込んでtxtファイルに出力してa3b3と表示できますか?
標準入出力へリダイレクトする hoge <in.txt >out.txt
ホモ
宿題スレにも沸いた奴だろ
515 :
デフォルトの名無しさん :2011/01/15(土) 19:26:54
答えたくなきゃ答えるな、アホ
516 :
デフォルトの名無しさん :2011/01/15(土) 19:36:05
ありがとうございます。 すいません。いろんな方の意見を聞きたかったので。
人の善意をぶちこわす最低な奴だな
ホモ
==main.c== #include <stdio.h> #include "struct.h" #include "sub.h" struct FOO g_foo; int main(){ printf("%d\n",g_foo.nNum1); Bar(); return 0; } ==sub.h== #include <stdio.h> #include "struct.h" void Bar(void); ==sub.c== #include "sub.h" void Bar(void){ printf("%d\n",g_foo.nNum2); } =struct.h= struct FOO{ int nNum1; int nNum2; }; extern struct FOO g_foo; 上記の様に、グローバルな構造体FOOをmain.cとsub.cで利用しようと試みているのですが、 redefinition of 'struct FOO'等のエラーが出てしまいます。 何方か解決方法を教えていただけないでしょうか。
>>519 main.c から
#include "struct.h"
#include "sub.h" → #include "struct.h"
でstruct.hが合計2回読まれてるので、struct FOOが2回定義されるから、エラーになる
インクルードガードでぐぐるとよい
521 :
519 :2011/01/15(土) 20:16:21
>>520 回答有難うございます。
==struct.h==
#ifndef STRUCT_H
#define STRUCT_H
struct FOO{
int nNum1;
int nNum2;
};
extern struct FOO g_foo;
#endif //STRUCT_H
で動いてくれました。
522 :
デフォルトの名無しさん :2011/01/15(土) 22:27:13
すみません関数の 返す値とか返り値とか 関数名()の()の中身とか がわかりません なにがわからないのかわからないかもしれませんがorz
523 :
デフォルトの名無しさん :2011/01/15(土) 22:32:11
関数fに対して、f(x, y)のx, yが引数、関数fに引数x,yを渡して処理した結果が戻り値。 C言語ではf(x, y)と書くことで関数fに引数x, yを渡す。 a = f(x, y); とすれば、変数aにf(x, y)の戻り値が代入される。
ホモ
()には関数にあげるもの、返り値ではなく戻り値は関数がくれるもの
戻り値のほうが多数派とはいえ、返り値もreturn value の訳語としては十分通用するレベル
返り値は素人臭くて恥ずかしい
528 :
デフォルトの名無しさん :2011/01/15(土) 23:44:15
別にどっちでもいいんだけどね
529 :
369 :2011/01/15(土) 23:46:19
ASP.NETから起動したexeの結果をhtml側に受け渡すためには return を使うのでしょうか?
530 :
デフォルトの名無しさん :2011/01/16(日) 00:18:45
ポインタって何の役に立つんですか?プログラムを作る上でどういった利点が あるのでしょうか??
ちょっと確認したいんですが fgets(t,100,fp)で標準入力から100バイトとってtに入れるんだけど \0で文字の終わりですよね で \0以降は何も入らないというか入ってないんでしょうか?
>>530 printf に文字列を渡すことができる
画像をメモリ上に読み込む関数をおしえてくれ
535 :
デフォルトの名無しさん :2011/01/16(日) 00:39:33
loadimg()
536 :
デフォルトの名無しさん :2011/01/16(日) 01:06:03
EOFって何ですか? 良くわかりません。 編集エディタの上左端に[EOF]とよくありますよね? プログラミング組む時も良く使うのですがEOF=-1?? 良く分かりません。教えてください。
End of File
538 :
デフォルトの名無しさん :2011/01/16(日) 01:13:53
>>537 つまりreturn0;=EOFですか?
このプログラムは正常終了したよって知らせるものですか?
良く分からなくて頭がおかしくなりそうです。
ファイルの中のデータの羅列の最後に来ましたよ〜 っていうのをお知らせするもの… とでも思ってくれればよい
ファイルの終端記号 ファイルを最後まで読み込んだ時に返される。 実体は-1
>>538 編集エディタのEOFは文章の最後という意味。
開業したらEOFは一行下がるでしょ?
542 :
デフォルトの名無しさん :2011/01/16(日) 01:23:18
543 :
デフォルトの名無しさん :2011/01/16(日) 01:26:06
>>541 最後の行が変わっていいのですか?一行下がると
それは最後じゃないじゃないですか。
return 0; はプログラムの最後の戻り値。 エディタのEOFは編集中の文章の最後という意味。 何のエディタ使ってるか知らないがエディタはC言語専用のものではない。 手紙を書こうがJAVA言語書こうが自作言語書こうがエディタで書いている文章の最後 を表す。 もう来るな!
これはちょっと勉強し直せとしか言えない
546 :
デフォルトの名無しさん :2011/01/16(日) 01:30:16
文章の最後がEOFってどういう意味ですか? 例えば100行目=EOFだとして、改行して101行目になるならば EOF=100行目に矛盾しませんか?
547 :
デフォルトの名無しさん :2011/01/16(日) 01:32:29
文章の最後の戻り値ということは #include<stdio.h> EOF int main()EOF {EOF int i;EOF i=1;EOF printf("%d\n",1);EOF return 0;EOF }EOF こうするのですか?
あ〜 プログラム中に書いてあるEOFは ファイルオープンしてデータの最後を表す。 エディタについている消したくても消せないEOFというのはエディタのもの。 別物と思っとけ。
>>547 そのプログラムコードではEOFはすべて消せ。
さすがにネタだろww
\0とごっちゃになってる。それは文字列の終端
たとえばプログラムやる人ならわかると思うけど、0には特別な意味を持たせることがある。 たとえば配列に文字を入れていき、最後に0を入れたところを終わりとする決まり。その最後の印として0を使ったりする。 でも、べつに実際は0でなくてもいい。1でもいいし、2でもいいし、'A'でも'B'でも何でもいい。その配列を読む仕組みを自分で決めて、たとえば 文字列の最後を示す印に'A'をつかったって良い。 ただ、実際は0が都合がいいから0が使われてるだけ。 もちろん0の後ろに文字を続けたっていい。 EOFも同じで、ただの印。テキストファイルの終端を表す。 べつにEOFとしてどんな数字を使ってもいい。ただ、実際は1111111111..... が都合がいいから、11111111111....がEOFとして使われてるだけ。 (-1は、全部のビットが1の状態。11111111......) (int型が32bitだとしたら、EOFはint型なので、実際はビットは 11111111111111111111111111111111) たとえば、ファイルの最後にEOFが無くてもいいし、文字列の最後に0が無くてもいい。 'A'をEOFとして扱ってもいいし、文字列の最後を'A'として扱ってもいい。自分でデータを読む関数を書くときに、それがわかってれば実は何を使っても書ける。 ただ、一般的にEOFは-1だし、文字列の最後は0にするのが普通だから、他の人はテキストデータを読むときに、そういう形で記録されてることを期待してデータを読む。 だから一般的な0やEOFに合わせた方が他人にも使いやすいデータになるだろうし、他人の作った関数で処理するときも上手く動くだろうってだけの理由。 だから文字列の最後を意味する数字や、テキストファイルの最後を意味する数字がほぼ固定されてる。でも実際は何でもいい。関数を書く本人がわかってれば何を使っても動く。
ナルホドやっと分かりました。 つまりこういうことですね。[EOF]
556 :
デフォルトの名無しさん :2011/01/16(日) 01:51:10
マジでこういう釣りはいいから…
558 :
デフォルトの名無しさん :2011/01/16(日) 01:54:25
>>554 ありがとうございます、じっくり読んでまたレスします。
本当に分からない事が次々に壁になって意識が飛びそうです。
俺の予想では C言語初めて+エディタというものも初めて。 サクラエディタあたりを使っているためエディタのEOFと ファイルからのデータ読み込みのEOFがごっちゃになってる と見た。
>>557 たまにはこういう息抜きがあっても良いw
釣り針がでかすぎて飲めねーよ
562 :
デフォルトの名無しさん :2011/01/16(日) 08:42:57
乱数初期化したら?
n = rand() % 6; の前に srand((unsigned) time(NULL)); を追加
C言語の入門書はスレッドとか画像処理も教えるべき
mainから関数呼び出してfor文を1回目実行させ mainにもどり、また1回目で呼び出した関数でfor文を実行した場合 2回目のfor文では初期化((for(n=0;fgets(t,10,fp)!=NULL;n++)の場合n=0) は実行されるんですか?
(ホモ);
*
for文の中でnの値をprintfしてみればいいじゃない
>>566 なんで実行されない可能性があると思うの?
自分で勉強用に ubuntu10.10で、画像メモリにデータを書き込む方法。のテストを書いてみました。 特別なライブラリは、一切使ってません。(使ったライブラリーは stdio.h と stdlib.h だけです。) よかったら参考にどうぞ。 ダウンロード方法; 1. 適当なディレクトリに移動します。 2. ソースをダウンロードします。 git clone git://git.pf.sourceforge.jp/gitroot/k/ke/kemeco/io_fb.git コンパイル方法: 3. ソースディレクトリに移動します。 cd io_fb 4. コンパイルします make 実行方法: 5. (Alt + Ctrl + F1) 〜 F6 のどれかのキーを押して、tty画面に移動し、ログインします。(gnomu上のコンソールでは動かないです) 6. 管理者権限でプログラムを実行します。(ユーザー権限だと、フレームバッファに直接書いたりできません) sudo ./io_fb_test 7. うまく動けば、画面にフェドラっぽい青いグラデーションが表示されるはずです。 gnome 画面に戻るには (Alt + F7) 〜 F8 のどれかのキーを押せば戻れます。
http://codepad.org/pTl3CQVM このプログラムのコンパイル結果が
$ gcc x.c
x.c: In function ‘sort’:
x.c:84: warning: passing argument 4 of ‘qsort’ from incompatible pointer type
/cygdrive/c/Users/mituru/AppData/Local/Temp/ccH37fKt.o:x.c:(.text+0x1b1): undefi
ned reference to `_fptintf'
collect2: ld returned 1 exit status
こうなって実行できません><
>>572 間違い探し。 以下の2つの違うところはどこでしょう?
fptintf
fprintf
>>572 84行目の引数の型が間違ってる。というかmycompに引数を与えてない
■質問 hello.c というソースコードから hello.obj, hello.exe ができるまでの流れについて確認させて下さい。 自分なりの考えを以下に書きましたので、 合っているかどうかコメントいただけるととても嬉しいです。よろしくお願いします ----------------------------------------------------------------------------- ※ hello.c は「hello」という文字列を出力するソースコードとする。 文字列を出力するには printf というライブラリ関数を使うが、 使うには宣言をする必要がある。それが #include <stdio.h> という命令である。 printf というライブラリ関数はライブラリ内で定義されているため、 hello.c の実行可能プログラムを実行するにはライブラリもメモリ上にロードする必要がある。 そして、メモリ上にロードされたライブラリにある printf のアドレスを 実行可能プログラムが参照する必要がある。 ソースコードをコンパイルして生成するオブジェクトファイルには、 printf のアドレスは仮のアドレスとなっている。 リンカを実行した時に仮のアドレスが確定し、実行可能プログラムが作られる 以上
>>575 だいたいいいと思うけど、コンパイルのときのプロセスと実行時のプロセスの説明が
混ざってるのが気になる。
>>576 即レスありがとうございます……!! もうちょっと考えてみます
うん、Javaを使うよね
ふーーん
ほも
エピステーメー も同じようなテクニックの記事をコードジンにのせてたな。
C++でも自前でvtable作ったりする事はあるけどな
>>583 お前みたいな、発想のやつっているよな〜
mallocを自作してみましたみたいなwww
でも、お前みたいな発想好きだよ
585 :
デフォルトの名無しさん :2011/01/16(日) 21:27:27
エピステーメーってキモイと思うんだけど
586 :
デフォルトの名無しさん :2011/01/16(日) 21:33:59
まあ、普通にキモイわな。
587 :
デフォルトの名無しさん :2011/01/16(日) 21:38:36
よかった、俺だけじゃなかったんだな 確かにあの人技術はすごいのかも知れないけど、掲示板とかの発言がちょっと
588 :
デフォルトの名無しさん :2011/01/16(日) 22:18:43
575での仮のアドレスってなに? >リンカを実行した時に仮のアドレスが確定し、 じゃあ真のアドレスはどのタイミングで確定するの?
589 :
デフォルトの名無しさん :2011/01/16(日) 22:19:36
すごいの?あの人
590 :
AQ :2011/01/16(日) 22:28:34
自動微分のボトムアップ算法でC言語ではどのようにして作ればよいのですか_?
591 :
デフォルトの名無しさん :2011/01/16(日) 22:39:38
まず服を脱ぎます。
もちろん下からな
へえ
594 :
デフォルトの名無しさん :2011/01/16(日) 22:46:19
と言っても、靴下は脱ぐなよ
595 :
AQ :2011/01/16(日) 23:04:24
早く教えてください 下半身が寒くて風邪ひきそうです!
596 :
デフォルトの名無しさん :2011/01/16(日) 23:07:47
ここで確認です。PCは起動していますか?
597 :
AQ :2011/01/16(日) 23:23:31
PC筋ならヒクヒクしてます!
598 :
デフォルトの名無しさん :2011/01/16(日) 23:34:41
コードを書いて、終了です。
for(j=moto;j==genzai;j++) { goukei += kyori[j]; printf("%d\n",goukei); } この文でエラーみたいなのがでるんだけど、どこか間違っていますか。 文法的に間違ってあるところがあるなら指摘よろしくお願いします。
600 :
AQ :2011/01/17(月) 00:49:28
C言語で書くと自動微分のボトムアップ算法でどのような感じでプログラムかけます? なり済ましやめてください
601 :
デフォルトの名無しさん :2011/01/17(月) 00:51:46
まず服を脱ぎます。
もちろん下からな
603 :
デフォルトの名無しさん :2011/01/17(月) 01:03:20
と言っても、靴下は脱ぐなよ
早く教えてください 下半身が寒くて風邪ひきそうです!
>>599 for(j=moto;j!=genzai;j++)
{
goukei += kyori[j];
printf("%d\n",goukei);
}
>>605 ありがとうございます!
なんかできるような気がしてきました。
607 :
デフォルトの名無しさん :2011/01/17(月) 01:55:24
え?
>>606 具体的にどんなエラーが出るか貼ると教えやすいよ。
後一部分だけだと分かりにくいし。
609 :
デフォルトの名無しさん :2011/01/17(月) 10:14:12
#include<stdio.h> int main() { int x scanf("%d\n",x); printf("%d\n",x); return (0); } エラーが出ます、どうしたら・・・
610 :
デフォルトの名無しさん :2011/01/17(月) 10:15:00
間違えました #include<stdio.h> int main(void) { int x; scanf("%d\n",x); printf("%d\n",x); return (0); } です。何がおかしいでしょうか?
もまえら double x=6.5; printf("%lf",x); printf("%f",x); どっち使ってる?
%f
%fだな
どっち使ってるって、上は間違いじゃん。正しく動くのは、あまりに間違いが多くて後から対応したからだろ
616 :
612 :2011/01/17(月) 11:31:23
>>615 %lfは元々あったものじゃないのか。
なるほろ。
初心者の時double型をscanf("%f",&x)って書いて困ったことがある。
あるある
ニコニコで「テトリスを1時間で作る」観たけど あれはすごいな。 俺プログラマになれないと思った。
あれが誰にでもできるってマジかよぉ
623 :
デフォルトの名無しさん :2011/01/17(月) 15:34:30
>>621 テトリス自体は単純なプログラムかもしれないけど
というか色々なツールを使ってパソコンの事がより理解できるのが
楽しかったんだよ。APIだとメモ帳だのブラウザだのC言語だtの
色んなツールでCUIアプリ作れるんだって実感してワクワクした。
そりゃCygwinの出力ターミナルだけでテトリス作るのはさすがに無理だけどな。
嘘を教えない 標準Cじゃ無理だがそうでないならできるだろ?
俺もVIPの安価でゲームを作ってたけど誰も覚えてないだろうなw 昔はそういうノリのスレが多かったのに最近はスレが立った途端に「企画厨乙」だからな。 VS起動するまで待てよと、プログラマの俺様が見てるのに勝手に終わらせるなといいたい。
昔は1ターンごとに印刷してたゲームだってあるんだから 何だってありだといえばありなんだよ ただ、今の時代にそういう制限をして楽しいのはプログラマだけ。
思うんだがプログラミングやってたら分かるけど2Dゲーム作るのは めちゃくちゃ嵌まるが、3Dゲームやりだすと途端にフォーマルにな るから糞つまらんのよな。 コマンドプロンプト上でテトリスみたいなの作れるの??? 色は無理なのは分かるけど、棒が落ちてくる出力機能何てあったっけ? APIが必要に決まってる。
>>626 プログラマまじかっこいい!!!
このスレの人、何だかんだで答え教えてくれるからまじ便利!!
>APIが必要に決まってる いや最初に標準Cのみじゃ無理だって言ったろ・・・・・・・ なに言ってんだよ
エスケープシーケンスを使えば色付きテトリス作れるだろ。 最近のWindowsは無理だったと思うけど。
exe単体とかうpされてもwwww よしば色ついてたとしてもエスケープシーケンスではないだろうし
634 :
デフォルトの名無しさん :2011/01/17(月) 17:25:59
635 :
デフォルトの名無しさん :2011/01/17(月) 17:26:41
エスケープシーケンスって何? 出力媒体?
636 :
デフォルトの名無しさん :2011/01/17(月) 17:36:26
449行www どんな複雑なプログラミング何だよw ここ入門編だぞw
637 :
デフォルトの名無しさん :2011/01/17(月) 17:41:36
>>636 すいません・・・w
どこで聞けばいいですかね?
デバッグってのは自分でするもんだぞw
mudaNodeのwhile文内の先頭に if (target->oya == NULL) { puts("!!!!!!!!!!"); exit(1); } って入れたら分かるかもね
640 :
デフォルトの名無しさん :2011/01/17(月) 18:08:49
ネタにしては時間掛けたな
流石にもうお手上げだよ それに答えてあげるにはこのプログラム全体を理解しないといけない それはめんどいわ if (target->oya == NULL) { return count; } ってしとけばとりあえずコンパイルは通るし結果も出るよ 多分結果はおかしいだろうが
643 :
デフォルトの名無しさん :2011/01/17(月) 18:28:04
449行クソワロタww それをデバッグしろとかプログラマ推奨環境だろww
宿題依頼者は何が起こっているのかわからないんじゃないか? 解説しなよ〜。
645 :
デフォルトの名無しさん :2011/01/17(月) 18:38:30
646 :
デフォルトの名無しさん :2011/01/17(月) 18:47:15
なんとか自己解決しました! ご迷惑おかけしました
648 :
デフォルトの名無しさん :2011/01/17(月) 22:53:47
649 :
デフォルトの名無しさん :2011/01/17(月) 23:25:01
原因は分かります。
$ gcc -o tyu.exe a.o b.o c.o cygwinでこのようにコンパイルするとなにがおこるんですか
PCが物故割れた
652 :
デフォルトの名無しさん :2011/01/17(月) 23:44:50
>>650 gcc: a.o: No such file or directory
gcc: b.o: No such file or directory
gcc: c.o: No such file or directory
gcc: no input files
>>650 実際にはリンカ (ln?) が呼び出されます。
オブジェクトファイル a.o b.o c.o とスタートアップモジュール(crt.o または gcrt.o?) が結合されて、tyu.exe という名前の実行ファイルが作成されます。
c のソースファイルからオブジェクトファイルを作成するには、gcc -c a.c などとします。
なるほど実行を行わないでリンクしなおすわけね
656 :
デフォルトの名無しさん :2011/01/17(月) 23:53:41
> リンカ (ln?) 助けて、腹筋が…
失礼 ld でしたか。 ln はハードリンク/シンボリックリンクを張るコマンドでしたね。
658 :
デフォルトの名無しさん :2011/01/18(火) 00:01:38
さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c さすが糞鶏◆QZaw55cn4c
>>608 レスサンクス。
出るのはエラーというかプログラムがそこのラインだけをなぜか無視するんだ。
結局、「==」が原因だったみたいで「!=」にしたら解決した。
情報系の大学に進学が決まって パンフレットに書いてあるカリキュラムなどを見ると C言語やJavaを使ったプログラミングがあります C言語から習うということらしく、ちょっと先に勉強しようと 思い調べてみたのですが、コンパイラ? というものが 必要らしく、数が多くどれを導入すればいいかわかりません 使っているOSはWindowsなのですが オススメのコンパイラがあれば教えて貰えないでしょうか?
どうせ大学ではlinuxかcygwinでgccだよ
visual studio 2010 expressを入れてそれから考えろ
いや入学したらDreamSparkで無料だから。でも大学でやる程度ならそんな糞重いソフトをいちいち立ち上げたりしない
665 :
デフォルトの名無しさん :2011/01/18(火) 00:31:47
↑なにこいつw
VisualStudioをさっさと入れてさっさと始めるのがいい。 コンパイラの使い方なんぞ大学行ってから覚えろ
VS信者がそろそろウザかったから
好きなのは MinGW だが、他人に薦めるなら Visual Studio
Visual Studioの無料版Visuar Studia
Comeauにしとけ。 良いコンパイラだぞ
borlandが出ねえ。C言語を始めよう と一緒に使ってお手軽環境なのに
今Vectorみたらコンパイラ付属で設定せずに使えるらしいエディタがあったからそれ使ったらどう?
今インテリセンスが効かない環境でプログラムしたらストレスで死ぬ
675 :
デフォルトの名無しさん :2011/01/18(火) 00:50:51
これを機にLinux環境でgccを使うべき。
virtualbox+ubutuオヌヌメ
つ How Linux works
ここに書かれたやつ調べてみて どれか導入してみます あと本も買ってみます みなさん、遅い時間にありがとうございました。
682 :
デフォルトの名無しさん :2011/01/18(火) 01:07:05
いまどきlinuxにこだわる必要ない Javaもいらない
ほっほっ
684 :
デフォルトの名無しさん :2011/01/18(火) 01:13:28
パソコン自体いらない
ふっほっ
俺自体いらない
どぴゅっどぴゅっ
>>504 Cの標準ライブラリーだけで
三角形にBMP画像をテクスチャーマッピングして、フレームバッファに描き込んで、画面に表示するプログラム作ってみました。
(linuxです。ubuntu10.10(32bit)で動作確認)
ダウンロード方法
git clone git://git.pf.sourceforge.jp/gitroot/k/ke/kemeco/testcode.git
コンパイルはダウンロードしたやつのディレクトリに移動して make と打つだけです。
実行は Alt + Ctrl + F1 などで移動できる tty 画面で sudo で実行する必要があります。
(管理者権限でないと、フレームバッファーに描き込めないらしい…)
コマンドは sudo ./fb_paint_tool_test と打ちます。
とりあえず、頂点を一ヶ所だけ上下左右に移動できます。h j k l キーで、操作はviと同じです。あとスペースで表示リセット。
終了は作ってません。 Ctrl + c とかで適当にお願いします(笑)
689 :
デフォルトの名無しさん :2011/01/18(火) 02:23:56
グロ注意
自分で自由なプログラムをかけって課題が出されたんですが、 アルゴリズム(ヒープ、クイック、二分探索木など)を用いて出来る ある程度簡単なプログラムは何があるでしょうか? 良いアイデアがあったら教えてください。
691 :
デフォルトの名無しさん :2011/01/18(火) 03:21:37
HELLWWORK
質問させてください 今からWin32APIを学ぶことについてどう思いますか? ものすごく非効率な長ったらしいプログラミングで おまけに予約語が多くて理解しづいらいし しかもそろそろWin64APIがくるんじゃないかと思うとあんまりやる気ができません もし「それでもやっとけ!」という理由があれば教えてください
やるな
694 :
デフォルトの名無しさん :2011/01/18(火) 03:55:31
695 :
デフォルトの名無しさん :2011/01/18(火) 04:29:07
#include<stdio.h> int main(void){ char x1,x2; int x,count=0; while((x=getchar())!=EOF){ x2=x1; x1=x; if(x1==x2){ count++; } else{ if(count>1) printf("%d", count); printf("%c", x1); count=1; } } if(count>1) printf("%d", count); printf("%c",x1); return 0; } 入力した文字をカウントするプログラムです。 aabbと入力するとa2b2となるのですがabbと入力するとab2となります。 ab2をa1b2にするにはどうすればいいのでしょうか?
>>695 if(count>1)これいる?
あとcount=0はcount=1かな
今手元に環境ないから試せてないけど
それよりもababって入力されたらどうするんだww 根本的にやり方間違ってる
ああ、連続でしか入力されない前提だと思った
699 :
デフォルトの名無しさん :2011/01/18(火) 04:50:16
>>698 その通りです。連続でしか入力されない前提ですね。説明不足でした。
全然もとを活かしてないけどこんな感じかの Cって初期化しないと配列ってどうなってたっけ0で埋められてる気もしたけど念のためいれてある。 #include<stdio.h> int main(void){ int c[26]={0}; int i; int x; while((x=getchar())!=EOF) { c[x-'a']++; } for(i=0;i<26;i++) { if(c[i]>0){ printf("%c",i+'a'); printf("%d",c[i]); } } return 0; }
アホが来たw
おそらく学校の宿題で、しかも配列使えないとみた それを考慮して作った #include<stdio.h> int main(void){ char x1,x2; //x1は入力用 x2は確認用 int count = 0; x2 ='\0'; //何も入ってない while((x1=getchar()) != EOF){ //文字入力された? if(count == 0){ putchar(x1); //もしカウントが0ならば、入力された文字を出力 count++; } if(x2 == '\0'){ x2 = x1; // もし初回ならば、確認用x2にx1を入れる }else if(x1 == x2){ count++; //もし前に入力されたのと同じであればカウント }else{ printf("%d",count); //違う文字が入力されたのならカウントを出力 count = 0; //カウント初期化 x2 = x1; //確認用に新しい文字を入れる } } printf("%d",count); //EOFが入力されたらできなかったカウントを出力 return 0; }
すまん、こっちでコメントいれたから全角スペースが入ってしまった #include<stdio.h> int main(void){ char x1,x2; //x1は入力用 x2は確認用 int i,count = 0; i=0; x2 ='\0'; //何も入ってない while((x1=getchar()) != EOF){ //文字入力された? if(count == 0){ putchar(x1); //もしカウントが0ならば、入力された文字を出力 count++; } if(x2 == '\0'){ x2 = x1; // もし初回ならば、確認用x2にx1を入れる }else if(x1 == x2){ count++; //もし前に入力されたのと同じであればカウント }else{ printf("%d",count); //違う文字が入力されたのならカウントを出力 count = 0; //カウント初期化 x2 = x1; //確認用に新しい文字を入れる } } printf("%d",count); return 0; }
704 :
デフォルトの名無しさん :2011/01/18(火) 08:58:05
特定のIPアドレスの人間からふたつの数字を受けたとったり送ったりするにはどうすればいいですか? サーバーを介さずに、コンソール画面で行いたいのですが、何から勉強すればいいでしょうか もしサンプルプログラムでもあればお願いします
ソケットを勉強するといいです
[フォルダ名1] - [フォルダ名1-2] - [フォルダ名1-3] というふうに「フォルダ名1-2とフォルダ名1-3」のフォルダ名を取得することはできるのでしょうか? 取得することができるなら、どういったものを使えば取得できるのでしょうか?
707 :
デフォルトの名無しさん :2011/01/18(火) 15:11:51
スレ違い
709 :
デフォルトの名無しさん :2011/01/18(火) 16:24:53
710 :
デフォルトの名無しさん :2011/01/18(火) 17:43:08
「作った」じゃなくて「写した」じゃねーの?w
714 :
711 :2011/01/18(火) 19:06:54
>>713 まあ、穴埋めだからほとんど自分で書いてはいないです
715 :
デフォルトの名無しさん :2011/01/18(火) 20:04:07
0〜2 の間を打てばそれぞれの int a; scanf("%d,&a"); switch(a) case :0 breake; case :1 breake; case :2 breake; 0〜2以外を打てばまた入力からもどすにはどうせればいいですか??
int a; b: scanf("%d",&a); switch(a) { case 0: break; case 1: break; case 2: break; default: goto b; }
717 :
デフォルトの名無しさん :2011/01/18(火) 20:16:14
ありがとうございます
>>716 ほかに方法ってないんですか??whileかなにかで
breake;
do-while文
国に帰る
goto使うなって言ってんだろ!!!
722 :
デフォルトの名無しさん :2011/01/18(火) 20:32:16
int a; do { scanf("%d",&a); }while( check(a) ); こういう風にしたのですが check(a)ってどうすればいいですか??
723 :
デフォルトの名無しさん :2011/01/18(火) 20:32:19
//
>>695 // 入力があったらカウントして → 古い字と違ってたら色々表示して → EOFなら終わり
// 言葉のまんま、そのまま素直に書いただけ
#include<stdio.h>
void main()
{
int count = -1;
int a = EOF;
do {
int _ = getchar();
count++;
if((a != _) && (count > 0)) {
printf("%c%d ", a, count);
count = 0;
}
a = _;
} while(a != EOF);
}
a < 0 || 2 < a
int a; do { scanf("%d",&a); }while(a < 0 || 2 < a);
727 :
デフォルトの名無しさん :2011/01/18(火) 21:00:17
>>725 scanf("%d",&a);
while(a<0||2<a){
scanf("%d",&a);
switch(a) {
case 0:
break;
case 1:
break;
case 2:
break;
}
}
switch(a) {
case 0:
break;
case 1:
break;
case 2:
break;
}
ってことですか???
えっ
730 :
デフォルトの名無しさん :2011/01/18(火) 21:10:36
int a;
do{
scanf("%d", &a);
}while(a
>>2 );
// お、おしい…!!(orz
732 :
デフォルトの名無しさん :2011/01/18(火) 21:43:58
>>731 やっぱwhile
だけじゃ無理ぽですよね??
できますん
734 :
デフォルトの名無しさん :2011/01/18(火) 22:09:14
int a; do { scanf("%d", &a); getchar(); } while(a!=0 && a!=1 && a!=2); 間にゲッチャを挟んだら、なぜか動いた。不思議すぎる。
改行
へえ
C言語の公開されてるライブラリがたくさんあるサイト教えてください
sourceforge.netとか?
codeliteで日本語入力したいけど検索しても 見つかりません。 どなたか情報お持ちの方いらっしゃいませんか。
いえいえ
743 :
706 :2011/01/19(水) 08:47:06
>>707 C言語だけではやっぱりできないんですか、ありがとうございました
745 :
デフォルトの名無しさん :2011/01/19(水) 15:48:49
SAがうまく動いているか疑問です、、、
http://codepad.org/Vnyt0IuA はじめてC言語でSAを作ったのでこれであっているのかわかりません。。。
あと初期温度の設定方法等もイマイチわかりません、、
またブロック1つ1つの座標を出したいのですが、うまくいきません。。
質問が多いですがよろしくお願いします。
ulFlagの状態によって表示する要素を変化させようと思い、以下の様なコードを書きました。 #include<stdio.h> #define GetNum(ulFlag) ((ulFlag&0x01)?0:(ulFlag?0x02)?1:2) int main(){ int nNum[3]; unsigned long ulFlag=0x01; nNum[0]=1; nNum[1]=1; nNum[2]=2; printf("%d\n",nNum[GetNum(ulFlag)]); return 0; } しかし、printf()の部分で「error: expected ':' before ')' token」とエラーが出てしまいます。 恐らくマクロが間違っていると思うのですが、どの様に修正すればよいのでしょうか。
748 :
746 :2011/01/19(水) 17:41:51
>>747 回答有難うございます。
(ulFlag?0x02)
を
(ulFlag&0x02)
に修正した所、無事動作しました。
原因がタイポとはお恥ずかしい限りです...
与えられた点座標から凸包を作りたいのですがどうすればいいですか? 角度を使うみたいですが角度に関するプログラミング知識がないです
角度に関する数学知識はありますか?
751 :
デフォルトの名無しさん :2011/01/19(水) 19:47:27
int main(int argc, char *argv[ ]) を使ってファイル演算子のプログラムを作ってるのですが 自分はコンパイルするときに引数を指定するのではなく、プログラム実行時にscanfを使って引数を指定したいのですが どうやればいいのでしょうか そのまま for(i=0;i<argc:i++){ scanf( "%d", &argv[i+1] ); } ってやって引数を指定できますか? できればどうすればいいか教えて欲しいです・・・
argv[i+1]
754 :
デフォルトの名無しさん :2011/01/19(水) 19:55:55
>>752 それを調べればできるんですね。調べてみます!
scanf("%d", &i); i に入力した数字が入る argv[i+1] 実行時に渡した引数が文字列で得られる sscanf(argv[i+1], "%d", &i); 実行時に渡した引数(文字列) から整数値を i へ入れる
どうせエラーチェックしないんなら atoi の方が簡単じゃない?
757 :
デフォルトの名無しさん :2011/01/19(水) 20:03:50
>>755 つまらない確認ですが
scanf("%d", &i);
sscanf(argv[i+1], "%d", &i);
の流れで、コンパイル時のコマンドライン引数をプログラム実行中のコマンドプロンプトから入力して指定出来るってことですか?
>>757 実行時の引数: 実行ファイル名に続いてタイプした文字
例: a.exe 1 2 3
これは argv[] から得られる
実行中コマンドプロンプトからの入力
これは scanf() で得られる
コンパイル時(≒実行ファイルを作る時)の引数って何のことだ?
コンパイラに渡す引数のことか? 例: cc -c a.c
759 :
デフォルトの名無しさん :2011/01/19(水) 20:19:34
>>758 えっとですね、
コンパイラの時に
a.exe ファイル名 文字列1 文字列2って言うのやつです
これでファイルを指定して、そのファイル名に文字列1、2をデータとして付随させるって感じなのでしょうか・・・
>>759 コマンドプロンプト上で
a.exe ファイル名 文字列1 文字列2 [enterキー]
こうした時だな? (統合環境からデバック実行という話ではない: このケースは統合環境側で設定する話)
なら
argc は 4
argv[0] が a.exe
argv[1] が ファイル名
argv[2] が 文字列1
argv[3] が 文字列2
こういうふうになってくれる
761 :
デフォルトの名無しさん :2011/01/19(水) 20:27:39
>>760 おお、それが理想でした!ありがとうございます!やってみます
どうもどうも
こちらこそ
->ってどういう演算子なんだっけ? またわすれちったw
769 :
751 :2011/01/20(木) 00:35:32
;-)
Nが”自然数”の2乗なのかどうかを判定するには、どういう風にすればいいでしょうか? 苦肉の策で以下のようなプログラムが考えられますが、 もっと高速なアルゴリズムはないでしょうか よろしくお願いします。 int a; a=(int)sqrt(N); if( a^2 == N^2 ){ printf("Nは自然数aの2乗の数である\n"); } else{ printf("Nの2乗根は自然数ではありません\n"); }
>>772 上記に誤りがありました。
誤) if( a^2 == N^2 )
正) if( a^2 == N )
sqrt()使ってるのに高速化とかw
>>772 N の範囲が狭くて、何度も計算を繰り返すなら
一度計算しておいて後はテーブルを参照するとか
>>774 高速じゃないのでお尋ねしている次第です
>>775 Nの範囲は1000^2くらいまでなので、ちょっと厳しいですね。
int f(int n) { int i, j; for(i = 2; i * i <= n; i++) { for(j = 0; n % i == 0; j++) n /= i; if(j & 1) return 0; } return n == 1; } 素直に書けばこんなもんかな
>>776 二乗かどうか調べるだけなら 10^6 bit ですむ
これって 125kB にしかならないからパソコン上でなら問題ないと思う
何の二乗か調べる必要があるなら short を使うとして 2MB でおk
下の桁から3,7,9の出現確認を遡り繰り返せばいい
>>777 さんのアルゴと
>>778 さんのテーブル参照アルゴと
以下の単純なアルゴとではどっちが早いんですかね…
高速かの知識がないため、どれが早いのか判断できません
すみません
int a;
for(a=2; a*a<=N; a++){
if( a*a == N ) return 0;
}
実測しろよボケ アルゴと略すなボケ
for(i=0;i<100;i++)
for(n=1;n<1000*1000;n++) sum+=check(n);
の時間を計測した結果
>>772 1.5秒
>>777 41.6秒
>>778 0.6秒
sseで大量のベクトル演算を一度に行えば、1クロックで4つのsqrtを同時に計算できるよ。
テーブル参照ですらこの速度には敵わない。
よって
>>777 のルゴの方が
>>778 のルゴより速いし、ベクトル化してsqrtを一気に計算するようにすれば、さらに1/4の速度にさえなりうるアルよ。
いいからソース出せよ。
>>779 すみません…知識が足らずちょっと理解ができません
>>782 おっしゃるとおりなのですが、いま試せる環境にありません。
言葉は気をつけます。
>>783 わざわざ試していただき、本当にありがとうございす。
テーブル参照方式でいこうと思います。
>>785 今回はそこまで考えていませんのでテーブル参照でいきたいとおもいます。
ありがとうございました。
ももも
>>763 それは分かります
3点のなす角度から求めようとしたのですが断念してます
何かうまく凸包を作れる方法はありませんか?
791 :
デフォルトの名無しさん :2011/01/20(木) 16:50:58
792 :
デフォルトの名無しさん :2011/01/20(木) 16:52:48
fq=fopen(argv[1],"rb"); if(fq==NULL){ printf("入力ファイルが存在しません。\n"); if(argv[4]=="1"){ printf("続けるにはEnterを押してください"); scanf("%c\n",&c); while(c!="\n"){ printf("ええっ?\n"); scanf("%c",&c); } if(c=="\n") exit(1); } else exit(1); } 改行を認識しません。どうすればいいでしょうか?
>>749 が元質問か
一直線上にない 3点を結んで得られる領域は常に凸包だぜ?
ってのはおいといて、与えられた点列は
一筆書きの経路順に並んでいるのか?
↑の順序がランダムなものなのか?
あちこちにちらばた座標の羅列なのか?
得られた凸包で囲まれる領域内に、与えられた全ての点が存在すること が条件だと思うけど…
>>792 while(c!="\n"){
↓
while(c!='\n'){
if(c=="\n")
↓
if(c=='\n')
>>791 設計意図が不明
ハッシュ法に用いるには巨大すぎるし、
かといって暗号学的ハッシュ関数の検証なんか
このスレでできるわけがない
>>795 64bit長のハッシュ値得るだけなら CRC64 を実装すりゃ良いしね
798 :
デフォルトの名無しさん :2011/01/20(木) 17:40:59
http://codepad.org/nF5Gtpyt 何度もすいません。。
444〜505行目までのzahyo()が思うように動いてくれません。
やりたいこととしては、
zahyo[j][0][0or1or2]に直方体のx,y,z座標が一番小さい部分、
zahyo[j][1][0or1or2]に直方体のx,y,z座標が一番大きい部分、
の値を後順走査によって求めていきたいのですがわかりません。
どなたかよろしくお願いします。
>>797 分かりにくいから解決するまでコテつけてよ
atan2 で左回りをチェックするだけでおk
初期位置は一番端の点(最大値or最小値の点)にすればいい
800 :
デフォルトの名無しさん :2011/01/20(木) 17:43:59
801 :
デフォルトの名無しさん :2011/01/20(木) 17:47:50
糞スレあげ
ほっほっ
803 :
デフォルトの名無しさん :2011/01/20(木) 17:56:49
ふっほっ
>>800 ハッシュ法に使うには得られるハッシュ値の値域が広すぎる
# おおよそハッシュ法では、ハッシュ値の値域を指せるだけの配列が必要になるので
多対1関数で 値の衝突の確立 値のユニーク性 を求めるのは数学の話
べっぽっ
807 :
デフォルトの名無しさん :2011/01/20(木) 18:07:35
値域256ビットですけど・・・ 数学の話になるんですね。数学板に行ったほうがいいですか?
ほっほっ
810 :
デフォルトの名無しさん :2011/01/20(木) 18:21:44
オリジナルがいいんですw
ふっほっ
ほっほっ
どぴゅっどぴゅっ
はしゅっはしゅっ
ぶはっ!選ぶはっ!
816 :
デフォルトの名無しさん :2011/01/20(木) 18:40:21
818 :
デフォルトの名無しさん :2011/01/20(木) 19:03:39
819 :
デフォルトの名無しさん :2011/01/20(木) 19:17:26
age
820 :
749 :2011/01/20(木) 19:49:35
>>793 見逃してました
あちこちにちらっばた座標の羅列です。
各点を配列に入れて
一番下の座標を配列の最初の所までもっていく所まではできているのですが
どうもatan2の使い方が間違っているのかうまくいきません
kakudo[i]=atan2((double)y2-(double)y1,(double)x2-(double)x1);
で、y1、x1固定でy2、x2の値をyn、xnまで変えてそれぞれ計算する。
ここで確認のためkakudoの中身を見たのですがprintfでは出ないのですが・・・
>>820 atan2 の戻り値は浮動小数点数でラジアン単位なんだけど、printf の書式や
kakudo[] の型は大丈夫なん?
822 :
749 :2011/01/20(木) 20:13:09
kakudo[]はdouble型でprintfは%lfなのですが違うのでしょうか?
823 :
デフォルトの名無しさん :2011/01/20(木) 20:23:42
また%lfかよ
int[] a = new int[12]; とした場合、aの各要素の値はどうなりますか?
signal(SIGINT,受け取った時に実行する関数) これだとCtrl-cが入力されたら関数実行して終了 だけど プログラムとしてCtrl-cが入力されたことになる(ユーザーがCtrl-cを押さずに) ようにするのはどうすればよいでしょう raise(SIGINT) ・・・とか?
printfでは %f scanfでは %lf
>>824 そもそもコンパイル出来ないので
心配する必要は無いです
>>827 コンパイルできますが・・・
javacですよ、分かってるんです、か
javaに決まってますよね。
javac って C89 や C90 準拠なの? new って予約語ですらない記憶だが…
>>834 javacはjavaのコンパイラ
javaの規格には準拠しているがC89やC90に準拠している必要性は皆無
どうしてそんな発想ができるのか理解に苦しむのだが
もうマジでこういう釣りはいらないから…
面白いと思ったんだろ
「〜てみた」
こんなあからさまな釣りに馬鹿釣れなお前らw
これがダダスベリの後釣り宣言ですね
/ ̄ ̄ ̄\ / ⌒ ⌒ ヽ / ( ●)(●) | | (__人__) } うーっす /、. ` ⌒´ ヽ / | | | / ヽ_| ┌──┐ |丿 | ├──┤ | | ├──┤ |
>>844 とりあえずそう書いておけば優位に立てた気がするよね
スベったからって絡むなよw
さんざん釣られておいて「いやスベってたしwww」とか痛いな
スベったからって絡むなよ(キリッ
ほっほっ
ふっほっ
ふっふっ
どぴゅっどぴゅっ
ぶはっ!選ぶはっ!
scanfのつかいかたをりかいしたー
( ´)`Д) )) < ハァハァ こんな所でダメェ / つ つ < 大丈夫だって,こんな糞スレ誰も来ねえよ (( (_(_ ノ ノ し∪ ∪ Σ( ゚д゚ )゚д゚) / つ つ (_(_ ノ ノ し∪ ∪ ( ゚д゚ )゚д゚) / つ つ (( (_(_ ノ ノ し∪ ∪
858 :
デフォルトの名無しさん :2011/01/20(木) 22:58:34
糞スレあげ
859 :
デフォルトの名無しさん :2011/01/20(木) 23:04:42
860 :
デフォルトの名無しさん :2011/01/20(木) 23:10:47
862 :
デフォルトの名無しさん :2011/01/20(木) 23:55:55
自演うぜえ
864 :
デフォルトの名無しさん :2011/01/21(金) 00:02:31
(1)とりあえず自演ということにして優位に立とうとする。
866 :
デフォルトの名無しさん :2011/01/21(金) 00:06:40
>>865 あまりそういうこと書き込まないほうが君のためだよ
スベル〜荒らす〜ごまかす
859は1時間でテトリス作るのに おまえらときたら
869 :
デフォルトの名無しさん :2011/01/21(金) 00:25:11
>>867 お前まだいたのか
よっぽど悔しかったんだな
そりゃ釣られたら誰だって悔しいものさ
876 :
デフォルトの名無しさん :2011/01/21(金) 00:53:37
すごいなぁテトリス
俺に任せれば3秒で出来るけどな
こんなの誰でもできる
スーパークラスのコンストラクタとサブクラスのコンストラクタとではどちらが先に読み出されますか? 教えてください(>_<)
またか コテつけてくれればいいのに
881 :
デフォルトの名無しさん :2011/01/21(金) 01:16:28
スーパークラスに決まってんだろタコ
お手並み拝見
>>879 スーパークラス。
デストラクタは読み出される順番の逆。
これ以上はスレチ
885 :
デフォルトの名無しさん :2011/01/21(金) 01:28:33
C++はクズ
>>879 そもそもコンパイル出来ないので
心配する必要は無いです
888 :
749 :2011/01/21(金) 01:36:32
>>838 有難うございます
コード内容を使わせて頂きます
>>887 それはね、ソースコードが出てないとスベるんだよ
C言語使ってるキモヲタを見かけたから顔面ぶん殴って罵倒してやったwwwww そしたら意味不明なことをブツブツ呟きながら顔真っ赤にして泣き出しやがったwwwwwww 俺はさらにもう一発顔面に蹴りを入れてやったねwwwwwwwww 周りの女どもは俺に惚れてたわwwwwwwwwwwwwwwww
テトリス作りたいけど俺には無理だ
俺は3秒だわ
894 :
デフォルトの名無しさん :2011/01/21(金) 01:58:07
コピペでも用意するかな
コピペでも用意すればいいと思うよ
コピペでも用意した方がいいな
1コピペ500円から
うひょーーーーwwwwwwwwwwwwwwwwwwww
おまんこなめ泰造
901 :
デフォルトの名無しさん :2011/01/21(金) 06:07:42
クニマスについてkwsk
プログラムから、実行形式のプログラム(.exe) を起動させる命令って何だっけ? 教えて? win32やmfcでもできます?
インクリメント演算子とデクリメント演算子で前置と後置がイマイチ理解できないです。 処理を行ってから1つ値を増やす・減らす、1つ値を増やす・減らしてから処理を行う これはわかるんですが、具体的どういう事なのかよくわからないです教えてください
釣りか死ね
>>905 わかるのにわからないというのがよくわからない
>>907 自分でもなんて言ったらいいかわからないんですが
理解はできる具体例がわからなくて納得できない
こんな感じでもやもや
>>909 サル並みの初心者だけどゆっくり考えてみます
お手数掛けます><
a = 10; printf ++a; 結果 11 a = 10; printf a++; 結果 10
codepadの方はなるほどまったくわからん状態です
数字が4つ123,456,789,999で
i++ははじめから3つ
++iは123を飛ばして3つ
123,456,789
456,789,999
というのはワカリマシタ
>>911 のは
aの10に1を増やしてから出力するから11
下は出力を先にしてるから10
こうですかわかりません・・・
> 処理を行ってから1つ値を増やす・減らす、1つ値を増やす・減らしてから処理を行う わかっていたのではなかったのか
>>912 printfで評価される前にインクリメントされるかされないかの違い。
>>914 わざと誤解を招くような言い方をするなんて意地悪な奴だw
917 :
デフォルトの名無しさん :2011/01/21(金) 16:58:58
アセンブリで見るとわかるよ
a++ と書いた後から ; の前までのどこかで a の値を増やしている
ついでに・・・現在この様なエラーが出て困っています。 vc 6.0 のプログラムを 2005 vc に変換しようとしています。 > DialogBox( hi, "DLG_DATA", HWND_DESKTOP, (DLGPROC)dlgproc ); >1>c:\users\新しいフォルダー (13)\9章\list0910\list0910.cpp(11) : error C2664: 'DialogBoxParamW' : 2 番目の引数を 'const char [9]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 なんか良くわからん よろ
スレ違い
し
MBCSに転んだ方が幸せかも
うむ。エンコードでつまづく程度の知恵ならC#辺りを使ってた方がしやわせ やる気があるならC++ Cは止めときな
Cの知識無しにC++やるのは無理だと思うんだが。
926 :
デフォルトの名無しさん :2011/01/21(金) 19:00:04
がんばれ
928 :
デフォルトの名無しさん :2011/01/21(金) 19:07:03
test
てすt
ほっほっ
ふっほっ
ほっへっ
935 :
デフォルトの名無しさん :2011/01/22(土) 15:08:59
今日もC厨が涌いてるな
シチュー
へっほっ
どぴゅっどぴゅっ
ふっふっ
ほっほっ
ふっほっ
ぷっほっ
944 :
デフォルトの名無しさん :2011/01/22(土) 18:51:39
C厨hが頭沸いてるな
シチュー
ほっほっ
はっはっ
ばっぷっ
キチガイども乙
スレッドの勉強するのに良い本またはサイトある
Pthreadsプログラミング
うっへっ
ふっふっ
ほっほっ
どぴゅっどぴゅっ
ぶはっ!選ぶはっ!
ふっうっ
へっふっ
へっへっ
ひっふっ
ぬりゅっぷぬりゅっぷ
一時間でテトリス作れるとかすごすぎだろ・・・ お前らには到底無理だなwwwwwwwwwwwwwwwwwwwwwww
プログラミングコンテストみたいに課題が与えられて何分なら分かるけど 全部自分で準備して何分で出来ましたって(笑)
まーた根拠のないことを言う
初めてじゃないらしいからな
初めては私が頂いた
テトリス作れない奴って悔しくてすぐ釣られちゃうんだな
環境インストール含めて1時間? だったら実質時間が超短縮性性能が高脳でソリューション的だな真似できんは
何がそんなに悔しいんだ?
C勉強したいけどなかなかうまく行かない それに今からCは遅いとかいわれる
テトリスすら作れないのが悔しいんだろ
来いよPerl忍者
975 :
デフォルトの名無しさん :2011/01/22(土) 22:44:40
>>970 仕事の速さは神様からもらえなかった者にとってすごく悔しい
これがニコニコ技術部の実力か・・・! M$も夢じゃないな
ume
>>976 おれがテトリスつくった時は完成までに1年かかった
池沼には無理
スレが天才テトリステロリストに選挙されたぞー
ぴゅっっ
int main() { return main(); }
この前C言語やってる奴がいたから顔面ぶん殴ってやったwwwwwwww
病院にいけ!
コミュニケーションがとりたかったんだろ。 「こんなコード書いたけどどうっすか?」みたいな。 ググればすぐ分かるのに質問してくる初心者とか、 結論がでてるのにとぼけて質問してるようなやつとか、寂しいからだろ。
かまってちゃんってやつだな 指摘すると釣れちゃっただし そんなのを相手にしても何一つ得られる物はないからほっとくのがいいね
早速釣れたw
C言語やる人ってCerって言うのかな
996 :
デフォルトの名無しさん :2011/01/23(日) 00:31:15
ぐぐって拾える範囲のことしか知らん奴も痛いが
さー?
998 :
デフォルトの名無しさん :2011/01/23(日) 00:33:32
サー!イエッサー!
ほっほっ
aho
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。