- 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/
- 175 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:33 ]
- >>170
お前がその便利さを知らない、説明できないだけだろ?えせプログラマは こんなところで質問者をたぶらかしてないで、へちょいプログラマで満足してろよ?
- 176 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:34 ]
- >>174
ファイルを保存している場所と同じ場所にexeファイルがあると思われ
- 177 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:30:55 ]
- >>175
へちょくないあなたがへちょい>>170の代わりに答えてあげてください
- 178 名前:デフォルトの名無しさん [2007/06/28(木) 01:34:22 ]
- >>176
あるにはあるのですが、ドラッグアンドドロップはできませんし、 そのディレクトリに移動して 〜.exe と打っても実行されません
- 179 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:40:02 ]
- >>178
コマンドプロンプトって何かわかってるか?
- 180 名前:デフォルトの名無しさん [2007/06/28(木) 01:42:45 ]
- なんか全体的に黒いやつですよね?
わかってるつもりです
- 181 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:43:02 ]
- ja.wikipedia.org/wiki/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88
- 182 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:45:17 ]
- >>180
「notepad」って打ってメモ帳が起動するか? ドラッグアンドドロップでフルパスが表示されて、エンター押して実行できると思ったんだけどなぁ
- 183 名前:デフォルトの名無しさん [2007/06/28(木) 01:48:14 ]
- >>182
メモ帳はでてきます。 でもファイルをドロップしようとすると○の中に×が入ってるようなのが出てきて できません
- 184 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:49:57 ]
- もしかしてvistaか?
- 185 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:50:51 ]
- >>183 ちょっwwwwwww伏字エロいwwwwwwwww
ティ○ポの中にオ×コが入ってるようなので とか妄想しちゃうぞwwwww
- 186 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:51:04 ]
- >>183
xpとかだとドラッグアンドドロップできないようになってるのかな? じゃぁあきらめてフルパス(c:\cpad\test.exeみたいなやつ)を打って実行するべし 入力面倒だけど。
- 187 名前:デフォルトの名無しさん [2007/06/28(木) 01:54:18 ]
- >>186
Vistaですよ。 かなりめんどいってことですね〜〜… ありがとうございました
- 188 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:55:23 ]
- VistaはD&Dできないのか・・・ ひとつ勉強になった。
- 189 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:56:12 ]
- セキュリティ云々でできなくなったそうだ
- 190 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:57:04 ]
- なぁ〜〜に、こうすりゃええがな。XPを仮想PCにインストール。仮想PCでプログラミング
あっ武勇伝、武勇伝、武勇でんでんででんでんっ♪
- 191 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:41:46 ]
- ポインタが無かったらprintfすら・・・
- 192 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:43:50 ]
- ファイル操作も出来ないね
- 193 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 03:03:13 ]
- そもそもポインタって何?実体は?それが理解できていないとダメ。
ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF
- 194 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:10:08 ]
- 2つの文字列を指すポインタ(例えばs1はABC、s2はABを指してる)で
下のソースコードだと2つの文字列が改行にいくまで繰り返すって言う意味ですかね? while((*s1 != '\n') || (*s2 != '\n')) {〜〜 s1++; s2++}
- 195 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:12:03 ]
- (;^ω^)恐ろしいコード
- 196 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:18:58 ]
- すいません、ちょっと適当に書き込んだんで…。
ホワイルの中身の意味が知りたくて。
- 197 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:21:18 ]
- >>194
そのロジックだと、s1、s2の改行文字の位置が揃っていないと誤動作しそうだが。 #つーか、>194自身が挙げたサンプルで死亡確定だな。
- 198 名前:デフォルトの名無しさん [2007/06/28(木) 07:57:55 ]
- >>194
s1にもs2にも改行コードないからプログラム起動して即吹っ飛ぶ。 s1がABC\n、s2がAB\nだったとしても一致しないのでやっぱり吹っ飛ぶ。 そのコードはs1とs2の改行コード位置が一致した場合にループ抜ける。
- 199 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:00:03 ]
- 〜〜の中にきっとbreakが含まれてるんだ
- 200 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:45:23 ]
- C言語の精度って小数点以下いくつなんでしょうか??
- 201 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:49:39 ]
- そういう精度の決まり方じゃない。
これの IEEE 方式。 ttp://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
- 202 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:50:57 ]
- 言葉が足りなかった。
IEEE 方式のマシンが多い、と。 別にエクセス 64 のマシンでも C は使える。 C かどうかで決まるものではなく、 CPU が何かによって決まるもの。
- 203 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:07:58 ]
- うん、それで、小数点以下いくつなんでしょうか??
- 204 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:11:40 ]
- >>203
>>201に書いてあるだろ
- 205 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:14:24 ]
- >>203
だから小数点以下いくつという形の精度じゃないと。 「浮動」小数点ってのは、そういう事だ。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:07:34 ]
- 有効桁数って、確か中学で習うよな…?
- 207 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:02:25 ]
- 10進数だとIEEEの64ビット浮動小数点は小数点以下15桁ぐらいかな。
但しそれに掛ける10のn乗という指数が付くわけだが。
- 208 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:16:16 ]
- 有効桁数15〜16桁あたりだな。
本当は2進数で考えないといけないんだけど。
- 209 名前:207 mailto:sage [2007/06/28(木) 14:21:03 ]
- #include <stdio.h>
#include <values.h> int main(void) { printf("%d, %Lg, %Lg\n", sizeof(long double), LDBL_MAX, LDBL_MIN); printf("%d, %g, %g\n", sizeof(double), DBL_MAX, DBL_MIN); printf("%d, %g, %g\n", sizeof(float), FLT_MAX, FLT_MIN); return 0; } gcc 4.1.1 (i386-redhat-linux) で上記のソースをコンパイルして 動かすと結果はこう出る。 12, 1.18973e+4932, 3.3621e-4932 8, 1.79769e+308, 2.22507e-308 4, 3.40282e+38, 1.17549e-38 e から後ろの部分が指数で「掛ける10のn乗」を表す。 3.3621e-4932 は 3.3621 掛ける10の -4932 乗だ。 但し上記の結果は環境依存で、同じ gcc でもコンパイルオプションに よっては変わってしまう。だから全てについてこうであるという保証は できない。(values.h も gcc 独自のヘッダかも知れない)。ただ大雑把に 言えることは float よりは double、また double よりは long double の方が多くの範囲をカバーできるかも知れないというだけだ。 (コンパイラによっては long double はないかも知れないが)。
- 210 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:08 ]
- ISO準拠の処理系ならlong doubleは必ずある。
209が使っている定数は<float.h>で提供されている。
- 211 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:51 ]
- long double は必ずある。
しかし、double と同じサイズのこともある。
- 212 名前:デフォルトの名無しさん [2007/06/28(木) 17:10:52 ]
- putchar関数の意味がよくわかりません。
質問が抽象的すぎてごめんなさい
- 213 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:12:06 ]
- 標準出力に文字(char)を一文字出力(put)する
- 214 名前:デフォルトの名無しさん [2007/06/28(木) 17:42:10 ]
- …?
putchar('\n') ってのはどういうことですか?
- 215 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:48:00 ]
- 標準出力はわかるか?
通常は画面だと思っていい。 \n はわかるか? 改行コードをあらわすエスケープシーケンスだ つまり、画面上で改行する、ということ
- 216 名前:デフォルトの名無しさん [2007/06/28(木) 17:50:19 ]
- それは
printf("\n") とは違うんですか?
- 217 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:07:45 ]
- printf は文字列を扱う
たまたまprintfで1文字出力するなら、putchar と同じ様になるな。 でも、printf の第一引数の文字列は % とか入ると違ってくるけどな。
- 218 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:08:09 ]
- "\n" は文字列
'\n' は文字
- 219 名前:デフォルトの名無しさん [2007/06/28(木) 18:31:55 ]
- でもこの場合では意味することは同じなんですよね?
というか、putcharでできることはprintfでもできるんですか?
- 220 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:32:55 ]
- できるけど、効率は悪い。
- 221 名前:デフォルトの名無しさん [2007/06/28(木) 18:35:29 ]
- それは打つ文字数が多くなるとかいうレベルの話ですか?
プログラムの内容には関係ないですよね?
- 222 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:36:12 ]
- あります。
- 223 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:40:48 ]
- printf は文字列を解析して
% が出てきたらどうするかとかいう処理を行ってる。 ま、出力自体のコストに比べりゃ微々たる差だがね。
- 224 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:41:45 ]
- 適材適所だ
printfで全部まかなうのもいいし、使い分けるのもいい。 同じことができるなら、片方はまったく無駄だと思ってるなら それはキミが初心者だから。
- 225 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:42:18 ]
- 最近のコンパイラは賢いから、>>216なんかはputchar('\n');に最適化されるけどな。
- 226 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:43:47 ]
- そこまでするのか! っていう最適化が
意外とされてるんだなあ。
- 227 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:48:02 ]
- gccは printf("%s\n", "hoge"); を puts にしてくれたりするよね。
- 228 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:52:36 ]
- >>227
こういうのってどうやって知るんですか? ○は□に最適化されるとか
- 229 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:55:28 ]
- 逆アセンブルしてもいいし、
両方のパターンを書いてコンパイルして バイナリ比較して等しくなるかどうか確認したのでも。
- 230 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:57:45 ]
- すごい!
- 231 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:41 ]
- 普通に gcc -S
- 232 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:31:12 ]
- 特徴的なものは宣伝していたりマニュアルに書いてあったりもする。
- 233 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:31:57 ]
- スーパーハカーは自分で逆アセして知る。
一般人は掲示板で知る。
- 234 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:16:58 ]
- 確かに。
普通のハッカーなら掲示板でヒントを読んで自分で試して知るだろうな。
- 235 名前:ぴっころ [2007/06/28(木) 21:32:59 ]
- 突然お邪魔致します。ぴっころです。
2進数で表した時、2の倍数は最下位ビットが0になる事が分かりました。 では3の倍数は何かこのような決まりはあるのでしょうか?
- 236 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:33:54 ]
- 3進数で3の倍数は最下位ビットが0
- 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)にするとうまくいくようなきがするんですが、 あってますか?
|

|