C言語なら俺に聞け 146at TECH
C言語なら俺に聞け 146 - 暇つぶし2ch350:デフォルトの名無しさん
18/07/10 19:58:04.00 /C7aTWfLM.net
なんでマカフィーを後出ししたのか教えて
>>329では隠してたよね

351:デフォルトの名無しさん
18/07/10 20:29:17.07 csDUndKHa.net
このスレは超エスパーの常連が常駐していると聞いて

352:デフォルトの名無しさん
18/07/10 20:55:39.23 XZttgo620.net
今頃常連は君のPCの中で、あんなことこんなことしてるかも

353:デフォルトの名無しさん
2018/07/1


354:1(水) 02:42:31.00 ID:XTzeI4c20.net



355:323
18/07/11 12:17:16.91 Z7jbd2VW0.net
そんなことは普通にできますが,インターネット接続を切ったり入れたりもしなきゃいけないじゃないですか
それも簡単ですが,マカフィーのいたずらのせいでそんなことをいちいちやるのは…という意味です

356:デフォルトの名無しさん
18/07/11 12:19:33.60 F9Ul8eGQH.net
止めたついでにアンインストールするのがいいと思うよ。

357:デフォルトの名無しさん
18/07/11 12:23:38.80 ElMeoT060.net
プログラムを作成自体を犯罪者予備軍と見なしているのかな・・

358:デフォルトの名無しさん
18/07/11 12:33:49.60 /qmyOvYB0.net
使ってるのがwindows10ならもうウィルス対策ソフトなんて要らないよ。重くなるだけ。
windowsDefenderで十分。2つ入れてるとトラブルの元。

359:デフォルトの名無しさん
18/07/11 23:17:11.74 mjsZ1svma.net
C++でディレクトリ無かったら作る関数って何かあります?
LinuxのPOSIX系だと見つからんかった

360:デフォルトの名無しさん
18/07/12 00:42:26.88 gvbwsRPLM.net
>>351
man 2 mkdir

361:デフォルトの名無しさん
18/07/12 01:44:43.97 2elGYyrL0.net
>>340
マカフィー入った環境でやってみたけど普通に動いた。
但し、Cコンパイラは Cygwin の gcc だ。

362:デフォルトの名無しさん
18/07/12 02:21:13.11 9sO/Jh060.net
>>347
別に一時的に無効化するだけならネットを切る必要は無い
セキュリティ的にどうしても不安があるっていうならLANケーブル抜けばいい
それすら面倒ならパソコンを窓から投げ捨てろ

363:デフォルトの名無しさん
18/07/14 08:48:08.32 xV7EJA5wd.net
マカフィーのポリシーが気に入らないなら消せば

364:デフォルトの名無しさん
18/07/15 17:16:55.22 +OH6AID30.net
C言語で集合、和集合、積集合を実装したいのですが、正直アイデアが浮かびません。
どうすれば良いのでしょうか?
教えていただきたいです。

365:
18/07/15 17:20:53.28 0kASpcPE0.net
>>356
まず集合の要素を何にするか?
集合自体の表現をどうするか?
そこからスタートするべきだと思います
C++ スレリンク(tech板:33番)

366:デフォルトの名無しさん
18/07/15 18:24:43.00 yiVegLeV0.net
C++ちゃうやろ

367:さまよえる蟻人間
18/07/15 18:43:53.92 wAtjArzX0.net
C++のstd::setを参考にしない手はないな。
集合をデータとして保持したいなら、要素の個数と、動的配列かリストが必要になる。

368:さまよえる蟻人間
18/07/15 18:50:09.68 uEXuZg9md.net
集合は順序列の順序を無視したものと考えられる。
比較する場合は、ソート済みにしてから比較する必要がある。
多重集合ではない場合は変更の際に要素を単一化しないといけない。

369:デフォルトの名無しさん
18/07/15 18:57:55.11 chucpUaPM.net
setは赤黒木だけど、実装したことある奴いるの?俺はaddだけ実装して満足して諦めたよ。
hashtableのほうが遥かに簡単だからオススメ。
整列済みの配列も簡単でいいと思うよ。
でも一番楽なのは、ライブラリを拾ってくること。

370:さまよえる蟻人間
18/07/15 20:00:12.79 uEXuZg9md.net
std::unordered_set

371:デフォルトの名無しさん
18/07/15 23:33:22.03 ugn7dRUid.net
>>356
積集合の方が比較的簡単
和集合は同一要素であるかをどうやって判別するか
要素を構造体で表した時に
異なる構造体でも同一要素である判別が出来なくてはならないので
単純な例だと
複素数型と実数型と有理数型とcharとintとfloatとdoubleとか

372:デフォルトの名無しさん
18/07/15 23:57:35.35 yiVegLeV0.net
>>363
意味が全くわからんわ。
そもそも和集合も積集合も補集合考えたら手間が変わるはずないし。

373:デフォルトの名無しさん
18/07/15 23:59:45.37 ugn7dRUid.net
>>364
ああ、直積と勘違いした

374:デフォルトの名無しさん
18/07/16 00:10:17.99 RYaEyvned.net
型が限定されていれば簡単
(>>359>>362)
>>363みたいに、
いろんな型が混ざった和集合だと
いろいろと大変

375:デフォルトの名無しさん
18/07/16 00:41:17.49 JxE01Fj60.net
一般論で言えば、集合の実装はハッシュを実装することに限りなく等しい。
どんなオブジェクトであれ、シリアライズ(要は文字列化)できる。
そうすればハッシュで一意な比較的小さい非負整数の番号に写像できる。(←条件により、ここが難関になりうる。ハッシュを使わずに済む番号が用意されていればそれが最適)
逆写像も用意できる。
最大番号までの要素数を持つ整数配列で0/1で要素の有無を表現したものが一つの集合を表す。
2つの集合の和と積は0/1の|と&で表せる。
配列サイズと計算時間の節約にはビットマップ化すればok。

376:デフォルトの名無しさん
18/07/16 12:41:40.20 JYSC+BEod.net
視野の狭いアホ

377:
18/07/16 13:40:42.48 PLRcL5uS0.net
>>367
>ハッシュで一意な比較的小さい非負整数の番号に写像できる。
ハッシュ関数は一般に衝突するもの、と考えるものですが、範囲を小さくすれば特に…

378:デフォルトの名無しさん
18/07/16 13:45:32.02 GVNh7z7o0.net
ハッシュの逆写像て何よ

379:デフォルトの名無しさん
18/07/16 15:04:36.42 JxE01Fj60.net
>>368
広い視野で具体的な提案をどうぞ。
>>369
要素が固定なら完全ハッシュ関数が構成可能。
>>370
和集合とか積集合とか求めてもそこから要素リストが作れなければ無意味というだけ。これは逆写像を作ってるのと同じ。

380:デフォルトの名無しさん
18/07/16 16:32:35.47 ZuNymA1O0.net
>>356
ビット演算使えば良いのでは?
特に要素数が32とか64以下に収まるようなら今どきのPC用コンパイラならunsgnedのintやlongで行けるよ。
uint32tみたいなビット数保証するtypedefされた型使った方が良いけどね。

381:デフォルトの名無しさん
18/07/16 16:42:31.55 fNWu8+xrd.net
うわっ
また特殊な条件でしか使えない方法を
まあ>>356が悪いわけだけど

382:デフォルトの名無しさん
18/07/16 16:58:23.91 GVNh7z7o0.net
>>371
オペランドが入力されたら都度完全ハッシュを求めるの?
地味に和積集合計算するよりはるかにコスト高だろ…

383:デフォルトの名無しさん
18/07/16 17:09:01.83 fNWu8+xrd.net
全順序化が簡単か
効率的なハッシュが(簡単に)作れるか
想定する集合の大きさ
比較のコスト
ノードのデータサイズ
この辺が違うと適した実装が全く異なる
この辺をヒアリングするのが先と思う

384:デフォルトの名無しさん
18/07/16 20:33:05.89 xLJ3m8O+M.net
>>374
「要素が固定なら」と条件付き。よく読んでね。
そうじゃない場合は難関になりうることも言及ずみ。よく読んでね。
衝突してもハッシュ表は実装できるわけで、全順序化が不可能なわけではない。

385:デフォルトの名無しさん
18/07/16 20:35:21.92 xLJ3m8O+M.net
>>375
これ。
これら含めて最大限一般化したら>>367になるよね。

386:デフォルトの名無しさん
18/07/16 21:05:16.49 GVNh7z7o0.net
>>376
何に対して固定なのか、いつ固定されるのか、稚拙な日本語から読み取れと?
それに>>367にはそんな条件は書いてないぞ。にもかかわらず、ハッシュから写像ができると書いてある。意味不明すぎるわ。

387:デフォルトの名無しさん
18/07/16 21:29:45.38 XBIjWYki0.net
>>377
ならねーよ
>>361も書いてるけどこの手のやつの定番は赤黒木とかB-Tree
ハッシュはデータ量が見込めないとハッシュテーブルサイズが決められないから使い辛い

388:デフォルトの名無しさん
18/07/16 21:50:26.80 sxU6ARMDM.net
>>361
作ったことあるけど使えない程度に遅かったわ
Cで赤黒木ならLinuxかfreeBSDから拝借するのがよさそう

389:デフォルトの名無しさん
18/07/16 21:56:55.25 r56ZRtuEM.net
c++のmapとsetの実装アルゴリズムだぜ。
検索速度はハッシュテーブルに劣るけど、使えないほど遅いってことはないだろ。

390:デフォルトの名無しさん
18/07/16 22:18:00.48 d44IRZCy0.net
C言語初心者です。
typedef struct{
int tate;
int yoko;
double *mat;
} Mat;
void read(int x,int y,Mat *a){
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
printf("[%d][%d]->",i+1,j+1);
scanf("%lf",&a->mat[i][j]);
}
printf("\n");
}
return;
}
プログラムの一部を抜粋したものなのですが、これでコンパイルすると
subscripted value is neither array nor pointer
というエラーが出てしまいます。
二次元配列はポインタで表せないものなのでしょうか?

391:デフォルトの名無しさん
18/07/16 22:23:31.47 d44IRZCy0.net
sageをつけ忘れました
申し訳ございません。

392:デフォルトの名無しさん
18/07/16 22:43:27.11 BgE9oE4s0.net
>>382
メモリ空間は1次元だから。
arr[y][x]は*(arr+y*WIDTH+x)と同じ。WIDTHがわからないとできない。

393:デフォルトの名無しさん
18/07/16 23:01:36.27 GVNh7z7o0.net
>>382
matがdouble型へのポインタだからだよ。
結果mat[i]はdouble型になり、mat[i][j]はdouble型に[j]を付けたことになるので、配列でもポインタでもないのに[]つけるなって怒られてる。
きっとmatのメモリ確保は
mat = malloc(sizeof(double) * tate * yoko);
みたいにやってるだろうから、i列j行目にアクセスするときは
&a->mat[i + j * yoko]
みたいにしないといけない。
あと、上の例ならjを外側、iを内側のforにしたほうが最適化されやすいと思うよ

394:デフォルトの名無しさん
18/07/17 00:14:58.01 TUtIYHCtM.net
>>381
作りが悪くて目標に届かなかっただけ
100万件のinsertに1秒程度が目標だったけど2.5秒ぐらいだった

395:デフォルトの名無しさん
18/07/17 00:50:16.45 j9lU977L0.net
>>382です
お二人とも丁寧に教えていただきありがとうございます。
>>384さんの方法で改良してみたのですが複数のMat構造体を作り,tateとyokoの値のそれぞれ別にしたときにプログラム実行中に入力が強制終了されてしまうのですが、配列の作り方に何か不都合があるのでしょうか

396:デフォルトの名無しさん
18/07/17 01:14:22.91 ZzFa01D50.net
>>387
あるあるネタだね。
何処かでx/y、i/j、tate/yokoが逆になってる。

397:デフォルトの名無しさん
18/07/17 03:42:30.44 ZJqMOJYT0.net
Ruby のハッシュでは、データ数と共に、バケット数を増やしていく。
バケット数は、2 の累乗の次に現れる素数。
2^n + a, 2 <= n <= 30
8 + 3 = 11
16 + 3 = 19
32 + 5 = 37
64 + 3 = 67
128 + 3 = 131
256 + 27 = 283
512 + 9 = 521
データ数が、バケット数の5倍を超えると、ハッシュが再構成される。
再構成時には、極端に遅くなる
11 * 5 = 55 だから、データ数が56 個になると、バケット数が19 になる。
19 * 5 = 95 だから、データ数が96 個になると、バケット数が37 になる

398:デフォルトの名無しさん
18/07/17 04:09:19.94 ZJqMOJYT0.net
AVL では、左右部分木の高さの差を、1 以内にしなければならないから、
2 になると、木の回転・縮約など、再構成をしなければならない。
つまり、しょっちゅう再構成が起こるので、遅くなる
赤黒木では、左右部分木の高さの差を2 倍以内にしたから、再構成が起こりにくい。
左が10 なら、右は20 まで、再構成が起こらない
タスクスケジューラーに使われる
例えば、100個のスリープしているタスクがある所に、
木に実行するタスクを追加して、重みに従ってソートすると、
追加したタスクが選ばれて、木から削除される
つまり、ほとんどの葉の順位が変わらなくて、
追加した葉が、すぐに削除されるようなものに適している

