[表示 : 全て 最新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/

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);
どっちが自然?

502 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:18:03.75 ]
C言語の入門者向け練習問題サイトってありませんか?

503 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:19:05.43 ]
問題1)1から10までの数値をランダムに生成せよ
問題2)大吉 中吉 末吉 吉 凶を表示するおみくじを表示せよ

こんなやつ

504 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:22:22.34 ]
ステマかよ
宣伝したいサイトが出てくるまで粘るんだろどうせ
アホはさっさと立ち去れよ


505 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:28:32.60 ]
出た出たw過剰反応w

506 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:34:05.83 ]
どっちにしろここで聞くよりググった方が早いな

507 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 11:34:50.33 ]
とりあえず
Project Euler
はやっておくかな

508 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:15:10.47 ]
ダメなサイトなら紹介してる。
ttp://www.nslabs.jp/c_pointer.rhtml


509 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:15:55.70 ]
プロジェクトオイラーは簡単な奴なら入門レベルでも解けるけど、
難しいのだと数学的知識がないとどうにもならない



510 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:25:33.14 ]
すみません構造体のことで教えてください、あるサイトで

main.h
struct Images{
int hero;
以下省略
};
main.cpp
int LoadFiles(){
//ファイル読み込み処理をここに書く
g_images.hero = 以下省略
}

とあるんですが、「images.hero」でそのまま使えないんでしょうか?
なぜg_を付けているのか、何の意味があるのか分からないです

511 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:44:34.07 ]
>>510
それだけ提示されても何のことやら。めんどくさいから全部貼れ。
ついでに質問もよく判らん。

まぁ、g_で始まっているからにはグローバル変数とでも言いたいのではないかと思うが。

512 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:52:00.02 ]
変数名とタグ名の区別がついてない

513 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 12:57:17.48 ]
タグ名はImagesだぞ。目は大丈夫か?

514 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 13:16:51.40 ]
標準ライブラリの質問はココで質問してもいいですか?

515 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 13:54:09.79 ]
>>510
構造体はただの鋳型
使うにはそこから変数などの形で実体を作る必要がある
たぶんソースのどっかでg_を付けた名前で変数宣言してるだろ?

>>514
おk

516 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 15:34:27.50 ]
お前らのおかげですっげーお手軽なお遊びゲームできたwwww
数字の1を入力するだけで戦闘できて、しかも自分のHPは減らない、うは面白www
これで毎日暇潰せるwww
お前ら本当ありがとうwww

しんでくる

517 名前:デフォルトの名無しさん [2012/05/18(金) 16:04:56.62 ]
argvの内容を4番目以降消して、
(argvの要素数は4以上あるものとする)
後でその領域を使えるようにしたいです。

void main(int argc, char* argv[]) {
while (argc>3) argv[--argc]=NULL;
}

これでは文字列の内容がちゃんと消去されてないし、
指していたメモリが開放されていないと思うのですが、
正しい方法を教えてください。

518 名前:デフォルトの名無しさん [2012/05/18(金) 16:19:08.24 ]
二次元配列を渡す時の仮引数の書き方を教えてください。
二次元配列を渡す時、受ける側はポインタの配列で受けるのでしょうか。
また、二次元配列を渡す時の実引数は、何を渡したらいいのでしょうか。

519 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:25:00.64 ]
typedef struct{int hairtsu[SIZE][SIZE2];}hairetsu2jigen;

void f(hairetsu2jigen a);



520 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:31:21.48 ]
>>517
汎用性のある手段はない。一般的には、メモリ解放を意識する必要もない。


>>518
配列を渡したいのか配列へのポインタを渡したいのか要素へのポインタを渡したいのかはっきりしろ。
つーか、その辺りが判らないなら具体的にやりたいことを書け。

521 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:33:05.66 ]
>>517
検索して調べてみた感じだと、
argvがどういうふうに確保されるかは環境依存だから、
freeしようとするのはやめとけって感じでした。
freeしないとしたら空文字列を代入すればいいのかな?

522 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:34:56.28 ]
>>520
ありがとう。
逆にいうとargvのために確保された領域が
勝手に他から読まれる心配はしなくていいってことですか?
セキュリティの観点からも気になるんだけど。

523 名前:デフォルトの名無しさん [2012/05/18(金) 16:37:25.05 ]
>>519
それだったら始めからグローバルな二次元配列を書きます
>>520
上位の関数で二次元配列を宣言して、下位の関数にアドレスを渡して、下位の関数で二次元配列の処理をしたいのです。

524 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:37:46.05 ]
>>521
の質問は、
while (argc>3) argv[--argc]=NULL;

while (argc>3) argv[--argc]="";
だったらどっちがまとも?
っていう内容です。

525 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 16:48:19.96 ]
519に対してグローバルがどうとか言い出すあたり全然わかってない割合の方が高そうだな

