トップページ⇒tech
1001コメント256KB

C言語なら俺に聞け(入門編)Part 85

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/05/30(月) 06:21:04.32
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 84
http://hibari.2ch.net/test/read.cgi/tech/1305216054/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 148代目
http://hibari.2ch.net/test/read.cgi/tech/1305867431/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0153デフォルトの名無しさん2011/06/05(日) 18:52:58.28
>>152
0154デフォルトの名無しさん2011/06/05(日) 18:54:30.62
>>152
当方大学生でして、どうでもいい講義中に勉強するために何かあればな、と思いまして
もちろんノートPCはもってないです
0155デフォルトの名無しさん2011/06/05(日) 19:50:40.61
糞だな
0156デフォルトの名無しさん2011/06/05(日) 20:36:37.20
>>154
何を目指してるか知らないから、どこまで本気か分からないが、
プログラムを学ぼうとするなら、PC位は自分のツールとして使える様になってないと
0157デフォルトの名無しさん2011/06/05(日) 20:51:51.61
ノートPC(笑)なんて持ってないだろ普通w
0158デフォルトの名無しさん2011/06/05(日) 21:00:35.59
俺は15年ほど前、工学部の学生だったころ、自腹で20万のノートPC買ったぞ。
今なら4、5万で買えるだろ・・・
0159デフォルトの名無しさん2011/06/05(日) 21:04:49.91
なんか誤解?してCとかやろうとしてる人が増えたね。
0160デフォルトの名無しさん2011/06/05(日) 21:04:51.11
いまどきノートPC持ってない大学生の方が珍しくないか?
0161デフォルトの名無しさん2011/06/05(日) 21:06:13.12
Core i3とi5が出てCore2Duoが型遅れになったから中古を投げ売りしてるな
HDDを換装してWindows7を入れればまだまだ使える
0162デフォルトの名無しさん2011/06/05(日) 21:07:58.79
ラップトップなんて選ばないだろ。情弱じゃあるまいし。
0163デフォルトの名無しさん2011/06/05(日) 21:08:51.10
だよね。今やるならJAVAじゃん?なんでC?
0164デフォルトの名無しさん2011/06/05(日) 21:13:49.65
>>163
Cも書けないようだとプログラマとしての素養が疑われる。
0165デフォルトの名無しさん2011/06/05(日) 21:15:56.23
>>162
大学で使う場合もあるからね
0166デフォルトの名無しさん2011/06/05(日) 21:16:00.78
Java = 土方
0167デフォルトの名無しさん2011/06/05(日) 21:16:07.73
unsigned intより大きい整数を扱いたいとき
long intを使わないとしたら、どのようにすればいいですか?
0168デフォルトの名無しさん2011/06/05(日) 21:19:13.81
>>167
自前で大きい整数を扱えるような関数等を作る
0169デフォルトの名無しさん2011/06/05(日) 21:33:48.58
ノートPC使わない(笑)って・・・家から出たりしないのか?
0170デフォルトの名無しさん2011/06/05(日) 21:36:12.20
ノートPC買えないって話らしいけど。
0171デフォルトの名無しさん2011/06/05(日) 21:37:14.54
struct int80_t{int32_t a;uint32_t b,c;};
を用意したとして
効率とかどうでもいいんで簡単な四則演算アルゴリズムを紹介して
0172デフォルトの名無しさん2011/06/05(日) 21:37:18.66
>>169
普段は紙と鉛筆で問題をとく物理屋なんだよ言わせるな恥ずかしい
0173デフォルトの名無しさん2011/06/05(日) 21:43:11.34
なら、まず消しゴムを買わないとな
0174デフォルトの名無しさん2011/06/05(日) 21:55:12.29
>>169
わざわざパソコンするために出かけるのか
0175デフォルトの名無しさん2011/06/05(日) 21:55:53.14
>>171
足し算、引き算からやったら
0176デフォルトの名無しさん2011/06/05(日) 22:04:56.47
ビットシフトしたら1がいっぱいになりました
どうすればいいですか
0177デフォルトの名無しさん2011/06/05(日) 22:05:26.62
>>167
http://hibari.2ch.net/test/read.cgi/tech/1301553333/668
http://codepad.org/PXA5JrGF
0178デフォルトの名無しさん2011/06/05(日) 22:12:15.92
◆QZaw55cn4cはカス
0179デフォルトの名無しさん2011/06/05(日) 22:56:05.32
多倍長数はGNPとかいうやつでいい。
0180デフォルトの名無しさん2011/06/05(日) 22:57:40.01
GMPだ
0181デフォルトの名無しさん2011/06/05(日) 23:15:50.31
GIMP か。
0182デフォルトの名無しさん2011/06/06(月) 02:17:21.38
低燃費はGNPじゃなくTNPだぞ
0183デフォルトの名無しさん2011/06/06(月) 10:50:44.95
scanfて手入れでボウリングのスコアを計算するプログラムを教えて頂けますか?
0184デフォルトの名無しさん2011/06/06(月) 10:51:14.28
*(a + 1) + 1 // aはint型の配列