399:デフォルトの名無しさん
18/07/17 21:50:50.91 j9lU977L0.net
makefileってPowerShellで作れないとかないですか?

400:デフォルトの名無しさん
18/07/18 13:02:52.94 9IEVAZpRa.net
>>391
君が何を言わんとしているのかがよくわからない

401:デフォルトの名無しさん
18/07/18 13:22:02.69 OuA1chkMd.net
わからないならかくなあほ

402:デフォルトの名無しさん
18/07/18 13:27:22.37 9IEVAZpRa.net
>>393
あれで人に言葉が通じていると思い込んでる可能性があるから書くべきだろう

403:デフォルトの名無しさん
18/07/18 15:13:21.80 rBfwKW3R0.net
>>391
作れますよ

404:デフォルトの名無しさん
18/07/22 17:00:55.76 QT86rkZL0.net
なんとなく、コマンド行をタブで始めてなくて(スペースで空白を作ってて)、
makeがエラー出してるような気がするなぁ。
エディタのTab→スペース自動変換が効いてるとか。
PowerShellとは直接関係なくて。

405:デフォルトの名無しさん
18/07/23 07:43:37.05 4YnpLRT90.net
C++ C言語 C#の初心者用スレはないんですか?
探してみたけどそれらしきスレが見当たらないです

406:デフォルトの名無しさん
18/07/23 08:25:03.57 XREcIsoOM.net
>>397
まずはどうやって探したのか聞こうか

407:デフォルトの名無しさん
18/07/23 18:37:31.75 4YnpLRT90.net
>>398
まずスレッド一覧を開いてCTRL+FでC++と入れて検索しました
一応それらしき所を見つけたんですが書き込んだ瞬間変なおっさんに噛みつかれたので
初心者スレじゃないのかな。。。と。
入門にあったスレはないでしょうか

408:デフォルトの名無しさん
18/07/24 00:16:29.41 jxAZ77iY0.net
無ければ作ったら良い

409:デフォルトの名無しさん
18/07/24 00:25:40.41 WnIMuw3FM.net
初心者歓迎なのと甘えた初心者に手とり足とり教えるのとは違うよ

410:デフォルトの名無しさん
18/07/24 10:50:38.33 0p5SDr2Gd.net
回答者も甘えてる奴がほとんどだしな

411:デフォルトの名無しさん
18/07/24 12:49:34.60 AIbS+cPKM.net
初心者といいつつそれ以前だったりするから

412:デフォルトの名無しさん
18/07/24 12:52:10.55 jy7p1ZdAd.net
回答する気が無いヤツは黙ってろ
目障り

413:デフォルトの名無しさん
18/07/24 22:27:17.58 yuwuYFDqM.net
>>399
ここでの『初心者』はANSI Cの規格を読み込んでいること前提
プログラム未経験者は取り合えず柴田茫洋の明解C言語を読め

414:デフォルトの名無しさん
18/07/24 22:55:24.02 0yPjFIBM0.net
回答する気が無いヤツは黙ってろ
目障り

415:デフォルトの名無しさん
18/07/25 14:04:28.05 rhtXSHsm0.net
明解C言語は分かりにくいからやめとけ
苦Cの方がいい

416:デフォルトの名無しさん
18/07/25 15:50:06.17 rOB4O81ba.net
明解と
書いてる方が
不明解

417:デフォルトの名無しさん
18/07/25 18:17:36.85 LRuCLCqQM.net
今からC言語覚えて何に使うの?

418:デフォルトの名無しさん
18/07/25 18:38:39.52 ru0lrBQYM.net
デバドラを書く
低速言語のボトルネックをカバーする

419:デフォルトの名無しさん
18/07/25 19:01:18.88 WBw1LCSkd.net
こういう連続線をクリックで描きたいなんか参考になる本だとかサイトってありませんか?
URLリンク(i.imgur.com)

420:デフォルトの名無しさん
18/07/25 19:07:02.74 h5CHP+XR0.net
>>411
それをCで書こうって考えている?

421:デフォルトの名無しさん
18/07/25 19:11:06.73 WkyhwwwQ0.net
>>409
小規模マイコンのプログラミング
とか

422:デフォルトの名無しさん
18/07/25 19:19:25.92 ekeRKo17a.net
>>411
環境は?
OSやコンパイラは?

423:デフォルトの名無しさん
18/07/25 20:53:24.83 IVngiw360.net
>>413
揚げ足とるわけじゃないけれど
なんで小規模マイコン限定?

424:デフォルトの名無しさん
18/07/25 20:53:47.05 IVngiw360.net
大規模は違うの?って意味ね

425:デフォルトの名無しさん
18/07/25 20:57:49.18 E4aNPZoQ0.net
まずint(4バイトとする)とmalloc(4)の違い教えて
話しはそれからだ

426:さまよえる蟻人間
18/07/25 21:01:13.33 Gtkf0v1Td.net
>>417
mallocは使い終わったらfreeで解放しないといけない。

427:デフォルトの名無しさん
18/07/25 21:02:09.90 DGkeAJEO0.net
Windows Win32 GDIで作ってみた
中身はいい加減だけど、マウスのボタンクリックイベントでポインタ座標を取得して順に直線で繋げているだけ
URLリンク(codepad.org)
URLリンク(i.imgur.com)

428:さまよえる蟻人間
18/07/25 21:04:29.51 Gtkf0v1Td.net
101回目のバッファオーバーフロー?

429:デフォルトの名無しさん
18/07/25 21:09:14.98 DGkeAJEO0.net
エラー処理なし
ウインドウハンドラ作成もメッセージループの処理も適当なのでプロシージャもいい加減な作り

430:デフォルトの名無しさん
18/07/25 21:13:14.68 E4aNPZoQ0.net
俺の言い方がまずかったようだ。
int* a = (int*)malloc(4);
これはわかる
int* a = (int*)malloc(5);
この場合でもコンパイルは通るし実行も出来る。
でも、やっていいことなんだろうかってね。
余った1バイトは気にしないでいいのだろうか?

431:さまよえる蟻人間
18/07/25 21:18:04.56 Gtkf0v1Td.net
>>422
余分に確保しても大丈夫。連続したメモリーブロックと呼ばれるものだよ。頭に構造体を使ってもいいし。

432:さまよえる蟻人間
18/07/25 21:21:01.07 Gtkf0v1Td.net
例えば、int *p = (int*)malloc(5*sizeof(int));と書けば、pは、int p[5];のように使える。

433:デフォルトの名無しさん
18/07/25 21:24:03.17 E4aNPZoQ0.net
>>424
そう。これは分かる。インクリメントで確保した変数にアクセス出来るのも分かる。
>>422の下の例で、例えばa++した時、そしてそのアドレスの中身を変更すようとすると
何か途轍もなく悪いことが起きそうな気がするんだけど大丈夫なんだろうか?

434:さまよえる蟻人間
18/07/25 21:29:51.06 Gtkf0v1Td.net
連続したメモリーブロックからはみ出るから、そのアクセスは違法になるね。

435:デフォルトの名無しさん
18/07/25 21:32:51.80 E4aNPZoQ0.net
ああ、なるほど。そういう時はエラー出るのね。
今試しにインクリメントしたら確かにエラーになった。なるほど良く出来てる。
なんか試すのも怖かったんだわ。ありがとう!

436:デフォルトの名無しさん
18/07/25 21:33:37.75 kwDgMq/WH.net
>>425
未定義だから鼻から悪魔が出てもおかしくないよ
冗談はおいといて、現実には5バイトじゃなく、64バイトとかのサイズをとったりするので、何事もなく動く。ただし、動くのはたまたま。

437:デフォルトの名無しさん
18/07/25 21:36:12.00 E4aNPZoQ0.net
>>428
エラーをちゃんと出してくれるのが分かったから良かった。
まぁ適当な数字入れることなんか絶対ないだろうけど、これが動いたらやべぇなって心配だった

438:さまよえる蟻人間
18/07/25 21:36:50.93 Gtkf0v1Td.net
ただし、アクセスにおいてエラーが出ない事もあり、この手のバクはやっかいで、下手をすると数億円が吹き飛ぶことがある。
だから、最近ではなるべく生ポインタを使わないでやるのがプロ。

439:さまよえる蟻人間
18/07/25 21:39:44.99 Gtkf0v1Td.net
アクセス制御の貧弱なOSでは、不正アクセスは感知されない。

440:デフォルトの名無しさん
18/07/25 21:55:12.69 WkyhwwwQ0.net
>>415
大規模はC++の率が高くなる

441:デフォルトの名無しさん
18/07/25 21:56:03.32 LjfK0h7i0.net
>>412
>>414
すみません。ここCでしたね。C♯でした。場所間違えました。

442:デフォルトの名無しさん
18/07/25 21:57:27.86 LjfK0h7i0.net
>>419
すげぇ。わざわざありがとうございます。

443:デフォルトの名無しさん
18/07/25 23:13:13.16 99/tYlRKM.net
>>427
一般にエラーは出ないぞ

444:デフォルトの名無しさん
18/07/25 23:32:18.85 RmE/AZ04x.net
>>422
このれいだと.引数が 4でも 5でも、バウンダリが不安かな...
mallocは 4とか 16バイトの境界にアジャストされたアドレスを返しそうだけど

445:デフォルトの名無しさん
18/07/25 23:53:34.35 RmE/AZ04x.net
>>436
430ですが、mallocの返す番地は、大概の型にキャストできる境界になってるんだろうね、知らんけど

446:デフォルトの名無しさん
18/07/26 11:01:17.82 Oz5vlcaw0.net
C11はアラインメントが決めれるmallocがあるよ
普通は8の倍数になってる。

447:デフォルトの名無しさん
18/07/26 12:52:49.36 EM3EzxKLa.net
ま、しかし、intが4バイトの保証はないし、malloc()で確保した範囲外がどうなってるかもライブラリ依存だし、変な事に挑戦しない方が良いと思うw

448:デフォルトの名無しさん
18/07/26 15:59:28.57 VR2PsH3f0.net
mallocの返すアドレスはワード教会に揃ってるように
POSIXで決まってなかったっけ? 気のせいか

449:デフォルトの名無しさん
18/07/26 16:54:25.22 ixC9BcxzH.net
>>438
aligned_alloc()だね

450:デフォルトの名無しさん
18/07/26 17:01:26.31 Vf/lMr8pd.net
>>440
決まってる

451:デフォルトの名無しさん
18/07/26 17:03:12.87 0PbkpRUpH.net
C99には
The pointer returned if the allocation succeeds is suitably aligned
so that it may be assigned to a pointer to any type of object and
then used to access such an object or an array of such objects
in the space allocated (until the space is explicitly deallocated).
とあるので、どんなオブジェクトでもその場所に置けることは保証されている。
ただ、アラインメントがずれてるとアクセスできるけど遅くなるとかいう
変態環境でどうなるかとかは規定されていない。
(ふつうの実装ならまともにアラインメントされていると思うが)
これをどうしても合法的に確実にアラインメントしたい人向けなのが、aligned_alloc()。

452:デフォルトの名無しさん
18/07/26 17:08:47.42 VR2PsH3f0.net
>>443
そうなんだ
おれはてっきりもっと全然違う基準、例えば64バイトとか16KBとかで
アライメントしたいときaligned_allocの方を使うものかと思ってた

453:デフォルトの名無しさん
18/07/26 17:17:59.96 0PbkpRUpH.net
>>444
そりゃもちろんそういう用途にも使えるよ

454:デフォルトの名無しさん
18/07/26 19:04:38.15 Vf/lMr8pd.net
>>443
パフォーマンスはCの仕様で規定されてないから
そんな事を心配したら標準ライブラリも使えないぞ
memcpyが劇遅かもしれないとか

455:デフォルトの名無しさん
18/07/26 19:07:36.39 Vf/lMr8pd.net
普通の用途は>>444みたいなヤツ
zmmレジスタのサイズ
キャッシュのラインサイズ
HDDのセクタサイズ
FIFOのサイズ
なんかにしたい場合

456:デフォルトの名無しさん
18/07/27 00:14:41.96 J2z2B0JS0.net
家でC言語の独学してたけど眠くなって続かないから週末だけ学校にいこうと思う。関西でお勧めはどこですか?

457:デフォルトの名無しさん
18/07/27 07:12:56.09 GxaYOivnM.net
金の無駄遣い

458:デフォルトの名無しさん
18/07/27 09:20:14.17 UMN2C6wAd.net
大阪大学基礎工学部情報科学科

459:デフォルトの名無しさん
18/07/27 09:52:20.15 mngCBxZNM.net
勉強を成功させるには強い動機付けが必要
やる気も効率も上がらないのはまずそこに失敗してる

460:
18/07/27 20:31:18.69 dNDh2QHO0.net
>>451
動機付け、ですか…
そんなものは初めからありませんでした…

461:デフォルトの名無しさん
18/07/27 21:04:40.28 Gi4wb1wwM.net
個人的にはLinuxのデバドラから入るのがおすすめ
分かってくると俺の方が上手く書けるとか拗らせる