526 名前:デフォルトの名無しさん [2012/05/18(金) 17:00:08.05 ]
>>519さんのやりたいことがわからないのですが。
構造体を返そうとしてるつもりなのでしょうか。
そうだとしたら何故return値がvoidなのでしょう。
Cは値渡ししかできないですよね。
もしそうでないとしても、それなら何故仮引数が構造体を指すポインタじゃないのでしょうか。
構造体はreturn出来るから構造体のメンバーに二次元配列を宣言したのでしょうが、何をしたいのかわかりません。
教えてください>>525さん

527 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:06:44.15 ]
自分の中の理屈で逆切れかます欠陥人格

528 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:07:58.93 ]
>>526
二次元配列とか、そこらの本見れば書いてあるだろ。
人のミスにつけこむような、つまんない議論やめれ。

529 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:10:08.70 ]
void f(int a[2][2]);
void f(int a[][2]);
void f(int (*a)[2]);



530 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:11:44.88 ]
「仮引数の書き方」の話が「値を返す書き方」に変わっているような気がする。
自分の無知を棚に上げて挑発的な態度を取っているように見えるのは気のせいか?

531 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:13:19.55 ]
>>526
>525じゃないけど答えてみる。
>518では「二次元配列を渡す」と書いてあって二次元配列を参照渡しした意図はどこにも書いてない。
従って、値渡ししている>519のやりたいことは自明。
配列を戻すことを考慮する必要がないのだから、戻り値がvoidなのも至極当然。

532 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:15:34.50 ]
フルボッコw

533 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:16:27.80 ]
>>524
どっちもまともじゃない。
引き数リストは使用しないのなら放っておけばいい。
「勝手に他から読まれる」のは何を想定しているのか判らないが、
それを心配するなら>524のどちらであろうとも全く無意味だ。

534 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:17:21.17 ]
>>531
s/参照渡しした意図は/参照渡ししたいとは/

535 名前:デフォルトの名無しさん [2012/05/18(金) 17:25:03.78 ]
>>520さんに指摘されたように、もっとはっきりとやりたいことを書くべきでした。すみません。
本買って勉強してきます。
プログラミングの本と常識の本を。

536 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:33:53.77 ]
>>535
一転して素直で、今度は人格が心配になる。
まあガンバレ。

537 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:41:36.59 ]
ふう

538 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:53:23.75 ]
>>533
argv[1]=argv[3]
argv[2]=argv[4]

の後に、argv[1]とargv[2]を使った操作
をやるので、argv[3]とかargv[4]
をどっかでいじられると困るわけです。
strcpy使えばいいのか?


539 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 17:59:43.92 ]
判らん人だなぁ。何の保証もないコードを幾ら捻っても詮無いだろうに。
関数に渡すために無駄な心配をしているのなら、
オリジナルのargvを渡さずローカルにコピーしたlocalArgVでも渡せばいいだろうよ。



540 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:01:49.16 ]
いじろうとしてるのはお前だけのような気がするが

541 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:09:53.74 ]
>>538
勘違いかもしれんが、それだとコピーじゃなくてポインタのすげ替えにしかなってないんじゃね?
たしかに危なっかしいな。

542 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:15:49.03 ]
>>538
誰から守ろうとしてるの?

デバッガでアタッチされて改変とかの心配?


543 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:20:50.50 ]
>>542
mainを起動した本人以外が文字列の内容を読む心配。
argv[3]='\0'
したところで、argv[3][1]以降に入ってた文字は残骸としてメモリに残ってるんでしょ?
C++だと勝手にデストラクタが発動するからライブラリの責任だけど、
Cだとゼロ埋めとか自分でするの?

544 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:23:27.19 ]
543だけど、C初心者なんで、まずは慣習的な方法を教えて欲しいだけなんだ。
うっとうしかったらすまん。

545 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:27:59.13 ]
んなつまらん事気にするなら
main/argvじゃなくてmainCRTstartupをまづ如何にかしようとするべきだな

546 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:40:57.46 ]
>>545
やっぱC系はわけがわからんな。危ない橋をわたらされてる感が・・・。
嫌味じゃなくて素朴な疑問なんだけど、不安で夜も眠れないとかならないの?

547 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:49:20.37 ]
argvに書きこみなんてしないのが慣習

自分でゼロ埋めたって、埋める前に読まれたらおしまい
プロセスの保護とかOSの話
言語関係ないだろ

548 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 18:55:48.65 ]
>>547
ふむふむ、argvに関しては納得。

いろいろ見てたら
memset(str,'\0',sizeof(str))
ってのが出てきた。
たしかにゼロ埋めじたいはやるみたいね。

549 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:00:06.56 ]
strcpyってセキュリティホールの源泉みたいね。
機会があったら使わせてもらうわ(笑)。



550 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:09:36.21 ]
(馬鹿は)何使っても一緒だから心配すんな

551 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:10:40.57 ]
argvに入ってるってことはプロセス起動した側も同じものを持っているということ。
受け取り側だけどうこうしても片手落ち。

送り側にも手を入れられるのならコマンドライン引数では渡さない。
受け取り側のプログラム差し替えられたらダダモレでしょ?

552 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:20:07.91 ]
おまえらってC言語どのくらい出来るの?

553 名前:デフォルトの名無しさん [2012/05/18(金) 19:29:29.24 ]
質問お願いします。

入力された金額に対して、最も少ない紙幣と硬貨の数になるように計算せよ。

という課題に取り組んでいるのですが、なかなかうまくいきません。
現状では以下のようにしているのですが何が間違っているのか分かりません。
アドバイスをいただけたら幸いです。

codepad.org/JVbJI7BZ


554 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:40:01.33 ]
javascriptでいう
var d = new Date();
d.getFullYear();
みたいなオブジェクトとメソッドをピリオドで結んだ形で書くのはどうやって書けますか?

555 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 19:41:08.25 ]
>>501
%g がいかなるものか正確無比に把握できているのであれば %g を使用すること、%gの方がわかりやすい結果を出力するという事実に依存はない。
しかし、%g が、あるときは固定小数点表示、あるときは浮動小数点表示に切り替わる、その切り替わりタイミングは正確に記述されているのだろうか?
あるいは正確に記述されているとしてパンピーに把握できる内容だろうか?

凡人の私には
codepad.org/9vnPdoW3
の結果をあらかじめ予想することは不可能。ましてや自分のコード変更がめぐりめぐってどこぞのコードに影響することなど、把握不可能。
したがって、あるときから素性が比較的わかる %f にしておくのが無難という考え方に組することにしている。
この問題、wsprintf() 等で現実に直面する場合もあると思う。

どこかのだれかがなんの理由かしらないが、すべての実数値に 1e7 をプラスすることにしたために、めぐりめぐって泣ごにょごにょごにょ

556 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:41:48.00 ]
>>553
プログラミング以前に、中学・高校あたりの数学からやり直したらどうかな。
あなたは、数学的に物事を考える能力が無いよ。


557 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:43:06.96 ]
>>554
「構造体 ドット演算子」でggる


558 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:44:38.77 ]
>>554
structのフィールドに関数ポインタぶっこめば可能は可能だけど
結局a.foo(&a);とself/this相当を引数で渡さないといけないアホなことになるw

559 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 19:45:35.32 ]
>>517
posix/execv*() 群を使用するとき、「argv を malloc() していいの?malloc() した argv はどうなるの?free() しなくていいの?」とこちらできいたことがある。
答えは、「ほっとけ」。
なぜだろう?



560 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:50:02.01 ]
>>559
えっ

質問者本人だけど、まだ見てるから回答ヨロ。

561 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 19:59:36.84 ]
exec()系は自分自身は存在しなくなるのだからfree()できるわけないじゃん。
malloc()したポインタをexec()する先に引き継げるなら別だけど、普通そんなことしない。
従って、exec()した先のプロセスがお亡くなりになるときにOS側に引き取って貰えばいいよ。

562 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:03:20.63 ]
>>561
一理あるけど、現代的なプログラミング言語しか触ったことのない俺にとっては、
Cの常識ってお行儀悪いなーって思う。
ただ、それだけ。べつに歯向かおうとは思ってない(笑

563 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:07:19.56 ]
>>555
そうか? 実に判り易いと思うが。
6桁で丸めた結果が整数なら小数点を省略する。それだけだ。
まさかとは思うが、製品版のアプリにまで適応する話と思ってないだろうな。
製品版なら、値域を厳密に判断してから出力するからそれこそ適材適所だ。
学習目的で実験的に使うと言う前提だからこそ、必ず小数点以下6桁も0が並ぶ方が不自然だろ。

そうそう、極小値で割った結果をそのままsprintf()で%fを使って出力するプログラムがあったよ。
結果は、スタックを食い潰して落ちる最悪なものだったがね。

564 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:09:22.40 ]
>>562
それはあんたが低レベルの振る舞いに慣れていないからだろ。
システムコールを直接扱おうとしたらその手の問題にはしばしば直面するぞ。

565 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:14:02.96 ]
>>564
それは自覚している。
ハイレベルのことだけやってて困らない。
だから唯一困るのがargvとかIOまわりなんだよね。
そこでどうしてもCと相互作用しないといかんくて。

これから勉強しようと思うんだ。
ヘネシー・パターソンとか読めばいい?

566 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 20:19:06.93 ]
>>563
製品でなくても
>値域を厳密に判断してから出力するからそれこそ適材適所だ
に深く同意します。

567 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:39:05.78 ]
>>556
確かに、私は数学が苦手で数学的に考える能力は乏しいです。
おっしゃる通り、プログラミング以前の問題だと思います。

しかし、学校の授業の関係でやらなければならないので困っております。
また、これからもこの課題の考え方が必要になってくると思うので
この掲示板に書き込みさせてもらいました。

568 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:42:19.30 ]
まずはこの板の宿題スレを探しだすんだ

569 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:43:54.33 ]
枚数はxを割って求める



570 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:45:47.61 ]
>>568
ワロタ
「どこですか?」ってきそうw

571 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 20:49:23.26 ]
>>563
>極小値で割った結果をそのままsprintf()で%fを使って出力するプログラムがあったよ。
%f といえども大きいほうには無限にひろがるから‥‥

572 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 20:57:46.86 ]
無限に広がるわけないだろ。

573 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:01:43.21 ]
事前に値をチェックすることなしに、バッファオーバフローを避けられないのが%fの宿命。

574 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:05:16.20 ]
いまさらだけど、なんだ、
strcpy(argv[1],argv[3])
って普通にヤバイじゃんw
argv[1]=argv[3]
でargv[3]を消さずに放置するのが正解だな。

このスレ的にはargvをいじるなボケ、という感じだろうが、許してくれぃ。

575 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:05:52.40 ]
>>567
ttp://codepad.org/aIaYJhvH


576 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:07:19.70 ]
演算を細切れにして都度OF見ればいいだけの話し

577 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:08:06.12 ]
>>568
宿題スレに丸投げしたら答えだけ分かりそうで、意味は理解できない
かなと思ったのでこちらに書きましたが、556さんの言う通り数学的
思考力がないと意味がない気がしてきました・・・。

>>569
ありがとうございます。割り算を使ってこれから試行錯誤してみます。


578 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:09:40.37 ]
しかし、つくづく2000円札って影薄いな。

579 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:28:30.62 ]
>>578
誤爆かと思ったら553からかw



580 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:43:54.34 ]
ゲームボーイアドバンスのゲームをC言語で作りたいと思うのですが

一般のC言語入門の本を読んでも全くわかりません。

何を学べばいいですか。



581 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:46:15.52 ]
gbspec.txt


582 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 21:58:35.09 ]
僕らのゲームボーイとかいう本が出てるからそれ買え
組み込み系の良い教材になるよ

583 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 22:16:22.63 ]
>>582
その本は持ってますが、入門書とその本とのギャップが大きすぎてサッパリ。

その間のギャップを埋めるにはどうしたらいいでしょうか。

584 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 22:33:17.86 ]
割り込みとかレジスタを叩くあたりは組み込み系の入門書を読まないと分からないかもしれないな
リンカとかローダあたりの知識もあったほうがいいなそれはエキスパートCプログラミングあたりに書いてあった気がする
グラフィック処理はインデックスカラー形式だからそれはファミコンのプログラミングとか調べたら分かるかもしれない
あとはネット上でサンプルコードを漁ったり試行錯誤するといいんじゃね

585 名前:デフォルトの名無しさん [2012/05/18(金) 23:23:46.91 ]
思うんだが、ネットってプログラミングの知識ですら書籍に適わないよな。
ネットは浅く広過ぎ。


586 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:26:07.87 ]
ソレは >>585 自身が語録不足だからだと思うよ

587 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:27:10.64 ]
ひょっとして語彙のことか?

588 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:27:36.54 ]
語彙


589 名前:デフォルトの名無しさん [2012/05/18(金) 23:32:07.93 ]
>>586
体系的に教えているサイトは浅い。

深い事載せてるサイトは、単にユーザーが気になって
実験してみました的な事。

定説的に深い事言ってるサイトって無い。



590 名前:デフォルトの名無しさん [2012/05/18(金) 23:35:28.31 ]
定説的ってなんだ。

591 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:40:54.52 ]
詳しい事ほどヒットしないからな
だいたいネットに情報載せたら本売れなくなるじゃん。
専門的な事や創造的な事はネットに書くわけ無い。

592 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:41:09.11 ]
>>587-588 は586の指摘に痛みを感じた者供


593 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:41:41.00 ]
質問がないなら帰ってくれないか

594 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 23:44:00.07 ]
語録ww

595 名前:デフォルトの名無しさん [2012/05/18(金) 23:49:57.57 ]
アホスwww

596 名前: ◆QZaw55cn4c mailto:sage [2012/05/18(金) 23:59:39.36 ]
末尾再帰について教えてください。
宿題スレにて、toro.2ch.net/test/read.cgi/tech/1335517816/497 が末尾再帰でないとの指摘があり、いろいろと考えていました。
思うに、toro.2ch.net/test/read.cgi/tech/1335517816/505 を理由に末尾再帰でない、ということになれば、よくある階乗の再帰関数

int f(int n) {
return (n == 0) ? 1 : n * f(n - 1);
}

ですら末尾再帰ではないことになるのでしょうか?
末尾再帰であるために

int f(int n, int i, int p) {
return (n == i) ? p : f(n, i + 1, p * (i + 1));
}
codepad.org/OSvQa0ni
と書かねばならないのでしょうか?
主観的な表現になりますが、なんだかつまらなくなってしまいました。

コメントをいただけるとうれしいです。よろしくお願いいたします。

597 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:30:30.91 ]
>>584
組み込み系の専門書読んだけど10pくらいで挫折した。
もっと分かりやすく書いて欲しいな。

598 名前:デフォルトの名無しさん [2012/05/19(土) 00:35:48.28 ]
>>596
アホスwww

599 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:44:08.10 ]
なんで末尾再帰を区別するのか、理由すら考えたことがないんだろうね。



600 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 03:22:05.75 ]
>>596
>int f(int n) {
>return (n == 0) ? 1 : n * f(n - 1);
>}
>
>ですら末尾再帰ではないことになるのでしょうか?

末尾再帰では有りません。
「ループに変換可能か」と言うより
「ジャンプ最適化可能か」です。

なお、c言語では末尾再帰最適化を行わない処理系も多いので、
処理系依存度を下げたいなら、末尾再帰に拘る必要は有りません。

>末尾再帰であるために
>
>int f(int n, int i, int p) {
>return (n == i) ? p : f(n, i + 1, p * (i + 1));
>}
>codepad.org/OSvQa0ni
>と書かねばならないのでしょうか?

Yes。
ただしgccなどの一部の処理系では上記部分を関数内関数で書けるので、
呼び出し側からはint f(int n)で済ませることが出来ます。

601 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 06:39:29.09 ]
>>600
>「ループに変換可能か」と言うより「ジャンプ最適化可能か」です。
call A
end

A:
...
ret
...
call A
ret

ならば

A:
...
ret
....
jmp A

になるということですか。昔、せこいことに call A / A: ... call B ret / B: ..... call C ret / C: ... ret を call A / A .. jmpB / B: ... jmp C / C: ... ret にしていた、というやつですね。
もう少し考えて見ます。コメントありがとうございました。

602 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:28:12.59 ]
a

603 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:55:21.96 ]
>>556
>>553は日本語もやり直した方が良いひとだろ。
質問をお願いしますとか…


604 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 08:56:32.25 ]
>>580
まずは任天堂と開発者ライセンスの契約を結ぶところからかなー

605 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:25:04.60 ]
>>601
Schemeの継続の考え方が参考になると思う。

606 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:39:58.58 ]
>>584
ありがとうございました。
ただそういった知識を身に付けても、例えばDSだったりPSPだったり
対象が変わるとまたARM9とかMIPSとか調べないといけないですよね?

C言語というのは文法とか構文みたいなのは同じでもそういう
ハードウェアの知識が必要なのですか?


607 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 09:40:51.15 ]
>>605
コメントありがとうございます。

608 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:47:21.70 ]
ハードウェアの知識がまったく必要とされない分野で
Cを使うのはあまりにも生産効率が悪すぎる。

609 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:52:41.35 ]
>>606
C言語自体は本当に言語としての土台の部分しか規定してない
その土台の上に何が乗っかるかで学ぶべきことが変わるなんてザラよ
とは言え、その土台がしっかり出来てりゃ乗っかるモノが変わっても対応しやすいけどね



610 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 09:53:53.23 ]
外人が作った開発環境があったような気がするけど
それの使い方調べればハードのこと考えなくても作れた気がするけど

611 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 10:33:52.66 ]
#include<stdio.h>
int main(void)
{
char h1[4][3] = {"あ","い","あ","い"};
char h2[2][3] = {"い","あ"};
int a=2,b=1;
if(h1[a]==h2[b]){
printf("成功! [%s],[%s]",h1[a],h2[b]);}
else{
printf("失敗! [%s],[%s]",h1[a],h2[b]);}
return 0;
}
配列使って文字の比較やりたいんだけど
エラーはでないものの「あ」「あ」の組み合わせでも
「失敗!」になってしまって困ってます。
配列使っての文字の比較ってどうすればいいでしょうか?

612 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 10:37:45.53 ]
>>611
==で比較したらだめだよ
アドレスの比較になってしまう
strcmp()で比較しないと

613 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 11:06:54.44 ]
>>610
結局それはC言語自体ではないと思う

614 名前:611 mailto:sage [2012/05/19(土) 11:37:32.28 ]
>>612
ありがとうございます、解決できました

615 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:13:44.15 ]
いえいえ

616 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:19:45.04 ]
>615
気に入らん。もう一度やれ!

617 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:22:01.62 ]
そりゃそうだろC言語単体じゃ役に立たないコンソールプログラムくらいしか作れないよ


618 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:36:07.42 ]
>>617
ばかじゃねーの

619 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 12:43:29.52 ]
>>617
お前が作るコンソールプログラムこそが役に立たないんだろw




620 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:35:45.26 ]
質問です
#include <stdio.h>
#include <stdlib.h>

int main(void) {
char *ip;
ip = getenv("REMOTE_ADDR");
printf("%s\n", ip);
return 0;
}
において(null)しか返ってこないのですが環境によって動作しない事もあるのですか?


621 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:15:10.25 ]
>617
ハードの詳細な仕様書があってもライブラリが無いから使えないって言いそうなやつだな。

622 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:22:57.83 ]
>620

>REMOTE_ADDR
>REMOTE_ADDRは、アクセス元のIPアドレスを表します。
>つまりあなたのホームページやCGIに対してアクセスした人がつかんでいるIPアドレスです。

httpサーバー経由の実行でもなきゃNULLが普通じゃね?

623 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:41:40.09 ]
>>622
単に”IPを取得する”ものだと勝手な先入観で思い込んでしまっていました
ありがとうございます
ちなみにC言語において実行元のIPを取得する関数は存在しますか?

624 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:49:55.99 ]
>実行元のIP
これが全くもって意味不明なんだが

625 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:50:05.73 ]
環境依存

626 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:00:42.47 ]
>>624
表現に悩みましたが、実行者のIPで伝わるのかな

627 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:06:09.03 ]
C言語うんぬんよりも先に
HTTPとかネット関係とか
そっちの方をやった方が良いだろコイツ
今のままじゃあ話なんて通じねーよ
ムダだよ


628 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:19:26.86 ]
cgi作りたいならC言語よりPHPとかPerlとかのスクリプト言語の方勉強したほうがいいよ。

629 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:47:38.18 ]
>620
IPアドレス持つにはTCP/IPプロトコルが必要。
TCP/IPプロトコルの無いハードなんていくらでもある。



630 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 16:58:18.34 ]
すいませんLinuxとC言語の質問はどこでしたらいいですか?

631 名前:630 mailto:sage [2012/05/19(土) 17:01:14.05 ]
Linuxでいいエディタがないので自分で作りたくて質問したいんです

632 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:06:16.64 ]
vimでもemacsでもgeditでもだめってこと?
普段>>630はどんなエディタ使ってるんだろ

633 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:07:43.29 ]
>>629
調べて意味を理解できました、ありがとうございます
指摘通りネットワークの知識が薄いみたいなんで勉強してきます

634 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 17:34:34.37 ]
>>608
つコンパイラ

635 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 17:47:23.61 ]
今は皆さんC初心者に優しいよね。Cマが増えても誰も困らないからかな。

636 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:21:40.19 ]
>>635
そうですか?あいもかわらず冷たいと思っています、C がわからなければ人じゃない、っていう雰囲気はいつまでも払拭されない、という気が。

637 名前:630 mailto:sage [2012/05/19(土) 21:49:40.05 ]
>>632
秀丸
vimとemacsは難しすぎてエディタの使い方を覚えないといけないから時間がかかります
geditは機能が足りないので不満です
そこで秀丸にある機能で自分で使いたいものを自分で実装して使いたいんです

638 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:54:48.55 ]
その理想のエディタを開発するためにもまずはIDE使いこなせ

639 名前:デフォルトの名無しさん [2012/05/19(土) 21:57:02.97 ]
現在公立の中学生(1年)なんですが、C言語を始めたいと思っています。
中学の時点でC言語の理解は難しいでしょうか?

日本で小学校高学年や中学生でC言語というかプログラミングやってる
人は少ないですか?周りにいないので。




640 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:59:13.83 ]
BASICみたいな使い方なら出来るだろう
でもポインタとか構造体を使うにはちょっと難しいかもな
高校生になればだいたいできると思う

しかし小学生でプログラム組んでた奴もいるから結局は個人差か

641 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:59:16.77 ]
厨房がC言語やるなんて早いんだよ。
部活やったり友達と遊んだりする事に時間を使え

642 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:03:45.81 ]
>>639
CDブートのknoppixをUSBから起動させれば
あなたもたちまちCマスターどころかイッパシのハカーになれます
はっきりいって年齢は関係ありません
適性だけです


643 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:11:26.13 ]
プログラミングなんかやったって何にもならないただの徒労で終わるよ
学生なら部活やら人付き合いやら勉強やら資格の勉強やらに費やすべき
プログラミングなんかやったって受験で有利になるわけでも良い会社に入れるわけでも
出世競争で有利になるわけでも金が儲かるわけでもなんでもない
プログラミングに時間を費やすというのは完全に人生をドブに捨てるのと同じで愚かな行為
受験勉強を頑張りなさい

644 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:12:18.29 ]
>>643
うざいです><

645 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:24:33.13 ]
>>637
だったら自分で新しいエディタ書くよりpythonでgeditプラグイン書いたほうが速いと思うが

646 名前: ◆QZaw55cn4c mailto:sage [2012/05/19(土) 22:42:53.30 ]
>>639
先輩たちがここにいるよ。
当時の話をきくと面白いかもしれないよ。
ikura.2ch.net/test/read.cgi/i4004/1334408350/

647 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:47:19.05 ]
>>646
オッサンは嫌

648 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:49:07.44 ]
タイトルの俺って誰ですか?

649 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:50:01.57 ]
Cの最大の難関はこんな役立たず言語覚えてどうするんだという疑問が払拭できず
モチベーション維持が極めて難しいということだな。
そこさえ乗り越えられれば何歳だろうと習得は簡単。



650 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 22:51:50.76 ]
言語を作りたいのですがそういう場合でもC言語を覚えるのはやめたほうがいいですか?

651 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:08:14.06 ]
初歩的なことで申し訳ないんですが、
1〜40までの整数があって
1〜20を白、21〜40を赤
みたいにしたいとき、
1〜20 の ”〜”の部分は
どう表現すればいいんですか?

652 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:08:43.52 ]
>>649
ちがうんじゃねーの?
Cで出来ることがほとんどやりつくされてるからじゃね
デガラシいじくりまわしても楽しくないじゃん


653 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:25:18.64 ]
・覚えるの 早めた方がいいですか?
・覚えるのは 止めた方がいいですか?
どっちなのかと。

654 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:27:22.88 ]
>>651
あなたの質問は、if文の条件の書き方を知りたいと言うことですか?
でとすれば、if (整数 >= 1 && 整数 <= 20) 白();のようにすればよろしいかと。

655 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:27:59.05 ]
>>651
>1〜20 の ”〜”の部分は
>どう表現すればいいんですか?
「波線」。

656 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 23:41:55.43 ]
>>654
ありがとうございます!
>>655
勉強になりましたwww

657 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:25:16.23 ]
いえいえ

658 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:49:25.18 ]
>>657
いやお前に言ってないからwww

659 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:55:35.76 ]
俺に言ってんだよ。



660 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 01:10:07.47 ]
>>659
誰にも言ってないんですけど

661 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 03:56:57.85 ]

>657 が壁に向かって言ってるんだろ。

662 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 03:59:53.21 ]
Yeah Yeah

663 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 07:15:58.09 ]
iPadで授業の動画を見ながらプログラミング学習
ソフトバンクがシリーズ展開

iPad 向けアプリ「赤松先生のIT講座シリーズ」の第1弾としてリリースされたのは、『速解C 60分でわかる「構造体」「ポインタ」』(1500円、発売記念価格800円)。

markezine.jp/article/detail/11865
static.shoeisha.jp/mz/static/images/article/11865/11865.jpg

664 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 08:19:55.81 ]
イェーイェー

665 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 08:23:16.86 ]
ドットインストールで充分だろ。

666 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 10:34:29.62 ]
ドットインストールは中身薄くてダメだ
そこで動画公開してる低レベル野郎のステマか?

667 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 10:51:41.38 ]
どーせ動画で見に付くわけないんだ、本人が判った気になるだけのために金を出すのは馬鹿馬鹿しいってこと。
それこそドットインストールがどうこうって、ソフトバンクのステマかっての。

668 名前:デフォルトの名無しさん [2012/05/20(日) 12:00:05.03 ]
>>649
役立つ言語がもしあると今度は立場がなくなるやつが何か吠えてるなw

669 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 12:10:49.11 ]
C言語が身に付くレベルの理解力があれば他の言語の取得も容易っていう目安になる。



670 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 19:20:02.56 ]
なるね。

671 名前: ◆QZaw55cn4c mailto:sage [2012/05/20(日) 20:06:22.08 ]
なるかなあ?

672 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 20:15:42.94 ]
とりあえずここが人が多そうだからここにきたんですが
総合的な質問スレってありませんか?

673 名前: ◆QZaw55cn4c mailto:sage [2012/05/20(日) 20:20:54.34 ]
toro.2ch.net/test/read.cgi/tech/1316013463/

674 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 20:57:23.25 ]
>>672
ここが総合的な質問スレに見えるならそういうことにしておけ


675 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 21:53:35.00 ]
double nanashi(double MAX,double MIN) //MINからMAXまでの実数乱数を返す
{return ((double)(rand()%(int)((MAX-MIN+1)*POINT))+MIN)/POINT;}

実数の乱数を返す関数を作りましたが思ったような動作を行いません
記述を間違えているのでしょうか
POINTは10^4くらいです

676 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 21:56:40.57 ]
>>675
(MAX-MIN)*rand()/RAND_MAX+MIN;

677 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 22:01:51.28 ]
>>676
0から1までの乱数を生成して、大きさ(MAX-MIN)をかけMINの分を底上げするんですね
助かりましたありがとうございます

678 名前:678 [2012/05/21(月) 01:47:42.52 BE:950591227-2BP(0)]
rot13暗号を解読するプログラムでEOFを使わないプログラムが分かりません。

679 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:11:52.61 ]
>>678
ideone.com/6G1HG



680 名前:678 [2012/05/21(月) 02:20:17.16 BE:678993825-2BP(0)]
>>679
getchar使わない文でお願いします。すいません

681 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:21:49.50 ]
>>680
fgetc(), fputc() は使っていいかい?

682 名前:678 [2012/05/21(月) 02:24:58.37 BE:678993825-2BP(0)]
>>681
すいませんが、習い始めで
getcharを習い出したばっかりで、
ちなみに自分で作った文だとデバッグエラーが出るんです。
#include<stdio.h>


int main(void)
{
int rot;

while(rot >= 'a'&&rot <= 'z')
{

if('a'<=rot && rot<='m')
rot = rot+13;
else
if('n'<= rot && rot<='z')
rot = rot-13;
}

return 0;
}
こんな感じです。

683 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 02:33:31.68 ]
>>682
>自分で作った文だとデバッグエラーが出るんです。
「デバッグエラー」、というのは具体的にどんな状態になるのかな?なにかメッセージがでるとか。

684 名前:678 [2012/05/21(月) 02:41:48.37 BE:814792526-2BP(0)]
Debug Error!

Program: C:\Users\名前
\Desktop\ROT13\Debug\ROT13\.exe
Module: C:\Users\名前
\Desktop\ROT13\Debug\ROT13.exe
File:

Run-Time Check Failure #3-The cariable'rot'is being used
without being initialized.

(Press Retry tu debug the application)

っていう表示のウィンドウが出ます。。。。

685 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:48:58.17 ]
int rot=0;

686 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:49:16.73 ]
>>684
hello world の表示は出来た?

687 名前:678 [2012/05/21(月) 02:53:16.56 BE:407396423-2BP(0)]
>>685
int rot = 0; だと、終わってしまいます。

>>686
出来ました。
なんでもかんでも出来ないわけではないそうです。

688 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:56:07.55 ]
>>687
そりゃそうだろ
>>682はrotの入出力やってないもん
でもエラー出なくなったろ?
>>684のエラーはそういう意味
どこかで入出力文があれば初期化も不要なはずなんだが

689 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:01:32.04 ]
>>684
それは rot に値がはいっていないよ、ってことですね。
たしかに、>>682 では rot の値がきまっていない。(rot をどう処理するかはかいてあっても。)

で rot に値をいれればいいのですが、どんな感じにしますか?getchar() で標準入力から掘り込み、printf() で表示するとかが適当だとおもいますけど。
なにか希望があれば教えてください。

あとプログラムを作成している環境(コンパイラの種類とか)もわかるのなら教えてください。もしかして web でやっているのでしょうか?



690 名前:678 [2012/05/21(月) 03:03:44.46 BE:4888750289-2BP(0)]
>>688
#include<stdio.h>


int main(void)
{
int rot;

while(rot >= 'a'&&rot <= 'z')
{
printf("%c\n",rot);

if('a'<=rot && rot<='m')
rot = rot+13;
else
if('n'<= rot && rot<='z')
rot = rot-13;
}

return 0;
}

これでprintfを足したんですが、同じエラー文?が出ました。

691 名前:678 [2012/05/21(月) 03:09:58.26 BE:3327066277-2BP(0)]
>>689
希望はないんですが、あまり複雑なモノはまだ習ってないので遠慮したいです。

692 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:13:10.20 ]
なんちゅーか
プログラム云々の前にチラシの裏にでも理解出来たと思う部分を書き出してみて

自分の頭ん中をデバッグするところから始めるべき

693 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:15:07.11 ]
>>689
あと任せた
寝る

694 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:17:06.88 ]
>>690
最後に一つだけ
「入出力文」と書いたのは悪かった

「入力文」の方が正しいな
エラーの理由はrotを初期化しないでいきなり

while(rot >= 'a'&&rot <= 'z')

なんてやってるから undefined、つまり「鼻から悪魔が出てきても知りませんよ」という事

695 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:20:25.52 ]
>>691
ideone.com/0H11v
一文字しかできませんが、手始めにこんなのはどうですか?
/* 1 */ と /* 3 */ で入力、/* 2 */ で出力しています。

あと rot13 の処理が「実は」正しくないですね。

696 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:21:00.90 ]
>>693
日食までがんばりませんか?

697 名前:678 [2012/05/21(月) 03:32:42.36 BE:3259166786-2BP(0)]
#include<stdio.h>


int main(void)
{
int rot,loop;

loop = 1;
scanf("%c\n",&rot);

while(loop <=100)
{
if('a'<=rot && rot<='m')
rot = rot+13;
else
if('n'<= rot && rot<='z')
rot = rot-13;

scanf("%c\n",&rot);
}

return 0;
}
ここまでいったんですが、+13とか-13がされません。。。

698 名前:678 [2012/05/21(月) 03:52:08.79 BE:4277656297-2BP(0)]
一応友達のアドバイスもあって、
プログラムが出来ました。
ありがとうございました。
#include<stdio.h>


int main(void)
{
int rot,loop;

loop = 1;


while(loop <=100)
{
scanf("%c",&rot);
if('a'<=rot && rot<='m')
rot = rot+13;
printf("%c",rot+13);



if('n'<= rot && rot<='z')
rot = rot-13;
printf("%c",rot-13);
}

return 0;
}

699 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:57:26.90 ]
>>697
手が加わったのはいい感じです。
rot13 の処理に問題はありますが、とりあえず >>697 に沿って動くように訂正すると
codepad.org/ikiHqIJW

scanf("%c\n", &rot)
の rot は
char rot;
でないとうまくうごきません。
int rot;
だと'c' を入力したつもりでも、実は場合によっては rot が 'c' にならないことがあるのです。



700 名前: ◆QZaw55cn4c mailto:sage [2012/05/21(月) 03:59:53.20 ]
>>698
ありま?
でも、それ、うごいているようにみえるのは偶然ですよ、たぶん。
int rot;
じゃなくて
char rot;
じゃないと‥‥‥

701 名前:678 [2012/05/21(月) 04:06:51.43 BE:1357986454-2BP(0)]
>>700
そうなんす。
変な文字まで現れて・・・
charでやってみます。

702 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 04:15:12.14 ]
>>701
>変な文字まで現れて・・・
X printf("%c",rot+13);
O printf("%c",rot);

X scanf("%c",&rot);
O scanf(" %c",&rot);


703 名前:678 [2012/05/21(月) 04:32:59.41 BE:1222188629-2BP(0)]
>>702
変な文字は出なくなりました。
あとは+と‐がされなくて
'a'を入力すると'aT'と表示されたり・・・

704 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 04:54:51.59 ]
>>703
今のソースをそのままideoneに貼れ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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