C言語なら俺に聞け! Part 121
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/28(土) 09:44:54質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は専門の別スレッドがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
C言語なら俺に聞け! Part 120
http://pc8.2ch.net/test/read.cgi/tech/1136726279/
0002デフォルトの名無しさん
2006/01/28(土) 10:13:200003デフォルトの名無しさん
2006/01/28(土) 10:28:10乙
0004デフォルトの名無しさん
2006/01/28(土) 18:32:470005デフォルトの名無しさん
2006/01/28(土) 18:35:31レルどうも
なにやら話が盛り上がってますね
なにやらってテメーが振った話だろボケが
0006デフォルトの名無しさん
2006/01/28(土) 18:40:37>>5
なんだか血の気が多い人だ
0007デフォルトの名無しさん
2006/01/28(土) 18:48:11答えないけど参考に。
0008デフォルトの名無しさん
2006/01/28(土) 19:29:24関数は作れてないけど
int main(void)
long a[5],x=0,i,j;
//配列の初期化
for(i=0;i<5;i++){
a[i]=0;
}
//値の入力
for(i=0;i<5;i++){
printf("%d回目の値の入力=\n",i+1);
scanf("%d",&a[i]);
}
//値の比較
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(a[i]<=a[j]){
}
else{
x=a[i];
a[i]=a[j];
a[j]=x;
}
}
}
//結果出力
for(i=0;i<5;i++){
printf("%d,",a[i]);
}
getch();
}
0009デフォルトの名無しさん
2006/01/28(土) 19:30:200010デフォルトの名無しさん
2006/01/28(土) 19:40:470011デフォルトの名無しさん
2006/01/28(土) 19:52:160012デフォルトの名無しさん
2006/01/28(土) 20:18:110013デフォルトの名無しさん
2006/01/28(土) 20:24:35不正な文字のエラーになってしまいます。
どこが問題なのか分かりません。指摘して頂きたいのですがお願いします。
コンパイラはBCC32です。
/*****ガウス記号のマクロ******/
#define FL(x) ((int)(x) > (x) ? (int)(x) - 1 : (int)(x))
int get_day(int ,int ,int ); //プロトタイプ宣言
/******メイン処理******/
int get_day(int y, int m, int d) //Y年M月D日の曜日を求める関数
{
int yobi;
yobi = (y + FL(y / 4) - FL(y / 100)
+ FL(y /400) + FL(2.6 * m + 1.6) + d) % 7;
return yobi;
}
0014デフォルトの名無しさん
2006/01/28(土) 20:27:17お手本よろ
0015デフォルトの名無しさん
2006/01/28(土) 20:28:20お手本よろ
0016デフォルトの名無しさん
2006/01/28(土) 20:29:06釣りか基地外
0017デフォルトの名無しさん
2006/01/28(土) 20:38:13全角スペースが変なところにあるとか?
0018デフォルトの名無しさん
2006/01/28(土) 20:44:19スペース全部消して見たら出来ました!!
やっと起動できるようになりました!
くだらないミスをしてしまい、すいませんでした(;´Д`)
本当にありがとうございました。
0019デフォルトの名無しさん
2006/01/28(土) 20:46:20(1)意味もなくlong
(2)もし意味があってもscanf,printfでint型を指定している
(3)sort部分の比較でif(...){}else{...}となっている。普通に条件式を否定しろ
(4)#includeをしていない。
(5)getchなどという処理系依存の関数の使用
(6)Cのくせに最後にreturn 0;をしていない
以上の点をもってソート如きで悪いソースですが?
0020デフォルトの名無しさん
2006/01/28(土) 20:52:3500218
2006/01/28(土) 20:59:331,2、前回のプログラムからの引用だった為書き換えミス
3、何か間違ってる?
4、省略(>>9参照)
5、結果出力後入力待ちにしている
6 mainがvoidのため不要
0022デフォルトの名無しさん
2006/01/28(土) 21:02:32>6 mainがvoidのため不要
Σ(゚Д゚;エーッ!
0023デフォルトの名無しさん
2006/01/28(土) 21:02:47int main に見えるのだが・・・。
0024デフォルトの名無しさん
2006/01/28(土) 21:03:00>6
mainがvoidのため不要
>int main(void)
(ノ∀`)
002522
2006/01/28(土) 21:03:030026デフォルトの名無しさん
2006/01/28(土) 21:05:14(3) そもそも a[i]>a[j] にすればいい話。
0027デフォルトの名無しさん
2006/01/28(土) 21:05:26>5、結果出力後入力待ちにしている
なんの反論にもなってないが…?
日本語ワカル?
0028デフォルトの名無しさん
2006/01/28(土) 21:06:59(5) のツッコミは無理があると思った。
0029デフォルトの名無しさん
2006/01/28(土) 21:07:08俺は書くけど。
0030デフォルトの名無しさん
2006/01/28(土) 21:21:51それは処理系依存の関数を使う理由にはならないが。
それ以前になんでそんなことしたいんだ?
画面がなくなっちゃうんですぅとかいう間抜けな答えは聞きたくないぞ?
0031デフォルトの名無しさん
2006/01/28(土) 21:43:59落ち着いてひとつにまとめてレスしてくれ
前スレでCを勉強するために書いてるって言ってるし、「処理系に依存」とかそこまで知った事ではない。
getchは解説サイトに、プログラムの流れを途中途中で止める時によく使うし便利とあったから使ってるまで。
まぁ叩かれてるが
俺にとっては書き方があってるかどうか知りたかったからソース乗せたんだし勉強になってるからいいけど。
0032デフォルトの名無しさん
2006/01/28(土) 21:55:260033デフォルトの名無しさん
2006/01/28(土) 21:57:180034デフォルトの名無しさん
2006/01/28(土) 21:58:280035デフォルトの名無しさん
2006/01/28(土) 21:59:500036デフォルトの名無しさん
2006/01/28(土) 22:05:22longの意味がない
returnで返していない
if文の改善
>>19
(3)はelseで否定の条件式は不要
0037デフォルトの名無しさん
2006/01/28(土) 22:08:41intだと処理系で変わってしまう場合あり
まぁ・・・・宿題とか勉強ならどうでもいいけどね
0038デフォルトの名無しさん
2006/01/28(土) 22:10:070039デフォルトの名無しさん
2006/01/28(土) 22:14:140040デフォルトの名無しさん
2006/01/28(土) 22:15:43>longは常にサイズが同じ
>longは常にサイズが同じ
>longは常にサイズが同じ
>longは常にサイズが同じ
0041デフォルトの名無しさん
2006/01/28(土) 22:17:143とか4の指定あたりでおかしいと判断できるけど
0042デフォルトの名無しさん
2006/01/28(土) 22:18:42あれ?間違ってた?
0043デフォルトの名無しさん
2006/01/28(土) 22:20:35�Cは単に2ちゃんには書き込んでないってだけだと思うがw
�Bはどうしようもないけどw
0044デフォルトの名無しさん
2006/01/28(土) 22:23:10例えばPS2(ee-gcc)でのlongは8バイトだぞ
0045デフォルトの名無しさん
2006/01/28(土) 22:23:29え?だから指定するまでもないのにおかしいなって
0046デフォルトの名無しさん
2006/01/28(土) 22:25:30マジで?long4バイトぢゃないの?
つかえねぇ・・・今後全部変数ダブルにしたろか
>>45
あ、そゆことか
0047デフォルトの名無しさん
2006/01/28(土) 22:25:59仕様かこれかと
0048デフォルトの名無しさん
2006/01/28(土) 22:26:48......と、堂々と言える時代に早くなってほしいなぁ。
0049デフォルトの名無しさん
2006/01/28(土) 22:47:37無ければ自分で typedef すりゃいい。
サイズ固定なのにプリミティブ型直接使ってるような奴はクビ。
0050デフォルトの名無しさん
2006/01/28(土) 22:52:480051デフォルトの名無しさん
2006/01/28(土) 23:09:13それ系、指定の方法がわからない(ノ´∀`*)
0052デフォルトの名無しさん
2006/01/28(土) 23:22:374バイトとか8バイト固定したいときってどうすればいいの?
環境はWindows固定ということ前提にすると。
0053デフォルトの名無しさん
2006/01/28(土) 23:25:58getchはconio.hをインクルードしないと使えないけど分かってるのかな
0054デフォルトの名無しさん
2006/01/28(土) 23:27:020055デフォルトの名無しさん
2006/01/28(土) 23:33:01俺のタイプでふv
0056デフォルトの名無しさん
2006/01/28(土) 23:33:14でも、charは1バイトのままなの?
なんか俺の昔の記憶だと
char 1バイト
short 2バイト
long 4バイト
int 環境依存(Win32だと4バイト)
float 4バイト(浮動小数点)
double 8バイト(浮動小数点)
で、注意するのはintだけだったという記憶があるんだけど
実際はそうじゃないってこと?
環境はWindows固定ということで頼む。
0057デフォルトの名無しさん
2006/01/28(土) 23:35:47規格で決まっているのは、各型のバイト数の大小関係と、
sizeof(cahr)が1になると言うこと。
# ちなみに、CHAR_BITS(charのビット数)も環境依存
0058デフォルトの名無しさん
2006/01/28(土) 23:38:18> 環境はWindows固定ということで頼む。
その時点で環境の依存について無視してるだろ、ボケ。
0059デフォルトの名無しさん
2006/01/28(土) 23:41:31いや、とりあえず他の環境はそんなにかわることないし、
大抵Windowsにあわせてくる(移植楽だしね)から、
やっぱり、注目するべきはWindowsでしょ。これは現実の話(別にゴヒイキって話題じゃないよ)
0060デフォルトの名無しさん
2006/01/28(土) 23:42:51おお、そうなんだ。
大小とcharのバイトが1としか決まってないとはしらなんだ・・・。
ありがとう。
もう、こだわらないでプログラムするよ。
0061デフォルトの名無しさん
2006/01/28(土) 23:42:59floatも微妙に曲者
整数型との計算で制度落ちることある
doubleを使うべき
0062デフォルトの名無しさん
2006/01/28(土) 23:43:23> とりあえず他の環境はそんなにかわることないし
変わるから環境依存な訳だし、
そもそも、環境依存で環境を特定してどうするのかと(ry
0063デフォルトの名無しさん
2006/01/28(土) 23:45:19よっぽど使えないテキストで勉強したようだな。
本は複数読んでおけよ。
0064デフォルトの名無しさん
2006/01/28(土) 23:46:01たとえ違う環境で8バイトになっててもメモリ使用量あがるだけだし
intが常に4バイトって勘違いしてるのが問題なんだろ?
環境によってはもっと小さくなることがあるわけだし
0065デフォルトの名無しさん
2006/01/28(土) 23:47:40INT_MAX等の定義ルールで
CHAR_BIT 8 以上
SHRT_MAX 2^15 - 1 以上
INT_MAX 2^15 - 1 以上
LONG_MAX 2^31 - 1 以上
とあるので少なくとも
char = 8bit 以上
short = 16bit 以上
int = 16bit 以上
long = 32bit 以上
は論理的に確定するね
まぁこんなこと気にする暇があるなら、
stdint.hかそれ相当を自分で定義しろって結論になるけど
0066デフォルトの名無しさん
2006/01/28(土) 23:48:33> たとえ違う環境で8バイトになっててもメモリ使用量あがるだけだし
> intが常に4バイトって勘違いしてるのが問題なんだろ?
どういう勉強をしたら、こんなアホな発言が出来るんですか?
0067デフォルトの名無しさん
2006/01/28(土) 23:50:010068デフォルトの名無しさん
2006/01/28(土) 23:55:44あほ
0069デフォルトの名無しさん
2006/01/29(日) 00:01:58> intが常に4バイトって勘違いしてるのが問題なんだろ?
違う。
typedefも使わずにサイズに依存したコードを書くことが問題。
0070デフォルトの名無しさん
2006/01/29(日) 00:19:270071デフォルトの名無しさん
2006/01/29(日) 01:18:05int32_t a;
0072デフォルトの名無しさん
2006/01/29(日) 02:13:48アホか。
整数型のサイズを決めてるのはコンパイラであって OS じゃない。
0073デフォルトの名無しさん
2006/01/29(日) 02:20:59マジで?
例えばWin32APIをコンパイルしたとして、
そのコンパイラがlongを8バイトとすればlongは8バイトになっちゃうってこと?
つーことは、俺がlongを4バイトとして組んでたのはあくまでも、
VCのコンパイラ仕様にあわせただけであって、
Windowsに対応したわけではなかったわけ?
あ、そうかも。
そうだな。64BitOSでも
32Bitモードってのがあってこれまで作った奴も動くらしいしねぇ。
これってそういうこといってんのかな?
0074デフォルトの名無しさん
2006/01/29(日) 02:23:030075デフォルトの名無しさん
2006/01/29(日) 02:24:15嫌味はいいから、結論だけいってよw
0076デフォルトの名無しさん
2006/01/29(日) 02:26:010077デフォルトの名無しさん
2006/01/29(日) 02:26:53どうせロートルがたまに自分のわかる話で
自分より知識なさそうなの見つけたからレスつけたんでしょ?
ほら、わかる範囲で語ってきなよw
0078デフォルトの名無しさん
2006/01/29(日) 02:41:21ポインタ、ポインタノポインタ、ポインタノポインタノポインタまで理解はできたけど。
0079デフォルトの名無しさん
2006/01/29(日) 02:48:54あぁもううるさい奴だな。
それぞれの型がどうなるかはコンパイラ依存だと言ってるだろう。
実行ファイルの状態でも型情報が C の形で表現されてる訳が無いだろうが。
全く、こういう奴いたら先ずクビだな。
0080デフォルトの名無しさん
2006/01/29(日) 02:50:20『トリプルポインタは分かるけどクワドルプルポインタは分かりません >< 』
返答
『そんなこと言ってる時点で理解できてないのは明白です』
0081デフォルトの名無しさん
2006/01/29(日) 02:51:32経験上、「理解できた」と軽々しく口にする奴ほど分かってない事が多い。
0082デフォルトの名無しさん
2006/01/29(日) 02:53:54ポインタのポインタはポインタでしかないから、ポインタを正しく理解できているのなら
ポインタのポインタはそんなに難しくないと思う。まして、
ポインタのポインタのポインタはポインタのポインタと解釈できるのだから
ポインタのポインタのポインタのポインタになったところで大したことはない。
必要なら、適宜typedefでもしとけと。
0083デフォルトの名無しさん
2006/01/29(日) 02:58:54経験上この時間帯に二人にレスされることはめったにないから。
明日が休日だからという理由もあるかもしれないが。
とりあえず
「>軽々しく」と軽々しく判断した基準と。
疑うんなら力試しにでもなるような問題作れるなら出してみてよ
0084デフォルトの名無しさん
2006/01/29(日) 03:01:54と言いたいわけで
理解できてるなら使いこなせる、か。
0085デフォルトの名無しさん
2006/01/29(日) 03:07:31大丈夫、しばしばこの板で>80みたいなことを書いている漏れは、ここ最近のこのスレでは>82しか書いてないから。
0086デフォルトの名無しさん
2006/01/29(日) 03:07:44>「>軽々しく」と軽々しく判断した基準
読んだだけで理解できたとか言ってる所だろw
0087デフォルトの名無しさん
2006/01/29(日) 03:09:06ポインタは絵で理解するといいよ
0088デフォルトの名無しさん
2006/01/29(日) 03:14:34本を熟読して、本についている絵をガンミしながら、頭の中フル回転で、さらに自分で試しながらコンパイルして、ポインタを理解したつもりだけど〜
って書けばよかったね。
0089デフォルトの名無しさん
2006/01/29(日) 03:16:28実際にプログラムにポインタを組み込む事はあるの?
0090デフォルトの名無しさん
2006/01/29(日) 03:17:540091デフォルトの名無しさん
2006/01/29(日) 03:18:260092デフォルトの名無しさん
2006/01/29(日) 03:18:31そこまで書けば、信用しなくもないが、
ポインタのポインタのポインタのポインタのポインタが何かくらいは分かるよな?
0093デフォルトの名無しさん
2006/01/29(日) 03:21:520094デフォルトの名無しさん
2006/01/29(日) 03:23:360095!88
2006/01/29(日) 03:26:02ポインタ
どんなに修飾しようがただのポインタ。それ以上でもそれ以下でもない
(この文章を論理的に考えると空集合になるのは気づいても言ってはいけない)
0096デフォルトの名無しさん
2006/01/29(日) 03:26:14うはw漏れ頭いいww
0097デフォルトの名無しさん
2006/01/29(日) 03:29:060098デフォルトの名無しさん
2006/01/29(日) 03:30:35よろしい。
んじゃ、次。
x, y を引数に取り、sqrt(x*x+y*y) と atan2(y, x) を返す関数を作れ。
ただし、構造体とグローバル変数は使わないこと。
x == 0 && y == 0 の場合は考慮しなくていい。
0099デフォルトの名無しさん
2006/01/29(日) 03:34:49関数に仕様は?計算値はどうやって返すんだい?
0100デフォルトの名無しさん
2006/01/29(日) 03:35:42ポインタ以前に言ってる意味が分かりません
sprtは平方根か何かだと思うけど・・atan2とか知らない
0101デフォルトの名無しさん
2006/01/29(日) 03:43:55ポインタの問題なんだから・・・。
>>100
別に知らなくてもそのまま書けばいいだけだし、
何の関数かくらい調べられるはずだ。
■ このスレッドは過去ログ倉庫に格納されています