462:デフォルトの名無しさん
18/07/28 02:43:37.63 E0E9ZkiG0.net
動機を自分で意識的に付けようとしても中々出来ないのが普通なのでは?
何かそれなりのメリットがあると信じられないと何もしないのが普通の人間だろうし。
例えば何かをするとモテモテになるだとか、そういう自分にとってのメリットがあるならその何かをやる気は出るだろうけど、そんなのがないなら、あるいはもしあってもそれに気付けないなら普通はやる気は起きんでしょう。

463:デフォルトの名無しさん
18/07/28 07:47:22.78 CM3Pz0hR0.net
C言語、あるいはプログラムそのものの入門書で、文庫か新書サイズの良書はありますか?

464:デフォルトの名無しさん
18/07/28 08:07:15.42 xtvz/nLF0.net
C++ならこれならわかるC++があるが・・・

465:デフォルトの名無しさん
18/07/28 08:08:34.90 8G21bbxI0.net
はじめてのC

466:デフォルトの名無しさん
18/07/28 09:55:07.43 VMG9DnUG0.net
>>455
講談社ブルーバックスなら新書サイズでC本やプログラミング本があったはず。
ただ、書名は挙げられないし、良い入門書かどうかも分からん。
参考までに、本の寸法に制約があるのは何故かな?

467:デフォルトの名無しさん
18/07/28 10:28:26.03 CM3Pz0hR0.net
電車の中や、昼飯食べながら片手で読めるものがあれば、と思ったんです
パソコンいじりながら読むなら大きい方がいいんですけどね

468:デフォルトの名無しさん
18/07/28 11:19:05.91 fTj3LZGS0.net
Kindleで読めば?

469:デフォルトの名無しさん
18/07/28 12:06:22.12 s8FQvaoRM.net
さっさとkindleで読めアホ

470:デフォルトの名無しさん
18/07/28 14:09:45.43 xtvz/nLF0.net
マンガはタブレット端末で見るけど
参考書系は紙じゃないとなんか駄目だわ。全然集中できない。

471:デフォルトの名無しさん
18/07/28 16:49:06.40 XyATpAmoa.net
kindleとか電子書籍って参考書系読みにくいよね
漫画みたいにページそのままならいいのに

472:デフォルトの名無しさん
18/07/28 17:02:27.00 fTj3LZGS0.net
何年も前からiPadや電子ペーパー端末でプログラミングや法律の本読んでるけど特に不都合感じてないな
むしろ紙は持ち運びし辛いし検索もできないから不便だわ

473:デフォルトの名無しさん
18/07/28 19:13:56.62 sJabZ7tp0.net
すみません
この2行のコードを1行にするスマートな書き方ってありますか?
idx = idx << 12;
idx = idx ^ _data;

474:デフォルトの名無しさん
18/07/28 19:15:47.78 CM3Pz0hR0.net
kindleですか、参考にします。
ありがとうごさいました。

475:さまよえる蟻人間
18/07/28 19:31:07.68 g7V8p7HEd.net
>>465
idx = (idx << 12) ^ _data;

476:デフォルトの名無しさん
18/07/28 19:52:37.67 mee2LTKv0.net
>>467
うむ

477:デフォルトの名無しさん
18/07/28 20:05:12.26 0bzuzSMVM.net
初心者スレじゃないんだからidxがvolatileの場合を無視した回答は良くない

478:デフォルトの名無しさん
18/07/28 20:12:34.82 cv0xu0xkM.net
それを言うならvolatileでない場合を無視するのが問題では?
volatileであれば問題ないだろ

479:デフォルトの名無しさん
18/07/28 20:26:36.40 mee2LTKv0.net
わしここの住人じゃなくて通りすがりなんだけど、
>>467 だとなにか問題あるの?

480:デフォルトの名無しさん
18/07/28 21:15:36.33 DyF9e7oqM.net
>>471
もしもidxが送信データを書き込み受信データを読み出すためのレジスタだったら、
複数回書き変えること自体が重要だったり、読み込み時は異なる値を返却するかもしれない、
という割とどうでもいい話。

481:デフォルトの名無しさん
18/07/28 21:32:40.43 mee2LTKv0.net
>>472
C的に見れば無駄なコードが実は必要だったという、そういう話しかな

482:デフォルトの名無しさん
18/07/28 21:52:57.65 jbwKRPPF0.net
最適化で一瞬レジスタの値が変わらなくなったから
それがどうした


483:のという話だからな むしろ一瞬レジスタの値が変わるようなコードがそもそもぜんぜんダメ



484:デフォルトの名無しさん
18/07/28 21:55:35.27 remUbofq0.net
そういう話になってくるとレジスタってなんや?って話になるからな?

485:デフォルトの名無しさん
18/07/28 22:00:32.66 jbwKRPPF0.net
ちゃんと確定値入れろよ
なんで計算中の値いれてんの
なんでそんな頭悪いことすんの
一行にしたいということは
間違いなく計算過程のコードだからな

486:デフォルトの名無しさん
18/07/28 22:02:55.51 aLrZyGnX0.net
通信プロトコルでCPUレジスタ使ってやり取りする様な方法ってあったっけ?

487:デフォルトの名無しさん
18/07/28 22:05:44.90 jbwKRPPF0.net
メモリマップドI/Oなんか簡単に消える

488:デフォルトの名無しさん
18/07/29 00:51:03.42 ++N1yuL90.net
>>477
「レジスタ」って「CPUのレジスタ」だけじゃなくて「I/Oチップのレジスタ」って使い方もするよ

489:デフォルトの名無しさん
18/07/29 07:02:57.29 YD8oKrYq0.net
>>469を書くためにわざと>>465の質問しただろ
まあ確かにvolatileだと>>467ではダメ
明らかに初心者の質問に>>469の回答もどうかと思うが
idx = idx << 12; idx = idx ^ _data;
これで良い

490:デフォルトの名無しさん
18/07/29 07:15:13.10 YD8oKrYq0.net
質問というよりスレのレベルを見るための問題だな
>>474みたいな素人が見事に引っかかっちゃう

491:デフォルトの名無しさん
18/07/29 09:00:29.62 +KuOy2bC0.net
触らぬ質問に騒乱無し

492:デフォルトの名無しさん
18/07/29 09:09:25.31 7lOBGcOb0.net
実は本物の初心者で volatile などというものの存在すら知らず最初の回答で全く問題なかったのだが
知識があるものが知識がある故にあらゆる妄想を膨らませまくって勝手に争って大混乱になり、
最初に質問した者は怖くなって素早く逃亡。このスレで質問するのは止めようと固く心に誓う。←いまここ

493:デフォルトの名無しさん
18/07/29 10:14:38.25 Ga4xmacd0.net
明示してないvolatileなんて考慮する必要ないわ

494:デフォルトの名無しさん
18/07/29 11:40:21.87 LQAkWqzt0.net
知恵遅れのクソニートが
またテキトーなこといってるわ
2ちゃんねるはどこのスレも同じだわ
クソニートはどこにでもいる
やっぱりなクソニート2ちゃんねるから
クソニートの駆除が必要

495:デフォルトの名無しさん
18/07/29 11:43:48.42 LQAkWqzt0.net
まずプロフェッショナルなカンペキなオレの回答の
どこがおかしいか
だれも指摘できてないからな

496:デフォルトの名無しさん
18/07/29 11:51:38.06 LQAkWqzt0.net
ちなみに知恵遅れどものテキトーな回答のどこがおかしいか
オレはすべて回答してる
ここも同じだ

497:デフォルトの名無しさん
18/07/29 11:58:20.56 1hBCvnSx0.net
夏休み?

498:デフォルトの名無しさん
18/07/29 11:59:21.49 LQAkWqzt0.net
プロフェッショナルの回答に
シロウトが口をはさむ余地はない
クソニートは毎日が夏休みだもんな

499:デフォルトの名無しさん
18/07/29 12:01:00.22 LQAkWqzt0.net
マジでなクソニートどもは身の程知らずなわけ
クソニートがまともな社会生活を送ってる社会人に勝てると思ってんの

500:デフォルトの名無しさん
18/07/29 12:08:05.09 Rgaf8fSN0.net
プロフェッショナルかなんか知らんけど組み込み系は苦手のようだな

501:デフォルトの名無しさん
18/07/29 12:09:43.67 LQAkWqzt0.net
な知恵遅れがオレのレスのどこがおかしいか指摘できない
指摘しようがないからな
なぜならスキのないカンペキなレスだからな
どこのスレでも知恵遅れが偉そうにしてるのは同じだ

502:デフォルトの名無しさん
18/07/29 12:09:51.76 7lOBGcOb0.net
>>486
何処で回答してんの?

503:デフォルトの名無しさん
18/07/29 12:11:10.71 LQAkWqzt0.net
>>476>>474 でおもいっきり回答してるわ
知恵遅れはなにが書いてあるか理解できない

504:デフォルトの名無しさん
18/07/29 12:12:34.88


505: ID:7lOBGcOb0.net



506:デフォルトの名無しさん
18/07/29 12:14:12.01 LQAkWqzt0.net
それが回答になってないなら
オマエのオツムに問題があるか
ただの仕事未経験のクソニートがなにも分からずテキトーなこといってるだけだからな
ただクソニートである確度が極めて高い

507:デフォルトの名無しさん
18/07/29 12:15:16.00 7lOBGcOb0.net
>>496
はいはい。おだいじに。

508:デフォルトの名無しさん
18/07/29 12:15:53.84 LQAkWqzt0.net
はい
クソニート図星

509:デフォルトの名無しさん
18/07/29 12:17:35.80 7lOBGcOb0.net
やはり気温40℃超えは人をおかしくするには十分な気温だったようだな。
猛暑も酷なことをするもんだ。合掌。

510:デフォルトの名無しさん
18/07/29 12:19:13.56 LQAkWqzt0.net
クソニートは家からでないから関係ないだろ
電気代も親に払ってもらってるからな
クーラーの電気代もパチョコンの電気代もな
親が払ってくれてんだぞ

511:デフォルトの名無しさん
18/07/29 12:33:12.40 Rgaf8fSN0.net
組み込み系の周辺チップの制御レジスタの仕様書見たことある?
制御レジスタの特定ビットのRead/Write動作そのものに意味があるんだよ
直に制御レジスタをアクセスしないと駄目
最適化でCPUレジスタの中で値を書き換えても無意味、周辺チップは何の動作もしない
volatileはそんな時にコンパイラの最適化を抑制するために使用する
例えば、
idx = (idx << 12) ^ _data;
の例で言えば、(idx<<12)の部分で実際にidxのアドレスにマップされたメモリの値が変更される
その後に最終的に、(idx << 12) ^ _dataの値が上書きされる
idxがvolatile宣言されていない場合は、途中の評価結果はCPUの内部レジスタだけで最適化されてマップされたメモリの値は最終評価結果の書き込みしか保証されない可能性がある
組み込みの制御レジスタの例としてPICのデータシートのリンクを貼っておく
ビット毎にR/Wでチップの機能を制御している様子が分かる
URLリンク(www.microchip.co.jp)

512:デフォルトの名無しさん
18/07/29 12:46:01.14 LQAkWqzt0.net
最適化で、一瞬変わってたのが変わらなくなったらどうすんのとかいってるアホなこといってる知恵遅れに
その一瞬だけ変わってたコードが正しいコードとか
ホンキで思ってんのといってるだけだからな
そもそもvolatileついてなかったら
そのあと書き変わる保証すらどこにもない
そもそも保証がないコードのなんの保証をするわけ?
知恵遅れがいうことはさっぱり理解できないわ

513:デフォルトの名無しさん
18/07/29 12:47:08.34 XJOvENJB0.net
C++相談室 part137 あたりに書き込もうと思った悪態を
間違えてこちらに投稿したのに気づいたが引っ込みがつかなくなった、
という感じがしないでもない。
今までの自分の態度をかえりみると「誤爆しました、すまん」と
書くことも照れ臭いと思ってる、かも知れない。
おそらく俺の勘違い(嫉妬に基づく邪推)だろうけどネ。

514:デフォルトの名無しさん
18/07/29 12:48:26.49 LQAkWqzt0.net
あっちもこっちも
クソニートがえらそうにしてるからな
2ちゃんねるからクソニートの駆除は必要

515:デフォルトの名無しさん
18/07/29 12:50:28.71 LQAkWqzt0.net
むしろあっちでもこっちでも
オレは間違った回答は一切してないからな
すべてカンペキなレスだ
知恵遅れがテキトーなこといってるのは
あっちもこっちも同じ

516:デフォルトの名無しさん
18/07/29 12:57:17.34 Rgaf8fSN0.net
>>475
そりゃvolatileも万能ではないよ
最終的に確認するのは実機デバッグしかない
アセンブラで直接叩くしか解決できない場合もある
ICEで直接追跡しながらプログラムコードとチップの動作を確認するのが組み込みシステムの開発
ただしvolatileすら使わないのでは無駄に書き替え工数が膨れ上がる
最低限の対応はあらかじめ取っておくべき

517:デフォルトの名無しさん
18/07/29 12:57:38.10 Rgaf8fSN0.net
間違えた
>>504

518:デフォルトの名無しさん
18/07/29 13:10:28.41 x0a0gOqsM.net
>>504
このスレの誰もが真っ先にキミを駆除したがってるのに、天才のはずのキミが気づいてない?おかしいねぇ

519:デフォルトの名無しさん
18/07/29 13:14:35.44 LQAkWqzt0.net
クソニートのたまり場から
クソニートを駆除するだけだからな
部屋にいる人間の数より
南京虫やダニやノミの数のほうが多い
そういうスレだ
バルサン焚かないとなまともな人間がよりつかなくなる
その南京虫やダニやノミみたいなオマエを駆除するといってるわけ
わかった?

520:デフォルトの名無しさん
18/07/29 13:26:52.38 OHU95624d.net
>>506
今時、
SFRにアクセスする道具は整ってる
Cで書ける
標準の環境でない場合だけ心配すればいい

521:デフォルトの名無しさん
18/07/29 14:46:05.01 u6NN385t0.net
>>506
volatileの機能は明確に定義されていて
万能だとか頭の悪そうな話は必要ない
実機でデバッグしてコンパイラのバグが発覚することはあって
そのときの状況によってはアセンブラを使うこともあるが
アセンブラで「叩く」って言葉遣いは変だぜ
石を叩くのはCでもできるしな
ところで、おまえさんのところでは
JTAGじゃなくICEって言うのか

522:デフォルトの名無しさん
18/07/29 15:04:54.06 Rgaf8fSN0.net
>>511
インサーキットエミュレータ(In Circuit Emulator:ICE)だな
もっともC言語でプログラム組んでたのは7,8年前までだけどな
当時はルネサス変更前のNECの78K0や東芝のTLCS780、松下(パナソニック)のMN101なんかで組み込み開発をやってた

523:デフォルトの名無しさん
18/07/29 15:12:25.34 h14Y8Y+4d.net
volatileだって書いた通りに動く
コンパイラが信用できないときは逆アセンブルして確認する
実機デバッグしなければならないのは書いたやつが信用できないからで
volatileだからじゃないね
あとjtagはインターフェースのことでデバッガ自体は
ICEと呼ぶかな、うちも

524:デフォルトの名無しさん
18/07/29 15:40:41.02 OHU95624d.net
volatileをつけてコンパイラが(一見)正しいコードを生成しても
CPUが順番を変えて実行したりする
マルチコア、OoO時代は
同期コードを自分で書くのは色々な意味でやめた方が良い
SFRアクセスには使えるが

525:デフォルトの名無しさん
18/07/29 15:52:36.85 OHU95624d.net
>>513
本来の意味のICEなんて絶滅寸前

526:デフォルトの名無しさん
18/07/29 17:56:25.83 VgN+++E0a.net
夏はアイスだよね~

527:デフォルトの名無しさん
18/07/29 17:57:28.24 +KuOy2bC0.net
割り込み禁止って今のOSだと無意味?

528:デフォルトの名無しさん
18/07/29 18:45:23.92 Ga4xmacd0.net
>>517
普通に使ってると思うけど?

529:デフォルトの名無しさん
18/07/29 19:38:18.03 u6NN385t0.net
ユニプロセッサからマルチプロセッサへパラダイムシフトするにあたって
1つのCPUだけ割り込み禁止してもどうたらって話だろ

530:デフォルトの名無しさん
18/07/29 20:17:45.56 VgN+++E0a.net
>>517
それはOS上で動くプログラムの受け取るシグナルの話?
それなら特定のやつ以外は禁止したり自分でハンドら書いたりできるわけだが。
そういう話ではない?

531:デフォルトの名無しさん
18/07/29 20:20:49.84 LQAkWqzt0.net
もしかして
ハードウェア割込とソフトウェア割込の違いすら分かってないのが
レスしてんのか

532:デフォルトの名無しさん
18/07/29 20:25:27.65 LQAkWqzt0.net
そもそもデバイスがCPUより超遅いことが分かってないようなのが
一瞬で値が変わってたのが、それが変わらなくなったらどうすんのとかいってるレベルだからな
ホントなコイツラの程度がイロイロと知れるわ

533:デフォルトの名無しさん
18/07/29 20:25:43.86 QevJM+ENd.net
いい加減秋田

534:デフォルトの名無しさん
18/07/29 20:35:45.02 2vtczMQ4M.net
>>519
どの割込みの話ししてるのか良くわからんけど、デバイスからの割り込みって予め指定したプロセッサが受け取る実装が多いぞ

535:デフォルトの名無しさん
18/07/29 20:44:07.76 YD8oKrYq0.net
良くわからん人は素直に>>514の通りにしなさい
ここで一言で語れるような内容じゃないから

536:デフォルトの名無しさん
18/07/29 20:44:37.09 YD8oKrYq0.net
特に半角君

537:デフォルトの名無しさん
18/07/29 20:47:29.08 LQAkWqzt0.net
低学歴知恵遅れがドヤ顔で書いてるOoOの問題なんか
分かった上でオレはカンペキなレスしてるからな

538:デフォルトの名無しさん
18/07/29 20:48:20.64 LQAkWqzt0.net
もうねドヤ顔でレスしてるヤツの知能レベルが
致命的に低いワケ

539:デフォルトの名無しさん
18/07/29 20:50:38.73 YD8oKrYq0.net
完璧なヤツが遅いとか速いとか
ハード割り込みとかソフト割り込みとか
まったくとんちんかんwww
書けば書くほど痛い

540:デフォルトの名無しさん
18/07/29 20:51:15.80 LQAkWqzt0.net
はい低学歴のレス頂きました

541:デフォルトの名無しさん
18/07/29 20:52:18.31 LQAkWqzt0.net
レスで簡単に判定できる
コイツはクソニート
コイツは低学歴
超簡単

542:デフォルトの名無しさん
18/07/29 20:55:32.94 u6NN385t0.net
ソフトウエア割り込みとかバカかw
センズリ野郎

543:デフォルトの名無しさん
18/07/30 16:36:28.63 3BqaNEe76.net
キーボードから実数値を入力
3件のみを値が多い順に出力
最初にデータの件数(3件以上で、最大で100件とする)を入力
100件を超える場合、「エラー」と出力
ソートを使うみたいです。よろしくお願いします。

544:さまよえる蟻人間
18/07/30 17:03:31.87 hdlApzlBd.net
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]);
}
...

545:さまよえる蟻人間
18/07/30 17:04:07.39 hdlApzlBd.net
比較関数をqsortに渡せ。

546:デフォルトの名無しさん
18/07/30 17:56:36.84 n1wK/LR00.net
アレ? 蟻のarrayはint配列だけど、問題で要求してるのは実数値じゃね?

547:デフォルトの名無しさん
18/07/30 18:03:34.93 ehNSvi3pM.net
値が大きい順なのか
値の出現回数が多い順なのか

548:さまよえる蟻人間
18/07/30 18:12:03.23 6ITjo5O70.net
arrayをdoubleかfloatの配列にしてくれ。すまん。

549:デフォルトの名無しさん
18/07/30 18:38:36.45 xHVHgAPAa.net
夏休みの宿題か・・・

550:デフォルトの名無しさん
18/07/30 18:47:55.30 6X4H9pr00.net
floatならscanf/printfともに%f
doubleならscanfは%lfでprintfは%f

551:デフォルトの名無しさん
18/07/30 18:57:52.63 xHVHgAPAa.net
100件入力しても最初の3件だけを大きい順ではなく多い順に並べると・・・
変な宿題だな。読み間違えてないか?

552:デフォルトの名無しさん
18/07/30 19:07:25.93 Ei1MMj+i0.net
入力データに重複を許し、その出現数をカウントしろとか?

553:デフォルトの名無しさん
18/07/30 19:26:58.25 aSIGzv/D0.net
上位3件

554:デフォルトの名無しさん
18/07/30 19:27:37.61 aSIGzv/D0.net
だろ
普通に考えて

555:デフォルトの名無しさん
18/07/30 19:28:21.43 xHVHgAPAa.net
3件しかデータがないのに多い順となるとその内2件が同じ値でなければできない。
3件とも違うとか、あるいは3件とも同じなら並べかえる必要がない。
更に配列の先頭の二つが同じなら並べ変える必要がない。
それは既に多い順になっている。または全て同じ値だ。
とすると二番目の値と三番目の値を比較し、同じだったら最初の値と三番目の値を入れ換えれば良い。
三つとも全て同じ値の時に無駄な入れ換え処理をすることになるが、この程度はよかろう。

556:デフォルトの名無しさん
18/07/30 19:29:45.17 xHVHgAPAa.net
>>543
知らんがな。

557:デフォルトの名無しさん
18/07/30 19:37:02.99 aSIGzv/D0.net
「3件のみを」は「出力」にかかる
「値が多い」だから出現回数順
「多い順」のソート対象は書いてないが
普通に考えれば入力した全数
これがおれの解釈

558:デフォルトの名無しさん
18/07/30 19:43:33.82 WDgnZ3L+0.net
出現頻度の上位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, を出力する

559:デフォルトの名無しさん
18/07/30 19:44:19.20 v5YMtZ310.net
整数値ではなくて実数値で出現回数って些か問題に無理がないか?

560:デフォルトの名無しさん
18/07/30 19:56:43.56 xHVHgAPAa.net
>>547
その解釈が恐らく正しいと思うが、元の文章は素直に読むとそうならんよなあ。

561:デフォルトの名無しさん
18/07/30 19:58:59.40 WDgnZ3L+0.net
値の大きい順に上位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]);
・・・・

562:デフォルトの名無しさん
18/07/30 20:08:25.88 aSIGzv/D0.net
>>550
そういう解釈も可能

563:デフォルトの名無しさん
18/07/30 20:10:45.97 aSIGzv/D0.net
色々な解釈が可能な文
仕様書からコードにするときには
複数の解釈が無いか気にした方が良い

564:デフォルトの名無しさん
18/07/30 20:17:02.90 kECQyXHfp.net
すみません。値が大きい順です。お願いします。

565:デフォルトの名無しさん
18/07/30 20:21:05.16 Ei1MMj+i0.net
良い試験問題だなw

566:デフォルトの名無しさん
18/07/30 20:23:08.08 aSIGzv/D0.net
ずこーっ
上位3個でqsortとか使うのはアホ

567:デフォルトの名無しさん
18/07/30 20:25:48.38 r0zEs9EBa.net
ああ。sortコマンドとheadコマンド使いたくてうずうずする。

568:デフォルトの名無しさん
18/07/30 20:30:04.49 r0zEs9EBa.net
上位三つなら全部チェックすりゃあ良いんじゃないか?
ループとif文3つか?

569:デフォルトの名無しさん
18/07/30 20:39:55.63 WDgnZ3L+0.net
なんやソート使えという制限はないのか

570:デフォルトの名無しさん
18/07/30 22:01:25.27 WHL4n1uA0.net
ココではquickselectというアリゴリズムを使いなさい
というのが正解
やっぱりなこのスレは浅はかなクルクルパーしかいないわ

571:デフォルトの名無しさん
18/07/30 22:06:32.60 Ei1MMj+i0.net
>>560
上位3名に入れそうだね?

572:デフォルトの名無しさん
18/07/30 22:17:34.44 aSIGzv/D0.net
quickselectもアホ
上位3個なら原始的なアルゴリズムが一番速い

573:デフォルトの名無しさん
18/07/30 22:18:31.28 aSIGzv/D0.net
速くて簡単でリソースも使わない

574:デフォルトの名無しさん
18/07/30 22:19:07.01 Z5guDo9v0.net
課題みたいだし
・バブルソートを書けるか
・保持する要素は3つでいいことに気付けるか
をみる定型問題だろね

575:デフォルトの名無しさん
18/07/31 08:53:15.13 CiY/UjgCK.net
アルゴリズムもわかってない
まず、問題解決のための適切なアルゴリズムの選択ができない
クイックソートは明らかに適切ではない
ここではクイックセレクトが適切
確かにこのスレには
まともな教育を受けたのはいない
基本的になにも知らなすぎる
白痴に近い

576:デフォルトの名無しさん
18/07/31 09:25:34.54 quzd6t9e0.net
クイックセレクトってどんなアルゴリズムなん?
元はクイックソートだけどソートしないで選択するだけって感じ?

577:デフォルトの名無しさん
18/07/31 09:39:58.84 +/oTEV5Ja.net
>>566
無駄な比較をしない感じ

578:デフォルトの名無しさん
18/07/31 11:52:18.67 Sty7sRvnH.net
>>566
パーティショニングして目的の順位を含む方だけ再帰

579:デフォルトの名無しさん
18/07/31 12:06:11.93 TL2AM5+0M.net
あー、そういうことか

580:デフォルトの名無しさん
18/07/31 12:43:01.65 xftY0DAGd.net
明らかに上位3個の抽出には向かない

581:デフォルトの名無しさん
18/07/31 12:45:03.91 xftY0DAGd.net
最大値を探すのにクイックセレクトを使うアホはいない
そういうこと
3個でも同じ

582:デフォルトの名無しさん
18/07/31 13:12:03.24 kZi5wZ5a0.net
入力毎に判定。
3プールのmin以下なら無視。
maxより大きいなら順位シフト。
mid以下ならmin上書き。
それいがいはmidをminにしてmid上書き。

583:デフォルトの名無しさん
18/07/31 13:17:53.66 xftY0DAGd.net
そういう原始的なアルゴリズムが最良

584:デフォルトの名無しさん
18/07/31 13:21:36.88 xftY0DAGd.net
最悪パターンは小さい順に並んだ時だが
これでもせいぜい数倍になるだけ
クイックセレクトの最悪値は酷い
もちろん典型例でも原始的アルゴリズムの方が速い
元データも変更不要
メモリも3個分だけ

585:デフォルトの名無しさん
18/07/31 13:29:26.70 NZiCEZHW0.net
1,ソート対象...data[5, 3, 12 ,8 ,6]
2,メモリをソート対象の最大値個数分確保...a[12]
3,ループでa[5]=data[5], a[3]=data[3]...と全部入れる
4.詰めてオシマイ
史上最速ソートだと思わないか?ループ1回で終わるどw
 

586:デフォルトの名無しさん
18/07/31 13:45:59.26 j6W8yzMq0.net
>>575
バケットソートだね~
値の重複がある場合はリストをつなぐ必要があるし
今回の問題は要素が実数値だから不適になっちゃうけど

587:デフォルトの名無しさん
18/07/31 13:49:32.57 hTiFVqvS0.net
質問内容によるとソート対象は実数値なんだが

