C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 146
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 839f-AnMQ)
2018/04/30(月) 04:47:37.50ID:XX4FB8lc0487デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
2018/07/29(日) 12:09:51.76ID:7lOBGcOb0 >>480
何処で回答してんの?
何処で回答してんの?
488デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:11:10.71ID:LQAkWqzt0 >>470>>468 でおもいっきり回答してるわ
知恵遅れはなにが書いてあるか理解できない
知恵遅れはなにが書いてあるか理解できない
489デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
2018/07/29(日) 12:12:34.88ID:7lOBGcOb0 >>488
それ回答になってねえじゃん。ちゃんと回答書けよ。
それ回答になってねえじゃん。ちゃんと回答書けよ。
490デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:14:12.01ID:LQAkWqzt0 それが回答になってないなら
オマエのオツムに問題があるか
ただの仕事未経験のクソニートがなにも分からずテキトーなこといってるだけだからな
ただクソニートである確度が極めて高い
オマエのオツムに問題があるか
ただの仕事未経験のクソニートがなにも分からずテキトーなこといってるだけだからな
ただクソニートである確度が極めて高い
491デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
2018/07/29(日) 12:15:16.00ID:7lOBGcOb0 >>490
はいはい。おだいじに。
はいはい。おだいじに。
492デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:15:53.84ID:LQAkWqzt0 はい
クソニート図星
クソニート図星
493デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
2018/07/29(日) 12:17:35.80ID:7lOBGcOb0 やはり気温40℃超えは人をおかしくするには十分な気温だったようだな。
猛暑も酷なことをするもんだ。合掌。
猛暑も酷なことをするもんだ。合掌。
494デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:19:13.56ID:LQAkWqzt0 クソニートは家からでないから関係ないだろ
電気代も親に払ってもらってるからな
クーラーの電気代もパチョコンの電気代もな
親が払ってくれてんだぞ
電気代も親に払ってもらってるからな
クーラーの電気代もパチョコンの電気代もな
親が払ってくれてんだぞ
495デフォルトの名無しさん (ワッチョイ 378a-04EM)
2018/07/29(日) 12:33:12.40ID:Rgaf8fSN0 組み込み系の周辺チップの制御レジスタの仕様書見たことある?
制御レジスタの特定ビットのRead/Write動作そのものに意味があるんだよ
直に制御レジスタをアクセスしないと駄目
最適化でCPUレジスタの中で値を書き換えても無意味、周辺チップは何の動作もしない
volatileはそんな時にコンパイラの最適化を抑制するために使用する
例えば、
idx = (idx << 12) ^ _data;
の例で言えば、(idx<<12)の部分で実際にidxのアドレスにマップされたメモリの値が変更される
その後に最終的に、(idx << 12) ^ _dataの値が上書きされる
idxがvolatile宣言されていない場合は、途中の評価結果はCPUの内部レジスタだけで最適化されてマップされたメモリの値は最終評価結果の書き込みしか保証されない可能性がある
組み込みの制御レジスタの例としてPICのデータシートのリンクを貼っておく
ビット毎にR/Wでチップの機能を制御している様子が分かる
https://www.microchip.co.jp/download/index.php?Mode=4&CategoryID=08ff3e00bf7fedc9fd6adb0aa9a3499b55a4aff3
制御レジスタの特定ビットのRead/Write動作そのものに意味があるんだよ
直に制御レジスタをアクセスしないと駄目
最適化でCPUレジスタの中で値を書き換えても無意味、周辺チップは何の動作もしない
volatileはそんな時にコンパイラの最適化を抑制するために使用する
例えば、
idx = (idx << 12) ^ _data;
の例で言えば、(idx<<12)の部分で実際にidxのアドレスにマップされたメモリの値が変更される
その後に最終的に、(idx << 12) ^ _dataの値が上書きされる
idxがvolatile宣言されていない場合は、途中の評価結果はCPUの内部レジスタだけで最適化されてマップされたメモリの値は最終評価結果の書き込みしか保証されない可能性がある
組み込みの制御レジスタの例としてPICのデータシートのリンクを貼っておく
ビット毎にR/Wでチップの機能を制御している様子が分かる
https://www.microchip.co.jp/download/index.php?Mode=4&CategoryID=08ff3e00bf7fedc9fd6adb0aa9a3499b55a4aff3
496デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:46:01.14ID:LQAkWqzt0 最適化で、一瞬変わってたのが変わらなくなったらどうすんのとかいってるアホなこといってる知恵遅れに
その一瞬だけ変わってたコードが正しいコードとか
ホンキで思ってんのといってるだけだからな
そもそもvolatileついてなかったら
そのあと書き変わる保証すらどこにもない
そもそも保証がないコードのなんの保証をするわけ?
知恵遅れがいうことはさっぱり理解できないわ
その一瞬だけ変わってたコードが正しいコードとか
ホンキで思ってんのといってるだけだからな
そもそもvolatileついてなかったら
そのあと書き変わる保証すらどこにもない
そもそも保証がないコードのなんの保証をするわけ?
知恵遅れがいうことはさっぱり理解できないわ
497デフォルトの名無しさん (ワッチョイ 9f93-BNWp)
2018/07/29(日) 12:47:08.34ID:XJOvENJB0 C++相談室 part137 あたりに書き込もうと思った悪態を
間違えてこちらに投稿したのに気づいたが引っ込みがつかなくなった、
という感じがしないでもない。
今までの自分の態度をかえりみると「誤爆しました、すまん」と
書くことも照れ臭いと思ってる、かも知れない。
おそらく俺の勘違い(嫉妬に基づく邪推)だろうけどネ。
間違えてこちらに投稿したのに気づいたが引っ込みがつかなくなった、
という感じがしないでもない。
今までの自分の態度をかえりみると「誤爆しました、すまん」と
書くことも照れ臭いと思ってる、かも知れない。
おそらく俺の勘違い(嫉妬に基づく邪推)だろうけどネ。
498デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:48:26.49ID:LQAkWqzt0 あっちもこっちも
クソニートがえらそうにしてるからな
2ちゃんねるからクソニートの駆除は必要
クソニートがえらそうにしてるからな
2ちゃんねるからクソニートの駆除は必要
499デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 12:50:28.71ID:LQAkWqzt0 むしろあっちでもこっちでも
オレは間違った回答は一切してないからな
すべてカンペキなレスだ
知恵遅れがテキトーなこといってるのは
あっちもこっちも同じ
オレは間違った回答は一切してないからな
すべてカンペキなレスだ
知恵遅れがテキトーなこといってるのは
あっちもこっちも同じ
500デフォルトの名無しさん (ワッチョイ 378a-04EM)
2018/07/29(日) 12:57:17.34ID:Rgaf8fSN0 >>469
そりゃvolatileも万能ではないよ
最終的に確認するのは実機デバッグしかない
アセンブラで直接叩くしか解決できない場合もある
ICEで直接追跡しながらプログラムコードとチップの動作を確認するのが組み込みシステムの開発
ただしvolatileすら使わないのでは無駄に書き替え工数が膨れ上がる
最低限の対応はあらかじめ取っておくべき
そりゃvolatileも万能ではないよ
最終的に確認するのは実機デバッグしかない
アセンブラで直接叩くしか解決できない場合もある
ICEで直接追跡しながらプログラムコードとチップの動作を確認するのが組み込みシステムの開発
ただしvolatileすら使わないのでは無駄に書き替え工数が膨れ上がる
最低限の対応はあらかじめ取っておくべき
501デフォルトの名無しさん (ワッチョイ 378a-04EM)
2018/07/29(日) 12:57:38.10ID:Rgaf8fSN0 間違えた
>>498
>>498
502デフォルトの名無しさん (ブーイモ MM5b-l4h2)
2018/07/29(日) 13:10:28.41ID:x0a0gOqsM >>498
このスレの誰もが真っ先にキミを駆除したがってるのに、天才のはずのキミが気づいてない?おかしいねぇ
このスレの誰もが真っ先にキミを駆除したがってるのに、天才のはずのキミが気づいてない?おかしいねぇ
503デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 13:14:35.44ID:LQAkWqzt0 クソニートのたまり場から
クソニートを駆除するだけだからな
部屋にいる人間の数より
南京虫やダニやノミの数のほうが多い
そういうスレだ
バルサン焚かないとなまともな人間がよりつかなくなる
その南京虫やダニやノミみたいなオマエを駆除するといってるわけ
わかった?
クソニートを駆除するだけだからな
部屋にいる人間の数より
南京虫やダニやノミの数のほうが多い
そういうスレだ
バルサン焚かないとなまともな人間がよりつかなくなる
その南京虫やダニやノミみたいなオマエを駆除するといってるわけ
わかった?
504デフォルトの名無しさん (スップ Sd32-fKXU)
2018/07/29(日) 13:26:52.38ID:OHU95624d505デフォルトの名無しさん (ワッチョイ d66e-53i4)
2018/07/29(日) 14:46:05.01ID:u6NN385t0 >>500
volatileの機能は明確に定義されていて
万能だとか頭の悪そうな話は必要ない
実機でデバッグしてコンパイラのバグが発覚することはあって
そのときの状況によってはアセンブラを使うこともあるが
アセンブラで「叩く」って言葉遣いは変だぜ
石を叩くのはCでもできるしな
ところで、おまえさんのところでは
JTAGじゃなくICEって言うのか
volatileの機能は明確に定義されていて
万能だとか頭の悪そうな話は必要ない
実機でデバッグしてコンパイラのバグが発覚することはあって
そのときの状況によってはアセンブラを使うこともあるが
アセンブラで「叩く」って言葉遣いは変だぜ
石を叩くのはCでもできるしな
ところで、おまえさんのところでは
JTAGじゃなくICEって言うのか
506デフォルトの名無しさん (ワッチョイ 378a-04EM)
2018/07/29(日) 15:04:54.06ID:Rgaf8fSN0 >>505
インサーキットエミュレータ(In Circuit Emulator:ICE)だな
もっともC言語でプログラム組んでたのは7,8年前までだけどな
当時はルネサス変更前のNECの78K0や東芝のTLCS780、松下(パナソニック)のMN101なんかで組み込み開発をやってた
インサーキットエミュレータ(In Circuit Emulator:ICE)だな
もっともC言語でプログラム組んでたのは7,8年前までだけどな
当時はルネサス変更前のNECの78K0や東芝のTLCS780、松下(パナソニック)のMN101なんかで組み込み開発をやってた
507デフォルトの名無しさん (スップ Sd32-SJhd)
2018/07/29(日) 15:12:25.34ID:h14Y8Y+4d volatileだって書いた通りに動く
コンパイラが信用できないときは逆アセンブルして確認する
実機デバッグしなければならないのは書いたやつが信用できないからで
volatileだからじゃないね
あとjtagはインターフェースのことでデバッガ自体は
ICEと呼ぶかな、うちも
コンパイラが信用できないときは逆アセンブルして確認する
実機デバッグしなければならないのは書いたやつが信用できないからで
volatileだからじゃないね
あとjtagはインターフェースのことでデバッガ自体は
ICEと呼ぶかな、うちも
508デフォルトの名無しさん (スップ Sd32-fKXU)
2018/07/29(日) 15:40:41.02ID:OHU95624d volatileをつけてコンパイラが(一見)正しいコードを生成しても
CPUが順番を変えて実行したりする
マルチコア、OoO時代は
同期コードを自分で書くのは色々な意味でやめた方が良い
SFRアクセスには使えるが
CPUが順番を変えて実行したりする
マルチコア、OoO時代は
同期コードを自分で書くのは色々な意味でやめた方が良い
SFRアクセスには使えるが
509デフォルトの名無しさん (スップ Sd32-fKXU)
2018/07/29(日) 15:52:36.85ID:OHU95624d >>507
本来の意味のICEなんて絶滅寸前
本来の意味のICEなんて絶滅寸前
510デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/29(日) 17:56:25.83ID:VgN+++E0a 夏はアイスだよね〜
511デフォルトの名無しさん (ワッチョイ 72fe-53i4)
2018/07/29(日) 17:57:28.24ID:+KuOy2bC0 割り込み禁止って今のOSだと無意味?
512デフォルトの名無しさん (ワッチョイ 12b3-BiRP)
2018/07/29(日) 18:45:23.92ID:Ga4xmacd0 >>511
普通に使ってると思うけど?
普通に使ってると思うけど?
513デフォルトの名無しさん (ワッチョイ d66e-53i4)
2018/07/29(日) 19:38:18.03ID:u6NN385t0 ユニプロセッサからマルチプロセッサへパラダイムシフトするにあたって
1つのCPUだけ割り込み禁止してもどうたらって話だろ
1つのCPUだけ割り込み禁止してもどうたらって話だろ
514デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/29(日) 20:17:45.56ID:VgN+++E0a515デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:20:49.84ID:LQAkWqzt0 もしかして
ハードウェア割込とソフトウェア割込の違いすら分かってないのが
レスしてんのか
ハードウェア割込とソフトウェア割込の違いすら分かってないのが
レスしてんのか
516デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:25:27.65ID:LQAkWqzt0 そもそもデバイスがCPUより超遅いことが分かってないようなのが
一瞬で値が変わってたのが、それが変わらなくなったらどうすんのとかいってるレベルだからな
ホントなコイツラの程度がイロイロと知れるわ
一瞬で値が変わってたのが、それが変わらなくなったらどうすんのとかいってるレベルだからな
ホントなコイツラの程度がイロイロと知れるわ
517デフォルトの名無しさん (スップ Sd52-SJhd)
2018/07/29(日) 20:25:43.86ID:QevJM+ENd いい加減秋田
518デフォルトの名無しさん (ドコグロ MMea-BiRP)
2018/07/29(日) 20:35:45.02ID:2vtczMQ4M >>513
どの割込みの話ししてるのか良くわからんけど、デバイスからの割り込みって予め指定したプロセッサが受け取る実装が多いぞ
どの割込みの話ししてるのか良くわからんけど、デバイスからの割り込みって予め指定したプロセッサが受け取る実装が多いぞ
519デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/29(日) 20:44:07.76ID:YD8oKrYq0 良くわからん人は素直に>>508の通りにしなさい
ここで一言で語れるような内容じゃないから
ここで一言で語れるような内容じゃないから
520デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/29(日) 20:44:37.09ID:YD8oKrYq0 特に半角君
521デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:47:29.08ID:LQAkWqzt0 低学歴知恵遅れがドヤ顔で書いてるOoOの問題なんか
分かった上でオレはカンペキなレスしてるからな
分かった上でオレはカンペキなレスしてるからな
522デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:48:20.64ID:LQAkWqzt0 もうねドヤ顔でレスしてるヤツの知能レベルが
致命的に低いワケ
致命的に低いワケ
523デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/29(日) 20:50:38.73ID:YD8oKrYq0 完璧なヤツが遅いとか速いとか
ハード割り込みとかソフト割り込みとか
まったくとんちんかんwww
書けば書くほど痛い
ハード割り込みとかソフト割り込みとか
まったくとんちんかんwww
書けば書くほど痛い
524デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:51:15.80ID:LQAkWqzt0 はい低学歴のレス頂きました
525デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/29(日) 20:52:18.31ID:LQAkWqzt0 レスで簡単に判定できる
コイツはクソニート
コイツは低学歴
超簡単
コイツはクソニート
コイツは低学歴
超簡単
526デフォルトの名無しさん (ワッチョイ d66e-53i4)
2018/07/29(日) 20:55:32.94ID:u6NN385t0 ソフトウエア割り込みとかバカかw
センズリ野郎
センズリ野郎
527デフォルトの名無しさん (ガックシ 06ab-SJhd)
2018/07/30(月) 16:36:28.63ID:3BqaNEe76 キーボードから実数値を入力
3件のみを値が多い順に出力
最初にデータの件数(3件以上で、最大で100件とする)を入力
100件を超える場合、「エラー」と出力
ソートを使うみたいです。よろしくお願いします。
3件のみを値が多い順に出力
最初にデータの件数(3件以上で、最大で100件とする)を入力
100件を超える場合、「エラー」と出力
ソートを使うみたいです。よろしくお願いします。
528さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd32-HzQc)
2018/07/30(月) 17:03:31.87ID:hdlApzlBd int i, num, array[100];
printf("Number of numbers: ");
scanf("%d", &num);
for (i = 0; i < num; ++i)
{
printf("array[%d]: ", i);
scanf("%d", &array[i]);
}
...
printf("Number of numbers: ");
scanf("%d", &num);
for (i = 0; i < num; ++i)
{
printf("array[%d]: ", i);
scanf("%d", &array[i]);
}
...
529さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd32-HzQc)
2018/07/30(月) 17:04:07.39ID:hdlApzlBd 比較関数をqsortに渡せ。
530デフォルトの名無しさん (ワッチョイ 9f93-BNWp)
2018/07/30(月) 17:56:36.84ID:n1wK/LR00 アレ? 蟻のarrayはint配列だけど、問題で要求してるのは実数値じゃね?
531デフォルトの名無しさん (ブーイモ MM32-c8z2)
2018/07/30(月) 18:03:34.93ID:ehNSvi3pM 値が大きい順なのか
値の出現回数が多い順なのか
値の出現回数が多い順なのか
532さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 27b3-HzQc)
2018/07/30(月) 18:12:03.23ID:6ITjo5O70 arrayをdoubleかfloatの配列にしてくれ。すまん。
533デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/30(月) 18:38:36.45ID:xHVHgAPAa 夏休みの宿題か・・・
534デフォルトの名無しさん (ワッチョイ d66e-53i4)
2018/07/30(月) 18:47:55.30ID:6X4H9pr00 floatならscanf/printfともに%f
doubleならscanfは%lfでprintfは%f
doubleならscanfは%lfでprintfは%f
535デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/30(月) 18:57:52.63ID:xHVHgAPAa 100件入力しても最初の3件だけを大きい順ではなく多い順に並べると・・・
変な宿題だな。読み間違えてないか?
変な宿題だな。読み間違えてないか?
536デフォルトの名無しさん (ワッチョイ 4b81-53i4)
2018/07/30(月) 19:07:25.93ID:Ei1MMj+i0 入力データに重複を許し、その出現数をカウントしろとか?
537デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 19:26:58.25ID:aSIGzv/D0 上位3件
538デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 19:27:37.61ID:aSIGzv/D0 だろ
普通に考えて
普通に考えて
539デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/30(月) 19:28:21.43ID:xHVHgAPAa 3件しかデータがないのに多い順となるとその内2件が同じ値でなければできない。
3件とも違うとか、あるいは3件とも同じなら並べかえる必要がない。
更に配列の先頭の二つが同じなら並べ変える必要がない。
それは既に多い順になっている。または全て同じ値だ。
とすると二番目の値と三番目の値を比較し、同じだったら最初の値と三番目の値を入れ換えれば良い。
三つとも全て同じ値の時に無駄な入れ換え処理をすることになるが、この程度はよかろう。
3件とも違うとか、あるいは3件とも同じなら並べかえる必要がない。
更に配列の先頭の二つが同じなら並べ変える必要がない。
それは既に多い順になっている。または全て同じ値だ。
とすると二番目の値と三番目の値を比較し、同じだったら最初の値と三番目の値を入れ換えれば良い。
三つとも全て同じ値の時に無駄な入れ換え処理をすることになるが、この程度はよかろう。
540デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/30(月) 19:29:45.17ID:xHVHgAPAa >>537
知らんがな。
知らんがな。
541デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 19:37:02.99ID:aSIGzv/D0 「3件のみを」は「出力」にかかる
「値が多い」だから出現回数順
「多い順」のソート対象は書いてないが
普通に考えれば入力した全数
これがおれの解釈
「値が多い」だから出現回数順
「多い順」のソート対象は書いてないが
普通に考えれば入力した全数
これがおれの解釈
542デフォルトの名無しさん (ワッチョイ 7fb3-VTPF)
2018/07/30(月) 19:43:33.82ID:WDgnZ3L+0 出現頻度の上位3位分を出せ?
typedef double VAL_T;
struct {
VAL_T val;
int count;
} data[100] = { 0 };
線形探索して カウントアップして data[] を count をキーにソートして
data[0].val, data[1].val, data[2].val, を出力する
typedef double VAL_T;
struct {
VAL_T val;
int count;
} data[100] = { 0 };
線形探索して カウントアップして data[] を count をキーにソートして
data[0].val, data[1].val, data[2].val, を出力する
543デフォルトの名無しさん (ワッチョイ 378a-04EM)
2018/07/30(月) 19:44:19.20ID:v5YMtZ310 整数値ではなくて実数値で出現回数って些か問題に無理がないか?
544デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/30(月) 19:56:43.56ID:xHVHgAPAa >>541
その解釈が恐らく正しいと思うが、元の文章は素直に読むとそうならんよなあ。
その解釈が恐らく正しいと思うが、元の文章は素直に読むとそうならんよなあ。
545デフォルトの名無しさん (ワッチョイ 7fb3-VTPF)
2018/07/30(月) 19:58:59.40ID:WDgnZ3L+0 値の大きい順に上位3位なら
VAL_T data[100];
入力値をつっこんで data をソートして data[0], data[1], data[2], を出力する
int sortcmp(const void* c1, const void* c2)
{
VAL_T d1 = *(const VAL_T*)c1;
VAL_T d2 = *(const VAL_T*)c2;
if (d1 > d2) return -1;
else if (d1 < d2) return 1;
return 0;
}
・・・・
qsort(data, num, sizeof(VAL_T), sortcmp);
for (i=0; i<3 && i<num; i++)
printf("%d: %lg\n", i+1, (double)data[i]);
・・・・
VAL_T data[100];
入力値をつっこんで data をソートして data[0], data[1], data[2], を出力する
int sortcmp(const void* c1, const void* c2)
{
VAL_T d1 = *(const VAL_T*)c1;
VAL_T d2 = *(const VAL_T*)c2;
if (d1 > d2) return -1;
else if (d1 < d2) return 1;
return 0;
}
・・・・
qsort(data, num, sizeof(VAL_T), sortcmp);
for (i=0; i<3 && i<num; i++)
printf("%d: %lg\n", i+1, (double)data[i]);
・・・・
546デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 20:08:25.88ID:aSIGzv/D0 >>544
そういう解釈も可能
そういう解釈も可能
547デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 20:10:45.97ID:aSIGzv/D0 色々な解釈が可能な文
仕様書からコードにするときには
複数の解釈が無いか気にした方が良い
仕様書からコードにするときには
複数の解釈が無いか気にした方が良い
548デフォルトの名無しさん (ササクッテロラ Sp47-SJhd)
2018/07/30(月) 20:17:02.90ID:kECQyXHfp すみません。値が大きい順です。お願いします。
549デフォルトの名無しさん (ワッチョイ 4b81-53i4)
2018/07/30(月) 20:21:05.16ID:Ei1MMj+i0 良い試験問題だなw
550デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 20:23:08.08ID:aSIGzv/D0 ずこーっ
上位3個でqsortとか使うのはアホ
上位3個でqsortとか使うのはアホ
551デフォルトの名無しさん (アウアウウー Sa43-53i4)
2018/07/30(月) 20:25:48.38ID:r0zEs9EBa ああ。sortコマンドとheadコマンド使いたくてうずうずする。
552デフォルトの名無しさん (アウアウウー Sa43-53i4)
2018/07/30(月) 20:30:04.49ID:r0zEs9EBa 上位三つなら全部チェックすりゃあ良いんじゃないか?
ループとif文3つか?
ループとif文3つか?
553デフォルトの名無しさん (ワッチョイ 7fb3-VTPF)
2018/07/30(月) 20:39:55.63ID:WDgnZ3L+0 なんやソート使えという制限はないのか
554デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/30(月) 22:01:25.27ID:WHL4n1uA0 ココではquickselectというアリゴリズムを使いなさい
というのが正解
やっぱりなこのスレは浅はかなクルクルパーしかいないわ
というのが正解
やっぱりなこのスレは浅はかなクルクルパーしかいないわ
555デフォルトの名無しさん (ワッチョイ 4b81-53i4)
2018/07/30(月) 22:06:32.60ID:Ei1MMj+i0 >>554
上位3名に入れそうだね?
上位3名に入れそうだね?
556デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 22:17:34.44ID:aSIGzv/D0 quickselectもアホ
上位3個なら原始的なアルゴリズムが一番速い
上位3個なら原始的なアルゴリズムが一番速い
557デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/30(月) 22:18:31.28ID:aSIGzv/D0 速くて簡単でリソースも使わない
558デフォルトの名無しさん (ワッチョイ 232d-E0Ep)
2018/07/30(月) 22:19:07.01ID:Z5guDo9v0 課題みたいだし
・バブルソートを書けるか
・保持する要素は3つでいいことに気付けるか
をみる定型問題だろね
・バブルソートを書けるか
・保持する要素は3つでいいことに気付けるか
をみる定型問題だろね
559デフォルトの名無しさん (ガラプー KK1f-gj7S)
2018/07/31(火) 08:53:15.13ID:CiY/UjgCK アルゴリズムもわかってない
まず、問題解決のための適切なアルゴリズムの選択ができない
クイックソートは明らかに適切ではない
ここではクイックセレクトが適切
確かにこのスレには
まともな教育を受けたのはいない
基本的になにも知らなすぎる
白痴に近い
まず、問題解決のための適切なアルゴリズムの選択ができない
クイックソートは明らかに適切ではない
ここではクイックセレクトが適切
確かにこのスレには
まともな教育を受けたのはいない
基本的になにも知らなすぎる
白痴に近い
560デフォルトの名無しさん (ワッチョイ c623-53i4)
2018/07/31(火) 09:25:34.54ID:quzd6t9e0 クイックセレクトってどんなアルゴリズムなん?
元はクイックソートだけどソートしないで選択するだけって感じ?
元はクイックソートだけどソートしないで選択するだけって感じ?
561デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/31(火) 09:39:58.84ID:+/oTEV5Ja >>560
無駄な比較をしない感じ
無駄な比較をしない感じ
562デフォルトの名無しさん (JP 0H8f-+hvm)
2018/07/31(火) 11:52:18.67ID:Sty7sRvnH >>560
パーティショニングして目的の順位を含む方だけ再帰
パーティショニングして目的の順位を含む方だけ再帰
563デフォルトの名無しさん (フリッテル MM6e-qjVX)
2018/07/31(火) 12:06:11.93ID:TL2AM5+0M あー、そういうことか
564デフォルトの名無しさん (スップ Sd52-fKXU)
2018/07/31(火) 12:43:01.65ID:xftY0DAGd 明らかに上位3個の抽出には向かない
565デフォルトの名無しさん (スップ Sd52-fKXU)
2018/07/31(火) 12:45:03.91ID:xftY0DAGd 最大値を探すのにクイックセレクトを使うアホはいない
そういうこと
3個でも同じ
そういうこと
3個でも同じ
566デフォルトの名無しさん (ワッチョイ 6f02-FeqO)
2018/07/31(火) 13:12:03.24ID:kZi5wZ5a0 入力毎に判定。
3プールのmin以下なら無視。
maxより大きいなら順位シフト。
mid以下ならmin上書き。
それいがいはmidをminにしてmid上書き。
3プールのmin以下なら無視。
maxより大きいなら順位シフト。
mid以下ならmin上書き。
それいがいはmidをminにしてmid上書き。
567デフォルトの名無しさん (スップ Sd52-fKXU)
2018/07/31(火) 13:17:53.66ID:xftY0DAGd そういう原始的なアルゴリズムが最良
568デフォルトの名無しさん (スップ Sd52-fKXU)
2018/07/31(火) 13:21:36.88ID:xftY0DAGd 最悪パターンは小さい順に並んだ時だが
これでもせいぜい数倍になるだけ
クイックセレクトの最悪値は酷い
もちろん典型例でも原始的アルゴリズムの方が速い
元データも変更不要
メモリも3個分だけ
これでもせいぜい数倍になるだけ
クイックセレクトの最悪値は酷い
もちろん典型例でも原始的アルゴリズムの方が速い
元データも変更不要
メモリも3個分だけ
569デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/07/31(火) 13:29:26.70ID:NZiCEZHW0 1,ソート対象...data[5, 3, 12 ,8 ,6]
2,メモリをソート対象の最大値個数分確保...a[12]
3,ループでa[5]=data[5], a[3]=data[3]...と全部入れる
4.詰めてオシマイ
史上最速ソートだと思わないか?ループ1回で終わるどw
2,メモリをソート対象の最大値個数分確保...a[12]
3,ループでa[5]=data[5], a[3]=data[3]...と全部入れる
4.詰めてオシマイ
史上最速ソートだと思わないか?ループ1回で終わるどw
570デフォルトの名無しさん (ワッチョイ 232d-E0Ep)
2018/07/31(火) 13:45:59.26ID:j6W8yzMq0571デフォルトの名無しさん (ワッチョイ 378a-qjVX)
2018/07/31(火) 13:49:32.57ID:hTiFVqvS0 質問内容によるとソート対象は実数値なんだが
572デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/07/31(火) 13:49:52.96ID:NZiCEZHW0573デフォルトの名無しさん (ワッチョイ 6fe5-FeqO)
2018/07/31(火) 14:44:47.46ID:riS9l2jZ0 値をいれる必要はない。
各要素を出現回数のカウンタにすれば重複数も記録できる。
だがこれができるのは入力が整数で表せる場合だけ。
各要素を出現回数のカウンタにすれば重複数も記録できる。
だがこれができるのは入力が整数で表せる場合だけ。
574デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/31(火) 14:46:44.33ID:UZkSYp0La ま、しかし、普通の数値で100しかデータがないと今時のPCだとどんなアルゴリズム使っても人間が感じられないぐらいのスピードで実行しちゃうと思う。
わざとsleepとかするなら別だが。
わざとsleepとかするなら別だが。
575デフォルトの名無しさん (ワッチョイ 4b8a-vSp+)
2018/07/31(火) 14:57:40.88ID:PCFGvven0 今は熱対策が必要だな
576デフォルトの名無しさん (スップ Sd52-fKXU)
2018/07/31(火) 17:49:39.11ID:xftY0DAGd577デフォルトの名無しさん (アウアウカー Saef-2Ess)
2018/07/31(火) 17:55:01.37ID:UZkSYp0La あー。1万桁のデータが100個とか。w
578デフォルトの名無しさん (アウアウカー Saef-zedw)
2018/07/31(火) 17:58:48.84ID:zWbJ6Mhya スレッドの引数に渡す構造体を↓みたいにして、
クラスのメンバ関数ポインタを渡そうとしたんですがエラーになります。
info.pfunc = test.callの部分はどう書くのが正解ですか?
typedef struct
{
void (*pfunc)();
} TInfo;
class TestClass
{
public:
void Call(void)
{
cout << "呼んだ" << endl;
}
};
main()
{
TestClass test;
TInfo info;
info.pfunc = test.call;
}
クラスのメンバ関数ポインタを渡そうとしたんですがエラーになります。
info.pfunc = test.callの部分はどう書くのが正解ですか?
typedef struct
{
void (*pfunc)();
} TInfo;
class TestClass
{
public:
void Call(void)
{
cout << "呼んだ" << endl;
}
};
main()
{
TestClass test;
TInfo info;
info.pfunc = test.call;
}
579デフォルトの名無しさん (ワッチョイ 9f50-fKXU)
2018/07/31(火) 18:03:58.43ID:Yh1Yhi2x0 最近はC言語にクラスがあるの?
580デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/07/31(火) 19:15:37.92ID:NZiCEZHW0 static void Call()
581デフォルトの名無しさん (ワッチョイ 1680-1o86)
2018/07/31(火) 20:20:43.19ID:4WdKzGL90 #include <stdio.h>
typedef struct tag_baka_t t_baka_t;
typedef int (*baka_func_t)(t_baka_t const* pt_baka);
typedef struct tag_baka_t {
char* text;
baka_func_t function;
} t_baka_t;
int call_baka1(t_baka_t const* ct_baka) { fprintf(stdout, "baka1:%s\n", ct_baka->text); return 1; }
int call_baka2(t_baka_t const* ct_baka) { fprintf(stdout, "baka2:%s\n", ct_baka->text); return 2; }
int call_baka3(t_baka_t const* ct_baka) { fprintf(stdout, "baka3:%s\n", ct_baka->text); return 3; }
int call(t_baka_t const* ct_baka) {
return ct_baka->function(ct_baka);
}
int main(int argc, char* argv[]) {
t_baka_t baka1 = { "boo", call_baka1 };
t_baka_t baka2 = { "foo", call_baka2 };
t_baka_t baka3 = { "woo", call_baka3 };
fprintf(stdout, "called baka1 -> returned %d\n", call(&baka1));
fprintf(stdout, "called baka2 -> returned %d\n", call(&baka2));
fprintf(stdout, "called baka3 -> returned %d\n", call(&baka3));
return 0;
}
C言語の構造体ならコレでいける
コレならバカでも分かるハズ
C++の構造体でも同じように書ける
typedef struct tag_baka_t t_baka_t;
typedef int (*baka_func_t)(t_baka_t const* pt_baka);
typedef struct tag_baka_t {
char* text;
baka_func_t function;
} t_baka_t;
int call_baka1(t_baka_t const* ct_baka) { fprintf(stdout, "baka1:%s\n", ct_baka->text); return 1; }
int call_baka2(t_baka_t const* ct_baka) { fprintf(stdout, "baka2:%s\n", ct_baka->text); return 2; }
int call_baka3(t_baka_t const* ct_baka) { fprintf(stdout, "baka3:%s\n", ct_baka->text); return 3; }
int call(t_baka_t const* ct_baka) {
return ct_baka->function(ct_baka);
}
int main(int argc, char* argv[]) {
t_baka_t baka1 = { "boo", call_baka1 };
t_baka_t baka2 = { "foo", call_baka2 };
t_baka_t baka3 = { "woo", call_baka3 };
fprintf(stdout, "called baka1 -> returned %d\n", call(&baka1));
fprintf(stdout, "called baka2 -> returned %d\n", call(&baka2));
fprintf(stdout, "called baka3 -> returned %d\n", call(&baka3));
return 0;
}
C言語の構造体ならコレでいける
コレならバカでも分かるハズ
C++の構造体でも同じように書ける
582さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd32-HzQc)
2018/07/31(火) 20:29:50.71ID:qpn2fVfCd ばかばっか
583デフォルトの名無しさん (ワッチョイ 129f-lgLX)
2018/07/31(火) 20:29:50.72ID:V319xmHP0 >>578
節子それc言語やないで
節子それc言語やないで
584デフォルトの名無しさん (ワッチョイ 232d-E0Ep)
2018/07/31(火) 20:33:19.91ID:j6W8yzMq0585デフォルトの名無しさん (アウアウオー Saea-zedw)
2018/07/31(火) 21:00:04.51ID:YzKZx0BTa586デフォルトの名無しさん (ワッチョイ 6f9f-53i4)
2018/07/31(火) 23:06:10.75ID:ljgZb1RQ0 次からはC++の質問はC++のスレへ。
587デフォルトの名無しさん (ワッチョイ 1681-2QVD)
2018/08/01(水) 16:42:35.83ID:9yb7YrdQ0 クイックソートのwikipediaに書いてあるc言語のソースに、
【value_type tmp, pivot = med3(a[i], a[i + (j - i) / 2], a[j]); /* (i+j)/2 ではオーバーフローしてしまう */】
と書いてあるのですが、「(i+j)/2ではオーバーフローしてしまう」のオーバーフローする場合がまったくわかりません。
教えていただけますか。
【value_type tmp, pivot = med3(a[i], a[i + (j - i) / 2], a[j]); /* (i+j)/2 ではオーバーフローしてしまう */】
と書いてあるのですが、「(i+j)/2ではオーバーフローしてしまう」のオーバーフローする場合がまったくわかりません。
教えていただけますか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- くそしてかがやけ
- 🎌日本の地震をお祝いします👏👏👏✨
- お茶だと思って飲んだらションベンだった
