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:XX4FB8lc0509デフォルトの名無しさん (スップ 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ではオーバーフローしてしまう」のオーバーフローする場合がまったくわかりません。
教えていただけますか。
588さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd32-HzQc)
2018/08/01(水) 17:40:34.16ID:TGp/sEuFd i, jがどんな値かによる。
i == 0x7fffffff && j == 0x7fffffff
で、i + jがどんな整数値になるか考えたまえ。
i == 0x7fffffff && j == 0x7fffffff
で、i + jがどんな整数値になるか考えたまえ。
589デフォルトの名無しさん (ワッチョイ 1681-2QVD)
2018/08/01(水) 18:09:35.03ID:9yb7YrdQ0 ありがとうございます。理解出来ました。
下限上限への理解がまだまだでした…
下限上限への理解がまだまだでした…
590デフォルトの名無しさん (ガックシ 06de-fBTW)
2018/08/01(水) 18:20:26.56ID:edgaccID6591デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/08/01(水) 19:46:12.42ID:xh0kKqMn0 >>578が578のやり方でtest.Callのアドレスを渡せないのはなんでなん?理由が知りたい。
592デフォルトの名無しさん (ワッチョイ 232d-E0Ep)
2018/08/01(水) 20:21:01.54ID:jfFEYUCE0 >>591
まず瑣末だけど、 test.call じゃなくて &Test::Call でメンバ関数のポインタを取らなきゃいけないってのはあるけど それはいいとして
ざっくり言えば「メンバ関数の型はクラスの型を含んでて、普通の関数とは型違うから」ってとこかねー
# g++
エラー: cannot convert ‘void (TestClass::*)()’ to ‘void (*)()’ in assignment
info.pfunc = &TestClass::Call;
スレチなので 解答が不足ならば「C++相談室」か「スレ勃てるまでもないC/C++の質問はここで」辺りで願います
詳しい人いるだろうし
まず瑣末だけど、 test.call じゃなくて &Test::Call でメンバ関数のポインタを取らなきゃいけないってのはあるけど それはいいとして
ざっくり言えば「メンバ関数の型はクラスの型を含んでて、普通の関数とは型違うから」ってとこかねー
# g++
エラー: cannot convert ‘void (TestClass::*)()’ to ‘void (*)()’ in assignment
info.pfunc = &TestClass::Call;
スレチなので 解答が不足ならば「C++相談室」か「スレ勃てるまでもないC/C++の質問はここで」辺りで願います
詳しい人いるだろうし
593デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/08/01(水) 20:28:43.32ID:xh0kKqMn0 >>592
そのざっくりな説明だけでもわかりやすい。なるほどありがとう。
そのざっくりな説明だけでもわかりやすい。なるほどありがとう。
594デフォルトの名無しさん (ワッチョイ e3bb-53i4)
2018/08/01(水) 20:34:52.96ID:xh0kKqMn0 ググったら安定のロベールさん出てきた。買った方がいいなこれ基礎力でえらい差が出てしまう気がしてきた
595デフォルトの名無しさん (アウアウウー Sa43-53i4)
2018/08/01(水) 20:52:58.87ID:WDXOLOCva C++の話はC++スレでやれ。
596デフォルトの名無しさん (ワッチョイ 129f-lgLX)
2018/08/01(水) 21:33:20.86ID:jJEMbL0b0 なんだ結局ロベールのステマかよしょうもねえな
597デフォルトの名無しさん (アウアウカー Saef-zedw)
2018/08/01(水) 22:23:36.11ID:ArWxfDp8a >>592
分かりやすい説明
分かりやすい説明
598デフォルトの名無しさん (ワッチョイ cf80-gYkF)
2018/08/02(木) 00:25:44.59ID:6TeXhDWV0 オーバフロー以前に
ポインタ同士の足し算なんかしないからな(Cでは普通のやりかたではできない仕様になってる)
ポインタ同士の足し算なんかしたらおもいっきりオーバーフローすることがあるからな
つまり簡単にオーバーフローはおきうる
ポインタにはアドレスが入ってるからな
やってることは
基準になるオフセット(ここでは左端)に距離を足すだけといっていい
距離は通常ポインタの引き算で求める
距離は左端と右端の距離の半分の距離に
基準になるオフセットに足す
すると中間点になる
つまり中間点固定
しかしピボットが中間点固定だと最悪のケースの場合
クイックソートはものすごく遅くなる
で、ピボットを乱数で選択することで
その最悪のケースを回避するというやりかたもある
実際の現実のデータでそんな最悪のケースはほぼないといっていい
ポインタ同士の足し算なんかしないからな(Cでは普通のやりかたではできない仕様になってる)
ポインタ同士の足し算なんかしたらおもいっきりオーバーフローすることがあるからな
つまり簡単にオーバーフローはおきうる
ポインタにはアドレスが入ってるからな
やってることは
基準になるオフセット(ここでは左端)に距離を足すだけといっていい
距離は通常ポインタの引き算で求める
距離は左端と右端の距離の半分の距離に
基準になるオフセットに足す
すると中間点になる
つまり中間点固定
しかしピボットが中間点固定だと最悪のケースの場合
クイックソートはものすごく遅くなる
で、ピボットを乱数で選択することで
その最悪のケースを回避するというやりかたもある
実際の現実のデータでそんな最悪のケースはほぼないといっていい
599デフォルトの名無しさん (スプッッ Sd47-XO19)
2018/08/02(木) 00:29:26.39ID:c3/ck1cgd すいません初心者です、質問なんですが・・・
for文を使うときにfor(i = 1 ;i <= 5 ;i++ )でiが5より増えたときにループを抜けるようにiを1ずつ増やすというのは分かるんですが
何故ループするときにfor文のi = 1の代入の部分は無視されるんでしょうか・・・
for文を使うときにfor(i = 1 ;i <= 5 ;i++ )でiが5より増えたときにループを抜けるようにiを1ずつ増やすというのは分かるんですが
何故ループするときにfor文のi = 1の代入の部分は無視されるんでしょうか・・・
600デフォルトの名無しさん (ワッチョイ cf80-gYkF)
2018/08/02(木) 00:39:59.52ID:6TeXhDWV0 そういう制御文だからな
そういう仕様だ
for ( [ループ前に行う演算]; [ループが処理される条件]; [次のループが処理される前に行う演算] )
i = 1;
whlle (i <= 5) {
・・・
i++
}
と同じ
どれもすべて入れても入れなくてもいい
for (;;) こう書くと無限ループになる
そういう仕様だ
for ( [ループ前に行う演算]; [ループが処理される条件]; [次のループが処理される前に行う演算] )
i = 1;
whlle (i <= 5) {
・・・
i++
}
と同じ
どれもすべて入れても入れなくてもいい
for (;;) こう書くと無限ループになる
601デフォルトの名無しさん (スプッッ Sd47-XO19)
2018/08/02(木) 00:43:35.36ID:c3/ck1cgd なるほどそういう仕様だったんですね・・・
丁寧にありがとうございますこれでようやく眠れる
丁寧にありがとうございますこれでようやく眠れる
602デフォルトの名無しさん (ブーイモ MM67-3qOU)
2018/08/02(木) 01:18:26.80ID:4HyEhcJnM >>600
continueがあるとちょっと書き換えが必要だけどね
continueがあるとちょっと書き換えが必要だけどね
603デフォルトの名無しさん (ドコグロ MM47-6jVY)
2018/08/02(木) 06:45:33.31ID:S4Pms+eVM604デフォルトの名無しさん (ワッチョイ 6350-3fy2)
2018/08/02(木) 07:13:00.94ID:PxPZ0mdd0605デフォルトの名無しさん (ワッチョイ d3d7-Xflc)
2018/08/02(木) 09:43:21.84ID:NSwKZwuS0 for文でのcontinueの挙動を最近知ったばかりで自慢したかったんだろ
606デフォルトの名無しさん (スップ Sd1f-3fy2)
2018/08/02(木) 09:48:48.46ID:Bu8RCR+yd if
for
while
do while
goto
break
continue
このくらいしか無いんだから全部覚えとけ
なぜかgotoの使い方を知らんヤツが多い
多重ループを抜けるのにわざわざフラグを使うアホとか
for
while
do while
goto
break
continue
このくらいしか無いんだから全部覚えとけ
なぜかgotoの使い方を知らんヤツが多い
多重ループを抜けるのにわざわざフラグを使うアホとか
607デフォルトの名無しさん (ワッチョイ d3d7-Xflc)
2018/08/02(木) 10:51:33.79ID:NSwKZwuS0 使い方を知らんというより
絶対使うなと刷り込まれているのが多い
なぜだと聞いても答えられないやつ全員
絶対使うなと刷り込まれているのが多い
なぜだと聞いても答えられないやつ全員
608デフォルトの名無しさん (アウアウカー Sa07-iFcb)
2018/08/02(木) 12:55:13.95ID:Cp7uV85Za gotoは悪という教義のある宗教の信者だから仕方がない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 女って金とイケメンしか見てないよな
- 【閲覧注意】ちずちんな
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- フェリーの魅力を語ろう。
- 【仁藤悲報】Colaboさん、東京都の公金を月7万円の「整体治療費」に使っていたことが判明してしまう!!!! [535458756]