588:デフォルトの名無しさん
18/07/31 13:49:52.96 NZiCEZHW0.net
>>576
あ、そういう名前で実際あるんだね・・・
素晴らしいアイディアだと思ったのに(´・ω・`)

589:デフォルトの名無しさん
18/07/31 14:44:47.46 riS9l2jZ0.net
値をいれる必要はない。
各要素を出現回数のカウンタにすれば重複数も記録できる。
だがこれができるのは入力が整数で表せる場合だけ。

590:デフォルトの名無しさん
18/07/31 14:46:44.33 UZkSYp0La.net
ま、しかし、普通の数値で100しかデータがないと今時のPCだとどんなアルゴリズム使っても人間が感じられないぐらいのスピードで実行しちゃうと思う。
わざとsleepとかするなら別だが。

591:デフォルトの名無しさん
18/07/31 14:57:40.88 PCFGvven0.net
今は熱対策が必要だな

592:デフォルトの名無しさん
18/07/31 17:49:39.11 xftY0DAGd.net
>>580
桁数が異常に長い入力とか
チープなマイコンとか
まあ色々と考えられる

593:デフォルトの名無しさん
18/07/31 17:55:01.37 UZkSYp0La.net
あー。1万桁のデータが100個とか。w

594:デフォルトの名無しさん
18/07/31 17:58:48.84 zWbJ6Mhya.net
スレッドの引数に渡す構造体を↓みたいにして、
クラスのメンバ関数ポインタを渡そうとしたんですがエラーになります。
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;
}

595:デフォルトの名無しさん
18/07/31 18:03:58.43 Yh1Yhi2x0.net
最近はC言語にクラスがあるの?

596:デフォルトの名無しさん
18/07/31 19:15:37.92 NZiCEZHW0.net
static void Call()

597:デフォルトの名無しさん
18/07/31 20:20:43.19 4WdKzGL90.net
#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++の構造体でも同じように書ける

598:さまよえる蟻人間
18/07/31 20:29:50.71 qpn2fVfCd.net
ばかばっか

599:デフォルトの名無しさん
18/07/31 20:29:50.72 V319xmHP0.net
>>584
節子それc言語やないで

600:デフォルトの名無しさん
18/07/31 20:33:19.91 j6W8yzMq0.net
>>584
完全にC++ですやん
URLリンク(ideone.com)
とりあえずstd::functionの使いどころかなとは思うけど

601:デフォルトの名無しさん
18/07/31 21:00:04.51 YzKZx0BTa.net
>>590
これっぽいですね、ありがとうございます
オブジェクトポインタと関数ポインタを別スレッドに渡して、
スレッドでその関数を定期的にコールすることをしたかったんです

602:デフォルトの名無しさん
18/07/31 23:06:10.75 ljgZb1RQ0.net
次からはC++の質問はC++のスレへ。

603:デフォルトの名無しさん
18/08/01 16:42:35.83 9yb7YrdQ0.net
クイックソートのwikipediaに書いてあるc言語のソースに、
【value_type tmp, pivot = med3(a[i], a[i + (j - i) / 2], a[j]); /* (i+j)/2 ではオーバーフローしてしまう */】
と書いてあるのですが、「(i+j)/2ではオーバーフローしてしまう」のオーバーフローする場合がまったくわかりません。
教えていただけますか。

604:さまよえる蟻人間
18/08/01 17:40:34.16 TGp/sEuFd.net
i, jがどんな値かによる。
i == 0x7fffffff && j == 0x7fffffff
で、i + jがどんな整数値になるか考えたまえ。

605:デフォルトの名無しさん
18/08/01 18:09:35.03 9yb7YrdQ0.net
ありがとうございます。理解出来ました。
下限上限への理解がまだまだでした…

606:デフォルトの名無しさん
18/08/01 18:20:26.56 edgaccID6.net
>>593
unsigned char i=128,j=128,k;
k=i+j;

607:デフォルトの名無しさん
18/08/01 19:46:12.42 xh0kKqMn0.net
>>584が578のやり方でtest.Callのアドレスを渡せないのはなんでなん?理由が知りたい。

608:デフォルトの名無しさん
18/08/01 20:21:01.54 jfFEYUCE0.net
>>597
まず瑣末だけど、 test.call じゃなくて &Test::Call でメンバ関数のポインタを取らなきゃいけないってのはあるけど それはいいとして
ざっくり言えば「メンバ関数の型はクラスの型を含んでて、普通の関数とは型違うから」ってとこかねー
# g++
エラー: cannot convert ‘void (TestClass::*)()’ to ‘void (*)()’ in assignment
info.pfunc = &TestClass::Call;
スレチなので 解答が不足ならば「C++相談室」か「スレ勃てるまでもないC/C++の質問はここで」辺りで願います 
詳しい人いるだろうし

609:デフォルトの名無しさん
18/08/01 20:28:43.32 xh0kKqMn0.net
>>598
そのざっくりな説明だけでもわかりやすい。なるほどありがとう。

610:デフォルトの名無しさん
18/08/01 20:34:52.96 xh0kKqMn0.net
ググったら安定のロベールさん出てきた。買った方がいいなこれ基礎力でえらい差が出てしまう気がしてきた

611:デフォルトの名無しさん
18/08/01 20:52:58.87 WDXOLOCva.net
C++の話はC++スレでやれ。

612:デフォルトの名無しさん
18/08/01 21:33:20.86 jJEMbL0b0.net
なんだ結局ロベールのステマかよしょうもねえな

613:デフォルトの名無しさん
18/08/01 22:23:36.11 ArWxfDp8a.net
>>598
分かりやすい説明

614:デフォルトの名無しさん
18/08/02 00:25:44.59 6TeXhDWV0.net
オーバフロー以前に
ポインタ同士の足し算なんかしないからな(Cでは普通のやりかたではできない仕様になってる)
ポインタ同士の足し算なんかしたらおもいっきりオーバーフローすることがあるからな
つまり簡単にオーバーフローはおきうる
ポインタにはアドレスが入ってるからな
やってることは
基準になるオフセット(ここでは左端)に距離を足すだけといっていい
距離は通常ポインタの引き算で求める
距離は左端と右端の距離の半分の距離に
基準になるオフセットに足す
すると中間点になる
つまり中間点固定
しかしピボットが中間点固定だと最悪のケースの場合
クイックソートはものすごく遅くなる
で、ピボットを乱数で選択することで
その最悪のケースを回避するというやりかたもある
実際の現実のデータでそんな最悪のケースはほぼないといっていい

615:デフォルトの名無しさん
18/08/02 00:29:26.39 c3/ck1cgd.net
すいません初心者です、質問なんですが・・・
for文を使うときにfor(i = 1 ;i <= 5 ;i++ )でiが5より増えたときにループを抜けるようにiを1ずつ増やすというのは分かるんですが
何故ループするときにfor文のi = 1の代入の部分は無視されるんでしょうか・・・

616:デフォルトの名無しさん
18/08/02 00:39:59.52 6TeXhDWV0.net
そういう制御文だからな
そういう仕様だ
for ( [ループ前に行う演算]; [ループが処理される条件]; [次のループが処理される前に行う演算] )
i = 1;
whlle (i <= 5) {
 ・・・
 i++
}
と同じ
どれもすべて入れても入れなくてもいい
for (;;) こう書くと無限ループになる

617:デフォルトの名無しさん
18/08/02 00:43:35.36 c3/ck1cgd.net
なるほどそういう仕様だったんですね・・・
丁寧にありがとうございますこれでようやく眠れる

618:デフォルトの名無しさん
18/08/02 01:18:26.80 4HyEhcJnM.net
>>606
continueがあるとちょっと書き換えが必要だけどね

619:デフォルトの名無しさん
18/08/02 06:45:33.31 S4Pms+eVM.net
>>608
書き換え?
i = 1;
whlle (i <= 5) {
 ・・・
 goto CONTINUE;
 ・・・
CONTINUE:
 i++
}
ってやるだけだろ

620:デフォルトの名無しさん
18/08/02 07:13:00.94 PxPZ0mdd0.net
それが書き換え
ってのが>>608の主張だろ

621:デフォルトの名無しさん
18/08/02 09:43:21.84 NSwKZwuS0.net
for文でのcontinueの挙動を最近知ったばかりで自慢したかったんだろ

622:デフォルトの名無しさん
18/08/02 09:48:48.46 Bu8RCR+yd.net
if
for
while
do while
goto
break
continue
このくらいしか無いんだから全部覚えとけ
なぜかgotoの使い方を知らんヤツが多い
多重ループを抜けるのにわざわざフラグを使うアホとか

623:デフォルトの名無しさん
18/08/02 10:51:33.79 NSwKZwuS0.net
使い方を知らんというより
絶対使うなと刷り込まれているのが多い
なぜだと聞いても答えられないやつ全員

624:デフォルトの名無しさん
18/08/02 12:55:13.95 Cp7uV85Za.net
gotoは悪という教義のある宗教の信者だから仕方がない。

625:デフォルトの名無しさん
18/08/02 13:54:18.40 4fjj7SMLd.net
大体使わなくて済むし
使う必要がある時に
さりげなく使うもの

626:デフォルトの名無しさん
18/08/02 14:17:14.48 TfLreE+60.net
全く使わない 脱出用途なら使う 飛び込みでも使う

627:デフォルトの名無しさん
18/08/02 16:25:02.06 SFe9zIxEa.net
脱出時だけ使ってるな。
関数の途中で複数エラーが出る可能性がある場合とかは関数の最後の方にgotoさせてそこでまとめてメモリ解放などをする。
他の言語だと例外投げて try catch でなんとかするようなやつだな。

628:デフォルトの名無しさん
18/08/02 18:05:39.94 QNpgl+2ZM.net
飛び込みはやめーや

629:デフォルトの名無しさん
18/08/02 18:57:08.60 yzfiTIk96.net
脱出はreturnにすればいい

630:デフォルトの名無しさん
18/08/02 19:01:34.31 xZR22mJ60.net
returnが複数あるのを嫌がる宗派があるからなあ

631:デフォルトの名無しさん
18/08/02 19:11:54.12 1EegAYN5d.net
>>619
宗教の信者さん?

632:デフォルトの名無しさん
18/08/02 19:12:56.06 jJ76BOdj0.net
初期化(1) if (エラー) goto E1;
初期化(2) if (エラー) goto E2;
初期化(3) if (エラー) goto E3;
 :
return おっけー
E3: (3) の後始末
E2: (2) の後始末
E1: (1) の後始末
return エラーじゃ

633:
18/08/02 19:15:38.12 hFhSdR7O0.net
>>620
確かに、misra が全力でそれを嫌うのは、なにか理由があってのことでしょうか?

634:デフォルトの名無しさん
18/08/02 19:20:08.81 zwgkA1lD0.net
>>622
俺もこれ派だわ

635:デフォルトの名無しさん
18/08/02 19:26:51.94 1EegAYN5d.net
○○派とか言うと他の方法を知らないように感じる
臨機応変に色々の方法を使い分けるのが良い

636:デフォルトの名無しさん
18/08/02 19:33:21.75 xZR22mJ60.net
コーディング規約を決める偉い人の信仰心に依存する、か

637:デフォルトの名無しさん
18/08/02 19:35:06.17 zwgkA1lD0.net
>>625
あとよく使うのがagainだな
ループでagainしたい時に上に飛ぶやつ

638:デフォルトの名無しさん
18/08/02 19:41:55.73 1EegAYN5d.net
コーディング規約を偉い人が決めるような会社は嫌だな

639:デフォルトの名無しさん
18/08/02 19:43:01.73 1EegAYN5d.net
偉い人はもっと大きな事を考えて

640:デフォルトの名無しさん
18/08/02 20:10:50.62 Cjo1mv3c0.net
エラー起こす前にちゃんと検査しろ。

641:デフォルトの名無しさん
18/08/02 20:30:01.75 1NEFWSVpM.net
retryとoutは使うわ
後始末不要ならその場でreturn
後始末必要なら最後にreturn
まあこの辺の書き方より関数名、変数名、変数の数を気にして欲しいと思う今日この頃

642:デフォルトの名無しさん
18/08/02 22:24:28.26 NSwKZwuS0.net
Cのgotoが関数から出られない、という時点で
悪しきgotoの大部分が封じられているんだけど
せっかくそうなって�


643:「るのに1関数で数千行なんてやらかす 何というか吹っ切れたやつが暗黒面に墜ちていると とんでもねえんだよ



644:
18/08/02 22:30:24.78 hFhSdR7O0.net
>>632
>Cのgotoが関数から出られない、という時点で悪しきgotoの大部分が封じられている
ところがどっこい、setjmp()/longjmp() というものがありまして…

645:デフォルトの名無しさん
18/08/02 22:43:04.03 xZR22mJ60.net
longjmpでイスカンダルまで飛びたいんですけど
何故か地球に戻ってしまいます

646:デフォルトの名無しさん
18/08/03 02:01:51.21 TY6Sib0f0.net
イスカンダルのトーフ屋

647:デフォルトの名無しさん
18/08/03 05:37:20.02 o9dqmONZ0.net
孫悟空はsetjmp/longjmpの使い手

648:デフォルトの名無しさん
18/08/03 09:55:27.36 UvsVeV1Q0.net
組込み人は状態変数でワープする。

649:デフォルトの名無しさん
18/08/03 10:02:42.04 8VyIMXmS0.net
スタック上の戻りアドレスを自分で操作して、好きな場所にワープさせてた奴いたっけな

650:デフォルトの名無しさん
18/08/03 10:12:18.20 9KGEdKKU0.net
>>633
longjmpで悪しきgotoを
やって見せてくれ
ideoneで

651:デフォルトの名無しさん
18/08/03 14:40:50.79 9KGEdKKU0.net
悪しきgotoの大部分を封じるときに
巻き添えで封じられた悪しくないgotoを救う
アイテムがlongjmpだろうがよ

652:デフォルトの名無しさん
18/08/03 19:36:07.75 4c00FTp80.net
gotoの効率の良さは取立ての生うにの味

653:デフォルトの名無しさん
18/08/03 20:15:47.20 X+nM2ZWla.net
gotoは良く切れる刀のようなもの。
その怪しい魅力に取り憑かれダークサイドに堕ちた者は数知れず。

654:デフォルトの名無しさん
18/08/03 20:42:44.92 6lqoN/6FM.net
昔のBASICはその鋭い刃しかなかったってことか

655:デフォルトの名無しさん
18/08/03 20:43:55.37 I1YZhHYF0.net
GOSUBとかなかった?

656:デフォルトの名無しさん
18/08/03 20:49:49.72 8VyIMXmS0.net
fortranからの伝統芸

657:デフォルトの名無しさん
18/08/03 21:11:54.24 1LNshpyd0.net
その昔サブルーチンの存在を知らなかった頃
gotoだけでスタックオーバーフロー的な
破綻をさせないで組んだのは結構自分の糧になってる
大人になってコーディング規約を作る側になった時
脱出のみ使用可能ってルールを作ったら
頑なに拒否するメンバーがいて仕事を外れてもらったことがる
宗教じみた反応でちょっと怖かった

658:デフォルトの名無しさん
18/08/03 22:31:36.61 yp/iEsny0.net
gotoなんかよほどの理由がない限り使わない
適切に構造化できないアホが使うとロクなことにならない
原則禁止でいい

659:デフォルトの名無しさん
18/08/03 23:20:08.07 yp/iEsny0.net
>>622なんかではgoto使うケースなんかほぼない
普通にコード書いてればgotoなんかなくなる
後始末の仕方が判定できないコードを書くと
初期化が終わったあと、その初期化がむしろ不要になった場合その後始末が大変になる
知恵遅れほどいちいち不要なgotoを使いたがるからな
#define ERROR_INIT_AHO0 -1
#define ERROR_INIT_AHO1 -2
#define ERROR_INIT_AHO2 -3
#define ERROR_INIT_AHO3 -4
typedef struct tag_aho { char* p1; int fd2; FILE* fp3; } t_aho_t;
int 初期化(t_aho_t** ppt_aho) {
 t_aho_t* pt_aho;
 *ppt_aho = NULL;
 if ((pt_aho = malloc(sizeof(t_aho_t)) == NULL) { return ERROR_INIT_AHO0; }
 *ppt_aho = pt_aho;
 if ((pt_aho->p1 = malloc()) == NULL) { 後始末(pt_aho); return ERROR_INIT_AHO1; }
 if ((pt_aho->fd2 = open()) < 0) { 後始末(pt_aho); return ERROR_INIT_AHO2; }
 if ((pt_aho->fp3 = fopen()) == NULL) { 後始末(pt_aho); return ERROR_INIT_AHO3; }
 return 0;
}
void 後始末(t_aho_t* pt_aho) {
 if (pt_aho == NULL) return;
 if (pt_aho->p1 != NULL) { free(pt_aho->p1); }
 if (pt_aho->fd2 > 2) { close(pt_aho->fd2); }
 if (pt_aho->fp3 != NULL) { fclose(pt_aho->fp3); }
 free(pt_aho);
}

660:デフォルトの名無しさん
18/08/03 23:26:42.29 Fao22p7ya.net
gote使う前にそのループを関数化で分ける

661:デフォルトの名無しさん
18/08/03 23:29:40.43 yp/iEsny0.net
正解!

662:デフォルトの名無しさん
18/08/03 23:34:32.92 yp/iEsny0.net
>>648の簡単な例なら最初のmallocのあと
pt_aho->p1 = NULL;
pt_aho->fd2 = -1;
pt_aho->fp3 = NULL;
と初期化しておくだけでどう後始末すれば判定できる

663:デフォルトの名無しさん
18/08/03 23:44:52.51 8VyIMXmS0.net
>>651
後始末ってエラー時だけじゃなく終了時にも使いたいから
未使用かどうかを分かる様にしとくと色々便利だよね

664:デフォルトの名無しさん
18/08/04 00:39:50.00 iUNKVgUH0.net
Linux は、goto でエラー処理をまとめてる
return も、2箇所以上で使っている。
関数の冒頭で、処理しないものを、return ではじいたりしてる
MISRA-C のルール違反
トヨタなんか、MISRA-C で、5/100点とか聞くw
ルールの95% に違反w

665:デフォルトの名無しさん
18/08/04 04:04:56.84 2zclIjyW0.net
>>648
それだと毎回その関数用の構造体を作らねばならなくなっていまいち面倒ではないか?俺は>>622とその方式組み合わせたような感じにしてるよ。
int func()
{
 int r = -1;
 char *p1 = NULL;
 int fd2 = -1;
 FILE *fp3 = NULL;
 if ((p1 = malloc()) == NULL) goto func_exit;
 if ((fd2 = open()) == -1) {
  r = -2;
  goto func_exit;
 }
 if ((fp3 = fopen()) == NULL) {
  r = -3;
  goto func_exit;
 }
 /* 処理 */
 // ここで p1, fd2, fp3 を使い終わった場合は func_exit より後でメモリ開放や
 // クローズされないようにするために -1 や NULL を代入する。
 r = 0; // 成功
func_exit:
 if (p1) free(p1);
 if (fd2 != -1) close(fd2);
 if (fp3) fclose(fp3);
 return r;
}

666:デフォルトの名無しさん
18/08/04 05:10:46.07 YA1hWK5Y0.net
>>647
適切に構造化できないアホさん乙

667:デフォルトの名無しさん
18/08/04 05:53:52.28 I5yMWHTla.net
>>654
goto使わず普通に関数呼べばいいだけでは

668:デフォルトの名無しさん
18/08/04 07:40:44.39 YA1hWK5Y0.net
int func()
{
int r = 1;
//無駄な初期化はしない
char *p1;
int fd2;
FILE *fp3;
p1 = malloc(); if(p1 == NULL) goto


669:malloc_failure; fd2 = open(); if(fd2 == -1) goto open_failure; fp3 = fopen(); if(fp3 == NULL) goto fopen_failure; r = 0; // 成功 //フラグの類は極力使わない fclose(fp3); fopen_failure: close(fd2); open_failure: free(p1); malloc_failure: return r; }



670:デフォルトの名無しさん
18/08/04 08:12:49.13 mQQzn2Q+0.net
gotoを使った方がシンプルで見易いコードになるにも関わらず
頑なに使わない信者さん
>>612の振りで始まったにも関わらずたくさん出てくるね

671:デフォルトの名無しさん
18/08/04 08:15:22.02 mQQzn2Q+0.net
わざわざ専用構造体と専用後始末関数と専用エラーコードをつくってわざわざ複雑にしてるアホもいるし
変数名で自己紹介してるから自覚はあるんだろうけど

672:デフォルトの名無しさん
18/08/04 08:22:18.05 mQQzn2Q+0.net
初期化と後始末を包んだ関数もいるね
十数行で済むシンプルな関数に
何十行使うつもりだか

673:デフォルトの名無しさん
18/08/04 08:32:14.97 cyc8bEPyM.net
Ok, so I'm looking at your code and your code is pure and utter *shit*.

674:デフォルトの名無しさん
18/08/04 08:42:16.32 +vznLLf60.net
goto hell

675:デフォルトの名無しさん
18/08/04 09:32:53.84 AH7fLvgn0.net
>>653
MISRAの話だとそういう制御の話がよく取り上げらてて俺もほとんど守ってないけど、データ変換の話はよく考えられててなかなか為になるよ

676:デフォルトの名無しさん
18/08/04 09:33:52.60 AH7fLvgn0.net
>>656
最初の一文も読めないよのかよ…
> それだと毎回その関数用の構造体を作らねばならなくなっていまいち面倒ではないか?

677:デフォルトの名無しさん
18/08/04 10:21:26.55 CpwGeL+S0.net
アホは後始末しないのもわかったわ
初期化がおわったあと
ファイルあけたらずーっとあけっぱなし
ヒープ作ったら作りっぱなし
なにがおきようが関数抜けたらずーっと放置
まずその部分で完結したコードが書けない
だいたいどんな知恵遅れがコード書いてんのか分かった
アホが自己紹介のコード書いてるしな

678:デフォルトの名無しさん
18/08/04 10:43:47.43 +vznLLf60.net
それは時代遅れの化石言語Cのせい

679:デフォルトの名無しさん
18/08/04 11:02:01.24 CpwGeL+S0.net
やはりな
Cはオレみたいにエレガントなコード書けるヤツでないと使えない
オレみたいなプロフェッショナルでないとムリ
Cは言語規格が非常にシンプルで非常に優れている言語だからな
シンプルなせいで敷居も低い
そのせいでアホでも酷いコードが簡単に書けてしまう
非常に根が深い問題といっていい

680:デフォルトの名無しさん
18/08/04 11:09:25.30 tEqwX/6gd.net
C11で開発してる人はいる?

681:デフォルトの名無しさん
18/08/04 11:14:47.57 /DYnKp4Pa.net
fp = fopen(filen, "rb+");
if(fp == null) {
return 0;
}
func(fpやら処理する価);
fclose(fp);
ファイルオープンに失敗したらもどるし
関数呼び出しの結果がどうだろうと解放されるしgoto使う前にint func(void){return 0;}でわければいい

682:デフォルトの名無しさん
18/08/04 12:43:49.90 2dadGiC9d.net
小さな機能の関数でgotoを避ける為に関数を分けるとか

683:デフォルトの名無しさん
18/08/04 12:44:20.27 2dadGiC9d.net
まさしく宗教ですね

684:デフォルトの名無しさん
18/08/04 12:51:53.82 6FzZ70UGa.net
goto使った方が見易いコードがとかいって関数分けた方が見やすいし戻る場所も関数呼んだ場所で分かりやすい
逆にgotoじゃなきゃ絶対駄目って宗教にはいってるんだろうか

685:デフォルトの名無しさん
18/08/04 13:03:02.54 CpwGeL+S0.net
gotoをさけるためじゃない
適切な初期化と適切な後始末ができる機能を提供している
しかもオレが書いたコードは
全部眺めなくても初期化のしかたと後始末の仕方が分かるエレガントなコードだからな
コードの見通しもよくなる
int void func() {
 t_aho_t* pt_aho;
 int i_ret;
 // 初期化処理
 if ((i_ret = 初期化(&pt_aho)) < 0) {return i_ret; }
 if (read(pt_aho->fd, p_mem, 1) < 0) { 後始末(pt_aho); return ERROR_INIT_AHO4; }
 if (fprintf(pt_aho->fd, "%c\n", *p_mem) < 0) { 後始末(pt_aho); return ERROR_INIT_AHO5; }
 // 終了
 後始末(pt_aho)
}
なんの処理をやってるコードかすぐに分かる
初期化処理と後始末ばっかりが何行も続くコードなんかだれも読みたくないからな

686:デフォルトの名無しさん
18/08/04 13:06:33.93 F7vd0ILk0.net
何年か前、一連のファイル群を読み、内容の検査をするプログラム書いたことがあった
複数Diskに跨がって処理を行っていたが、このDiskの検査はここで打ち切っていいとなったとき
三重ループから一気に抜けるのにgoto使ったな
goto next_disk;
使わないとそうしないと何分も時間を無駄にすることになるのでね
禁止しても良いけど、処理時間が掛かります、我慢してくれますか?ってことだな

687:デフォルトの名無しさん
18/08/04 13:17:16.66 uWq17v08a.net
三十ループなんてやるのだったら間違い無く関数わけする
しかし、関数分けたら処理hourが時間がかかるって
コンパイラが最適化してくれるだろうに

688:デフォルトの名無しさん
18/08/04 14:02:50.07 AH7fLvgn0.net
>>657
まあ俺もこれかな
>>673
正常終了時に戻り値が不定になるコード書いててエレガントとか言われてもなぁ w

689:デフォルトの名無しさん
18/08/04 14:16:48.41 2dadGiC9d.net
>>675
小さな小さな3重ループでも
3重ループという理由だけで
わざわざ関数を分けるの?
関数を分けるべきか分けないべきかは
内容に大きく依存する
分けないべきな時に
gotoの使い方を知らないという理由で
わざわざ複雑にするのがアホだ

690:デフォルトの名無しさん
18/08/04 14:34:30.00 CpwGeL+S0.net
むしろそんなループは関数で分けるほうが適切だからな
だいたいそういうソースは知恵遅れしか追えないようなコードになってる
そして知恵遅れもどういう動きしてるか分からないようなコードになってる

691:デフォルトの名無しさん
18/08/04 14:34:45.90 2dadGiC9d.net
リソースの確保と解放
リソースが単一関数内でしか使わないのであれば
その関数内で1:1で行うのが一番シンプルで分かりやすくコストも低い
gotoを使えばそれがシンプルに実現出来る場合もある
gotoを使わなくても出来る
そりゃそうでしょうが
問題は出来る出来ないじゃない
コード量、パフォーマンス、使用リソース、
分かりやすさ、シンプルさ、安全性、
メンテナンス性、
>>648のような重いコードが良い場合もあれば
>>657のような軽いコードが良い場合もある
色々な方法を臨機応変に使えるのが良い

692:デフォルトの名無しさん
18/08/04 14:49:05.09 CpwGeL+S0.net
だいたいこの程度の制御文で十分なハズだからな
バカはいちいちgoto使って追えないようなコードにするワケ
int ahoaho_exam() {
 for (int i = 0; i_disk_count; ++i) {
  switch (i_ret = ahoaho_exam_disk()) {
   case SKIP_ALL: return SKIP_ALL;
   case SKIP_DISK: continue;
   default: break;
  }
  ・・・(ここでもSKIP_ALLが返却かもしれない)
 }
 return 0;
}
int ahoaho_exam_disk() {
 for (int i = 0; i_dir_count; ++i) {
  switch (i_ret = ahoaho_exam_dir()) {
   case SKIP_ALL: return SKIP_ALL;
   case SKIP_DISK: return SKIP_DISK;
   case SKIP_DIR: continue;
   default: break;
  }
  ・・・(ここでもSKIP_ALL、SKIP_DISKが返却かもしれない)
 }
 return 0;
}

693:デフォルトの名無しさん
18/08/04 14:50:14.72 CpwGeL+S0.net
(続き)
int ahoaho_exam_dir() {
 for (int i = 0; i_file_count; ++i) {
  switch (i_ret = ahoaho_exam_file()) {
   case SKIP_ALL: return SKIP_ALL;
   case SKIP_DISK: return SKIP_DISK;
   case SKIP_DIR: return SKIP_DIR;
   case SKIP_FILE: continue;
   default: break;
  }
  ・・・(ここでもSKIP_ALL、SKIP_DISK、SKIP_DISKが返却かもしれない)
 }
 return 0;
}
int ahoaho_exam_file() {
 ・・・(ここでもSKIP_ALL、SKIP_DISK、SKIP_DISK、SKIP_FILEが返却かもしれない)
 return 0;
}
簡単にループなんか制御できる
こんなもんにgoto使うとか愚の骨頂

694:デフォルトの名無しさん
18/08/04 15:17:23.18 CpwGeL+S0.net
まず処理を小さな単位に分割する能力がない
初期化処理は初期化処理
終了処理は終了処理
基本的にgoto濫用するヤツは知能に著しい欠陥がある傾向がある
複雑な問題を簡単な単純な問題に分割する能力もない
複雑な問題を簡単な問題へと段階的に詳細化していく能力もない
オツムに致命的な欠陥があるとそうなるワケ

695:デフォルトの名無しさん
18/08/04 16:00:07.62 rXNKJXgT0.net
goto くらいで混乱するような頭が不思議でならない。
gotoもlongjmpも普通に使う。
まあでも一つの関数はA4一枚くらいにはまとめて書くようには言っているが、1mくらい
の長いコードを書くやつもいるし俺も2mくらいなら十分ついていける。

696:デフォルトの名無しさん
18/08/04 16:03:48.29 d5qEm5S/0.net
50行で辛い
100行以上は無理

697:デフォルトの名無しさん
18/08/04 16:06:56.87 F7vd0ILk0.net
>>683
昔、ソースが2万行、各関数が200行~400行と言うプログラムをメンテしてた
しかも、それぞれがグローバル変数とスタティック変数を使いまくり
一つの関数がそのスタティック変数の値で自在に動きが変わるという

698:デフォルトの名無しさん
18/08/04 16:20:59.53 CpwGeL+S0.net
あの程度の初期化処理で重いとか軽いとかいってる時点で
もうね知能の程度がしれるワケ
そんなミジンコ未満の検出できないようなレベルの差よりな
オマエが書いたクソコードのボトルネックになってるアルゴリズムを見直したほうがいいわ
なにがボトルネックになってるか検証する能力がまずないからな
前のクイックセレクトのときも知恵遅れの程度がしれたからな
知恵遅れは目的に応じた適切なアルゴリズムの選択もできない
知恵遅れにテキトーにコード書かかせるとだいたいガッカリするような結果になる

699:デフォルトの名無しさん
18/08/04 16:33:39.62 WQN/l48RM.net
gotoの有無なんかより関数の行数、変数の数、ネストの方を気にして欲しいわ
プログラムなんぞ如何にエントロピー抑えるかだけだからな

700:デフォルトの名無しさん
18/08/04 16:40:55.55 eIBb6soGM.net
半角カナ使う奴がドヤッてて笑うわ

701:デフォルトの名無しさん
18/08/04 18:18:57.70 2zclIjyW0.net
>>657
変数が多くなって途中で出るエラーが増えた時に goto の飛び先も同時に増えるな。
まあ、混乱するぐらい増えたら既に何か書き方がおかしくなっているような気もするがw

702:デフォルトの名無しさん
18/08/04 18:40:31.54 CpwGeL+S0.net
例えば、このコード
URLリンク(ideone.com)
 turnaround time ::= 0.0290 sec
 turnaround time ::= 3.9219 sec
この差はなにに起因してるか
この差を解消する必要があるならどうすればいいか
そういったことを検証や分析できないからダメなワケ
もうねレスしてることがトンチンカンすぎるワケ

703:デフォルトの名無しさん
18/08/04 19:22:28.12 2dadGiC9d.net
遅いコードしか書けないヤツが何言っても説得力ゼロ

704:デフォルトの名無しさん
18/08/04 19:30:28.40 YA1hWK5Y0.net
gotoを宗教とか言ってるバカに説得力なんてあったのかw

705:デフォルトの名無しさん
18/08/04 19:34:25.24 2dadGiC9d.net
>>686
クイックセレクトwww
わざわざ自分で恥を広めなくても

706:デフォルトの名無しさん
18/08/04 19:34:56.79 CpwGeL+S0.net
知恵遅れの負けず嫌いは異常だからな
知恵遅れは知恵遅れであることを自覚できない
だから知恵遅れは知恵遅れのまま
一生知恵遅れのまま
頭悪い低学歴底辺ほど自尊心だけは強い
もともとなにもないからっぽだからな

707:デフォルトの名無しさん
18/08/04 19:36:15.87 2dadGiC9d.net
明らかに適さないアルゴリズムを
「クイックセレクトを選ぶのが正解」
とか言い出したアホ
まだこの発言が正しいと思ってるわけじゃないよなwww

708:デフォルトの名無しさん
18/08/04 19:38:00.61 2dadGiC9d.net
速度が要求される低レベル処理に対して
遅い関数を使うアホ

709:デフォルトの名無しさん
18/08/04 19:38:10.32 YA1hWK5Y0.net
形容詞に比較をつけない世間知らずが人様つかまえてアホとかもうあいた口が塞がらない

710:デフォルトの名無しさん
18/08/04 19:38:18.83 CpwGeL+S0.net
クイックソートとかいってた池沼がなんかいってるわ

711:デフォルトの名無しさん
18/08/04 19:38:36.44 2dadGiC9d.net
おまけに学歴コンプ

712:デフォルトの名無しさん
18/08/04 19:40:09.36 2dadGiC9d.net
クイックソートを使うのはアホ
と最初に書き込んだのは私だけど
自分以外は全て同一人物だと思ってるのか?

713:デフォルトの名無しさん
18/08/04 19:42:04.94 2dadGiC9d.net
おれの書き込みを読めば
>>692 が勘違いということがわかる

714:デフォルトの名無しさん
18/08/04 19:43:24.56 YA1hWK5Y0.net
宗教だからね
教祖様が勘違いということにしたければ
いくらでもそういうことにできる
つきあってらんねー

715:デフォルトの名無しさん
18/08/04 19:43:52.39 2dadGiC9d.net
>>689
エラーが増えても修正は2箇所だけ
半角君のコードは何箇所?

716:デフォルトの名無しさん
18/08/04 19:48:39.81 YA1hWK5Y0.net
>>694
自己紹介乙
ここはム板
技術的な話に全く無用のアホワード連発して
何がしたい

717:デフォルトの名無しさん
18/08/04 19:57:51.70 CpwGeL+S0.net
URLリンク(ideone.com)
別の知恵遅れがお勧めしてた方法では(総なめ)
1000万件いかないうちに上位0.1%ですらWebシミュレータが拒否するほど酷い結果になってる
turnaround time ::= 4.8076 sec
※ 5秒越えたら実行されない
オレのエレガントなコードでは知恵遅れが最悪のケースといってたデータでも同じ条件も余裕
URLリンク(ideone.com)
turnaround time ::= 0.0534 sec
turnaround time ::= 0.0126 sec

718:デフォルトの名無しさん
18/08/04 20:01:49.72 CpwGeL+S0.net
やっぱりなPGなんか日本では低学歴しかやってない

719:デフォルトの名無しさん
18/08/04 20:03:50.94 YA1hWK5Y0.net
自己紹介乙
類は友を呼ぶ
つきあってる範囲がそういうこと
というだけ

720:デフォルトの名無しさん
18/08/04 20:03:55.23 CpwGeL+S0.net
低学歴ですと自白してるヤツが何人かいるわ
わかりやすい

721:デフォルトの名無しさん
18/08/04 20:04:35.09 YA1hWK5Y0.net
おまえだよ、おまえ

722:デフォルトの名無しさん
18/08/04 20:05:02.83 CpwGeL+S0.net
よほど低学歴なのが悔しいらしいな
残念なことに低学歴なのはレスからすぐにわかっちゃうワケ
バレてないと思ってるわけか。。。

723:デフォルトの名無しさん
18/08/04 20:06:23.48 YA1hWK5Y0.net
高学歴が1人でもいたら
おまえの主張は破綻する
つーかセンズリこき野郎はwinnyくらい使ってるだろ?

724:デフォルトの名無しさん
18/08/04 20:13:46.86 QBtHPmTG0.net
コンストラクタ/デストラクタの機構があれば楽できるのにな と思うことはある

725:デフォルトの名無しさん
18/08/04 20:15:59.70 2dadGiC9d.net
>>705
トップ3個だぞ
あと最悪データの意味わかる?
なんで最悪データの方が速い?

726:デフォルトの名無しさん
18/08/04 20:18:25.93 CpwGeL+S0.net
そもそもクイックセレクトがどんなアルゴリズムかすら分かってない
だから最悪な条件がどういう状態をさしてるのか分かってすらない
まあお話にならないわ
まともな教育を受けてないヤツと
話がかみあうわけがない

727:デフォルトの名無しさん
18/08/04 20:19:50.04 YA1hWK5Y0.net
低学歴→まともな教育受けてない
ぶははは

728:デフォルトの名無しさん
18/08/04 20:22:49.07 CpwGeL+S0.net
低学歴じゃなかったら
最低でも最悪の条件が分かってる上で
議論に参加するからな
そんなことも分からずに低学歴でもテキトーな書き込めるのが2ちゃんねるだからな
バレてないと思ってるらしいが低学歴とニートというのはレスからすぐにバレる
残念なことにな

729:デフォルトの名無しさん
18/08/04 20:23:44.55 2dadGiC9d.net
>>714
お前の言う最悪な条件の方が4倍以上速い
おまえの最悪な条件の定義は何だ?

730:デフォルトの名無しさん
18/08/04 20:25:19.01 CpwGeL+S0.net
定義?
なにいってんのコイツ
>>690 をみて
オレがなにをいってるか
理解できないしな
ココが知恵遅れの限界

731:デフォルトの名無しさん
18/08/04 20:35:20.71 jfaT+4IfM.net
>>712
だね
C++ならスマートポインタ、C#ならusingでもっと楽にかつ確実にやれるのになにアホな言い合いしてるんだろうって感じ

732:デフォルトの名無しさん
18/08/04 21:07:34.69 YA1hWK5Y0.net
低学歴とニートがすぐわかるなら具体的に名指ししてみな
誰にでも再検証できるように
つまり工学者として当たり前の様式で

733:デフォルトの名無しさん
18/08/04 21:27:00.60 RenjJImm0.net
quickse;ectの件(ELEMS=20,TOPSS=10)で試すとp2の結果が違うのだが
初期値: 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
10.0 9.0 8.0 7.0 6.0 5.0 4.0 3.0 2.0 1.0
結果:
>>690: 10.0 9.0 9.0 8.0 8.0 7.0 7.0 6.0 6.0 5.0
>>705: 10.0 9.0 8.0 9.0 8.0 7.0 6.0 7.0 6.0 5.0

734:デフォルトの名無しさん
18/08/04 21:30:24.21 CpwGeL+S0.net
両方とも選択された要素の順序は保証されてない
そういうアルゴリズムだ
ソートすれば同じ結果になる
上位の抽出結果のソートなんか一瞬でおわる

735:デフォルトの名無しさん
18/08/04 21:35:47.02 mQQzn2Q+0.net
出題は上位3個で要素数が可変

736:デフォルトの名無しさん
18/08/04 21:43:01.41 rXNKJXgT0.net
Cが優れているのでC++なんて全く必要性を感じなかったが、gotoで頭が混乱する
とか1mのコードくらいで頭が混乱するような人はC++をぜひ使ってみるといいと思う。
最近C++を使ってみて驚いた。Cと何ら変わらない低レベルコードを吐き出す
低レベル言語のくせに機能的には100倍も優れている。
その優れた機能を一切使わなくてもいいが、namespaceやクラスをパッケージ化の
機能としてだけつかってもCよりは随分楽に管理できる。
Cの場合はパッケージにして頭の悪い人でも分かりやすくするにはサブルーチンを使う
以外に方法がない。しかしC++はnamespaceでスコープを自由に制限できてパッケージ化
ができる。しかも50行程度に小さく刻んでもコードには何の影響も与えない。

737:デフォルトの名無しさん
18/08/04 21:45:18.43 mQQzn2Q+0.net
URLリンク(ideone.com)
0.01423812秒
半角君のコードの4倍くらいの速さ

738:デフォルトの名無しさん
18/08/04 21:47:30.05 mQQzn2Q+0.net
高速
コードサイズ小
1回スキャン
非破壊

739:デフォルトの名無しさん
18/08/04 21:50:33.63 rXNKJXgT0.net
>>685
そうだよ。昔の人はそれでも平気だったんだよ。昔の人は賢かった。まあわが社では
いまでもそれは普通にやっている。
わが社の社員は現代人だから頭は変わらないと思うが特別根気があるのだろう。
だから賢くなる。つまり昔の人も頭が良かったというよりも根気があったのだろうと思う。

740:デフォルトの名無しさん
18/08/04 21:50:37.85 mQQzn2Q+0.net
半角君のコード
低速 (最悪値は特に)
コードサイズ大
複数回スキャン
破壊

741:デフォルトの名無しさん
18/08/04 21:53:40.18 CpwGeL+S0.net
オレのエレガントなコードに対して
最悪値になるデータ作ってみ
1000万件中上位3件程度しか抽出できないコード書いても意味ないからな
お題どおりなら3%は抽出できないといけない
上位30万件は抽出できないとな

742:デフォルトの名無しさん
18/08/04 21:56:59.42 mQQzn2Q+0.net
あ、なんか間違った
まあ時間は変わらんでしょう

743:デフォルトの名無しさん
18/08/04 21:58:48.83 CpwGeL+S0.net
URLリンク(ideone.com)
オレのエレガントなコードでは
上位30万件でもこの速さ
turnaround time ::= 0.0534 sec
turnaround time ::= 0.0126 sec

オツムが弱いのがコードではまず実現は不可能
まず処理が終了しない

744:デフォルトの名無しさん
18/08/04 22:01:03.23 CpwGeL+S0.net
なんか更新されてないわ
URLリンク(ideone.com)
turnaround time ::= 0.1077 sec
turnaround time ::= 0.0172 sec
オレのエレガントなコードにはまず勝てない

745:デフォルトの名無しさん
18/08/04 22:02:32.21 mQQzn2Q+0.net
「最悪値」って確率は関係ないから
文字通り「最悪値」
勝手に条件を変えてwww
出題は上位3個
出題後の書き込みもずっと上位3個という前提

746:デフォルトの名無しさん
18/08/04 22:03:24.81 CpwGeL+S0.net
ランダムな値使ってるのに
まず最悪値になりようがない
だからな最悪値になるデータ作ってみろよ

747:デフォルトの名無しさん
18/08/04 22:05:26.79 mQQzn2Q+0.net
修正したら速くなっちゃった
URLリンク(ideone.com)
0.01262593秒

748:デフォルトの名無しさん
18/08/04 22:06:09.00 CpwGeL+S0.net
知恵遅れはランダムの値といってるから
入力値に疑似乱数使ってると思ってるかもしれないが
そもそもピボットの選択がランダムという意味だからな

749:デフォルトの名無しさん
18/08/04 22:06:54.29 mQQzn2Q+0.net
「最悪値」って確率は関係ないから
文字通り「最悪値」

750:デフォルトの名無しさん
18/08/04 22:07:29.19 CpwGeL+S0.net
だからな30万件抽出できるコード書いてみ

751:デフォルトの名無しさん
18/08/04 22:09:41.04 mQQzn2Q+0.net
--普通の人のコード--
高速
コードサイズ小
1回スキャン
非破壊
--半角君のコード--
低速 (典型例で4倍の時間、最悪値は特にひどい)
コードサイズ大
複数回スキャン
破壊

752:デフォルトの名無しさん
18/08/04 22:12:28.07 CpwGeL+S0.net
0.01秒オーダーが4倍とか議論不要なレベルだからな
そもそも知恵遅れが書いたコードは条件が少しかわるだけで
待ってても結果が戻ってこないからな

753:デフォルトの名無しさん
18/08/04 22:13:07.54 +vznLLf60.net
データふやして比較しよう

754:デフォルトの名無しさん
18/08/04 22:15:28.18 mQQzn2Q+0.net
>>740
恥の上塗りwww
お前の負けwww

755:デフォルトの名無しさん
18/08/04 22:16:12.21 CpwGeL+S0.net
知恵遅れの精神的勝利きたわ。。。

756:デフォルトの名無しさん
18/08/04 22:45:56.56 +Ac7xD+T0.net
半角また負けたのか…

757:デフォルトの名無しさん
18/08/04 22:47:55.10 CpwGeL+S0.net
オレのエレガントなコードには勝てない
要素数


758:,抽出数,エレガント(sec),アホ(sec) 10000,300,0.0000,0.0040 20000,600,0.0000,0.0150 30000,900,0.0000,0.0330 40000,1200,0.0000,0.0590 50000,1500,0.0000,0.0920 60000,1800,0.0010,0.1330 70000,2100,0.0000,0.1760 80000,2400,0.0010,0.2300 90000,2700,0.0010,0.2920 100000,3000,0.0020,0.3620 110000,3300,0.0020,0.4360 120000,3600,0.0020,0.5300 130000,3900,0.0020,0.6080 140000,4200,0.0020,0.7030 150000,4500,0.0030,0.8170 160000,4800,0.0020,0.9260 170000,5100,0.0020,1.0470 180000,5400,0.0020,1.1740 190000,5700,0.0030,1.3080 200000,6000,0.0020,1.4490 210000,6300,0.0020,1.5970 220000,6600,0.0020,1.7690 230000,6900,0.0020,1.9170 240000,7200,0.0030,2.0870 250000,7500,0.0030,2.2660 260000,7800,0.0050,2.4590 270000,8100,0.0040,2.6380 280000,8400,0.0020,2.8350 290000,8700,0.0010,3.0500 300000,9000,0.0020,3.2750



759:デフォルトの名無しさん
18/08/04 23:17:38.19 CpwGeL+S0.net
やっと処理が終わった
アホのコードのせいでCPUが熱くなったわ
数10万件レベルでコレだからな
↓処理結果
URLリンク(fast-uploader.com)
一部抜粋
950000,28500,0.0140,33.5910
960000,28800,0.0100,33.4880
970000,29100,0.0190,34.1070
980000,29400,0.0080,34.8320
990000,29700,0.0100,35.4970
1000000,30000,0.0080,36.5600
↓グラフ
URLリンク(i.imgur.com)
知恵遅れ息してない

760:デフォルトの名無しさん
18/08/04 23:21:13.53 F7vd0ILk0.net
いつまでこの話続けるの?
専用スレ立てたら?

761:デフォルトの名無しさん
18/08/05 00:06:32.62 yKLkGD1M0.net
>>746
元の課題を書き換えて勝利宣言とか流石に恥ずかしすぎて真似できんわ

762:デフォルトの名無しさん
18/08/05 01:04:35.95 9bzcKYpVM.net
>>747
休日丸一日張り付いてるとこ見ると、他にやることないみたいだし、多分まだ続くで

763:デフォルトの名無しさん
18/08/05 01:45:43.20 VRzYU/IV0.net
上位3件で比較したらどうなるん?

764:683
18/08/05 05:43:14.02 cdvogGHQ0.net
>>703
俺は半角君ではないが、あれの場合も2ヵ所じゃないか?
初期化含めると3か所か。

765:デフォルトの名無しさん
18/08/05 05:49:42.07 cdvogGHQ0.net
>>712>>719
まあ、他の言語使えばいいだけだな。
最終的なコードは同じになるだろう。それを自動でやるかプログラマが作るかの違いしかない。
C++も初期の頃はC言語へのコンバータだったしな。

766:デフォルトの名無しさん
18/08/05 07:52:08.09 5rt28jG50.net
>>751
#define
構造体
関数2個
計4か所
修正面倒
実際の半角君のコードもそんな面倒なコードにはなってない

767:デフォルトの名無しさん
18/08/05 07:56:35.30 cQ22SoWZ0.net
暗澹として気持ちになる
半角君の言い分にも理はある
顧客がどういう方向にものごとを拡張したいと言い出すかなんてわからないんだ
なんでいりもしないくそコード増やしてんだと罵ることもできるし
これをスケーラビリティのある優れたコードだといって、もう一方クソ呼ばわりすることもできる
でも、書いたコードが結局どう評価されるかは将来を見通す能力で決まるんじゃない

顧客がこっちの様子みて事後的にきめてるんだ

768:デフォルトの名無しさん
18/08/05 08:03:17.72 5rt28jG50.net
>>679

769:デフォルトの名無しさん
18/08/05 08:09:08.23 5rt28jG50.net
>>705のコードにエラー時の処理を入れるのに
いちいち>>648にするのか?
使い分け
gotoの使いどころでは使う

770:デフォルトの名無しさん
18/08/05 08:17:28.22 5rt28jG50.net
多重ループを抜けるのに
半角君はどう書くつもりたろうか
switch / case からループを抜ける
これも良くあるコード

771:デフォルトの名無しさん
18/08/05 08:34:00.38 UtRwebov0.net
ループの中を関数化したうえで case 句からは return で即脱出するのかな
勝手な想像だけど

772:デフォルトの名無しさん
18/08/05 08:56:17.59 AVPuy+2E0.net
ここ喧嘩ばっかだから他所行くかーと思ってC++スレ行ったらそこでも喧嘩しててワロタ

773:デフォルトの名無しさん
18/08/05 08:57:44.72 RKME5Hq50.net
一緒にすんな失礼な
   発 者 同         . 。_   ____           争
 生 同 .じ     .    /´   (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   ∨ ` ̄
            /   ..:.:./       丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>

774:デフォルトの名無しさん
18/08/05 10:50:56.85 cQ22SoWZ0.net
というかだ
randとquickselectどっからコピペしてきたのか正直にいいなさい
非の打ちどころなく最適化されたロジック
筋のいい関数分割
的確な規約にのっとった命名
正確な英語
おまえがつくったのbakaとallocとfree_dataだけだろ
関数ごとにあまりにも作成者の知性差がありすぎる

775:デフォルトの名無しさん
18/08/05 10:53:47.86 cQ22SoWZ0.net
partitionの中はそうでもないか

776:デフォルトの名無しさん
18/08/05 10:57:17.82 ekimy5CU0.net
質問者そっちのけで
議論だけは続きます
いつものパターン

777:デフォルトの名無しさん
18/08/05 11:03:06.42 cQ22SoWZ0.net
問題は解決してるじゃない

778:デフォルトの名無しさん
18/08/05 11:15:46.84 cQ22SoWZ0.net
そもそもどれが質問だったかわからない


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch