1 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 06:14:52 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 14 pc11.2ch.net/test/read.cgi/tech/1181735298/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 91代目 pc11.2ch.net/test/read.cgi/tech/1182607405/
237 名前:ぴっころ [2007/06/28(木) 21:36:37 ] 言葉足らずで申し訳ありません。 2進法で表した時です。
238 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:37:00 ] ぴっころって誰だよ。
239 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:38:42 ] >>235 ヒント1 : 2の倍数とは偶数のこと ヒント2 : 3の倍数を並べてみよう
240 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:45:18 ] 2 進法では別に 3 (11) の倍数に特徴はないなあ。 3 (11) で割ったら余りが 0 になるということくらいだな。
241 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:45:44 ] >>235 数学の問題だなあ。 3で割ると余り0 なんてのはあまり意味ないか・・・。 10進数で表した時に各桁を足して3の倍数ならそれは3の倍数 (123は1+2+3=6なので3の倍数)なんてのもあるが、関係ないね。
242 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:51:23 ] 3の倍数を2進法で表したものは、正規表現/(0|1(00)*1)*/にマッチする。
243 名前:ぴっころ [2007/06/28(木) 21:51:33 ] >>238 ドラゴンボールのぴっころから取らせて頂きました。 >>239 11 110 1101 1100 1111 10101 11000 11011 繰り返しもあるような無いような・・・。 ちょっと僕のキャパでは厳しいです・・・。
244 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:53:59 ] >>243 18はどこへ消えた
245 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:54:19 ] >>242 発想はいいがちょっと惜しいな。 1000000001の間に11を入れて1011000001も3の倍数だ。
246 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:55:49 ] >>243 うそだ! NHKのじゃじゃまる、ぴっころ、ぽろりのぴっころだろ?
247 名前:デフォルトの名無しさん [2007/06/28(木) 22:06:53 ] bccってのをXPで使ってたんですが、vistaに変えたんですが環境設定ソフトでPATHの設定が出来ませんってのが出るんですが・・・・ vista出使える環境設定ソフトかPATHの設定方法を教えてください。
248 名前:ぴっころ [2007/06/28(木) 22:08:04 ] 11 110 1101 1100 1111 10010 10101 11000 11011 11110 11→10→01→00 ・・・。 ちょっときついです。 教えてもらえると助かります。
249 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:09:42 ] 1101のどこが3の倍数なんだよ。
250 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:11:40 ] 1101 1100 数が減ってるな まぁ1001の書き間違いだろうからそれくらい勘弁してやれ
251 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:12:59 ] >>247 マイコンピュータのプロパティの中にない? XP/2003まではそこにあるんだけど。
252 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:23:37 ] 6bitでカルノー図書いてみたんだが一切簡単化できねーから周期性は無い臭い
253 名前:デフォルトの名無しさん [2007/06/28(木) 22:30:16 ] >>251 システムのプロパティの中に環境変数でpathってのは見つけましたが違います? マイコンピュータでプロパティやるとシステムのプロパティかCドライブのプロパティあたりしか出てきません。
254 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:31:30 ] 3の倍数で偶数に該当するものをリストアップしてやんよ 6 000000110 12 000001100 18 000010010 24 000011000 30 000011110 36 000100100 42 000101010 48 000110000 54 000110110 60 000111100 66 001000010 72 001001000 78 001001110 84 001010100 90 001011010 96 001100000
255 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:32:08 ] >>253 たぶんそれでおk。
256 名前:デフォルトの名無しさん [2007/06/28(木) 22:35:43 ] >>255 それをどうすればいいかわかります?
257 名前:デフォルトの名無しさん [2007/06/28(木) 22:39:43 ] すみません、学校の電卓プログラム問題で、わからない事があるので教えてください。 char *get_int(char *b, char *i) { int sign, num = 0; if(*b == '-') { sign = -1; b++; } else sign = 1; /*初期値*/ *i = 0; /*スペーススキップ*/ SKIP(b); /*十進数文字である間繰り返し*/ while (isdigit(*b)) { num++; /*これまでに得た整数の位取りアップ*/ *i *= 10; *i += (*b - '0'); b++; } /*十進数文字がなければエラーリターン*/ if (num == 0) b = NULL; return b; } 上記は自分がわかる範囲でマイナス演算子を付け加えたのですが、 これからどうしていいのかわからないので、 どなたか教えてください。よろしくお願いします。
258 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:42:35 ] > これからどうしていいのかわからない だったら、それはお前のわかる範囲ではない。
259 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:43:02 ] >>257 その一部じゃさっぱり。うpロダ使って全体をうpせい。それから実行結果の例も書いてくださいな
260 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:44:16 ] (*b == '-') かわいい ∧∧ 〜(*b == '-') <ニャー >> >>
261 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:46:19 ] >>248 全ての3の倍数は、その数を3で割っても最下位ビットは変わらない。
262 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:46:26 ] x = ( 'A'); やる気ねぇ〜顔
263 名前:ぴっころ [2007/06/28(木) 22:47:09 ] >>254 なるほど。 6 00 00001 10 12 00 00011 00 18 00 00100 10 24 00 00110 00 30 00 00111 10 36 00 01001 00 42 00 01010 10 48 00 01100 00 54 00 01101 10 60 00 01111 00 66 00 10000 10 72 00 10010 00 78 00 10011 10 84 00 10101 00 90 00 10110 10 96 00 11000 00 下二桁 00→10の繰り返し、 下二桁より上 1ずつ増えているのは分かりました。 ですが、これで1000000001の間に11を入れて1011000001も3の倍数だ。 が何故言えるのでしょう?あと、3の倍数に偶数が入ってくる理由も・・・。
264 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:21 ] += (*b - '0'); < 私を置いていくにゃ〜
265 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:48:53 ] >>263 それは3の倍数じゃなくて6の倍数でわ? 3の倍数 かつ 偶数 = 6の倍数ですよ
266 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:49:05 ] ファイルを指定した場所へ移動するにはどうしたらいいですか?
267 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:49:48 ] >>256 BCCをインストールしたディレクトリのBinディレクトリとかのフルパスをPATHとかに追記する(セミコロンでつなげる)
268 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:51:18 ] >>263 それ6の倍数並べてるだけじゃん
269 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:53:36 ] >>263 単にそれは、例えば10進法で、15の倍数を並べたら一の位に0と5が交互に現れる、 ってことを言ってるのと同じだよ
270 名前:デフォルトの名無しさん [2007/06/28(木) 22:54:11 ] >>267 どもです。 やってみます。
271 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:57:07 ] 3の倍数、偶数抜き。何か法則がある? 3 000011 9 001001 15 001111 21 010101 27 011011 33 100001 39 100111
272 名前:デフォルトの名無しさん [2007/06/28(木) 22:59:31 ] A(n) = A(n-1) + 6
273 名前:デフォルトの名無しさん [2007/06/28(木) 23:13:28 ] >>235 3の倍数は、奇数ビット目の1の数と、偶数ビット目の1の数の差が、3の倍数になる。 ただし、差が3の倍数といっても数が小さいうちはずっと0。 例:39 100111、奇数ビット目=2、偶数ビット目=2、差=0
274 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:25:45 ] 分からないなら、10進数で同じコトを考えてみればいいよ 10進数だと、10の倍数は1の位が0だということが分かりました。 では11の倍数は、何か特徴があるのですか? 11 22 33 … 1の位が1ずつ増えていくことが分かりました! …この結果で何か得られることはあると思うか?
275 名前:デフォルトの名無しさん [2007/06/28(木) 23:49:23 ] unsigned char型の配列にbmpの画素の値を読みます。 これをソートするんですが、 ソートする関数の引数のところを void quicksort(char *array,int lower, int upper) とするとソートが正しくないことがあります。 void quicksort(unsigned char *array,int lower, int upper)にするとうまくいくようなきがするんですが、 あってますか?
276 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:51:59 ] とりあえず関数のシグネチャをプロトタイプにちゃんとあわせなさい
277 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:54:41 ] すいません。よくわからないです。 学校の課題なんですが、unsigned char型は問題ですでにつくられていて、 それを改造してるんです
278 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:59:43 ] それはきっとcharが符号付だからということなのだろう。
279 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:03:08 ] なるほど。 void quicksort(unsigned char *array,int lower, int upper)にすれば ソートはちゃんとうごいてますか? 一応実際の画像のソート状況を確認したら平気っぽかったですが
280 名前:ぴっころ [2007/06/29(金) 00:40:39 ] ぴっころです。答えて下さった方々ありがとうございました。 失礼します。
281 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:44:19 ] 3の倍数は1が常に偶数個
282 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:02:45 ] 定数はdefine, const, enumのどれで指定するのが定跡でしょうか?
283 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:08:23 ] 定数じゃないのばっかじゃん
284 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:09:18 ] ?
285 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:12:54 ] て・・・定石なんてないのさ
286 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:23:21 ] テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面に表示したいんですけど どんなソースコードですかね?アルゴリズムがピンとこないのでお願いします。 c→4 h→1 a→2 #include <stdio.h> int main(void){ FILE *fp,*fut; char sfn[80]; char yomi[256],mawasi[256]; int i; scanf("%s",sfn); if((fin=fopen(sfn,"r"))==NULL)return -1; fout=fopen("comp","w"); i=0; while((yomi[i]=fgetc(sfn))!='\0'){ i++; } fclose(fp); fclose(fut); return 0; }
287 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:29:15 ] ・読んだ文字が前回と異なっていたら カウンタをリセット(0にする)。読んだ文字を覚えておき、カウンタをインクリメント ・読んだ文字が前回と同じならそのままカウンタをインクリメント
288 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:33:50 ] >>281 10101 (10進数で21)の時点で既に違うんだが。 一般的には、>>273 が正解 もうこの話題終わってるけどね
289 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:16:46 ] 構造体のint型の要素と、構造体外のchar型の変数とstrcmpで比較したいのですが int型の要素をどうchar型に変換するのかわかりません。 何か良い方法はありますか?変換は逆でも構いません。
290 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:18:17 ] atoi とか sprintf とか
291 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:24:59 ] 先日C言語の勉強をしていたら以下のプログラムがありました。 なんで、プログラムを実行して、この結果が出てくるのか全く わかりません。プログラムの結果がなぜそうなるのか内容を出 来るだけ詳しく教えてください。初心者なのでなるべく丁寧に お願いします。もし、プログラムのタイプミスがあったらすい ません。 #include<stdio.h> #include<string.h> main(){ char c[3]; char s1[]="abcdefghijklmnopqrstuvwxyz" char s2 [100]; s2[0]='\0'; printf("s1 inital value:\"%s\"\n",s1) printf("s2 inital value:\"%s\"\n",s2) if cstrcmp(s1,s2)==0){ printf("s1==s2\n");} else{printf("s!=s2\n");} printf("Push ENTER to proceed."); fgets(c,2,stdin); strcpy(s2,s1); printf("s1 current value:\"%s\"\n",s1); printf("s2 current value:\"%s\"\n",s2); if(strcmp(s1,s2)==0) { printf("s1==s2\n");} else{prinf("s1!=s2\n");} }
292 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:48:27 ] この結果ってどの結果
293 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 05:51:18 ] 「この」結果
294 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:07:23 ] sayonara
295 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:43:16 ] さよならbyebye〜元気でいてね 年に二回くらいのクソレスならキャッチするよ〜
296 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:46:49 ] 2の倍数はある数を2倍したもの 2倍するとは、2進数だと左に1ビットシフトしたもの ゆえに、一番下のビットは必ず0になる。 3の倍数もこれに習ってやってみ。
297 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 10:40:10 ] 291です なんでENTERを押すと次の実行結果が表示されるのな何でですか? ↑のも質問ですがこのような感じの内容を教えてください
298 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 10:56:41 ] >>297 s1 inital value:"abcdefghijklmnopqrstuvwxyz" s2 inital value:"" s!=s2 Push ENTER to proceed. s1 current value:"abcdefghijklmnopqrstuvwxyz" s2 current value:"abcdefghijklmnopqrstuvwxyz" s1==s2 これのどこがわからないの
299 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 11:56:31 ] >>291 stdio.h には、C標準ライブラリのコンソール出力関数のプロトタイプ宣言があり、 そこで宣言されているprintfを使っているから、結果が出力されるんです。
300 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:32:32 ] >>291 学生?俺もだけど 何の関数を使うためにstring.hをインクルードしているか? strcmp(),strcpy関数はどういう関数か? fgetsはどういう関数か? を調べればたぶんわかると思うよ。 if構文とか'\0'とかprintf()とかエスケープ文字とか 文の終わりに;をつけるとか(付け忘れが多すぎたからあえて指摘) くらいは知っているだろうし、人にきくほど難しいものではないとおもう。
301 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:43:42 ] >>291 >char c[3]; >fgets(c,2,stdin); こんな阿呆なコード、誰が書いたんだ?
302 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:46:17 ] 本質的じゃないトコにつっこむのもなんだかなー
303 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:11:38 ] だって、阿呆なんですもの
304 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:09:38 ] その程度のことを見つけてアホアホ得意気になる香具師は痛々しい。
305 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:21:40 ] まあ、fgets のサイズ指定は ヌルターミネータ込みのバッファサイズを指定することくらいは ちゃんと知っておいた方がいいとは思う。
306 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 14:32:10 ] しぜおf使おうぜ?
307 名前:デフォルトの名無しさん [2007/06/29(金) 17:55:27 ] #include <stdio.h> int main(void) { int x,y,z,s; printf("何cmから:"); scanf("%d",&x); printf("何cmまで:"); scanf("%d",&y); printf("何cmごと:"); scanf("%d",&z); s = (x - 100)*0.9; x = x + z; for (; x <= y; s) printf("%dcm %.2fkg\n",x ,(double)s); return 0; } これだと x+5 についての場合のみ永久にブァーッと出てきます。 x〜yの範囲内にするにはどうしたらいいですか?
308 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:02:10 ] for (; x <= y; x += z) { double s = (x - 100) * 0.9; printf("%d cm %.2f kg\n", x, s); }
309 名前:デフォルトの名無しさん [2007/06/29(金) 18:12:13 ] >>308 ありがとうございました。 この場合繰り返しが行われてる式は x += z と double s =(x - 100)*0.9 と printf("%dcm %.2fkg\n",x,s) の3つですよね?繰り返したい式が2つ以上あるときは forの()の中に1つ書いて、()を閉じてから残りの繰り返したい式を書くということでいいんですか?
310 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:14:42 ] procedure a: Integer var int C; beigin a := 0; end; がうまくイカなんだがなんだろ
311 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:22:01 ] beigin → begin つーかこれPASCAL・・・
312 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:44:38 ] Pascal って人間は考える葦とかいっていた人か?
313 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:47:07 ] さつま芋とか水で洗って食う動物じゃね?
314 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:52:22 ] int* p; /*ポインタのデータ*/ int a = b/*p; /*b÷(pの先のデータ)→a*/; 割り算ができね
315 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:53:22 ] アライグマパスカル、うが
316 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:53:39 ] / と * の間に空白開ければいいじゃん。
317 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 18:55:18 ] 今でも、糞つまんないCPUのロジックは大方割り算なのは確かだw
318 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:24:53 ] 今までで、プログラムって訳に起つよな(^^って思えたのは perlとrubyとMLとエクセルで使うVBAくらい。 C++とかJavaは嫌な思いしかさせてくれない。
319 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:32:41 ] で、Cはどこ?
320 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:34:11 ] here
321 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:38:48 ] Cは昔のアセンブラみたいなもん。 良いも悪いもない
322 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:28:23 ] ガウシアンフィルタを作りたいんですが、質問させてください フィルタをかけたい画素を中心に3×3のマスクをつくるとします。 teo.sourceforge.jp/doc/TeoProgrammingGuide/img/gaussian_kernel2.png みたいなガウシアンフィルタを作って、この行列の各要素の数値を マスクの行列の同じ場所の画素値にかけて、 その合計で中心画素の値を割ればいいんですか? マスクがとしたら 1 3 3 4 6 2 1 2 3 1×0.07 + 3×0.12+・・・+3×0.07=SUM 6/SUMがフィルタをかけた後の値ですか?
323 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:32:30 ] >>321 アセンブラに昔も今もあるのかよ
324 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:38:06 ] >>323 Cの話でしょ?w
325 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 21:52:45 ] >>322 そうだと思うけど、まずはやってみればいいんでね?
326 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:33:26 ] >>322 そのコーディング方法が分からないんで無ければ 画像処理スレかどっかで聞いた方がいいんでね?
327 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:14:23 ] 最近ちょっとさわり始めたのですが、 memcpyのように引数にvoid*をとるとき、どうやってvoid*の中の物を 取り出すんですか?普通に配列のように[0]とかってやってもエラーになるし…
328 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:14:47 ] 適当なポインタ型にキャストすればいい。
329 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:48:34 ] >>328 その場合、中身が構造体などの場合にはどうしたらいいんでしょうか? char*などにキャストした後から戻せるのでしょうか?
330 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:54:00 ] 構造体でキャストすればいいんじゃ
331 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:57:58 ] >>330 該当する構造体でキャストすればいいのはわかるのですが、 memcpyのようになんでもコピーできるようにするにはどうしたら いいのかなと思ったのですが、これはあまりmemcpyを 使わない方がいいと言われるのと何か関係があるのでしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:01:30 ] そんなもんchar*にキャストして1バイトずつ読み書きしているだけと思っていればいい。 実際には高速化するため複数バイトずつ読み書きするなど工夫しているいるけど。
333 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:51:53 ] >>332 参考になりました! ありがとうございます。
334 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:08:51 ] まぁ、間違っても構造体のコピーにmemcpy()なんて使うなよ。
335 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:09:15 ] 表示した画像を消すときはどんな関数を使いますか?
336 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:11:56 ] CLS 3
337 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:15:50 ] >>336 それってBASICじゃないですかw