[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 09/06 22:43 / Filesize : 155 KB / Number-of Response : 705
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2012/05/04(金) 04:05:26.52 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 100
toro.2ch.net/test/read.cgi/tech/1333108892/
★過去スレ
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++の宿題片付けます 157代目
toro.2ch.net/test/read.cgi/tech/1335517816/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/
ideone.com/

401 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 17:13:25.28 ]
おまえらってC言語に関しては天才なの?

402 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 17:16:55.21 ]
今時は小数点に公約数があるのか...

403 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 17:32:07.36 ]
>>401
天才じゃないと答えられないような質問あったか?

404 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 17:42:43.52 ]
>>400
いえいえ

405 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 18:14:43.31 ]
最近は
A:xxxについて教えて。
B:yyyだよ
A:ありがとうございます
C:いえいえ

という返信をする変人がいるらしい。

406 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 18:19:49.22 ]
>>396
(0, 0)から(200, 45)に滑らかに移動したいと言うこと?
(200, 0)を経由していいなら横と縦に分割できるじゃん。

407 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 19:13:05.98 ]
x+20、y+4,5とかね

408 名前:デフォルトの名無しさん [2012/05/14(月) 19:48:15.34 ]
一様乱数教えてくださいな

409 名前:デフォルトの名無しさん [2012/05/14(月) 20:00:06.95 ]
randam()



410 名前:デフォルトの名無しさん [2012/05/14(月) 20:14:45.18 ]
混合合同法ってなんですか

411 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 20:15:12.90 ]
>>408
Mersenne Twister: A random number generator
www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html

412 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 20:49:48.61 ]
#include <stdio.h>

int sum(int,int);

int main (void)
{
int value,Left,Right;

scanf("%d,%d",Left,Right);

value = sum(Left,Right);
printf("%d\n",value);
return 0;
}


int sum(int min,int max)
{
int num;
num = (min + max) * (max - min + 1) / 2;
return num;
}

scanf("%d,%d",Left,Right); この部分にエラーが出ました...
何が悪いのでしょうか?

413 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 20:57:05.22 ]