この式が返す値の型はaの次元数によらず
一定ですか?
0185デフォルトの名無しさん2011/06/06(月) 10:51:24.24
>>183
宿題スレの前スレか前々スレにあったよ
0186デフォルトの名無しさん2011/06/06(月) 10:52:01.76
>>184
一定じゃない
0187デフォルトの名無しさん2011/06/06(月) 10:57:14.32
いや一定でしょ
0188デフォルトの名無しさん2011/06/06(月) 11:00:04.03
>>186
本にa[n]は*(a+n)の糖衣構文って書いてあったのですが、これだけだと正しくないですよね。
0189デフォルトの名無しさん2011/06/06(月) 11:08:52.70
aがintなら、それで糖衣でしょ。
0190デフォルトの名無しさん2011/06/06(月) 11:10:59.55
>>187,188
次元数が違うってこういうことじゃないの?
int a[1];
int b[1][1];
01911842011/06/06(月) 11:27:32.21
>>190
188=184です。次元数とはそういう意味です。

>>189
188に書いた糖衣構文はaの型がint以外でも成立します。問題はaの型ではないです。
0192デフォルトの名無しさん2011/06/06(月) 11:27:49.52
aがintの配列なら、どこまでいっても、中の値にどんな演算をしようと、中身の型はintだろ。
それはポインタでたどっても同じだろ。なにが聞きたいんだ??
0193デフォルトの名無しさん2011/06/06(月) 11:33:01.34
>>191
やっぱそうだよな、おまえら次元数の意味勘違いしてるのかと思った
int a[2][2];で
*(a + 1) + 1
したら型はint *だろ
0194デフォルトの名無しさん2011/06/06(月) 11:34:04.26
>問題はaの型ではないです。
そっか。配列名はアドレスだからね(塚、変数名は全部アドレスでしょ)。
インクリメントすれば、その変数の型分アドレスがインクリメントされるだけじゃんww
そのアドレスの中身は、n番目の配列の中身と同じ。当たり前じゃんw
0195デフォルトの名無しさん2011/06/06(月) 11:59:29.38
>>188
書名はなんですか?
01961842011/06/06(月) 11:59:30.79
>>193
正解です。>>186と同意見という事ですよね。>>188についてはどうでしょうか?

>>192、194
何も間違ってはいないですが、質問内容はもっと原始的な部分です。
01971842011/06/06(月) 12:03:13.33
>>195
猫Cかポインタ完全制覇かエキスパートCか
基本から学ぶC言語のどれかだったと思います。
0198デフォルトの名無しさん2011/06/06(月) 12:13:31.91
バカが理解できてないくせに教科書に文句つけるとかw
0199デフォルトの名無しさん2011/06/06(月) 12:21:53.73
>>196
多次元配列においてもその糖衣構文には合致してるよ
お前が型の扱いを理解できてないだけで
0200デフォルトの名無しさん2011/06/06(月) 12:27:27.07
疑問をもって解決すれば、理解は深まる。
0201 忍法帖【Lv=4,xxxP】 2011/06/06(月) 13:02:03.60
3["abcde"]も、*(3+"abcde")の糖衣構文だね。
0202デフォルトの名無しさん2011/06/06(月) 15:26:05.57
mallocとかで確保した領域のサイズをあとから知る方法ってありますか?
やはり、自分で覚えておくしかないんでしょうか?
0203デフォルトの名無しさん2011/06/06(月) 15:27:19.62
>>202
初心者は、stringやvectorでいいだろ。C++だがこっちのほうが簡単。
0204デフォルトの名無しさん2011/06/06(月) 15:31:58.18
スレタイ読み返せ
0205デフォルトの名無しさん2011/06/06(月) 16:41:25.74
>>202
環境依存だと思うが、規格票にはサイズを後から知る方法はどこにも見当たらない
ISO/IEC 9899:1999
0206デフォルトの名無しさん2011/06/06(月) 16:42:29.05
>>202
自分が要求したサイズ+アルファがあるのです
0207デフォルトの名無しさん2011/06/06(月) 17:10:52.56
どのくらい空き容量あれば
どのくらいの程度のプログラムを
どのくらい同時実行できるのかな・・・
さっき永遠に+1した数を表示し続ける奴をどんどん動かしてみたけど
5つぐらい動かしたところでタスクバーに動いているプログラムの表示がちょっとだけ追いつかなくなったのを見て
怖くなってすぐやめた。
0208デフォルトの名無しさん2011/06/06(月) 17:17:56.71
動かすものによるとしか。
0209デフォルトの名無しさん2011/06/06(月) 17:29:55.37
そうですか・・・
では動かすプログラムが最大でどの位メモリ使うのか
知る方法とかありませんかね?
0210デフォルトの名無しさん2011/06/06(月) 17:42:10.94
静的な変数だけだとするとlinkerの吐くmapでだいたいわかるかな
0211デフォルトの名無しさん2011/06/06(月) 17:44:54.17
cygwinを使っています。プログラムを作って
任意のファイルを読み込めるようにmain()関数が引数を取るように
int main(int argc, char *argv[])
としたのですが、今まで上手く読み込めてたのに、ちょっとコマンドライン
をいじってしまってコンパイルされるものの実行できなくなりました。
実行した瞬間にコマンドラインが改行されるだけになりました・・・
どうしたらいいでしょう?
0212デフォルトの名無しさん2011/06/06(月) 17:45:54.24
>>211
日本語でおk
0213デフォルトの名無しさん2011/06/06(月) 17:50:28.34
>>212
任意のファイルから数字を読み込んで足し算を標準出力するという
プログラムが今まで出来たのに、コマンドラインいじって、できな
くなった。ちなみに同じプログラム。コンパイルはエラーなし。
0214 忍法帖【Lv=4,xxxP】 2011/06/06(月) 17:54:54.76
もしかして:
プログラム名がtest.
0215デフォルトの名無しさん2011/06/06(月) 17:58:09.97
>>
とか
<
とかコマンドライン入れまくってちょっとcygwinおかしくなったのかな?

とにかく引数が取れない・・・
0216デフォルトの名無しさん2011/06/06(月) 18:00:16.13
またcygwin(笑w)かよ。
もうこれは有罪だろ。
02172112011/06/06(月) 18:03:59.07
すいません、できました・・
実行ファイル名はsample.txtです。sample.datでもいいです。

ただa sample.txtやa sample.datだと無理です。以前はこれでいけました。
  a.exe samle.txt ならいけます。

何故でしょうか?高度すぎてわかりません。
0218デフォルトの名無しさん2011/06/06(月) 18:03:59.50
引数採るコマンドは動くのか?
0219デフォルトの名無しさん2011/06/06(月) 18:19:49.01
環境変数の PATHEXT だな。
これいじったんだろ。
0220デフォルトの名無しさん2011/06/06(月) 18:40:12.66
>>219
どういうことですか?

というかリダイレクトのコマンドが>だか>>だか<だを
色々コマンドラインにファイル名と読み込みファイル
とあわせて打ち込んだりしたからおかしくなったと思
うけど直し方分からないwwww

0221デフォルトの名無しさん2011/06/06(月) 18:54:10.32
>>220
そんな思い込みは捨ててさっさといわれたことをやれ
0222デフォルトの名無しさん2011/06/06(月) 18:58:12.29
a.exe < sample.txt > output.txt

入力リダイレクトではa.exeは上書きされないが、
出力リダイレクトであるoutput.txtは実行のたびに上書きされる。

おそらくこれらの順番がめちゃくちゃになったんだろ。
もう一度コンパイルとsample.txtを用意してやり直すべし。
0223デフォルトの名無しさん2011/06/06(月) 19:12:04.44
>>222
頭良すぎ。
何でそんなすぐ原因わかるんだよ・・・

とりあえずリカバリーします。
リカバリーしてcygwinダウンロードしなおす。
0224デフォルトの名無しさん2011/06/06(月) 19:23:42.21
まず日本語の勉強から始めるべきだと思うわめ。
0225デフォルトの名無しさん2011/06/06(月) 19:25:48.83
#include <stdio.h>

int main()
{
float a=7,b=3;

printf("x = 7\ny = 3\n");
printf("(1)""x / y = %.2f\n",a/b);
printf("(2)""x + y / 2 = %.0f\n",(a+b)/2);
printf("(3)""x ++ * y = %.0f\n",a++*b);
printf("(4)""x == y "" →7 == 3 =等しくない\n",a==b);
printf("(5)""x > y = 7 > 3\n",a>b);
printf("(6)""x % y = %.2f\n",a%b);
printf("(7)""(double) x / y = %f\n",(double)7/3);
printf("(8)""++ x * y = %.0f\n",++a*b);
printf("(9)""! ( x ! = y ) ""→ ! (7 ! = 3 ) = 等しくない\n");
printf("(10)"" x / y ! = 2 ""→7 / 3 ! = %.0f\n",a/b);
printf("何かキーを押してください\n");

getch();
printf("END\n");
return 0;
}
0226デフォルトの名無しさん2011/06/06(月) 19:28:29.49
>>225 文章が長いので分けました。連投失礼します。
>>225のprintf("(6)""x % y = %.2f\n",a%b); についてお聞きしたいのですが
x%yの計算結果を表示させたいのですが、何度コンパイルしても
""で閉じた以降の「a%d」でエラーが出ます。
この書き方は間違っているのでしょうか?色々調べて見ても
よくわかりませんでしたのでこちらに来ました。
是非お教えいただきたいです…
0227デフォルトの名無しさん2011/06/06(月) 19:31:16.21
floatで%はダメッ!
0228デフォルトの名無しさん2011/06/06(月) 19:31:48.11
""で閉じた以降の「a% b 」でした…。
書き間違い失礼しました。
0229デフォルトの名無しさん2011/06/06(月) 19:36:56.62
つ fmod
0230デフォルトの名無しさん2011/06/06(月) 19:38:11.25
>>222
<なのか>なのかはっきりしてくれww
余計におかしくなる
0231デフォルトの名無しさん2011/06/06(月) 19:56:57.42
直ったwwwwwwwwwwwwwwwwwwwwww
cygwinすげぇwwwww
0232デフォルトの名無しさん2011/06/06(月) 20:05:33.26
配列とハッシュの違いが分かりません。
データに即座にアクセスできるという点で一緒じゃないんですか?
0233デフォルトの名無しさん2011/06/06(月) 20:08:21.49
>>232
辞書を引く時に、200ページ目に書いてあるよというのが配列
辞書を引く時に、「か」の項に書いてあるよというのがハッシュ
0234デフォルトの名無しさん2011/06/06(月) 20:13:18.54
ネロに道連れにされて死んだのがパトラッシュ
0235デフォルトの名無しさん2011/06/06(月) 20:14:07.73
PHPだと配列=ハッシュ
0236デフォルトの名無しさん2011/06/06(月) 20:24:00.07
>>227
ということは新たにintで数を宣言したほうがいいですかね?
0237デフォルトの名無しさん2011/06/06(月) 20:45:44.08
>>236
>>229
0238 忍法帖【Lv=4,xxxP】 2011/06/06(月) 21:59:12.59
それ以前に、printf()系のフォーマット文字列に生の%はダメ。
0239デフォルトの名無しさん2011/06/06(月) 22:22:15.28
!( x ! = y ) の式の真偽を判断するソースコードを書きたいのですが
どのように書くのが良いでしょうか?
ちなみにxとyの数値はプレイヤーが入力するのではなく
決められた数値となっています。
0240デフォルトの名無しさん2011/06/06(月) 22:29:57.40
printf("%d\n",!( x ! = y ));
0241デフォルトの名無しさん2011/06/06(月) 22:39:32.00
x==yじゃだめなのか
0242デフォルトの名無しさん2011/06/07(火) 02:23:06.12
ファイルポインタからファイルディスクリプタを取り出すAPI
ってなかったっけ?
逆ならあったんだけど
0243デフォルトの名無しさん2011/06/07(火) 03:35:28.13
>>242
ファイル構造体に入ってるよ
0244デフォルトの名無しさん2011/06/07(火) 07:12:11.34
>>242
fileno()じゃないの?
つーか、寧ろ逆方向こそ知らない。
0245デフォルトの名無しさん2011/06/07(火) 18:11:35.37
ハッシュってC言語なら何で実現するの?
ヘッダとかマクロもわからん・・
0246デフォルトの名無しさん2011/06/07(火) 18:23:31.76
http://www.tokumaru.org/techterm/hash.html
0247デフォルトの名無しさん2011/06/07(火) 18:48:24.11
>>244
逆はfdopen()とかじゃね?
Winにあんのかは知らないけど。
0248デフォルトの名無しさん2011/06/07(火) 21:36:05.46
パソコンから入力した時間(10:20:30 のような)を
合計秒数に変換するプログラムを書きたいのですが
60秒を掛けていかないといけないから普通の加算じゃできませんよね?
どのように書けばよいでしょうか…
0249デフォルトの名無しさん2011/06/07(火) 21:39:24.89
60掛けてから足せばいいだろ・・・・・・・
0250デフォルトの名無しさん2011/06/07(火) 21:41:56.75
>>248
普通の加算でいいよ
0251デフォルトの名無しさん2011/06/07(火) 21:42:09.39
:で分割して
3600かけて
60かけて
0252デフォルトの名無しさん2011/06/07(火) 21:50:44.12
>>248
プログラムとかC言語以前の問題だろ
■ このスレッドは過去ログ倉庫に格納されています