414 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 20:58:38.72 ]
あ、&(´;ω;`)
またまた凡ミスしていまいました
どうもです...

415 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 21:01:49.12 ]
いえいえ

416 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:38:53.08 ]
いえいえ禁止!

417 名前:デフォルトの名無しさん [2012/05/14(月) 22:58:41.47 ]
C言語で円周率を10桁求めるプログラム作りたいです。
ソースコード教えてください。

このプログラム作るの簡単ですか?初心者です。

418 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:00:10.55 ]
>>417
ググって貼り付けるだけ

419 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:00:47.54 ]
>>417
マクローリン展開 円周率でぐぐる



420 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:04:27.38 ]
printf(”3.141592653”);

421 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:07:50.29 ]
>>417
ぐぐってこぴぺ。マチンの公式、うっふぇ。
ttp://ideone.com/cebSY


422 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:12:42.67 ]
>>420
それだめらしいです。


もう一つ
二次方程式の解を√つきで実数だけ全て求めるプログラムも教えてください。

実行例
a.out
x^2 ? ←出力
1    ←入力
x ?  ←出力
1    ←入力
定数 ? ←出力
-1 ←入力

x^2+x-1の解は ←出力
y=(-1+√5)/2
y=(1+√5)/2


みたいな感じのプログラムです。

期限は円周率とこの二次方程式のプログラムセットで3週間です。
後4日です...徹夜で考えてるけど特に二次方程式のプログラムは
思いつきません...



423 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:16:11.09 ]
>>422
アホかお前
出直してこい
何もわかっちゃいねーーーーーーー
プログラムの前に中学生の数学からやり直せ
ミジンコ

424 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:18:07.10 ]
徹夜ワロタwww

425 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:20:53.07 ]
πの計算は、>>421が終わると、今度は多倍長計算がやってみたくなる
ライブラリ一切使わずに加減乗除だけで自力で組んでみるとなかなか面白いよ

426 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:23:49.34 ]
円周率は、可能なら10桁ってことで、3.14以上、つまり4桁以上を出せれば
とりあえずOKらしいです。(という噂)

二次方程式は、解が無しなら、この解無しみたいな出力もするプログラムです。

後4日。お願いします'--'(手)

427 名前:422 mailto:sage [2012/05/14(月) 23:24:51.29 ]
y=(-1+√5)/2
y=(-1-√5)/2

でしたね。すいません

428 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:37:42.49 ]
>>422
くっそ適当wwwwwwwww
間違いがあったら自分で直してねwwwwwwwww
ttp://ideone.com/z1q8Z

429 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 23:39:27.29 ]
>>428
お前も勉強しなおし



430 名前:428 mailto:sage [2012/05/14(月) 23:41:01.12 ]
ソースみりゃわかるとおもうが、例えば√4とか平気で表示すっからなwww
あと、小数(分数)になっても、小数点以下完全無視だからwww

それがいやなら、これをベースに徹夜するのだwww

431 名前:428 mailto:sage [2012/05/14(月) 23:52:28.29 ]
それから重解表示もふつーに√0なwww
まあ、がんばれwww

もしかしたら、プロさんがすばらしい式整形盛りこんだやつ作ってくれるかもね

432 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:13:10.26 ]
>>431
根本的に間違ってるよw

433 名前:428 mailto:sage [2012/05/15(火) 00:18:27.64 ]
>>432
wwwwwwwwwww

くっそソースをくそ修正wwwwwwww

ttp://ideone.com/jBBTX

434 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:42:26.71 ]
>>433
どこへ向かってるんだwww

435 名前:428 mailto:sage [2012/05/15(火) 00:44:59.36 ]
>>434
>>428で、>>427の答えを出すにはどう式を立てればいいかちょっと悩んだぞwwwwww

436 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 01:20:13.92 ]
#include <stdio.h>

void check(int y[])
{
printf("check : %d\n", sizeof(y) / sizeof(y[0]));
}

int main()
{
int x[5];

printf("main : %d\n", sizeof(x) / sizeof(x[0]));
check(x);

return 0;
}

両方とも5が出力されると思っていたのですが
mainは5でcheckが1になります。
check関数のyはmainのxそのものを別名でアクセス出来るものかと思っていたのですが
checkが1になる理由は何なのでしょうか。よろしくお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 01:21:16.66 ]
>>436
ポインタだから

438 名前:436 mailto:sage [2012/05/15(火) 01:29:13.51 ]
>>437
なるほど。そうなるとmainの中のxは配列を指しているわけではないという事でしょうか
sizeof(x)ってやって5になるってことはそうなんですよね・・・
今まで配列の名前自体は配列を指してるってイメージだったんでちょっと頭こんがらがってきました
解答ありがとうございます

439 名前:436 mailto:sage [2012/05/15(火) 01:31:09.17 ]
ポインタだと思ってるんだったら1になるのが当たり前って思うべきなんですよね
なんか言ってる事めちゃくちゃでごめんなさい。



440 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 01:47:24.31 ]
>>438
main の中では配列だけど
関数の引数で渡された時点でポインタになる

441 名前:436 mailto:sage [2012/05/15(火) 01:52:10.42 ]
>>440
すいません。ありがとうございました。
勉強し直してきます。

442 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 20:50:20.17 ]
>>438>>441
いえいえ、お礼は結構ですよ

443 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 21:20:18.65 ]
VisualStudio2010
ver 10.0.40219.1 sp1relを使用しています。
少しポインタを復讐しようと思いまして、入力した文字から最大値と最小値を出力するプログラムを書きました。
ソース(きたなくてすいません)
#include<stdio.h>
void maxmin(int *array,int *max,int *min);
int main(void){
int array[10];
int max,min,i=0;
do{
scanf("%d",&array[i]);i++;
}while(array[i-1]!=-1 && i<10);
maxmin(array,&max,&min);
printf("最大値:%d\n最小値:%d\n",max,min);
}

void maxmin(int *array,int *max,int *min){
*max=0;*min=100;
for(int i=0;*(array+i)!=-1 && i<10;i++){
*max = (*(array+i) > *max) ? *(array+i) : *max;
*min = (*(array+i) < *min) ? *(array+i) : *min;
}
return;
}
これをVisualStudioで実行すると構文エラーが起きてしまいます。ただ、bcc?ではエラーは起きませんでした。
maxmin関数内のiの宣言をforの中ではなく、一番上で宣言するとVisualStudioでもエラーは起きませんでした。
少し良くわからないので、教えてくれる方いたらお願いします。

444 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 21:34:09.11 ]
>>443
ANSI-Cでは変数の宣言は複文の先頭にしかかけません。
これは予想ですけどVC++ではCとしてコンパイル、BCCではC++としてコンパイル
しているのでは?

もう一つ、mainが戻り値を設定していないので、警告が出ます。
コードの中身はチェックしていませんので、悪しからず。

445 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 21:40:08.01 ]
>>443
VS側はコンパイラのオプションでエラーを出さない様に出来る。

446 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 21:40:29.59 ]
>>438
配列名は式中では配列の先頭要素へのポインタとなる。
ただしsizeof, &のオペランドになったときは例外。

447 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 21:59:34.84 ]
>>444
すべて仰るとおりです。すごいですね!!
VisualStudioでcppで作成し、mainにreturn 0;を追加したところコンパイルできました。ありがとうございました。

>>445
ありがとうございます。
オプションがどこにあるかよくわからなかったので、cppとして作成しました(^_^;)

448 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 23:01:41.01 ]
いえいえ

449 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 23:32:19.49 ]
いいぇいいぇ




450 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 23:35:06.28 ]
イェイイェイ

451 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 23:36:05.52 ]
君と ウェイ! ウェイ! ウェイ! ウェイ!


452 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 23:57:44.68 ]
いっつだってワークワーク

453 名前:デフォルトの名無しさん [2012/05/16(水) 04:02:50.68 ]
通常正であるコストを、無限のコストとして-1を設定したときに
コスト同士の比較で、コストが最小となるものを求めるときに
//cost1,cost2,minはint
min=cost1;
if ((unsigned)min > cost2) min=cost2;・・・(1)
上のif文と(完全にではないですが)同等の条件として
if(min == -1 || (min > cost2 && cost2 != -1) ) min = cost2;・・・(2)

(1)のような(unsigned)-1 = INT_MAXを使った書き方は推奨してよいものなのでしょうか?
標準Cでは、符号あり→符号なしの変換はbit列を維持することが保証されているようですが、
具体的には(unsigned)-1のような使い方は、一般的に使われているのかが知りたいです

454 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 04:08:33.93 ]
Cの仕様としては保証されないが使われてるね。

455 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 04:09:27.02 ]
そもそも
(unsigned)-1 = INT_MAX
が成り立つ保証がない。

456 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 04:40:31.68 ]
>>454
裏技みたいなものなのですかねえ

手持ちのC参考書には
signed X → unsigned Yにおいて
X=Y、x < 0 のとき y=x + (1 + Y_MAX)
と書かれており、
調べてみたら
JIS X3010 www.jisc.go.jp/app/pager?id=90394
6.3.1.3項にも同様のことが書かれているのですが
JIS規格と、Cの仕様って必ずしも一致しないのですかね

457 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 11:06:09.34 ]
entryの宿命はよ。

458 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 11:15:43.81 ]
>>456
それは見えないが処理系依存と書いてるんじゃないのか?
そもそも符号付整数を1の補数であらわすのか2の補数であらわすのか
あるいは別の形式かも処理系依存だろ。

459 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 13:15:05.20 ]
だろ。!



460 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 13:23:31.11 ]
>>458
しつこい

461 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 14:03:02.10 ]
理解できないからって恥ずかしいやつだな。

462 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 14:16:53.92 ]
処で、どっかにLinuxのtmpfile()のソース落ちてないかな。

463 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 14:18:45.67 ]
このスレと何の関係が?

464 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 14:22:53.45 ]
Cの標準関数やから。

465 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 15:27:35.21 ]
handle closeとファイル消去の紐付け方法を
判んない思いつけないんでしょ462は

466 名前:462 mailto:sage [2012/05/16(水) 16:34:47.06 ]
いや、単にファイル名をどう生成しているか知りたいだけ。
creat()してすぐunlink()していることは想定内。

467 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 20:13:55.04 ]
>>462
オプソなんだからそりゃどっかにあるだろ
glibcでググればいいと思う

468 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 22:39:20.09 ]
Cの仕事ってあんの?


469 名前:デフォルトの名無しさん mailto:sage [2012/05/16(水) 23:23:43.25 ]
うん



470 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 00:36:39.95 ]
C言語のプログラム上からpythonのプログラムを実行したいです

471 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 00:47:19.40 ]
はい、すれば良いかと思います。

472 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 08:29:37.48 ]
>>467
あ、盲点だった。
ってことで、早速glibcのgitwebを見てみた。
stdio-common/tmpfile.cを見たら、中で__gen_tempname()を呼んでいた。
で、tempname.cを見ると……中身が__set_errno()だけだった(TT

473 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 10:57:56.52 ]
>>471
教えてください

474 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 11:00:25.25 ]
LinuxでCの勉強をする場合定番のコンパイルは何ですか?
VC++2010無料版のcl.exeしか知りません

475 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 11:06:32.50 ]
つgcc

476 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 11:10:58.93 ]
わかりました
gccで勉強します

477 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 11:30:36.12 ]
>>473
system("python yourProgram.py");"

478 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 17:35:04.16 ]
gccしか使わなくね?

479 名前:デフォルトの名無しさん [2012/05/17(木) 18:59:16.56 ]
一様に乱数が発生していることを検証するプログラムを
コードに追加すること.

確認方法は,生成した乱数の発生度数を階級毎にカウントし,
その各度数を表示する.

また,発生した乱数が一様になっていない場合は,
改めて一様乱数を生成する部分の修正を行うこと.




480 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 19:50:13.35 ]
いえいえ

481 名前:デフォルトの名無しさん [2012/05/17(木) 20:47:00.97 ]
ある数列が一様乱数であることの証明ってすげー難しそう
どのような予測も未来永劫すべて退けるってどうやるんだ

482 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 20:59:13.93 ]
それが出来ればチューリング賞もフィールズ賞も夢じゃない!
ガンバれ!
おれはやらんけど!


483 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 21:19:24.54 ]
ふう
はら減った

484 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 21:50:07.96 ]
ideone.com/HE5Qg
剰余を求める関数で、
このシフト演算の意味がわからないんですが、
何のためにやるのでしょうか

485 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 21:53:34.13 ]
>>484
2進法で筆算してみるよろし

486 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 22:39:59.41 ]
うん

487 名前:デフォルトの名無しさん [2012/05/17(木) 23:30:52.93 ]
#include<stdio.h>
int main(){
int num1, num2, num3, num4;
printf("整数1 : ");
scanf("%d", &num1);
printf("整数2 : ");
scanf("%d", &num2);
num3 = num1/num2;
num4 = num1-(num3*num2);
printf("%d を %d で割ると %d 余り %d\n", num1, num2, num3, num4);
printf("%d を %d で割った小数値は %f\n", num1, num2, (float)num3);
return(0);
}

で、num1に17、num2に5と入力して、%fの所に3.400000と表示したいんだけど3.000000と表示されるのは何故?


488 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 23:34:15.70 ]
なんでintで割り算してんだアホ


489 名前: ◆QZaw55cn4c mailto:sage [2012/05/17(木) 23:38:47.15 ]
>>487
ideone.com/bcE0W



490 名前: ◆QZaw55cn4c mailto:sage [2012/05/17(木) 23:39:46.81 ]
>>488
×なんでintで割り算してんだ
○なんでint を intで割り算してんだ

491 名前:デフォルトの名無しさん [2012/05/17(木) 23:41:34.86 ]
>>489
キャスト(だっけ?)について教えてくれますか?

492 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 23:54:38.10 ]
intを変えろ
あとは分かるな

493 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 23:54:49.30 ]
以下は同一ですか?

sizeof(array) / sizeof(*array)

sizeof(array) / sizeof(array[0])

494 名前:デフォルトの名無しさん mailto:sage [2012/05/17(木) 23:58:13.02 ]
>>493
Just try and you can find out.

495 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 00:05:37.70 ]
ためしてみな、そうすればわかるさ

496 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 01:12:29.68 ]
>>487
floatは必要に迫られない限り使うのは避けよう。
%fより%gを使おう。

497 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 01:27:00.23 ]
>>481
このケースだと階級毎にカウントとか書いてるんだから
単純にカイ二乗検定すればいいんでしょ
数列のテスト方法は大量にあって、TAOCPはそれだけで一章使ってた気がする

498 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 07:50:21.45 ]
>>496
やはり風呂よりdouble?

499 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 07:58:11.20 ]
>>496
>%fより%gを使おう。
これはお勧めできない。%g は値によって出力結果が大幅にかわり事前に予測できないのが非常に問題。
安易につかって破綻し泣ごにょごにょごにょ



500 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 09:52:36.05 ]
あほすぎwww

501 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:15:14.49 ]
>>499
printf("%f, %f\n", 1e10, 1e-10);
printf("%g, %g\n", 1e10, 1e-10);
どっちが自然?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<155KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef