C言語なら俺に聞け 144

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 838a-3nWA)2017/12/23(土) 19:33:43.89ID:dghfoRy20
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/


http://mevius.5ch.net/test/read.cgi/tech/1509107288/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2デフォルトの名無しさん (ワッチョイ 639f-buzn)2017/12/23(土) 22:25:14.39ID:BUr3nOOf0
#include <stdio.h>

int main(int argc, char *argv[])
{
unsigned long long n[] = { 0x0820084008411c3e, 0x087f180408080810 };
int i;

for (i = 127; i >= 0; i--) {
putchar(n[i / 64] & (1ULL << (i % 64)) ? '*' : ' ');
if (! (i & 0x0f)) putchar('\n');
}

return 0;
}

https://paiza.io/projects/zyQ0Osccs4xaziOrVUF_cA

3 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/24(日) 01:31:12.56ID:WikwUycQ0
乱数生成法について教えてください。
普通の乱数生成法は、ある乱数 x を発生させたとき、次の乱数を特定の関数 f で生成させていますが、
(すなわち、次の乱数は f(x) となる)、これは n + 1 番目の乱数を作るには、n 番目の乱数を知らなければならないことになります。

そうではなくて、n + 1 番目の乱数を f(n + 1) で計算できるもの( n + 1 番目の乱数を求めるのに n 番目の乱数を知らなくてもいいもの)はないでしょうか?
こういう乱数はテクニカルタームとしてはどのように呼ばれるのでしょうか?

>>3
擬似乱数のことでいいんだよね?
今普通って言ったらメルセンヌツイスターだと思うんだけど、
「次の乱数は f(x)」 とか「f(n + 1) で計算」とかしないよ
数千bitほどの内部状態から数列を生み出すんだよ
じゃないと周期とか質が悪い

f(n + 1) で計算できるものって それはもはやHashではないかな

適当に名づけるなら帰納的乱数とかになる

>(すなわち、次の乱数は f(x) となる)、これは n + 1 番目の乱数を作るには、n 番目の乱数を知らなければならないことになります。

それランダムにならんように思うが。

神はサイコロを振らない

そうなんだおじさん「そうなんだ」

10デフォルトの名無しさん (ワッチョイ 9355-9w0B)2017/12/24(日) 13:04:44.76ID:88m+Wv2j0
>>4
乱数を取得するごとに内部状態が変わるので前回と違う値が取れんだと思うんだが
メルセンヌツイスタはシードが同じでも別の乱数列が出力される?

11デフォルトの名無しさん (ワッチョイ 639f-buzn)2017/12/24(日) 13:57:11.07ID:7ASFTRv40
>>3
普通の計算機である以上何かを元にして計算するしかないのでは?
f(n+1) を計算する時に f(n) を使わずに n を元にして計算する?
だったら乱数計算する前に必ずシードをセットするようにするしかないのではないか?
例えば rand() の直前に必ず srand() で種をセットするということね。
(実際これやると乱数にならないような気がするが)

12デフォルトの名無しさん (ワッチョイ ffe3-bqMz)2017/12/24(日) 16:54:26.09ID:rYvbui2B0
>>10
??
当然、初期状態が同じなら出力も同じだよ

13デフォルトの名無しさん (ブーイモ MMff-9w0B)2017/12/24(日) 17:37:32.76ID:FUOJ/cJEM
>>12
メルセンヌツイスタは乱数列を無限に出力できるのでn番目とかはないという話ですか?

14デフォルトの名無しさん (ワッチョイ 2393-YNiV)2017/12/24(日) 17:37:51.83ID:DT7VHm750
>>3 の質問の真意は
「(擬似)乱数列のn+1番目の値を出すためにn+1回のループを回す必要がない
アルゴリズムを紹介してくれ」だと思うよ。

n+1番目の乱数値を作るためにn番目までの乱数値を知る(次の値の計算に使う)
必要がある、という意味ではないでしょ。

1514 (ワッチョイ 2393-YNiV)2017/12/24(日) 17:43:11.44ID:DT7VHm750
おっと、「〜だと思うよ」の部分は「〜じゃないかな?」に訂正させてくれ。
読み直したら、そこまで断定する自信がなくなった。

質問者 >>3 による見解を求む。
…と言っても、いずれにせよ俺には答えられない問題だけどネ。

16デフォルトの名無しさん (ワッチョイ 03c6-MZER)2017/12/24(日) 17:57:57.47ID:KMicyDdr0
Gtk+ 3.0のGUIツールの質問はこちらでも宜しいでしょうか。
glade3.18、C言語を使用しています。

起動したgladeの右側のプロパティ画面で、

window1 GtkWindow
□|__box1 GtkBox
□□|__scrolledwindow1 GtkScrolledWindow
□□□|__viewport1 GtkViewport
□□□|____image2 GtkImage
□□□|__button1 GtkButton

のように配置すると、画面をマウスで引き伸ばしても、実行時window1のみが引き伸ばされてしまいます。
やろうとしている事は、ファイルの保存ダイアログの様に、マウスで引き伸ばしてもbutton1がwindow1と一緒に移動し、image2が引き伸ばしされている様に見せたいのですが上手くいきません。
教えてください。よろしくお願いします。

17デフォルトの名無しさん (ワッチョイ ffe3-bqMz)2017/12/24(日) 18:24:06.76ID:rYvbui2B0
>>13
当然、特定初期状態からのn番目はあるよ
周期もある

何を聞かれてるのかよくわからない

18 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/24(日) 18:47:45.17ID:WikwUycQ0
>>14
はい、そのとおりです。
ハッシュ関数(たとえばSHA-2) に対して入力0, 1, 2, を与えて得られた出力を乱数として使用することに妥当性はあるか?

もっと踏み込むと、実はストリーム暗号として使用したく考えています。
ハッシュ関数を h(x)、
暗号鍵を k
平文を M
暗号文をC
として、
C = Mi xor f(n + k), n = 0, 1, 2, ....
とした場合に、この暗号に対してどのような解読方法が考えられるか?

19 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/24(日) 19:07:57.94ID:WikwUycQ0
× f(n + k)
○ h(n + k)

20片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)2017/12/24(日) 19:24:00.18ID:gjaYlpPed
>>16
「引き延ばし」というのは専門用語じゃないよね。位置とサイズをちゃんと指定くれないと、人間にもわからないよ。
イベント駆動については勉強した? サイズを自動調整するには、イベント駆動で「サイズ変更」のイベントを捕まえるか、自動レイアウトにするしかないよ。

21片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)2017/12/24(日) 19:39:28.76ID:gjaYlpPed
>>16
コンテナを使えばサイズが調整できるよ。

22デフォルトの名無しさん (ワッチョイ 2393-YNiV)2017/12/24(日) 19:46:51.17ID:DT7VHm750
>>3 >>18
ショボい線形合同法 f(n) = (f(n-1) * a + b) mod c なら、
f(n) = (f(0) * (a ** n) + b*n) mod c
という式が使える理屈だけど、現実には桁あふれとか
a ** n (べき乗)の計算でループするとか、実用できないだろうなぁ。

ところで詮索するわけじゃないけど
◆QZaw55cn4c って普段は教える側の人じゃなかったっけ?

23片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)2017/12/24(日) 19:48:23.88ID:gjaYlpPed
GtkBoxとGtkScrolledWindowをコンテナに。イベント駆動でサイズ調整。

24片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)2017/12/24(日) 19:54:08.92ID:gjaYlpPed
認識しています...

25片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)2017/12/24(日) 20:14:50.51ID:gjaYlpPed
電池切れです。今すぐ充電して下さい。

26 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/24(日) 20:23:36.25ID:WikwUycQ0
>>22
その変形は、ちょっと楽観しすぎていると思う
f(1) = af(x) + b
f(2) = a(ax + b) + b = a^2 x + ab + b
f(3) = a(a(ax + b) + b) + b = a^3 x + a^2 b + ab + b
f(4) = a^4x + b(a^3 + a^2 + a + 1)
f(5) = a^5x + b(a^4 + a^3 + a^2 + a + 1)
なんかもっときれいになりそうだけれども…

>普段は
え?それはそうみえるだけじゃないでしょうか?

2722 (ワッチョイ 2393-YNiV)2017/12/25(月) 06:33:17.53ID:kqgEt8jU0
>>26
本当だ。変形間違ってるわ。
ステップ毎に項数が増える漸化式の展開で必ず同じミスするなぁ。

28デフォルトの名無しさん (ワッチョイ 6fe7-615/)2017/12/25(月) 08:57:25.44ID:tHA+l6fr0
割り算を割り算なしで実用的に計算する方法はありますか?

29デフォルトの名無しさん (ワッチョイ f361-bqMz)2017/12/25(月) 09:02:10.05ID:EqnSjGj20
筆算の手順を参考に。

30デフォルトの名無しさん (ブーイモ MM67-nFIV)2017/12/25(月) 09:54:22.59ID:8JScrlTJM
>>28
精度保証がそれなりで良ければ分母の逆数をニュートン法で求めて乗算。
整数の商が正確に必要で除数が一定なら逆数と補正をあらかじめ用意できる。
定数の除算をアセンブリで出してみると驚くよ。

31デフォルトの名無しさん (ワッチョイ cf3f-tRgI)2017/12/25(月) 11:53:59.36ID:9U/P4ALl0
整数を2の自然数乗で割るのは右シフト演算に置き換えられる

>>31
そんな些末な化石テクニックなんか、最適化に任せちまえよ。

33デフォルトの名無しさん (スッップ Sd1f-OpNk)2017/12/25(月) 12:19:46.91ID:rFWBa6Kid
自身をXORするとゼロクリアできる。

34デフォルトの名無しさん (アウアウカー Sac7-vdkM)2017/12/25(月) 12:46:35.23ID:Lg9qxqUaa
>>33
いや、そうだけど、ゼロの代入しても最適化されてマシン語ではそれになってることあると思うよ。CPUにもよるだろうけどね。
レジスタをゼロクリアする専用の命令があればそちらが使われるだろうし、多分その方が何も計算しない分だけ速い。

35デフォルトの名無しさん (ブーイモ MM27-nFIV)2017/12/25(月) 13:19:39.85ID:CsuxTCcbM
化石テクニックの一例で出しただけでしょ

36デフォルトの名無しさん (ワッチョイ cf8a-tCZy)2017/12/25(月) 13:25:33.64ID:yJ1YqK0V0
XORクリアはZ80ではほぼ必須テクニックだったけど、x86では意味ないよ

37デフォルトの名無しさん (アウアウカー Sac7-vdkM)2017/12/25(月) 13:37:06.87ID:Lg9qxqUaa
>>35
今時のC言語だと意味がないばかりかコンパイラの最適化の邪魔になりかねないので変な小技は忘れた方が良いと思うよ。registerとかと同じ。

38デフォルトの名無しさん (ブーイモ MM27-nFIV)2017/12/25(月) 14:12:39.78ID:CsuxTCcbM
俺が出したんじゃねーし

39デフォルトの名無しさん (ワッチョイ f38a-IlPN)2017/12/25(月) 14:39:28.15ID:eNXAkvu40
>>36
sub でクリアは定番

40デフォルトの名無しさん (ワッチョイ 03c6-MZER)2017/12/25(月) 18:27:45.55ID:+TGgWy910
G_MODULE_EXPORT void
cb_activate(
GtkEntry *entry1,
GtkLabel *label1)
{
gchar *buf;
buf = g_strdup_printf("文字 %s",gtk_entry_get_text(entry1));
gtk_label_set_text(label1,buf);
g_free(buf);
}

上のプログラムを参考に、GtkTextViewから文字数を得て、label1に書き込むプログラムにしようと、マニュアルを調べていたのですが、上手くいきませんでした。
insert_at_cursorのイベントから動くようにするには、どうしたらいいのでしょうか。
初歩的な質問ですみません。よろしくお願いします。

41デフォルトの名無しさん (ワッチョイ 7f60-IIk+)2017/12/25(月) 18:52:27.54ID:LEWwY/wL0
>>40
プログラムを全部さらしてください。https://ideone.com

>>34
> レジスタをゼロクリアする専用の命令があればそちらが使われるだろうし、多分その方が何も計算しない分だけ速い。
レジスタじゃなくてメモリーだけど68000のCLR命令はなぜか0を書く前に謎の読み出しを行うので遅かったりした

43デフォルトの名無しさん (ワッチョイ 03c6-MZER)2017/12/25(月) 19:44:53.59ID:+TGgWy910
>>41
Cソース
https://ideone.com/324qDo
UIソース
https://ideone.com/o3pHFq

コメントにした部分は、動くことは動くけれど、ラベルが反応しない。
今の非コメント部分は、main関数は動きますが、それ以外はエラーが出ます。
動かないのを知っていて、プログラムが中途半端に書かれています。
なので責めないでください。
迷走している様子が伝わってくると思います。

44デフォルトの名無しさん (ワッチョイ f361-bqMz)2017/12/26(火) 09:14:44.44ID:0EsJ05iO0
>ゼロクリア
昔触った業務機は0固定のレジスタからコピーしてたな。

45デフォルトの名無しさん (ワッチョイ 93fb-tRgI)2017/12/26(火) 09:52:36.67ID:yJ/B7pz80
V850?

46デフォルトの名無しさん (ブーイモ MMff-nFIV)2017/12/26(火) 10:06:26.59ID:58V6tzNLM
MIPSじゃね?

47デフォルトの名無しさん (スプッッ Sd1f-tu6d)2017/12/26(火) 11:48:22.67ID:R8+GZeZ4d
SPARCでは

48デフォルトの名無しさん (ワッチョイ 6fe7-615/)2017/12/26(火) 13:07:44.90ID:m/Tbphkt0
乱数レジスタもあるよ

49 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/26(火) 18:38:13.95ID:zH75jbqB0
>>48
あれは乱数レジスタではなくて、リフレッシュカウンタ

>>49
Z80で知識が止まってるおじいちゃんの出る幕じゃないよ
intel rdrand でググれ

51 ◆QZaw55cn4c (ワッチョイ 7f60-IIk+)2017/12/26(火) 21:36:47.54ID:zH75jbqB0

52デフォルトの名無しさん (エーイモ SE8a-/kWs)2017/12/30(土) 17:36:17.08ID:QxhO3HdGE
先輩方また教えてください
int 
hoge(int a,
_____int b)
{
____return a + b;
}

_は半角スペースだと思ってください。
こんな感じでintとhogeを別の行に書いたり
int aとint bも別の行に書いたり
こういう書き方をよく見るんですがどうしてこう書くんでしょうか?
C言語ではこういうルールがあるのでしょうか?

53片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 17:46:47.07ID:jArhle36d
それはコーディングスタイルとか、コーディングルールとかいうけど、会社や組織によって違う。
制御構造の構造を明確にするために、「インデント」したり文字の位置を揃えたりする。
まあ、初心者ならANSIスタイル使っておけば無難かな。

54片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 17:49:08.58ID:jArhle36d
コード整形ツールというのを使えば、ソースのスタイルを変換できる。

55片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 17:50:39.34ID:jArhle36d
インデントするときはTabキーが便利。

56デフォルトの名無しさん (ワッチョイ 0b9f-RYVm)2017/12/30(土) 17:52:13.74ID:Xyp0qNcm0
>>52
> こういう書き方をよく見る
嘘つくな。
というか、本当にそう思うのなら見るべきソースを間違っている。

いずれにしても、初心者がその手のコーディングスタイルについて考えるのは完全に時間の無駄だから、
どれでもいいから有名なコーディングルールを読んで、それを使うようにしろ。
お前が今読んでいるそのコードに対して追加/修正が求められているのなら、
グダグダ言わずにそのスタイルで書け。

繰り返すが、初心者がコーディングスタイルにこだわるのは全くの無駄だから、止めろ。
君が入門書を読んで勉強しているのなら、その本のスタイル通りに書け。
初めはそれでいい。

57デフォルトの名無しさん (ブーイモ MM76-C14s)2017/12/30(土) 17:52:35.86ID:oaZtakGBM
>>52
cb とか indent ってコマンドがある

58片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 17:53:57.97ID:jArhle36d
C言語では文字列以外の空白はほとんど無視されるから、処理を一行に長〜く書くことが
できるけど、それでは人間には分かりにくいし、読みづらい。

59片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 18:16:01.37ID:jArhle36d
ANSIスタイル、K&Rスタイル、GNUスタイル

60デフォルトの名無しさん (スッップ Sdea-7LGL)2017/12/30(土) 18:16:52.49ID:l+pzRLn8d
>>52
たまーに引数が多くて読みずらい関数とかをメンテするハメになったときに、コメントつけるためにやる程度。

例のような短いのでそんな事になってたら、元担当見つけて小一時間問い詰めろ。

61片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)2017/12/30(土) 18:56:08.15ID:jArhle36d
GNUスタイルは大嫌いだったな。K&Rは行数削れるから、最初のころ使っていたけど。

62デフォルトの名無しさん (アウアウカー Sacb-9mWg)2017/12/30(土) 19:19:44.15ID:bLWDJrONa
>>52
人間が見る時の見易さのためだけにそう書いているのがある。言語としての決まりはない。
C言語で改行に意味があるのはダブルクォーテーションで括った文字列内とプリプロセッサが処理する#で始まる行ぐらいだ。

63デフォルトの名無しさん (ワッチョイ ff89-OTe3)2018/01/03(水) 19:26:04.56ID:AMJZwzU90
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 <見るべきソースを間違っている。
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |

64デフォルトの名無しさん (ワッチョイ 0b9f-QE/9)2018/01/04(木) 03:49:55.19ID:i5eFl8wN0

char p[]="aiueo";
p[3]='\0';
ではエラー出ないのに
char *p="aiueo";
*(p+3)='\0';
は書き込み違反になるのは何故なの

66デフォルトの名無しさん (アークセー Sxcf-IYiY)2018/01/04(木) 22:16:54.08ID:WGw/XlWzx
>>65
前者は配列変数のp、後者は定数を指してるポインタのp。

67デフォルトの名無しさん (ワッチョイ cbb3-stpt)2018/01/04(木) 22:20:46.48ID:Nl4WK1Y+0
前者は文字列リテラルの複製を配列にセットしたうえで配列を書き換えてる
後者は(ポインタ経由で)文字列リテラルそのものを書き換えている

>>66
>>67
リテラルのアドレスになるのかありがとう

69デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)2018/01/05(金) 04:42:55.46ID:/8+f7RxD0
前スレでも話題になったね。
http://mevius.5ch.net/test/read.cgi/tech/1509107288/936

70デフォルトの名無しさん (ワッチョイ 3b89-2A+B)2018/01/05(金) 11:52:20.32ID:e4FSU8sj0
char *p="aiueo"; //これが通るのは必要悪
const char *p="aiueo"; //本来こうであるべき
*(p+3)='\0'; //constついてりゃ並みのアフォなら気付けるはず

constの意味がわかって無いアホ。
リテラルが書き換えられないだけで、ポインターは別に書き換えてもいいだろ。

72デフォルトの名無しさん (ワッチョイ 0fea-stpt)2018/01/05(金) 16:41:35.06ID:YLrUpulc0
char * const と const char * の違い

73デフォルトの名無しさん (ワッチョイ 1fd6-2A+B)2018/01/05(金) 17:54:32.46ID:SpC7EOR80
>>71
ブーメランおいしい?www

74デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/05(金) 18:07:43.83ID:T2NhU/kFa
そういや前にどこにconst入れるとどこが定数扱いになるか色々やって調べたことあるなあ。

const char *p; と char const *p; は p が指す先が定数で char * const p; は p 自体が定数なんだよね。

76デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/05(金) 19:10:23.97ID:T2NhU/kFa
まあしかしコンパイラには char *p = "..."; の宣言で *p に書き込みアクセスするような記述を見つけたら警告ぐらい出して欲しいところだな。
実際に(少なくともデフォルトでは)動かないコード吐くわけだし。

77デフォルトの名無しさん (スッップ Sdbf-IYiY)2018/01/05(金) 20:16:53.14ID:q5xsNlvVd
ポインタである以上なんでも指せるし、
どう使うかは完全に自己責任では?

78デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)2018/01/05(金) 20:55:22.53ID:/8+f7RxD0
ま、確かに。他の所を指すように使い回せるけどね。うーん。

79デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/05(金) 21:56:39.58ID:IkbAePsg0
>>70に加えて、
const char* const p = "aiueo"; // p も *p も const
も使い分ければいいだけだろ。

つってもこの書き方、非標準なのか?以下ページ以外では見あたらない。
https://qiita.com/pink_bangbi/items/a36617bf1d5923743d69

80デフォルトの名無しさん (ワッチョイ 1fd6-5YeV)2018/01/06(土) 08:11:50.88ID:9HgF2CnS0
>>79
ISO/IEC 9899:2011 A.2.2に書いてあるんだが、おまえさんには見えないのか?

7.3) type-qualifier:
const
restrict
volatile
_Atomic

7.6) pointer:
* type-qualifier-listopt
* type-qualifier-listopt pointer

7.6) type-qualifier-list:
type-qualifier
type-qualifier-list type-qualifier

81デフォルトの名無しさん (ワッチョイ 9b7f-rQp9)2018/01/06(土) 11:14:58.36ID:3YD8ke1c0
char **pをconstするとそんな感じにならなかったけ?

82デフォルトの名無しさん (アウアウウー Sa8f-hL1C)2018/01/06(土) 16:50:26.91ID:Dhtt7sCWa
あ、こういう問題作れるね。

・ それぞれの違いについて説明せよ。

const char **p
char const **p
char * const *p
char ** const p
char * const *p
char * const * const p
char const * const * const p
char const ** const p

83デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/06(土) 18:52:18.14ID:0jo5cy8h0
>>82
悪問だけどな。結局の所、
・constは複数回指定できる
・constの右側の固まり全体が定数と見なされる
だけだし。逆に言えば、それらを別物/良問として認識するような奴は上達しないのだと思う。
(記憶の前処理としてabstractionする癖がない)

だからこれまでそんな馬鹿げた問題を出す奴はC界隈には居なかったし、今後も多分そうだ。
CodeIQの広告でその手の問題をよく見るが、あれじゃ「馬鹿です」と自己紹介して居るも同然だし。
まあ所詮リクルート(コード書いてない連中)だからそんなもんだが。
とはいえ、何らかのテストで簡単にそいつの実力を把握できる事が出来るのなら、役立つのも確かだが。

そしてそれ以前にconstが大して役に立たないからなあ。

84デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)2018/01/06(土) 19:00:28.28ID:BwjYxRoc0
>>83
> ・constの右側の固まり全体が定数と見なされる

え? これ違わない? というのは

const char *p = "...";

の場合は p は p++ できたりして const じゃないから右側の塊ではない。

85デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/06(土) 19:13:55.66ID:0jo5cy8h0
>>84
お前は上達しないタイプだね

86デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)2018/01/06(土) 19:53:29.84ID:BwjYxRoc0
いやあ、それほどでも。

87 ◆QZaw55cn4c (ワッチョイ 1f60-1EiW)2018/01/06(土) 20:34:46.10ID:qhltNRsR0
>>84
>const char *p = "...";
は char const *p = "":
に等しい、例外みたいなもんじゃないか?

88デフォルトの名無しさん (ワッチョイ 9f87-438m)2018/01/06(土) 20:41:46.13ID:a2JToFVw0
変数型宣言と初期化を同時に記述してっからそうなるんだろ?

89デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/06(土) 20:49:46.88ID:A2dnXNCo0
>>82
1: const char **p
2: char const **p
3: char * const *p
4: char ** const p
5: char * const *p
6: char * const * const p
7: char const * const * const p
8: char const ** const p

1と2、3と5は同じ
char **pとchar const * const *pのパターンがない

こういう奴はプログラマーに向いてない

90デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)2018/01/06(土) 21:08:00.94ID:BwjYxRoc0
キリッ

91デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/06(土) 22:07:37.32ID:0jo5cy8h0
>>87
例外ではない。
char部分はCでは常にcons扱い(=int等に変更できない)だから
constが修飾する対象に仕様上なり得ないだけ。
だからその2つは結果的に同じ意味になる。

というかCは文法例外はほぼ無いはず。

92デフォルトの名無しさん (ワッチョイ 9f87-438m)2018/01/07(日) 00:49:57.01ID:8rHqhWQu0
c++と勘違いしてね?

93デフォルトの名無しさん2018/01/07(日) 06:32:55.29
自分流に解釈して覚えるのはいいけど、それが世界の真実かのように講釈するのは恥ずかしいから控えた方がいいよ
まあこのスレではいいけど、リアルの人間関係では陰で馬鹿にされるだけだよ

94デフォルトの名無しさん (ワッチョイ 0bbb-2A+B)2018/01/07(日) 19:53:30.95ID:8XJu4dlo0
>>91
charがintに変更できないのがconstだからだと?
おまえさん char c; *(int*)&c = 1; が許されないことと勘違いしているのか?

95デフォルトの名無しさん (ワッチョイ 0bbb-2A+B)2018/01/07(日) 19:54:10.54ID:8XJu4dlo0
いかん、間違えた
おまえさん char c; (int)c = 1; が許されないことと勘違いしているのか?

96デフォルトの名無しさん2018/01/07(日) 20:44:34.88
ほらね、共通語をしゃべらないから話が発散する

97デフォルトの名無しさん (ブーイモ MM8f-jEmF)2018/01/08(月) 15:01:42.36ID:3+trBLI4M
>>95
これってcをintに拡張して1を代入してcをcharに戻すの?

98デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 15:27:35.06ID:u4QX+fVn0
>>97
当たらずといえども遠からず
自分で言ってて無理を感じるなら
それが正解だ

99デフォルトの名無しさん2018/01/08(月) 15:31:40.17
>>97
んなこたあない
>>94の書いてるコードと同義で、cの先頭アドレスからint分の領域に代入するだけで、cを拡張したり戻したりしてるわけではない
gcc 3.xやVC++2008では通ったが今のgccではコンパイルエラーになる記法

思いっきりメモリーリークして実行時に大暴走する悪寒しかしない。

101デフォルトの名無しさん (ワッチョイ 2bb3-RrJ/)2018/01/08(月) 16:09:19.72ID:eKvnY0O/0
(int)cって右辺値じゃないの?

102デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 17:43:28.20ID:u4QX+fVn0
>>101
そうだよ
だけど一部の(まずいことに大手の)コンパイラが
左辺値としての用法を古くから許していた

103デフォルトの名無しさん (ブーイモ MM7f-jEmF)2018/01/08(月) 17:56:03.73ID:YTvuEBugM
>>98
俺は初見ではcはcharのまま代入されて代入後の値がintとして評価されると見たんだが

104デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/08(月) 18:25:44.79ID:8LuLzpAV0
>>102
Cは95のコードを書く池沼は死んでよし、って言語なんだよ。
だからそんなのは問題にもならない。
94はよく見るが、95は見たこと無いぞ。

105デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 19:03:01.62ID:u4QX+fVn0
若造が見たことないのは仕方ないよ
活発に議論されていたのがC89制定を目指していた頃のことだから

106デフォルトの名無しさん (ワッチョイ 0f81-s6pf)2018/01/08(月) 19:11:59.23ID:tyeiJEzF0
おじいちゃん、若い人いじめちゃだめだよ

107デフォルトの名無しさん (ワッチョイ cbb3-stpt)2018/01/08(月) 19:14:15.10ID:RVv57Yq50
>>84,87,91,95 の流れがよくわからん

const <type> *p = ... が <type> const *p = ... と等価となる理由が例外ではなく
p を左辺値と解釈する隙間があるから ってこと?

108デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 19:26:48.32ID:u4QX+fVn0
>>106
一児の父だが孫はまだいねえよ

109デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/08(月) 19:45:48.59ID:8LuLzpAV0
>>107
例外じゃないって立場は俺しか居ないのか?
その場合、お前らはこれを整合性よく説明できない馬鹿共だということになるが、それで良いか?

逆に考えてみろ。
君がそれを「例外」だとしているのなら、つまり「例外」でなければ君は
const <type> *p = ... // (A)
<type> const *p = ... // (B)
で意味が違うべきだというわけだ。
その場合、それぞれどういう意味と捉えるべきだと考えるのか、言えるか?

110デフォルトの名無しさん (ワッチョイ cbb3-stpt)2018/01/08(月) 19:52:07.48ID:RVv57Yq50
少なくとも俺は そういうもんだと覚えてるだけで説明はできない

111デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 20:23:19.52ID:7hYpzMEE0
こんなの決め事なんだからもしそう言うのがあったとしても
> その場合、それぞれどういう意味と捉えるべきだと考えるのか、言えるか?
は、作った奴に聞くしかないだろ

112デフォルトの名無しさん2018/01/08(月) 20:24:38.73
例外でもなんでもなく、単にC言語の標準規格がそうなっているからとしか言いようがないけどな。

宣言指定子 (declaration specifier) は以下の3要素から構成されている (順不同)。
・記憶クラス指定子 (storage class specifier) : auto, register, static, extern, typedef
・型指定子 (type specifier) : void, char, short, int, long, float, double, signed, unsigned, struct/union指定子, enum指定子、typedef名
・型修飾子 (type qualifier) : const, volatile

ポインタ宣言子 (pointer) は以下の2要素から構成されている。
・*
・型修飾子 (type qualifier) リスト

いろいろ省略してるので細部は不正確かもしれないがC89ではだいたいこんな感じ。
参考: C11のYacc文法 http://www.quut.com/c/ANSI-C-grammar-y.html

で、なぜそうなっているかを自分流に解釈して自分の中で整合性を取るのはいいけど、それを他人に押しつけるなってことだね。

113デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 20:24:45.15ID:u4QX+fVn0
ちゃんと理詰めで理解できるやつもいれば
暗記するしかないやつもいる

世の中、人それぞれだな

114デフォルトの名無しさん2018/01/08(月) 20:39:32.52
>>113
別に太陽が地球の周りを公転していると解釈してもいいんですよ?
結果さえ合っていればね。
ただその自分流の解釈を他人に講釈したら恥をかきますよって話。

115デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 20:54:58.77ID:7hYpzMEE0
>>113
> ちゃんと理詰めで理解できるやつもいれば
アホなの?
理詰めで説明できると言うならして見せろよ

116デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 21:18:47.34ID:u4QX+fVn0
             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ

117デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 21:37:19.02ID:7hYpzMEE0
敗北宣言かよ w

118デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 21:43:42.37ID:u4QX+fVn0
無知なやつには
恥をかかせるよりも
教えないことが最も堪えるからな

119デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 21:47:27.34ID:7hYpzMEE0
何を教えるつもりなんだろう...
俺が思う正解は>>111に書いてあるんだが w

120デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 21:51:24.43ID:u4QX+fVn0
悪党の泣き声は言い響きだ
何を教えるつもりなのか聞き出したいんだなあwww

121デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/08(月) 21:56:08.87ID:7hYpzMEE0
どうせなにも出てこないのは既にわかってる
って>>115みりゃわかると思うんだが w

122 ◆QZaw55cn4c (ワッチョイ 1f60-1EiW)2018/01/08(月) 21:58:13.44ID:F+Qn6y7R0
正直なところ

const int x

int const x
は同等、

というのは、決め事でいいと思うよ、何もかも原理原則で理解できる(までに細かくパースできる)人にはどうでもいいのかもしれないが。

‥えっと、細かい人にとって、この場合どうでもいいのか、どうでもよくないのか、どっちだったっけ??

123デフォルトの名無しさん (ワッチョイ 0fe9-7jJO)2018/01/08(月) 21:58:47.99ID:0mTJv+h60
知らないし、相手が嫌いだから教え(られ)ない

124デフォルトの名無しさん (ワッチョイ 8ba8-15OS)2018/01/08(月) 22:04:03.83ID:t4bSGeIh0
同等も何も、修飾する主体が変数だけなんだから、何をどう変えろと?
対象がポインタなのかポインタの内容なのかって話に意味の無い例を挙げてどうしたいんだ?

125デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 22:17:28.76ID:u4QX+fVn0
収穫ゼロ
 ざ ま あ www

126デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/08(月) 22:43:40.28ID:8LuLzpAV0
>>116
>>125
禿同

というかいい加減、知らない奴が煽るとか止めろよドアホ共。それは長期的にスレを毀損する。
なお、俺は知っている奴が馬鹿を糞味噌に貶すのを止めはしない。
馬鹿なこと言わなきゃいいだけだし、
逆に、これが出来ないのがID制フォーラムが腐る原因だと思っているから。

ヒントは既に書いたし、それ以前にC流の文法解釈をすれば特段不自然でもないし。
「例外」だと言いつつ(A)≠(B)を妥当とする根拠もないのはただの自己矛盾だと気付け。
そしてK&RはCの作者によって書かれているんだが、それも知らないのか?
Cしかなかった昔ならともかく、今お前らみたいな馬鹿がCやる理由は無いと思うんだがなぁ。

127デフォルトの名無しさん2018/01/08(月) 23:14:54.65
>>126
で、K&Rのどの記述からconstに関する解釈(constの右側の固まり全体が定数と見なされる)を読み取ったの?

128デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 23:16:56.57ID:u4QX+fVn0
K&Rにconstはねえな
constの設計は髭と禿の合作だが

129デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/08(月) 23:27:43.34ID:8LuLzpAV0
>>128
ここに来て堂々と嘘をつくとか、お前も死んだ方がいいな。
K&Rが手元にあるのなら、目次見てみろよ。

130デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 23:28:56.73ID:u4QX+fVn0
おまえの手元のK&RってISBNはいくつだ?

131デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)2018/01/08(月) 23:40:40.21ID:u4QX+fVn0
眠い・・・落ちるぞ

132デフォルトの名無しさん (ワッチョイ 8b23-hL1C)2018/01/09(火) 00:38:27.40ID:zckyAnL00
緑色のK&Rを読破するのに20年かかったわ

133デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)2018/01/09(火) 05:02:03.58ID:/Jm0Q1+w0
煽ることしかできないアホ ⇒ ID:u4QX+fVn0, ID:8LuLzpAV0

134デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/09(火) 09:57:35.67ID:2pt0JvoIa
人の事はどうでもいい。Cの話を書け。

135デフォルトの名無しさん (スフッ Sdbf-7jJO)2018/01/09(火) 09:59:26.50ID:cELqpMaXd
おまえもなー

136デフォルトの名無しさん (ワッチョイ 0bf6-5YeV)2018/01/09(火) 10:17:45.46ID:BapSTNU/0
constがないK&Rが本のことだと思ったアフォはもう死んじまったのか?

137デフォルトの名無しさん (ワッチョイ bb8a-ICSi)2018/01/09(火) 12:48:57.63ID:TNcFjeMv0
家のは、4-320-02145-2だけど、constは無いな

138デフォルトの名無しさん (ワッチョイ 0f8a-jAz5)2018/01/09(火) 13:34:20.42ID:IJNuACex0
プログラミング言語Cの第2版(白本)は初版(緑本)と違ってANSI規格準拠
型修飾子や型指定子の項目にconstは存在する
というかconstとvolatileはANSI標準で新設されたものと明言されてる
一般には同一著者なので第2版まで含めてK&R本と呼ばれているから紛らわしい

139デフォルトの名無しさん (ワッチョイ bb8a-ICSi)2018/01/09(火) 13:44:26.69ID:TNcFjeMv0
緑は初版じゃ無いよ。
初版は白。だから紛らわしいの。

140デフォルトの名無しさん (ワッチョイ 0f8a-jAz5)2018/01/09(火) 13:50:33.71ID:IJNuACex0
あ、そうか
第2版の翻訳訂正前の表紙が緑だったっけ?
現在発売中のものの表紙は白だよ
https://www.amazon.co.jp/dp/4320026926

141デフォルトの名無しさん (ワッチョイ bb8a-ICSi)2018/01/09(火) 14:03:02.91ID:TNcFjeMv0
プレンティスホール版で言う所の「ANSI DRAFT」の斜線入り
に相当する版が緑色だったかと。

4.xBSDやOS-9がこの前の版のCなので、未だに残っているんでしょうね

>>141
そう言えば最後にK&Rスタイルで書いたのはOS/9-68Kだったな
もう25年ぐらい前の話だが

143デフォルトの名無しさん (ワッチョイ 0bf6-8O7H)2018/01/09(火) 21:51:12.35ID:BapSTNU/0
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこいOgju
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

おまいらはとにかく優しくない

145デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/10(水) 15:34:00.74ID:Y4Jjv91Na
つまり君は愛を求めてここに来たんだね。

146デフォルトの名無しさん (ワッチョイ 3b22-8O7H)2018/01/10(水) 15:51:40.83ID:4q6sC60X0
お笑いぐさだな

147デフォルトの名無しさん (ワッチョイ 4f23-ldot)2018/01/10(水) 18:12:49.28ID:b0jd81470
openじゃなくてfopenみたいに、ファイルの存在確認のaccess関数に
対応するちょっと上位の標準関数ってある?

148デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/10(水) 18:24:05.75ID:lfXyh+0pa
>>147
stat()とfstat()なんかどうだ?

まあでもopen(), fopen()の関係とは違うけどな。
open()はシステムコールだがfopen()はライブラリ関数だ。
(UNIX系OSの話ではあるが)。

俺の希望は、たいしたやりたくもないけど、
ちょっとやってみたら?とか丁寧に教えるからやってみなよ!
とかさ、そういう感じで優しく接してもらってだな、で、出来も悪いからなかなか覚えないけどそれでも教える側が知恵を絞ってどうにかうまく理解させる方法はないだろうかと創意工夫して育てる環境というのかな。とにかく頼むよまじ

150デフォルトの名無しさん (ワッチョイ 4f23-ldot)2018/01/10(水) 19:26:07.53ID:b0jd81470
>>148
stdio.hにaccess()の偉いやつあるのかなー と思ったのだよ
無いならまあいいけど

151デフォルトの名無しさん2018/01/10(水) 20:01:31.67
>>149
授業料ももらってないのに優しく教える理由なんかないわな
5chなんて煽り合いと罵り合いの場だよ

152デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/10(水) 20:07:35.30ID:s9KBVpbq0
>>149
日本語でおk
そして死ね

> 出来も悪いからなかなか覚えないけど
なら覚えるまで何度でも読み返せ

> 教える側が知恵を絞ってどうにかうまく理解させる方法はないだろうかと創意工夫して
教わる側が1mmも努力せず、教える側に全責任をなすりつけるのは典型的ゆとり。死ね。

というかな、はっきり言えば昔より格段に環境は良くなっている。
当然教える側のノウハウも蓄積されてるし、
本も大量に出版され、良書以外は淘汰されてるし、
Webにも情報があふれ、ここみたいな掲示板やフォーラムもあるし、
無料でIDEも使えるし。

だから昔の環境で手こずった奴も、今なら楽勝で学んでいける。
問題は、昔だったら(=IDE無しでは)お話にならない馬鹿にもプログラミングさせようとしていることであって、
俺はこれに関してはもう諦めた方がいい=手取り足取り教えないと出来ない奴は死ねでいい、と思っている。
自分の為に他人に無償の努力を強いるその姿勢が根本的に間違っている。
つかマジで、ゆとりのノリでやりたいなら、C以外のゆとり用言語を使え。Javaとか。新しいのならGoとか。


そしてこれとは別に、俺は2chとは別の掲示板を立ち上げようとしているのだが、
君はこれについて興味あるか?
追える限りでの発言を確認したが、君は煽るだけの無能ではないらしい。
俺は今の2chのシステムでは行けるところまで行っている(既に飽和している)と見ているから、
これ以上の物を求めるのなら何かしら新しい機能が必要だと考えている。
今はそれのアイデア出し中だ。何かあれば是非。

153デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)2018/01/10(水) 20:09:47.69ID:aFHgFo+Q0
漠然とした質問で失礼します。
私は最近c言語の勉強を始めたところでギリギリポインタ等も理解できたところです。
そこで、アルゴリズムとデータ構造の勉強をしようと思い本を何冊か買ってきたのですが、
スタックなどのデータ構造の仕組みがよくわかりません。。
どの参考書でも、「スタックとは後入れ先出しで…」という説明の後、「それではc言語でスタックを
実装してみましょう」といって意味不明なコード(長い)が書かれているパターンが王道のようです。
このパターンは線形リストとかでも同じです(諸兄にはいうまでもないでしょうが…)。
どのような実益があってこのようなデータ構造を生成する必要があるのでしょうか。
python等でいうところのリストに相当するデータ構造をc言語で作成するためということ?
また、実際のプログラムにおいては、データ構造の定義だけでかなりコード長くなると思われるのですが、
よく利用される手法なのでしょうか。

154デフォルトの名無しさん (スッップ Sdbf-IYiY)2018/01/10(水) 20:20:45.75ID:wz9ZVGEfd
ん?
statとかfstat?

155デフォルトの名無しさん (ワッチョイ 3b22-8O7H)2018/01/10(水) 20:21:25.37ID:4q6sC60X0
>>152
で、constはどこにあったの?

156デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/10(水) 20:26:57.23ID:s9KBVpbq0
>>153
std::stack相当の話?
なら大して使わないから、とりあえず読み飛ばしていい。

つか、最初から全部キッチリ理解しようとせず、
まずは分かる範囲で組み、その後、自分の出来る範囲を広げていくようにした方がいい。
(1度読んで全部理解して捨てる、ではなく、最初から5回読む前提で分かるところから読み進める)
そのうち、stackを使うべき用途に遭遇したら、なるほどと理解できるようになる。

157デフォルトの名無しさん (ワッチョイ 9fd7-r3wo)2018/01/10(水) 20:34:17.56ID:01jIFW0g0
>>153
直近のご要望としては、スタックの使い所を知りたいって事かな?

ほとんどの実行環境において、C言語の関数呼び出しなんかの実現に使われてるよ。
呼び出した側の状態を保存する場合にpush、呼び出され側から戻るときにpop的な。

158デフォルトの名無しさん (ワッチョイ bb8a-ICSi)2018/01/10(水) 20:35:33.51ID:P2Ck3R5y0
>>149
幾ら出す?

>>153
どのような実益?そうだなあ。スタックといえば以前PerlでXMLの階層構造を
SAX使ってRDBに全て入れる時に使ったなあ。まあ、それだけでなく先入先出に
するとやりやすくなる処理はあるよ。再起処理でも使われるし(スタックに積まれて
いるとあまり意識する必要ないかもしれないが)。

リストは例えば長さが可変長のファイルからデータ取得してメモリ上に置いておく
時に使えるかな。

まあしかしライブラリにあるならそれ使った方が楽だよ。毎回書くのは阿保らしい。

160デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)2018/01/10(水) 20:49:01.77ID:aFHgFo+Q0
>>156
とりあえずソートアルゴリズムのが理解したいと思い勉強をしていたのですが、複雑なものになってくると
各種データ構造の理解が必須!みたいになってきまして、データ構造の方にも手を出したみたわけです。
ヒープとかの方が簡単そうな気がしますし、とりあえずスタック関連は後回しにします。

>>157
はい、なんかそのようなことも本に書いてあったのです。
しかしこれが、「スタックとはプログラミング言語内においても既に設計されている基本構造なのだ。以上終わり。」
であれば、スッキリするのですが、
「それでは、これをc言語で実装してみましょう」といって、スタックをc言語のプログラムで作り出すことの意義
が今一つわからないというか。

161デフォルトの名無しさん (ワッチョイ bb8a-ICSi)2018/01/10(水) 20:55:29.77ID:P2Ck3R5y0
>>150
filenoとfdopen覚えた方が楽だけどね

162デフォルトの名無しさん (アウアウカー Sa4f-dSb4)2018/01/10(水) 21:00:10.17ID:lfXyh+0pa
それ用途が違うよね。

163デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)2018/01/10(水) 21:00:44.51ID:aFHgFo+Q0
>>159
難しすぎます!
おそらく当分使えるようにはならなさそうです!

164デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/10(水) 22:13:09.56ID:s9KBVpbq0
>>160
> とりあえずソートアルゴリズムのが理解したいと思い勉強をしていたのですが
アルゴリズムとデータ構造をソートで学ぶのは昔流で、今はそれをこの段階でやる必要はない。
今はとりあえず次の章に行ってしまって、for/while/if等を使いこなせるようになった方がいい。

> 「それでは、これをc言語で実装してみましょう」といって、スタックをc言語のプログラムで作り出すことの意義
仕様を説明する必要がないからだよ。

「じゃんけんゲームを作ってみましょう」なら仕様は大体分かり、説明が省ける。
「オレオレゲームを作ってみましょう」なら、「オレオレゲームとか何か」から詳しく正確に説明しないといけない。
その本は「スタックとは何か」を当然知っているという前提で書かれているんだよ。
Cプログラマがスタック構造を知らないというのもあり得ないからね。
ただ、スタック知らなくてもプログラムなんて組めるし、実際Web系の連中は知らんと思う。

とはいえこれが一方的に悪い訳でもなくて、逆に言えば、
スタック構造を知っていることがプログラミングの本質ではない、ということなんだよ。
だから君みたいな初心者は、分からないところは飛ばして分かるところから読み進めればいいんだよ。
というか、今、君のレベルの初心者がCから始める意味は無いし、
無駄に遠回りになるだけだが、それ分かってやってるか?

165デフォルトの名無しさん (ワッチョイ 2bb3-IKYq)2018/01/10(水) 22:17:21.44ID:3INPjtq00
>>160
ハノイの塔のパズルを解くプログラムを書いてみて。
スタックを使う場合と使わない場合の2パターン描いてみて。
で、どちらが少ない行数で書けるか、どちらが実行速度が速いか、
どちらが理解しやすい美しいコードか、さまざまな観点で比較してみて。

166デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)2018/01/10(水) 23:08:24.25ID:s9KBVpbq0
>>153
と思ったが、Pythonに言及しているところからすると、既にPythonを使いこなせるのか?
だとすると、「アルゴリズムとデータ構造」をガッツリやる意味はある。

スタックが何故使われるかと言えば、スタックで対応できる場合に最速だからだよ。
だからCは実行方式からしてスタックべったりだ。
逆に言えば、それくらいしかメリットないし、
通常の配列にメソッド生やしてスタックにするのも簡単だから、他言語では大体そうしてるでしょ。

以下見れば分かるが、
https://cpprefjp.github.io/reference.html
Pythonのリストに当たる物は
array, deque, forward_list, list, queue, stack, vector の7種類あり、
Cはこれらを使い分けて最速コードを得る為の言語なんだよ。
勿論それ以外の物が良ければ自作しろ、という文化だし。
逆に、Python等は、グダグダ考えずに全部リストでやれ、それの方が分かりやすいし、という文化だろ。

167デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)2018/01/10(水) 23:39:41.13ID:aFHgFo+Q0
>>165
ほうほう。ありがとうございます。
かなり難しそうですがやってみます。

>>166
スプリクト言語の方が簡単、pythonやrubyでプログラミングというものをはじめましたが、そもそも詳しい人だけが
簡単に思えるだけで、基礎的知識なしでは相当にきついんでないの?と感じてcを始めました。
というわけでpythonが使いこなせるということはありません。
cに関しては教科書一通り一周して、とにかく制御をマスターしたかったので制御文を使いまくるであろうソートアルゴリズムに手を付けたんです。
制御文もアルゴリズムも理解できたら一石二鳥かなと思って。
「定本cプログラマのためのアルゴリズム〜」に「リスト」の説明があり、
・要素の挿入 ・要素の削除 ・要素の読み書き ・探索
・複数のリストをまとめる ・リストの分割 ・リストの複製 ・要素の数を求める
とあり、「あら、pythonのリストと全く同じ構造だ」とおどろいたわけです。
cはとりあえずarray, deque, forward_list, list, queue, stack, vectorといったものを「なんとかして」pythonのリストやまた
それ以外のデータ構造を自分で作成するということですか。

168デフォルトの名無しさん (ワッチョイ 1bd0-fRwE)2018/01/10(水) 23:52:55.49ID:Klfu8N/c0
どうでもいいけどプログラミングなんて10年後オワコンじゃない?
コード共有サイト行けば書きたかったコード見つかるしコピペすればおk
世界で既に誰かが書いてるもの二回三回書く必要性はない
この流れが自動化されれば終わるだろうな

169 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/11(木) 00:03:59.43ID:P2yp909q0
>>168
1から1000 までを全部掛けた答えを出す共有サイトのコードを見せてください

170デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/11(木) 00:13:19.12ID:pXQSKlgS0
>>169
なに言ってんだこいつ
調べれば1000000億%出るから自分で調べろよ
まさかgithubも使ったことないのかい?

171デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/11(木) 00:21:59.15ID:zDr2JTOQ0
>>167
> cはとりあえずarray, deque, forward_list, list, queue, stack, vectorといったものを「なんとかして」pythonのリストやまた
> それ以外のデータ構造を自分で作成するということですか。
違う。
Pythonのリストというのは抽象データ型で、要するに「万能」に作ってある。
この方がソースコードは分かりやすいから。(知識が少なくても読める)
逆に、「万能」なら限界ぎりぎりの速度を追求できないから、
Cでは別々にして使い分けろ、必要なら自作しろ、ということ。

> スプリクト言語の方が簡単、
これは実際にそう。
pythonやrubyでプログラミングというものをはじめましたが、
これも正しい。
> そもそも詳しい人だけが簡単に思えるだけで、
> 基礎的知識なしでは相当にきついんでないの?と感じてcを始めました。
ここはちょっと違う。

要するに、「動けばいい」プログラムでCを使う意味なんて無いんだよ。
逆に、最速のコードが欲しいときにはC/C++以外に現実的な選択肢はない。
だからほとんどのOS/ブラウザ/処理系(PythonやRubyも)はCで出来ているし、
Cが基礎だっていうのも間違いではないんだが、
プログラミングにCの知識が必要かというと、そうでもないんだよ。
Python/Rubyで済むのなら、Python/Rubyで済ませるべきであってね。
そして初心者はまず、「動けばいい」からスタートすべきであって、
それ以外に色々知識が必要なCはズブの初心者向きではないんだよ。

ただまあ、話を聞く限り、君が「アルゴリズムとデータ構造」をやるのは悪くはない。
とはいえ、現実的にソートのアルゴリズム知ってても大して意味はないし、
直接目標に向かった方がいいと思うが。
例えば、ゲームを作りたいのなら、何でもいいからとりあえず動くゲームを作ってみろ、ということ。
どうせこの最中にいろいろな問題にぶち当たることになるから。

172デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/11(木) 00:30:31.27ID:zDr2JTOQ0
一応付け加えておくと、
Pythonのリストは、C++で言う array, deque, forward_list, list, queue, stack, vector のどの用途にも使える。
でもその分遅いし、メモリも食う。
Pythonを使うというのは、これを認めて、楽さを取る、ということ。
逆に、最高速度で動かしたい、メモリを無駄に食うのは嫌だ、となると、
リストの実際の使われ方を確認して、最も適切なものを選べ、
或いはさらにチューニングできるのなら自作しろ、となるのがC。

だから、組み合わせて作るのではなく、使い分ける。

173デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/11(木) 00:39:50.99ID:zDr2JTOQ0
例えて言った方がいいかな?

Pythonのリストは「車」という解像度しかないのに対し、
Cでは、「軽、軽トラ、普通車、バス、トラック」が指定できるようなもの。
「車」で済むのならPython使っとけ、だし、初心者はこれで問題ない。

細かくチューニングしたいからそれ以上の解像度が必要だ、というときにだけCが必要で、
逆に言えば、その気がないのならPython/Rubyで十分だと思うし、そうするべきだとも思う。
Cは実行速度は最速だが、開発速度は最速ではないので。

174デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/11(木) 00:45:19.80ID:pXQSKlgS0
なお、人工知能にはPython使う模様
cさん...w

175デフォルトの名無しさん2018/01/11(木) 00:48:46.80
Pythonでも速度求めるんならスタック・キューはlistじゃなくてcollections.deque使うやろ

176デフォルトの名無しさん (ワッチョイ 6ad7-LeTx)2018/01/11(木) 01:47:55.44ID:RB8iNeAj0
>>174
py なのはインタフェースだけでしょ。

177デフォルトの名無しさん (ワッチョイ 6ad7-LeTx)2018/01/11(木) 01:55:31.45ID:RB8iNeAj0
>>160
えっ?
データ構造を学んでるんでしょ?
その実装例がでてきたことに対して、実装する意義がわからないっておかしくない?
学習するためじゃないんかい…

車輪の再発明は無駄だけど、学習として車輪の作り方をトレースするのは有益。

とちょっと斜め上の視点をとってみた。

178デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/11(木) 08:54:30.53ID:oCnGxyW+a
今からお前らが書いてるコードが全て車輪だってことなんだよなぁ...

179デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/11(木) 08:56:46.29ID:oCnGxyW+a
2chにいる時点で端くれプログラマーなんだし世界で既に書かれたコードしか書いてないでしょ...()

180デフォルトの名無しさん (ワッチョイ 5922-UJUP)2018/01/11(木) 10:05:47.46ID:S67tZ9jk0
>>179
おまえさんは何かコードを書く前に
それを誰が書いたのか調べてクレクレしに行くのか?

すげー嫌われ者だろうな

181デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/11(木) 10:09:07.84ID:oCnGxyW+a
>>180
これは無能確定
何回も同じコードを書くのかい?

182デフォルトの名無しさん (ワッチョイ 5922-UJUP)2018/01/11(木) 10:27:39.81ID:S67tZ9jk0
>>181
俺の質問が先だ
答えろ

同じ仕様を満たすコードを何人もが独自に書くプロジェクトなんて、沢山あるだろw
誤ったオブジェクト指向の解釈が蔓延した弊害でなw

184デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/11(木) 11:04:46.69ID:oCnGxyW+a
>>183
非効率だよな

185デフォルトの名無しさん2018/01/11(木) 12:08:37.79
自分でコード書かないと npm left-pad みたいな問題が起きる

ブラックボックス的に使う部分と内製化する部分はきっちり区別して
内製部分はすべてのコードを完璧に把握しておくべきだ

186デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/11(木) 14:34:55.01ID:xUZeJB/aa
>>185
そりゃコードは把握すべきだよ
けど基本全部他かりゃ引っ張ってくりゃ解決するんだよなプログラムなんざ
プログラマーを神格化する風潮やめようぜ

187デフォルトの名無しさん (ワッチョイ 5922-UJUP)2018/01/11(木) 15:22:04.47ID:S67tZ9jk0
何も解決したことのない者が口ばっかりは達者だな

188デフォルトの名無しさん (ワッチョイ 9ee7-IhuN)2018/01/11(木) 19:10:21.87ID:NvDnlhDw0
心が汚れているとコードも

189デフォルトの名無しさん (ワッチョイ 6a12-0PCX)2018/01/11(木) 20:02:04.60ID:Nwq/3BKy0
知恵遅れでポインタすらも分からずギャーギャーわめいてるアホがコイツなんじゃねえの
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10184535725

心の乱れはコードの乱れ

191 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/11(木) 20:35:11.69ID:P2yp909q0
>>190
名言だ!

192デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/11(木) 21:59:21.52ID:zDr2JTOQ0
>>189
確認したが、同意する。
質問/回答一覧できるのに、酷いな。

193デフォルトの名無しさん (ワッチョイ c576-01qY)2018/01/11(木) 23:02:15.41ID:/sH2FBYP0
いやしかし、ひどい質問だなw
プログラムどころかアルゴリズムの時点で特許がどうの騒ぐ時代なのに、プログラムを全世界で共有とか頭悪すぎる。

194デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/12(金) 03:12:29.92ID:a7+Gi3xg0
部分的にはライブラリの配布みたいな感じで出来てはいるけどな。

195デフォルトの名無しさん (ワッチョイ 11d0-rzLw)2018/01/12(金) 03:27:24.54ID:2CbWWRaV0
正直車輪の再開発なんていってたら商売成り立たないよな
ほかの人に見せて第三者がそのコード使ったら普通に嫌だと思うんだけどコードの共有化とか利益と競争を考えてない綺麗事じゃないか?
コード使い回しなんて実際問題、会社内ぐらいでしかやらんだろ

むしろ乖離問題で使わせてない。つか使わせたくないってのが本音。
資産だけど公開した途端にむしろ負の資産になる。

197デフォルトの名無しさん2018/01/12(金) 11:55:16.87
GNU汚染問題もあるし出所の怪しいコードをやたらとホイホイ取り込めないよな

198デフォルトの名無しさん (ブーイモ MMc9-I7Ul)2018/01/12(金) 12:45:18.53ID:EuBhIV8VM
ライセンス絡みは面倒だから出来るだけ自分で書くのが一番いい

199デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/12(金) 17:10:11.05ID:L71nmxDMa
何も見ないで独自に作ってもある日サブマリン特許にやられたりする

200デフォルトの名無しさん (ワッチョイ 59f4-UJUP)2018/01/12(金) 17:12:48.89ID:NPCVz5+f0
あれひでえよな
産みの苦しみを報うはずの制度が
産みの苦しみを突然否定しに来る
たった1人を報うために大勢が犠牲になる

201デフォルトの名無しさん (ワッチョイ a58a-oih1)2018/01/12(金) 17:19:40.33ID:oHmTflkZ0
ソフト特許権絡みの問題なんて余程優れたアルゴリズムを実現でもしない限り発生しないだろ
少なくとも車輪の再発明レベルでは問題が起きようがない
ライセンス関係の問題の殆どは著作権絡みであって特許権の問題ではない

202デフォルトの名無しさん (ワッチョイ 59f4-UJUP)2018/01/12(金) 18:00:17.09ID:NPCVz5+f0
卑怯なことは一切せずに作ったオリジナルなものを
突然パクり呼ばわりされるんだぜ?
開発者としてこれ以上の侮辱があるかよ
いつそうなるかの予測もほぼ不可能だし
それで金よこせってまるで強盗かヤクザの集金だろうが

203デフォルトの名無しさん (ワッチョイ 398a-Hx09)2018/01/12(金) 18:05:57.70ID:JoZVVmVH0
レメルソンなんてSF級だもんな

204デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/12(金) 18:30:41.68ID:oHmTflkZ0
>>202
そこまで言うなら自分で先に特許出願でも何でもして防衛しろよ
仮にパクリ呼ばわりされても先願が認められれば拒絶の申し立ても出来るだろ

205デフォルトの名無しさん2018/01/12(金) 18:31:58.08
今北三行

206デフォルトの名無しさん (ワッチョイ 3d93-j9tc)2018/01/12(金) 19:19:49.18ID:dSWv3bkd0
自分で発明したものを後から特許とられて…って話でなければ
先に出願しとけってのは無茶、というか超時空理論だわな。

「サブマリン特許で攻められるのが嫌なら
何か作る前に全ての特許を調べておけ」という主張には、
「皆がそんな調査をする必要がある社会では何も生み出せないだろう」
という意見を出したいね。

207デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/12(金) 19:35:56.68ID:oHmTflkZ0
いやいや製品開発では商品企画段階で先行技術調査はやってて当たり前のことだぞ
後で他社から特許侵害の訴えを受けると面倒くさいことになる
というか大手メーカの組み込みソフト技術者は、技術レポート作成や特許出願の年間ノルマが課せられることも多い
例え特許として特許庁に認められなくても出願したという実績さえあれば先行技術として認められる
サブマリン特許といえども既に世の中に公知されている先行技術のあるものに対して実施料を請求することは出来ない
米国はサブマリン特許に見られるように特許を攻撃戦略をとすることが多いが、日本企業の場合は防衛が特許戦略の中心とする傾向が強い

208デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/12(金) 19:57:45.41ID:oHmTflkZ0
話が脱線気味だけど、特にソフトウェアに限って言えば余程のことがない限りコードの中身そのものが問題になることは少ない
ただし製品の制御方法についてはソフトが問題になることはある
例えば、炊飯器のご飯の炊き方や洗濯機の攪拌方法やエアコンの運転方法など、これらは特許(パテント)の出来損ないのペテントで
そのノウハウはがっちり固められてるし、下手すりゃ権利の侵害問題に発展することもある
ただし繰り返しになるけど、純粋なコードの権利については特許というよりは著作権の方が問題になることが多い

そういえばMSもLinuxが特許侵害してるって言ってandroid使ってるスマホメーカーから金受け取ってんだよな。
技術的にはたいしたものではないらしいが。

210デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/12(金) 20:20:38.77ID:AcL8GFCQa
プログラミングあんま知らんけどコードって著作権あるの?
俺普通に本とかの模写しまくってるんだけど...
もちろん勉学目的で商用してるわけじゃないけど大丈夫だよな...?

211デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/12(金) 20:23:47.74ID:oHmTflkZ0
特許に必要なのは、新規性と独創性と再現性
技術的に高度でも既に知られているものは特許にはならない
技術的にたいしたものでなくても今まで誰も考えつかなかったものは特許になる
ソフトウェアでも既に知られているアルゴリズムでは特許にならない
全く新しい理論に基づくアルゴリズムを実現すれば特許になる

212デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/12(金) 20:31:43.23ID:oHmTflkZ0
>>210
個人利用の範囲で商用利用しなければ問題ない

213デフォルトの名無しさん (ワッチョイ 5db3-gDcf)2018/01/12(金) 20:58:54.35ID:Vw0zRWAd0
画像処理関係はあちこち特許にぶちあたる

ぷにコンはどの辺が特許侵害なんだろうな。

215デフォルトの名無しさん (ワッチョイ 59f4-UJUP)2018/01/12(金) 21:41:56.36ID:NPCVz5+f0
>>204
そこまで言うならって
俺は何か間違ったことや行き過ぎたことを言っているか?

216デフォルトの名無しさん (ワッチョイ 59f4-UJUP)2018/01/12(金) 21:43:56.56ID:NPCVz5+f0
>>211
虎ノ門に言わせればそうだろうけどね

217デフォルトの名無しさん (ワッチョイ 398a-Hx09)2018/01/12(金) 21:55:17.37ID:JoZVVmVH0
サブマリン特許は公開されてないから、「サブマリン」なんだが
それを誰が調べるの?

218デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/12(金) 22:33:21.66ID:ju4bDeed0
>>217
それ昔の話
今は出願から一定期間経過したら公開されるし特許の権利期間も出願からの期間となってるからサブマリン特許はほとんどないよ

219デフォルトの名無しさん (ワッチョイ 7db3-y08B)2018/01/12(金) 22:34:31.24ID:jKePUTB40
https://i.imgur.com/K7Hao16.png
https://i.imgur.com/vFuBfX2.png

この13-3について教えてほしいんだけど、「選手リストの要素を順番に参照し」ってのが分からない
qsortでできるだろと思ってたができんかった
https://paiza.io/projects/BNMiYyK2ND3OJob63nzEFw

220デフォルトの名無しさん (ワッチョイ 399e-IhuN)2018/01/12(金) 22:47:57.86ID:96cxGEMW0
>>219
これはプログラミングの話じゃなくてお前の日本語読解能力の問題。
13-3 の問題文にモロにヒントが書かれてる。

221デフォルトの名無しさん (ワッチョイ 7db3-cgY/)2018/01/12(金) 22:51:28.64ID:jKePUTB40
>>220
だよねぇ
もうちょっと考えてみるわ

222デフォルトの名無しさん (ワッチョイ 6a12-0PCX)2018/01/12(金) 23:05:54.72ID:t7pO81Ne0
既にある連結リストにはqsortは使えない(これは常人でも考えれば分かる)
後からどうしてもソートしたいならマージソートを使う(これは常人がすぐに思い付くモンじゃないので知らないと出来ない、つまりは考えても無駄)

223デフォルトの名無しさん (ブーイモ MMc9-sUJ4)2018/01/12(金) 23:14:51.66ID:b7j7QzhUM
>>210,212
著作権は商用かどうかは無関係。
個人で楽しむなどの目的で例外的に複製が認められるだけ。
もちろん勉強用なら複製は構わない。
それ以上の利用は本に明示してあることもある。

224デフォルトの名無しさん (ワッチョイ 399e-IhuN)2018/01/12(金) 23:22:35.07ID:96cxGEMW0
>>221
「だよねぇ」じゃなくて「13-3の3行目ですかねぇ」だろ。

225デフォルトの名無しさん (ワッチョイ 6681-XCNn)2018/01/12(金) 23:23:04.02ID:gQJ9Pgb+0
ここで言っているコピーって、書籍に掲載されているロジックをそのまま借用するって事だよね

226デフォルトの名無しさん2018/01/12(金) 23:30:11.38
>>219
「以下のプログラムの (1) (2) の部分を作成し」の「(1) (2) の部分」が見つからない

227デフォルトの名無しさん (ワッチョイ 399e-IhuN)2018/01/12(金) 23:36:49.31ID:96cxGEMW0
>>226
ヒント:exit(1) の「(1)」のところかな?

言いたいことは分かるけど、まぁ…ね。

228デフォルトの名無しさん (ワッチョイ 3d93-j9tc)2018/01/13(土) 06:45:10.13ID:XcAHqv6T0
>>219
というか、これ学校の宿題レポートで先生が作った問題じゃないの?
こんな場でまるまる公開して教えてくれ、って大丈夫なのか。

229デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/13(土) 07:23:31.08ID:8qhapkmN0
>>228
それこそ著作権の問題が... w

230 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/13(土) 12:22:23.09ID:9/EYlaQy0
こんなところで公開したら、解いちゃうじゃないか!

231デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)2018/01/13(土) 13:00:13.08ID:ZTdbWh7g0
だいたいの人は既に頭の中で解けている

232デフォルトの名無しさん2018/01/13(土) 13:27:35.73
>>219見てちょっと考えてみたけど、
初回だけ(topが未設定の場合だけ)場合分けで例外的な処理がいるの?
あと、大小で判定して挿入するとき、先頭もしくは末尾だけは例外的な処理がいるの?
かっこよくスマートに書けるやりかた教えて!

233デフォルトの名無しさん (ワッチョイ 6a12-0PCX)2018/01/13(土) 14:20:20.40ID:lblZiSVe0
連結リストで検索すればお手本は大量に出てくる
この改まった場で今更説明するほどのものでもない

234 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/13(土) 14:25:55.88ID:9/EYlaQy0
>>232
ちょっと書いてみてよ

235デフォルトの名無しさん2018/01/13(土) 15:48:08.00
>>234
なんも見ずに書いてみたけど(コンパイルもしてないけど)
片方向リストにしたらこんな感じかなあ
見た感じスマートじゃないからたぶん無駄なことしてるんだろうけど

// 打席数、安打数は省略
typedef struct PLAYER_tag PLAYER;
struct PLAYER_tag {
char name[20];
PLAYER *next;
};
int main() {
PLAYER *top; // 先頭の要素
PLAYER *p; // 追加する要素
PLAYER *q; // 現在の要素
PLAYER *z; // 一つ前の要素
(省略)
top = NULL;
while (EOFでない) {
 // 1行読み込んで名前(name)、打席数、安打数を取得
 (省略)
 malloc(p, sizeof(struct PLAYER));
 memset(p, 0, sizeof(struct PLAYER));
 strcpy(p->name, name);
 
 // topが未設定の場合だけは例外的な処理
 if(top == NULL) {
  // 先頭に挿入
  top = p;
 } else {
  q = top;
  z = NULL;
  // リストの先頭から順に走査
  while (q != NULL) {
   // アルファベット順が大きい要素の直前に挿入
   if (strcmp(p->name, q->name) < 0) {
    if (z != NULL) z->next = p;
    p->next = q;
    break;
   }
   z = q;
   q = q->next;
  }
  // 末尾に挿入するときだけは例外処理
  if ((p->next == NULL) && (z != NULL)) z->next = p;
(省略)

236デフォルトの名無しさん2018/01/13(土) 15:52:19.19
>>235
先頭に挿入した場合の例外的な処理も必要だった

if (z != NULL) z->next = p;

if (z != NULL) {
z->next = p;
} else {
top = p;
}

237デフォルトの名無しさん2018/01/13(土) 16:02:34.49
>>235
>struct PLAYER
PLAYER
の誤りだった

238デフォルトの名無しさん (ワッチョイ f17f-XFrZ)2018/01/13(土) 16:08:35.10ID:y/551r5I0
とりあえず、実際にはリストとデータは分けた方がいいよね。
あと、リストのtopも実体にしたほうが、いい予感。

239デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/13(土) 16:27:20.61ID:dAIHjdGT0
割とマジでvolatileって何に使うんだ。。。?

240デフォルトの名無しさん (ワッチョイ 7db3-cgY/)2018/01/13(土) 16:35:27.25ID:Bkmc+O4i0
>>219だけど、結局小一時間考えたらできたわ

241デフォルトの名無しさん (スッップ Sd0a-oEMS)2018/01/13(土) 17:02:47.66ID:n17MDyEZd
>>239
余計なことすんなっておまじない。

242デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/13(土) 17:17:58.88ID:ZTdbWh7g0
>>239
volatile は揮発性のものってことで、読んだ次の瞬間に値が変わっている可能性がある変数に付けとくやつだ。
その変数は実際にはハードウェアによって変化するものに結びついているかも知れないし、他のプロセスや
スレッドによって書き換えられるものかも知れない。とにかくそのプログラムのメインの流れとは無関係に
変化する可能性があるということ。だから読む場合は必ずその変数の内容が読まれるようにコンパイルされる
必要がある。最適化してさっきから変更してないからレジスタに入ってる内容で代用しようみたいなコードに
なってはいけないわけだ。volatile を付けておくとそういう最適化をしなくなる。

243デフォルトの名無しさん2018/01/13(土) 17:32:56.34
>>239
知らないほうが幸せだよ
本当に必要なプロジェクトなら、過去に誰かがよく分からん不具合に何日・何週間も悩まされた末にコーディングルールに追加されてるから

244デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/13(土) 17:37:30.75ID:bxTj5irD0
>>239
UARTのFIFOレジスタとかに使う。
ハードウェアを直接叩かなければ普通は要らない。

245デフォルトの名無しさん (ワッチョイ 5d75-JLCo)2018/01/13(土) 17:46:52.02ID:GYwe1Ej/0
>>235
やっぱアセンブララッパー言語はゴミコードだな

246デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/13(土) 17:54:43.58ID:ZTdbWh7g0
setjmp(), longjmp() 使う時も volatile 使わねばならない時がある。
https://www.jpcert.or.jp/sc-rules/c-msc22-c.html

ま、longjmp() 使うこと自体が稀だろうとは思うが。

247デフォルトの名無しさん (スッップ Sd0a-oEMS)2018/01/13(土) 18:03:55.93ID:n17MDyEZd
長いことやってるがsetjump,longjump見たことない。

248デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/13(土) 18:11:34.78ID:dAIHjdGT0
>>247
volatileは?

249デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/13(土) 19:14:06.13ID:ZTdbWh7g0
そういや上でスレッドとは書いたが、スレッド間の同期に volatile は使わない方がいい。

なぜスレッド間の同期にvolatileを使ってはいけない?
https://ja.stackoverflow.com/questions/1538/%E3%81%AA%E3%81%9C%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E9%96%93%E3%81%AE%E5%90%8C%E6%9C%9F%E3%81%ABvolatile%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%AF%E3%81%84%E3%81%91%E3%81%AA%E3%81%84

250デフォルトの名無しさん (スッップ Sd0a-oEMS)2018/01/13(土) 19:19:08.96ID:n17MDyEZd
>>248
組み込みなら普通に使う。

251デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/13(土) 19:20:14.49ID:8qhapkmN0
>>244
マルチスレッドとか使ったことないのか?

252デフォルトの名無しさん (ワッチョイ 8a02-UJUP)2018/01/13(土) 19:29:24.04ID:NEwrBGsG0
longjmpはC++の例外のクソさに耐えきれなくなったときに使う

253 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/13(土) 19:48:33.54ID:9/EYlaQy0
>>249
普通は同期用の専用オブジェクト(mutex とか semaphoe とか)を使っておくね、それでいいよね…

254デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)2018/01/13(土) 20:16:39.27ID:ZTdbWh7g0
>>253
そうそう。それでいい。

255デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/13(土) 20:30:50.57ID:bxTj5irD0
>>249
そのサンプルコード、ハンドシェークしてるんだが、そもそも普通これしないよな?

並列させたいだけなら、普通はシグナル(sleep/wake up)で同期させる。それの方が軽いはずだし。
スピンロックでハンドシェークって、完全非同期で独立動作してるときだが、
あまり用途は無いと思うんだが。

256デフォルトの名無しさん (ワッチョイ 8da8-5nGQ)2018/01/13(土) 20:49:33.28ID:rmFGNtGi0
例えば、スイッチを入れると割り込みが入ってループから抜け出すプログラムとかでループ制御フラグをvolatileにする。

HDLCのモード変更とかに使うな

258デフォルトの名無しさん (ワッチョイ fa96-YM1W)2018/01/13(土) 21:51:39.64ID:2B+wxQGy0
ちんこを弄るな

259デフォルトの名無しさん (ワッチョイ 6a9b-p8jN)2018/01/14(日) 00:51:15.96ID:+jsAfOue0
vbaを扱えるようになったんで次にC言語触ってみようと思うんですが、どう勉強してったらいいですか?これ作ればあらかた基礎コードや仕組みが学べるものってあります?
やることによるんだろうけど、例えばテトリス作れば基礎が固まるとか。ネット検索しても今一ピンとこなくて。
おすすめの参考書とかもあれば教えてください。

260デフォルトの名無しさん (ブーイモ MMc9-Hx09)2018/01/14(日) 04:21:14.53ID:8rZxUVb3M
つ unix 4.3bsdの設計と実装

261デフォルトの名無しさん (ワッチョイ ad7e-UJUP)2018/01/14(日) 07:03:14.93ID:N+BeAo4b0
>>259
せっかくvba憶えたんならマシン語から入ってみては?
https://pf-j.桜.ne.jp/program/tips/vbasm.htm

ちな俺はBASIC->マシン語->Cで憶えたクチで
マシン語が透けて見えるCの特徴をありありと感じながら使えて
多重レベルポインタの**を全く悩まずにすんなり習得できた

262デフォルトの名無しさん (ワイモマー MM21-62yH)2018/01/14(日) 08:31:23.76ID:Ef+VW+YvM
>>259
コマンドラインで使えるミニツール(dirなど)を真似て作ってみたら?
標準入出力、ファイルアクセス、データ編集の基礎が身につくと思う。

263デフォルトの名無しさん (ワッチョイ ad7e-UJUP)2018/01/14(日) 10:22:10.54ID:N+BeAo4b0
dirはファイルアクセスせんだろ
ファイルシステムに問い合わせをするだけで

264デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/14(日) 11:13:36.96ID:zRc3xs8X0
ディレクトリも一応ファイルと言えばファイルなわけで・・・

265デフォルトの名無しさん (ワッチョイ ad7e-UJUP)2018/01/14(日) 11:20:44.66ID:N+BeAo4b0
openもcloseもせんしデータ構造を理解してseekする必要もない

266デフォルトの名無しさん (ワッチョイ b5b3-aDaF)2018/01/14(日) 11:22:32.01ID:D7wQbzM+0
>>259
Small-Cっていう C言語のサブセットがあって、
そのコンパイラを作るって本があったよ。
オレはこれで C言語の基礎を勉強した。
30年くらい前かな?
たぶん絶版で入手困難だと思う。

あと、アンドリュータネンバウム先生のMINIXオペレーティングシステムも勉強になる。
Linuxを作ったリーナストーバルズもアンドリュータネンバウム先生の教え子だったはず。

ディスクの挙動が知りたければ、Read Diagnostic だな

268デフォルトの名無しさん2018/01/14(日) 11:47:19.55
初心者は結城浩先生の
 新版C言語プログラミングレッスン-入門編-
あたりで学習しときなyo!

269デフォルトの名無しさん (ワッチョイ b623-6xgx)2018/01/14(日) 16:37:50.53ID:zRC3vmOw0
>>266
コンパイラつーか構文解析は何年たっても勉強する気が起きないわ
ほんと大変そうなんだもん

まあ必要ないなら特にやらなくてもいいんじゃね

271デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/14(日) 17:24:36.08ID:X58RAQQJ0
プログラミング初心者なんだけどコマンドプロンプトとかの知識って必要なん?
一応簡単なバッチファイル作れるレベルまでは来たんだけど

272デフォルトの名無しさん (ワッチョイ eab3-J7fK)2018/01/14(日) 17:29:47.43ID:dCYCQwP30
バッチファイルが作れるレベルでコマンドプロンプトの知識が必要かどうかがわからんとかあり得るのか...

273 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/14(日) 17:33:41.53ID:ekN/OeXo0
>>271
IDE build に頼らないで make する必要があるのなら
バッチファイルを作れる程度なら十分

274デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/14(日) 17:51:22.52ID:q1SBtCCQa
>>271
君にとって必要かどうかは君がこれから何をするかによって変わる。

275デフォルトの名無しさん (ワッチョイ 5e7f-o2Il)2018/01/14(日) 22:04:36.32ID:t1pyzP2Y0
ファイルのIOの部分難解すぎて意味がわからない。
・文字列を処理したいのにchar型とかint型とか byte型とか
 出て来るしtry catchとかIOExceptionとか何なのかがよくわからない。
・なんとかOutputStreamとか なんとかReader Writerが
 おおすぎてどれを使っていいかわからない。
・オブジェクトを生成して別のコンストラクタの引数に渡している部分が
 何をしているのかさっぱりわからない。
・BufferedReader / Writerとかを使う必要があるのかないのかよくわからない。
・結局文字列を読み書きするのとバイトを読み書きするのが何が違いがあるの?
・for(item : list){}文は使えないの?

276デフォルトの名無しさん (ワッチョイ 5e7f-o2Il)2018/01/14(日) 22:05:03.57ID:t1pyzP2Y0
すみません、Javaのスレに書こうとして間違えました

277デフォルトの名無しさん (ワッチョイ ad6a-UJUP)2018/01/14(日) 22:22:24.52ID:66CfjFh30
わざとらし

fwprintf(stdout,L"日本語");
4回に1回くらい文字欠けするんだが...

fflush入れてみろ
もしくはsetvbufでバッファーサイズを0に

280デフォルトの名無しさん (ワッチョイ ea6e-EKU2)2018/01/15(月) 19:03:01.00ID:WG2cD3TY0
プログラミング全く関係ねぇんだけど
組み込み系のプログラマーって電子制御とか電子回路、機械工学の知識必要ないん?
これ絶対プログラミングだけの知識で食っていける分野じゃねぇだろ

281デフォルトの名無しさん (オッペケ Srbd-01qY)2018/01/15(月) 19:07:26.61ID:nis3xk1Qr
必要ないわけ無いじゃんw
何でそんな勘違いにたどり着いたしw

282デフォルトの名無しさん (ワッチョイ ea6e-EKU2)2018/01/15(月) 19:12:07.64ID:WG2cD3TY0
>>281
やっぱそうなん?
あほらし
じゃあ組み込みc言語の本全部捨てよ
あほくさ、そんなん全部学ぶとか無理無理
情報工学の二回生だけどやめやめ、ばーか

283デフォルトの名無しさん (オッペケ Srbd-01qY)2018/01/15(月) 19:14:45.00ID:nis3xk1Qr
Cは別に組み込み専用言語でもないんだし、勉強続けりゃ良いじゃん。

284デフォルトの名無しさん (ワッチョイ ea6e-EKU2)2018/01/15(月) 19:18:35.04ID:WG2cD3TY0
>>283
あほやなぁ...
組み込み系以外でc言語の案件なんかまともにねぇだろ
どっかでグラフ見たけどcの用途なんか限られまくってるし
素直にPython勉強して人工知能するわ
人工知能なら電子回路とか機械工学の知識必要なさそうだし

285デフォルトの名無しさん2018/01/15(月) 19:24:26.25
組み込みCもいずれは勘定系のCOBOLみたいにごく一握りの職人にしかメンテできない時代になるんかな

286デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 19:30:46.90ID:kUJAacmi0
>>285
ヒエ〜!
機械工学科と電子電気科でもプログラミングの授業に力を入れる運動が出て来てるし(メカニクス的な意味で)こわい
情報学科って生きていけるんやろうか
俺も今のうちに基本的な電子回路制御の知識はつけておくべきか
アルゴリズムとか通信系学んだところでなんの意味があるんだくそがっ!

287デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/15(月) 19:31:33.79ID:IGiFRvDqa
どうかなあ?少なくとも新しいデバイスのデバイスドライバはC使われ続けるんじゃないか?丸々全部アセンブラにするより楽だから。
その後の処理は何の言語でも良い。

288デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/15(月) 19:36:30.16ID:IGiFRvDqa
あとやはりOSはまだまだC言語使われ続けると思う。UNIXやLinuxは根深いからな。
LinuxなんかAndroidのベースになっちゃったしそこらじゅうのネットワーク機器や家電に入っちゃったもんだからまだまだ思い切り使われ続けるだろう。

289デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 20:00:27.65ID:kUJAacmi0
Linuxってc言語で作られてるんか...?

290 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/15(月) 20:09:12.55ID:aMLeGifE0
C が滅びることはないでしょうね、真っ先に移植されるのが C コンパイラだし

>>289
はい

291デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 20:12:27.42ID:kUJAacmi0
とりあえず電子電気工学とか機械工学科じゃ太刀打ちできない人工知能の研究室選ぶは...
やっぱ時代はアルゴリズムや!

292デフォルトの名無しさん (JP 0Hb5-sUJ4)2018/01/15(月) 20:20:47.80ID:U6Q/Luf4H
人工知能の高速化にGPUとASICが必要になる時代にCから逃げられると思うなよ

293デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 20:22:02.89ID:kUJAacmi0
>>292
もちろんcとPythonはやるぜ!

Java、Rubyさんはポイッ!w

あとは線形代数とかの数学的知識も必要か...

夢を決めると頑張れるな

294デフォルトの名無しさん (ワッチョイ c576-01qY)2018/01/15(月) 20:40:53.91ID:uOPIDlxY0

295デフォルトの名無しさん (アウアウウー Sa21-QpsD)2018/01/15(月) 21:03:20.78ID:hdW0ysAta
プログラマーは鳥籠のようなものだ。
外にいる鳥たちはいたずらに中に入ろうとし、
中にいる鳥たちはいたずらに外に出ようともがく。

見聞を広げた方が、新しいアイデア浮かぶから、捨てるなんて馬鹿な選択するな。
むしろ全く関係無い分野の知識が思わぬアイデアを出してくれるのがこの業界。

>>289
そう。ソース公開されてるから見てみな。
所々アセンブラ使ってる所があったとは思うが大半がC言語。
これについてはUNIXも同じ。というかむしろOS作って配布しやすくするためにC言語作ったようなもの。
そうするとCPUが違っても移植が楽だからね。

298デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)2018/01/15(月) 21:22:28.42ID:/vxf22Ts0
>>295
それだけ根性ねえやつがなる職業ってことかねえ
俺の時代っちゃなんだけど、あの当時は大学に情報処理のコースなんかほとんどなくて
大人たちはみんなゲーム小僧の遊びの延長はメインフレームには関係ねえなんて
ぬかしてやがってて、それでも実際に大学のセンターと家のマイコンを触り比べて
一縷の勝ち目を感じるのを信じて大勝負に出たんだよ
でジジイたちにひと泡吹かせることにはいちおう成功した
今さら後悔なんかしてねえぜ

299デフォルトの名無しさん2018/01/15(月) 21:37:18.31
ぜひ組み込みCを自らプログラミングできる人工知能を生み出して
このスレにいる前時代の遺物のおっさんどもをギャフンと言わせてほしい

300デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)2018/01/15(月) 21:50:33.67ID:/vxf22Ts0
>>299
てめえでやれカス

301デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/15(月) 21:52:15.74ID:nB3IxhPi0
自らをプログラミングできる人工知能が実現できたらそれシンギュラリティの到来だろ
https://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E7%9A%84%E7%89%B9%E7%95%B0%E7%82%B9

302デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 21:54:53.07ID:kUJAacmi0
情報工学だからこそっていう仕事ねぇのか?
組み込み系って
情報工学でもやっていけるんか結局?
機械工学、電気電子のやつより上にたてる?
あいつらよりは地位上でいたい
なんかムカつくから

303デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)2018/01/15(月) 22:02:04.83ID:/vxf22Ts0
あくまで私見だけどね
ストレートに情報へ行ったやつより
遠回りしてきたやつのほうが
俺は個人的には期待しちゃうな
ストレートタイプにもすげえのいるけど
確率論的なやつで

304デフォルトの名無しさん2018/01/15(月) 22:18:51.33
情報工学って結局何ができるのかね?
プログラミングなんかやってる奴よりは
MATLABとか操ってる奴の方が格上だし
PowerPointとExcelしか触らない奴の方がさらに格上だわな

305デフォルトの名無しさん (ワッチョイ a58a-oih1)2018/01/15(月) 22:25:47.87ID:nB3IxhPi0
>>302
情報専攻の奴が他分野と張り合うとしたら工学の領域では厳しい
情報工学としてではなく情報科学の方面で学会とかで研究成果を発表していく研究者としての方が
上の立場を狙いやすいと思う

306デフォルトの名無しさん (ワッチョイ a58a-oih1)2018/01/15(月) 22:37:06.36ID:nB3IxhPi0
電気電子では技術者、情報では研究者、立場的に主流となる流れが違う印象だね

307デフォルトの名無しさん (ワッチョイ 6a12-0PCX)2018/01/15(月) 23:01:39.51ID:onFPJNQZ0
>>302
そもそもpythonがC言語で書かれてるから当分は心配しなくていい

308デフォルトの名無しさん (ブーイモ MM8e-sUJ4)2018/01/15(月) 23:08:49.73ID:AcA+4g8TM
日本じゃソフトはハードのおまけだからどの分野でも立場は上がらないよ。
人工知能も車とかその他製品の便利機能にすぎん。

309デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/15(月) 23:13:08.80ID:nB3IxhPi0
士・農・工・商・メカ・エレ・ソフト

機構設計(メカ)、ハード設計(エレキ)、ソフトの順で、ソフト技術者は最底辺ではある

310デフォルトの名無しさん (ワッチョイ 5db3-gDcf)2018/01/15(月) 23:15:12.96ID:xzJWiyyq0
マ板でおけ

311デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/15(月) 23:29:43.21ID:kUJAacmi0
>>303
なんか先輩で

機械工学から大学院で知能情報なんとか?に入った人いるって言ってたけどそういうタイプか
でもそういうのって役に立つ人材なのかね
機械工学と情報工学が交わることって一切ないし

312デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)2018/01/15(月) 23:43:19.63ID:sGlCIifU0
>>298
で、何をやったんだ?

313デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/15(月) 23:52:43.23ID:nB3IxhPi0
>>311
例えばだが、運動解析や流体解析などの人工知能を弄るような場合などは機械系の出身者の方が純粋培養の情報系よりは役に立つだろうな
工学の応用という点では情報だけでは潰しが効かない
何か秀でた専門分野を持っていれば強力な武器になる

314デフォルトの名無しさん2018/01/16(火) 00:42:39.48
俺は仕事で必要になるまでアクチュエータという言葉すら聞いたことがなかった

サチュレーションとかハンチングとかもしかり

結局、純粋な情報系なんて糞食らえってことだ

315デフォルトの名無しさん (ワッチョイ 399e-IhuN)2018/01/16(火) 00:54:39.43ID:IrFXasJ10
C言語なら俺に聞け、って言われれも…
こいつら全然違う話ばっかしてんじゃんかよ。

316デフォルトの名無しさん (ブーイモ MM8e-sUJ4)2018/01/16(火) 00:57:42.41ID:s9ShBvNKM
>>315
お前が聞かないから

最近の流行りで言えば、たぶんブロックチェーンは情報系。
他にはOSとかコンパイラとか人工知能そのものがたぶん情報系。
「情報系の成果を他の工学で使う」話をしてるのだったら、他の工学の知識の方が重要になるに決まってる。

318デフォルトの名無しさん (ワッチョイ aad4-1Ifv)2018/01/16(火) 01:53:49.35ID:r8efykKY0
何言ってんだこのバカ

319デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/16(火) 02:22:28.13ID:fnx7xBaf0
いや俺は>>317は当たっていると思うぞ。

情報系はソフトウェアそのものにフォーカスしてる。
だから最終的にソフトウェアで完結する物については情報系でいい。
当たり前だが他知識がない分、ソフトウェア技術で上回っている必要がある。
(工学系他と同程度のソフトしか書けないのであれば、他知識がない分糞なだけ)

ブロックチェーン(P2P)/OS/コンパイラ/人工知能『そのもの』はソフトウェアで完結してる。
他は超並列とか、少し前ならクラウドや仮想化/ライブマイグレーションとか。

320デフォルトの名無しさん (ワッチョイ a58a-oih1)2018/01/16(火) 03:31:07.22ID:Kooe0tJU0
情報科学とソフトウェア工学が中途半端に混じり合った上に、計算機科学や電子工学と被る部分も大きく、訳わからんのがいわゆる情報工学という学問分野
技術の発展を基盤とする工学なのか、純粋理論を追求する科学なのかスッキリしない
個人的に情報系の学問の本質は数学や物理学などの科学に近いと考えているが、ソフトウェアだけに限れば工学的なアプローチも間違いとは言えない
ただ情報系がソフトウェアだけにフォーカスしたものと言うのは極論すぎる

321デフォルトの名無しさん (ワッチョイ 9ee7-IhuN)2018/01/16(火) 05:06:01.65ID:EEvazAeE0
情報系の土台は神様から頂くのですね。

322デフォルトの名無しさん (ワッチョイ add5-UJUP)2018/01/16(火) 06:47:54.46ID:zATeRHxg0
>>311
メカに強いとこんな真似ができたりね
https://www.youtube.com/watch?v=vluzeaVvpU0&t=356s
https://www.youtube.com/watch?v=wi4dKAseDCg&t=67s

323デフォルトの名無しさん (アウアウカー Sa55-EKU2)2018/01/16(火) 18:09:55.18ID:I7+QVB4Ua
むしろこのご時世でプログラミングで食っていけるc言語プログラマーどこにいんの?
俺はweb系だしc言語詳しくないから友人の話だけど自動車のアンチロックブレーキシステムなんかの制御は自動車の知識をトップレベルで持つものにしかさわれないらしいな
c言語なんてweb系でもアプリ系でも使われてない以上むしろ機械系の人間専用みたいなとこあるんじゃないん

324デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/16(火) 18:58:32.24ID:fnx7xBaf0
やっぱWeb系は馬鹿だなとしか。

そういえばWeb系は情報系でも問題ないね。完全にソフトウェアでしかないし。
というかマジでWeb系は腹が立つほどレベルが低いから、
ちゃんと勉強した情報系の連中が押し寄せて、今のWeb系全員殺して欲しい。
C界隈にも分かるように言うと、「スクリプト言語しか出来ない奴をプログラマと呼ぶな」っての、偶にいるだろ。
あれよりさらに輪をかけて酷い感じ。

325デフォルトの名無しさん (ワッチョイ 6a12-0PCX)2018/01/16(火) 18:59:42.08ID:IFxShTi+0
・実は情報系人材以外のエンジニアにはオブジェクト指向や関数型は難し過ぎる
現代的?な言語の中でそこそこ簡単でそこそこ使えるのは実はCしかない

・機械語に変換して全て精査する場合は機械語に近い方がいいかもしれない
原発とかロケットとか製鉄所とかエアバスとか人工衛星とかいろいろ

326 ◆QZaw55cn4c (ワッチョイ 4a60-cexj)2018/01/16(火) 19:02:26.72ID:VgOvX4GN0
まあ C の言語仕様は比較的簡単な部類だと思いますしライブラリも貧弱だし

>>323
まあ車の制御系は機能安全とかも要求されるからハードル高いわな
でも車でもボディ系(ワイパーとかパーウインドの制御とかいわゆる上半分のところ)はそこまで厳しくない
あと車じゃなくても家電製品とかプリンタとかカメラとかありとあらゆるものにソフトが入ってる時代だから組込屋って意外としぶとく生き残ってるよ

328デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/16(火) 19:08:39.06ID:0ZvsnQMA0
web系ってばかではないでしょ
むしろ天才気質が多い

329デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/16(火) 19:10:51.68ID:Kooe0tJU0
プログラミングだけなら文系でもできる
ただC言語の中心である組み込み機器の制御系のプログラム設計/作成となると文系では荷が重い
制御プログラムの中身というか制御モデルは大量の連立微分方程式で記述される
機械系にしろ電気電子系にしろ制御理論にある程度精通していないと手も足も出ない
工学系技術者としての存在意義はC言語の文法に精通することではなくて、C言語(別に何の言語でもいいけど)でシステム設計/記述が出来る点にある
自分は電子系出身で専門はブラシレスモータのベクトル制御の分野
簡単に言えばハイブリッド自動車などの駆動モータ制御なんかで使われている技術のこと

330デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/16(火) 19:14:20.95ID:0ZvsnQMA0
>>329
すまない、質問で悪いんだがプログラミングは会社に入ってから身につけた?
それと大学院卒?

331デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/16(火) 19:18:29.08ID:Kooe0tJU0
>>330
プログラムそのものは学生時代(高校)から趣味でやってたよ
最終学歴は普通の大卒

332デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/16(火) 19:23:16.79ID:0ZvsnQMA0
>>331
【朗報】ワイ、情報工学生、希望を持つ

333デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/16(火) 19:24:51.35ID:fnx7xBaf0
>>325
> ・実は情報系人材以外のエンジニアにはオブジェクト指向や関数型は難し過ぎる
そんな訳ない。それはお前が理解出来てないだけ。

そもそもオブジェクト指向自体が「複雑化するソフトウェアを『簡単にする』」為に生まれた物であって、
オブジェクト指向ではまだ足りない、というので『関数型』が持て囃された。
本来は、関数型>オブジェクト指向>それ以前、の順で簡単なんだよ。
だからレガシーCOBOL等には手をつけられない事態になっているわけでね。
(ただしオブジェクト指向も関数型も馬鹿(=意識高い系)が調子に乗って暴走しているが)

Cが組み込みに使われるのは、余分なことをせず、書いた通りに動くから。
組み込み分野が広がっているのは、機械式よりも電子式制御のほうが圧倒的に楽だから。
考えてみろよ、車のエンジンで燃費最適化でバルブの開閉/点火タイミングを調整したいとき、
電子式なら1usずつ振るのも楽勝だが、機械式だと死ねるだろ。
VWの排ガス不正なんて、機械式では絶対に無理だった話だぞ。

334デフォルトの名無しさん (ワッチョイ 5db3-gDcf)2018/01/16(火) 19:44:58.49ID:W13bP77P0
で、人生相談続けるの?

>>328
天才って言うか仕事が速くないとダメだからパッと理解できる能力は必要だな
こつこつ真面目にやるような奴は組込の方がまだ向いてる

>>329
> 制御プログラムの中身というか制御モデルは大量の連立微分方程式で記述される
そんな狭い分野で語られても...

337デフォルトの名無しさん (ワッチョイ 398a-Hx09)2018/01/16(火) 21:13:38.86ID:E1MTmeKy0
シーケンサとラダー図使わないか?

338デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/16(火) 21:22:59.09ID:npxrv4qJa
>>323
ここに居る。

339デフォルトの名無しさん (ワッチョイ c5c3-Un2m)2018/01/16(火) 21:31:58.75ID:N4XSyAvU0
マ行け

340デフォルトの名無しさん (ワッチョイ 11d0-EKU2)2018/01/16(火) 22:08:44.23ID:0ZvsnQMA0
連立微分方程式ってc言語で解けるもんなんか
そうとう頭良くないと難しそうだな

341デフォルトの名無しさん (ワッチョイ 6681-XCNn)2018/01/16(火) 22:24:41.98ID:Mn3qJax30
何を制御したいかにもよりそう
変数が2つ以上あれば連立になるんでしょ

342デフォルトの名無しさん (ワッチョイ 9ee7-IhuN)2018/01/16(火) 22:46:04.76ID:62ym9vcY0
自動制御は数式の塊

343デフォルトの名無しさん2018/01/16(火) 22:51:20.18
ラスカル変換とか自慰定数とかわけわからんよな

344デフォルトの名無しさん (ワッチョイ 6ad7-bCzB)2018/01/17(水) 00:23:33.18ID:n4hXUBWy0
アライグマかよ

345愛知人2018/01/17(水) 00:55:17.46ID:BsDn1sQu
連立微分方程式を解くのはmatlabでやるんだろ
その結果を使って制御プログラムをCで実装する

まぁ結論から言うとプログラミングが必要な技術者とかいないから安心しとけ
機械系とか電気系はプログラミング理解してるとむしろ馬鹿にされる
無駄な知識付けてるってことだから要領ないってことだし

347デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/17(水) 02:14:48.88ID:TP+o0KtY0
結論から言うと、現代においてプログラミングが出来ない>>346みたいな奴は池沼以下だと気づけ。
だからこそ、小学校からプログラミング授業が必修化される。(個人的にはこれには反対だが)
あと10年もすると、「エ、マジ、キモーイ、プログラミングが出来なくていいのは、小学生までだよね」の世界がマジで来る。
そうなれば>>346は老害オブ老害だ。

だからこんなところを荒らしてるんじゃなくて、マジでプログラミングを勉強した方がいい。
Cである必要はないが。

348デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/17(水) 02:42:01.62ID:rMDm0SCW0
制御での微分方程式は解くためのものじゃない
制御対象の挙動を単純化してモデル化するために使うんだよ
言い換えれば、物理現象をプログラムで扱えるようにするために数式に落とし込むための道具だよ
挙動を記述さえできればプログラムで制御することが出来る

349デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/17(水) 02:52:45.50ID:rMDm0SCW0
ついでに言うと微分方程式そのものは代数的に解くんじゃないよ
プログラム上で数値計算によって制御対象(モーター回転数など)がリアルタイムに目標値に追従するように制御量(電圧など)を制御するのが
狙いなので解そのものを求める必要はない

スレ違いの話を延々と語る池沼

351デフォルトの名無しさん (ワッチョイ a58a-oih1)2018/01/17(水) 07:34:21.85ID:rMDm0SCW0
>>340 とか>>345 とかが組み込みの制御プログラムを誤解しているようだったのでちょっと言ってみただけ

352愛知人2018/01/17(水) 09:10:54.38
>>348 >>349
んなもん知っとるわボケ

353デフォルトの名無しさん (ワッチョイ ea6e-EKU2)2018/01/17(水) 10:55:01.85ID:yTTfDOoo0
>>347
なんだこいつ...
プログラミングを学ぶことは否定しないがそれが別の分野で役立つ
つまり専門的な分野+プログラミングが必要な人材っていうのは嘘
適材適所ってあんだろ、飛行機のパイロットが彦井の設計しますか?
飛行機の設計する人が飛行機内の電子回路制御担当しますか?
飛行機内の電子回路制御担当する人がマイコン系のプログラミング担当しますか?

しない、以上

プログラマについてだけは専業は限界があるんだよな。
別分野で使うツールを作る仕事だから、その分野の事を知らないとまともなインターフェースを提供出来ないからな。
そう言ういみではプログラマほど他業種との交流を大事にしないとならない職業なんだ。

355デフォルトの名無しさん (ワッチョイ a58a-8O9q)2018/01/17(水) 11:41:30.70ID:rMDm0SCW0
そういった分野(業務系)ではC言語ではなくて他の言語使った方がいい気がするが…

356デフォルトの名無しさん (ワッチョイ 398a-Hx09)2018/01/17(水) 12:25:07.42ID:X2mlxDcY0
そそ、普通APL

357デフォルトの名無しさん (アウアウカー Sa55-f6zg)2018/01/17(水) 12:36:59.86ID:yjhk8Mz+a
俺も彦井の設計してみたい

そう言った分野が業務系しか思い浮かばないのがこいつらの限界。

>>354
プログラミングって日本語とか英語とかで書いてある要件をC言語とかに翻訳する作業だから要件に対する知識とか要件を知ってる人との交流が重要なのは当たり前
政治家に同行する同時通訳者が政治の知識を持ってないと勤まらないとの似たようなもんだよ

そしてAIが日本語とか英語をそのまま読んでプログラムを作らず、
人の要望に答える動作を自らするようになると。

361デフォルトの名無しさん (ワッチョイ adba-UJUP)2018/01/17(水) 20:57:44.11ID:bqqIYUkv0
おまえら暢気だなー
ほんっと金銭感覚が絶望的にアウトなやつら

AIが人の要望に応えるまでに
人力でやるべきことは無尽蔵とは言わんまでも
特需はごまんとあるわけで
それを指くわえて見送るのは
アンダードッグな精神構造がそうさせるんだろ

仕事ってそういうもんだぜ?
未来永劫食うに困らないなんて保証はねえんだよ
その時その時の社会情勢を見て自分にできることをやって
おまんまにありつくんだよ

362デフォルトの名無しさん (ワッチョイ a68a-sUJ4)2018/01/17(水) 21:33:03.60ID:mulaC6Yl0
>>360
要望はあげられるけれど、それが要求と一致することは稀だよ。良い要求分析ができるAIはしばらく先だろうね。

363デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/17(水) 21:48:16.14ID:TP+o0KtY0
>>354
同意

>>353
情報系の適所はITドカタだよ。(PCで完結するソフトウェア)
電気電子(製造業)や自動車(機械)に於いては電気電子/機械の知識が無いと話にならんだろ。
例のブランコは、
https://www.tamingdata.com/wp-content/uploads/2010/07/tree-swing-project-management-large.png
結局のところ、仕様が分からない奴同士で話を進めるからそうなるのであって、
仕様を決められる奴自身がプログラミングすれば解決するんだよ。

今のところプログラミングは文系馬鹿には難しすぎる、ってことでITドカタが担当しており、
仕様のすりあわせをもっと確実に、ってことになっているが、
そもそも発注元がプログラミング出来ればこんなことにはなりようも無いのさ。
(最大の問題は発注元が工数《どれくらい難しいか》を全く見積もれないこと。例:京都市)
だから小学生から全員にプログラミングを教え、これが成功した場合、この話はなくなる。

プログラミングを万人が出来る時代になろうとしているのさ。
だから情報系特化なら、常人の領域ではなく、達人になっていないとただのゴミだ。
「プログラミングが出来る」だけで食える時代ではなくなりつつある。ちゃんと認識しろ。
そしてソフトウェアインフラのほぼ全てをCが担当している現在の状況で、
C抜きで達人になれるはずも無いだろ。
情報系でPythonしか出来ません=おまえ=ゴミ確定だよ。
情報系の学生ならグダグダ言わずにCもやるしかないだろ。アホなのか?
逆に工学系で専門領域がPythonやMatlabで完結しているのならそれだけでいいが。
工学系にとってのプログラミングはあくまでもツールだからね。

364デフォルトの名無しさん (ワッチョイ 398a-Hx09)2018/01/17(水) 22:59:39.60ID:X2mlxDcY0
DNS登録されてないようなURL貼って長文書かれても困るなぁ

365デフォルトの名無しさん (ワッチョイ 4af9-jyJf)2018/01/17(水) 23:08:57.41ID:UVkqckbJ0
マ板でするような話を指摘されても延々と続けるような奴らが何を言おうと、まったく説得力がない。

366デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)2018/01/17(水) 23:57:02.39ID:TP+o0KtY0

367デフォルトの名無しさん (ワッチョイ c5c3-Un2m)2018/01/17(水) 23:59:37.26ID:6JDsl40f0
いい加減マ板に行け

368デフォルトの名無しさん (ワッチョイ c58a-68Hl)2018/01/18(木) 00:25:48.70ID:zprwsW+f0
荒れてるな
それではネタでも投下してみるか
単純な制御プログラムのサンプルとして物理現象を連立微分方程式としてどの様にプログラムに落とし込むかを示してみる
実際は目標値に対して追従するように入力項を加えるのだけど面倒くさいので省略
制御プログラムのサンプルと言いながら実は中身は単純なシミュレーションだけど大体こんな感じ
>>348,349で微分方程式の解そのものを求める必要はないといった意味は分かると思う

https://ideone.com/Od1fxj

369デフォルトの名無しさん2018/01/18(木) 01:43:35.84
>>368
それで、質問は何?

微分方程式君がマウントしに来てるだけだからスルーしとけ

371デフォルトの名無しさん (ワッチョイ c58a-nVvH)2018/01/18(木) 07:32:44.38ID:zprwsW+f0
工学系のプログラミングの一面を示しただけだよ
業務系そのものを否定する気はない
スレに粘着してる情報工学の学生の参考にどうぞ
組み込みのC言語プログラムの理解の助けにでもなればいい

372デフォルトの名無しさん (ガックシ 068b-gKyl)2018/01/18(木) 14:53:19.64ID:9519fNi86
>>368
そんなもん俺でもできるわ
何をドヤ顔で...

373デフォルトの名無しさん (ワッチョイ c58a-nVvH)2018/01/18(木) 15:01:21.11ID:zprwsW+f0
情報工学の学生は>>340 だからな
正直言うと既に手遅れな感じはしてる

374デフォルトの名無しさん (ワッチョイ 4dd0-Cxnk)2018/01/18(木) 15:03:42.71ID:uBrEQRuR0
>>372
どうでもいいけど末尾6でガックシって大学内でのWi-Fi経由での書き込みやん
大学内Wi-Fiは監視されてるから2chに書き込まないほうがいいぞマジで
俺の大学は学籍番号登録して大学Wi-Fi繋ぐタイプだったがアプリとか落としまくってたらメールで呼び出しくらったわ
利用禁止だけで済んだけど

375デフォルトの名無しさん (ガックシ 068b-gKyl)2018/01/18(木) 15:07:43.53ID:9519fNi86
>>374
で?俺の大学は違うけど。

376デフォルトの名無しさん (ワッチョイ c5d2-pQa0)2018/01/18(木) 15:26:01.43ID:YGULX5FM0
【苫米地英人】 宇宙人の存在は明らか <世界教師 マイトLーヤ> ビリーバーって怖いわ 【上念司】
https://rosie.5ch.net/test/read.cgi/liveplus/1516240795/l50

377デフォルトの名無しさん (ワッチョイ 0b81-QoPs)2018/01/18(木) 15:41:05.21ID:gRlOykmi0
「オレの大学は2ちゃんねる使い放題だぜ」

378デフォルトの名無しさん (ガックシ 068b-gKyl)2018/01/18(木) 15:41:43.77ID:9519fNi86
んで?

379デフォルトの名無しさん (スッップ Sd43-BuBX)2018/01/18(木) 16:43:01.90ID:78cuYF2dd
オレの大学は2チャンネルだぜ。

だろ。

380デフォルトの名無しさん (ガックシ 068b-gKyl)2018/01/18(木) 16:44:58.38ID:9519fNi86
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w

381デフォルトの名無しさん (ワッチョイ 0b81-QoPs)2018/01/18(木) 16:57:47.29ID:gRlOykmi0
大学当局が何の規制も監視もしていないことは自慢にはならないぞ
外部の違法サイトにも好き放題でアクセス出来てしまうって事は、
学内に不正侵入も招きかねない
学生の個人情報も流出しかねない大学だって言うことだろう

382デフォルトの名無しさん (ガックシ 068b-gKyl)2018/01/18(木) 17:01:13.26ID:9519fNi86
ガクブル( ; ; )

383デフォルトの名無しさん (ワッチョイ f5ba-nLHG)2018/01/18(木) 17:06:11.22ID:ORV/yXOS0
つーか、サーバーの立て方教えてないの?

384デフォルトの名無しさん (ワッチョイ 0bea-RHqN)2018/01/18(木) 17:09:23.26ID:kX+VU8/R0
まだやってんのかよ(呆

385デフォルトの名無しさん (ワッチョイ 23e1-CRFn)2018/01/18(木) 17:30:52.86ID:qV21U4ga0
スレ違いや板違いが100レス以上も続いてしまってるからそろそろこのスレ見るのを止める

386デフォルトの名無しさん2018/01/18(木) 17:39:16.82
勝手にしろよワロタ

387デフォルトの名無しさん (ワッチョイ 239b-Q7o0)2018/01/18(木) 18:35:59.35ID:/FcYukkO0
C言語勉強するにあたり相談です。

@スクールに通って学ぶ(170時間程度)
A3日間の会社主催のセミナー参加
B本、参考書等やネットで独学
Cその他
それぞれ理由とおすすめがあればお願いします!

388デフォルトの名無しさん (JP 0He1-7Z6g)2018/01/18(木) 18:40:49.12ID:4YZ5Kl1MH
既に何を知っているかによるのでは

389デフォルトの名無しさん (ワッチョイ 3d8a-ajZX)2018/01/18(木) 18:47:28.75ID:Ly7/t+am0
なぁんも知らんのなら、富士通のお店に行け

>>387
何のために勉強するかも書けよ

ってか会社主催のセミナーとか言ってるなら仕事か?
なら只だろうからそれからやれば?

391デフォルトの名無しさん (ワッチョイ 239b-Q7o0)2018/01/18(木) 19:02:58.89ID:/FcYukkO0
>>388
なにも知らないです。VBかじってる程度。
>>389
富士通のって結構いいですか?

392デフォルトの名無しさん (ワッチョイ 239b-Q7o0)2018/01/18(木) 19:07:27.01ID:/FcYukkO0
>>390
会社の命令ですね。
スクール通うより富士通とかのがためになるんですかね?

>>392
会社の命令なら会社主催のセミナー行けよ
C言語の話以外にもその会社独自のやり方の説明もあるだろうし
それとは別に独学でも学びたいと言うならスクールでも本でもいいけど、なんか簡単なゲームでも作って色々ここで聞きまくるって言うのでいいんじゃね?

394デフォルトの名無しさん (ワッチョイ 239b-Q7o0)2018/01/18(木) 22:06:05.12ID:/FcYukkO0
いろいろとありがとうございました!
参考にさせてもらいます!

395デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/20(土) 11:31:34.12ID:bSTKludV0
Cのマクロでその場じゃないところに展開って出来ないかな?

VC++2008環境でVC++2017(C++11相当)のラムダを使いたいのだが、当然使えない。
そこで以下を参考にしてマクロで乗り切れないかと考えている。
http://koturn.hatenablog.com/entry/2013/08/06/223805
字句の置換は何とかなるとして、問題なのは「関数内関数定義」がない事。
だから手動でいいから関数の外側に展開させたい。具体的に言えば、以下。

void abssort(float* x, unsigned n) {
std::sort(x, x + n, [](float a, float b) {return (std::abs(a) < std::abs(b));});
}

を書き換えるとして、LAMBDAがマクロで、

// ここに出力する方法あるか?
void abssort(float* x, unsigned n) {
std::sort(x, x + n, LAMBDA(ホニャララ) );
}
// 或いはここでもいい

マクロ内で#defineしてプリプロセッサをもう一度くぐらせればいけそうな気がするが、これって無しだよな?
出力場所は手動、名前は手動マングリングで構わない。記述上ラムダを使いたい。
環境を上げるとしたらVS2017なので、そのときに書き換えがほぼ無しで済ませたいから。
delegateで書いてみたものの、やっぱり記述量が無駄に多いので、ラムダにしたい。

396愛知人2018/01/20(土) 12:29:33.07ID:+yb3sEoQ
void abssortごと置き換える
C++詳しくないから知らんけど

397デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/20(土) 13:02:28.85ID:bSTKludV0
関連質問しました。
http://mevius.2ch.net/test/read.cgi/tech/1413180800/138

VSにユーザ定義プリプロセッサを噛ませられればいけるのだけど、
知っている人がいたらよろしく。


>>396
それは無理。
実際はLAMBDAは大量にバラバラに使ってる。
というかそういう使い方しないと大してメリットないし。以下とか。

viod function(){
if (xx) x = LAMBDA( xxxx );
else if (yy) y = yyyy;
else z = LAMBDA( zzzz );
}

今使ってコンパイラがweakって宣言子があって、どうやらデフォルトの関数処理を書いておいて、後から同じ名前の関数でそのまま飛び先を上書いてくれる機能があるなぁ

399デフォルトの名無しさん (アウアウウー Sad9-GP+B)2018/01/20(土) 21:36:35.14ID:wOR0yLWUa

400デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/20(土) 23:52:23.46ID:bSTKludV0
>>395
自己解決しました。
結局自前のスクリプトを作成したので、エレガントではありませんが。
知恵を絞ってくれた人はありがとう。
http://mevius.2ch.net/test/read.cgi/tech/1413180800/150

こんばんは
はじめて書き込みします。

入門書としてやさしいCをやり終えたのですが、今後やっていった方がいい本はどんなのがありますか?

402デフォルトの名無しさん (ワッチョイ f5bb-nLHG)2018/01/21(日) 22:55:33.96ID:uqlpy0wi0
今、何が出来るのか
これから、何がしたいのか

による

403愛知人2018/01/21(日) 22:55:40.90ID:TYCBS/Jo
K&R

404デフォルトの名無しさん (ワッチョイ f5bb-nLHG)2018/01/21(日) 22:57:28.52ID:uqlpy0wi0
K&Rの役割を他の本で代替したあとの話だな

405愛知人2018/01/21(日) 22:59:34.82ID:TYCBS/Jo
Cって何のためにやるの?組み込みしかなくね?そんなの極める必要ある?
C++やろうぜ

406 ◆QZaw55cn4c (ワッチョイ 6360-Q2C4)2018/01/21(日) 23:02:19.34ID:aX100FfN0
>>405
>Cって何のためにやるの?
C++をやるため

407愛知人2018/01/21(日) 23:05:45.96ID:TYCBS/Jo
じゃあC++やろうぜ

って言ってるけどな

408愛知人2018/01/21(日) 23:06:44.66ID:TYCBS/Jo
>>401
C++やろうぜ

>>402
単純な数行のソースかいて、コンパイルしてコマンドプロンプトに出力するだけです。


>>403
何ですかそれ?

>>405
将来的にはやるつもりです。
ですがその前にDirectXでスーファミソフトの模擬展開してみたいとも思っとります

410愛知人2018/01/21(日) 23:09:24.66ID:TYCBS/Jo
ダイレクトエックス?テン?か知らないけどそれの本は?

>>410
探してるんですけど、なかなか本やにないので

412デフォルトの名無しさん (ワッチョイ 85c3-iX8K)2018/01/21(日) 23:19:00.70ID:oGuWm1pn0
ますますよく分からんが
少なくとも「その前に」ってレベルじゃねぇ

>>412
自作ゲームを作るのが目的で、自分の性分として元祖からやっていきたいと思って、、、、
ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、

要領が小さい横スクロールアクション(ロックマンの亜種)を作ってみたいのです。

414デフォルトの名無しさん (ワッチョイ 759f-HMlX)2018/01/21(日) 23:38:09.13ID:I2+B/hhs0
うーん。K&Rを知らないか・・・

415デフォルトの名無しさん (ワッチョイ 3d8a-OBdR)2018/01/21(日) 23:49:01.75ID:hGg1UGRI0
>>413
実機って何を指してるか知らんけど
ファミコン(1983)、スーファミ(1990)に対してDirectX1.0は1995年発表だぞ

x86は流石にもっと古かった

416デフォルトの名無しさん (ワッチョイ c58a-68Hl)2018/01/21(日) 23:51:41.82ID:KmWcS8tF0
>>413
>ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、

何処からそんなデマを聞いたんだ?
ファミコン実機の中身はx86どころか8bitCPU(6502ベースのカスタム品)だということ知ってる?

417デフォルトの名無しさん (ワッチョイ 759f-GP+B)2018/01/21(日) 23:52:37.13ID:I2+B/hhs0
>>413
ファミコンの発売は1983年でスーパーファミコンは1990年だ。
まだDirectXも何もない時代なんだけど、何のことを言っているのかな?
Windows上でのエミュレータの話?

418デフォルトの名無しさん (ワッチョイ f5bb-nLHG)2018/01/21(日) 23:53:43.48ID:uqlpy0wi0
>>409
単純な数行のソース?
Hello worldでさえ6行もあるよな。。。

>>416
Vipでゲーム機の進化の話があ出たときに、スーファミの開発環境がDirectXだって書いてあった

420デフォルトの名無しさん (ワッチョイ c58a-68Hl)2018/01/22(月) 00:23:02.56ID:FvAm1M5e0
>>419
DirectXはその前身のGame SDKでさえWin95(1995年)と同時期にリリースされてる
スーパーファミコンの登場はそれより前のWin3.1(1992年)すら登場していない時期
まだMS-DOSの全盛期だよ、タイミング的に有り得ない

>>420
色々ありがとう
勉強になったよ

422デフォルトの名無しさん (アウアウエー Sa93-JCrA)2018/01/22(月) 06:53:09.36ID:1d4s07YIa
木屋さん元気かな

>>152
遅くなったが、なかなか難しいがその難しさ含めアイデア次第でとても面白いな!

ツイやらインスタみたいのがもてはやされとるけどやっぱこういう反リアルタイムで半匿名性保持したものって必要なんだと思うし、2hは仰るとおりこのまま行くと5年後10年後にはホントの過疎化で存続危ういし、今からテコ入れして人の誘導図るのは大賛成!


よし、俺もC本気出してやるかw

おまいらやっぱり電卓も早いの?

425デフォルトの名無しさん (ワッチョイ c58a-68Hl)2018/01/23(火) 09:34:15.34ID:K+ggfGT70
電卓が早い、とは一体なんのこっちゃ

挿入から射精までなら素早いぞ。

427デフォルトの名無しさん (ワッチョイ 8b2b-pQa0)2018/01/23(火) 22:14:31.29ID:ksGxN6tV0
https://ideone.com/Jhbm7n
グラムシュミット計算して結果をそのまま出力するって課題が出て、一応出来はしたんだけど出力で変になったんだ
リンク先に書いてる奴が正しい出力で、最後のコメントみたいにすると違う結果が出てくる
具体的に言えばcmdで
「 f3 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000」ってやると
「 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000」が出力される(リンク先はコレ)はずなんだが
コメント通りにすると
「1.000 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000」になっちゃう
環境はVSCodeでコンパイラはVS2017のcl

428片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-FVlE)2018/01/23(火) 22:50:42.81ID:vdlPoDuDd
>>427
Cは複数の値を返却値として返すことはできない。関数の引数リスト以外で、カンマを書くとカンマ演算子として解釈される。

429デフォルトの名無しさん (ワッチョイ 3d8a-ajZX)2018/01/23(火) 22:51:42.86ID:tTVD5Gwd0
len_u3の値は?

430デフォルトの名無しさん (ワッチョイ 8b2b-pQa0)2018/01/24(水) 08:13:51.80ID:DWaVEiCq0
>>428
なるほど、ありがとう
カンマ演算子ってのを初めて知ったよ

>>429
41行目

431デフォルトの名無しさん2018/01/24(水) 08:36:54.65
>>427
見た感じ、エンディアン問題っぽい

432デフォルトの名無しさん (ワッチョイ 35a8-u0QZ)2018/01/24(水) 09:37:36.28ID:9sUL+M6u0
>>428
構造体を型宣言して戻り値にすれば、複数の値を実体返し出来るけどね。

433デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 09:51:46.57ID:aKjSawsU0
結局、質問者は問題点が何処にあるか理解できたのかな?
カンマ演算子の評価結果は、最後の式の評価結果だからね
余計なお世話かも知れないけど、どうしても結果を戻り値で返したい場合は構造体に纏めれば出来るよ
というか、ベクトル自体を配列ではなくて構造体に纏めた方がプログラムの見通しがすっきりすると思う

434デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 09:52:11.69ID:aKjSawsU0
被った、ごめん


436デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 17:11:55.26ID:aKjSawsU0
もう駄目だ
>>427のコードを構造体に纏めて書き換えてみたけど、ideoneのコマンドライン入力がどうやってもエラーを吐く
もう諦めたのでテストデータ埋め込みでコードを晒す(数学的には意味のないテストデータだけど)
誰か原因分かる人確認お願いします
手元のVC++2017ではコマンドライン入力でも正常動作することは確認してる
https://ideone.com/IEGKl0

437デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 17:21:25.19ID:aKjSawsU0
もしかして勘違いしてた?
ideoneの標準入力stdinってプログラム実行開始前のコマンドライン入力としては使えないのか?
もうどうでもいいけど…

438デフォルトの名無しさん (ワッチョイ 0bea-RHqN)2018/01/24(水) 17:25:37.49ID:cUo2YGui0
fscanf(stdin,...) とかの 入力ストリームにこれを与えるってだけ
実行時引数を渡すしくみはなかったような

439デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 17:30:33.41ID:aKjSawsU0
やっぱりそうかー
無駄な時間を使ったわー

440デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/24(水) 19:49:04.30ID:5oCpuwxD0
>>436
ちなみに初心者だよな?
だとすると、一般的にはCでは構造体の値渡しは(特に理由がある場合以外は)しないので、
ポインタ渡しで書くことに慣れた方がいい。 . はほぼ使わず、 -> ばかりになる。
具体的に言うと、

void gram_schmidt(BASIC3* bas, VECT3* v_1, VECT3* v_2, VECT3* v_3);

として、

BASIS3 bas;
gram_schmidt(&bas, &v_1, &v_2, &v_3);

とする。
値渡しする場合の理由だが、通常は、以下のどちらか。
・中で一時期的に書き換えるため、どうせコピーが必要。
・中で何度も使う場合、値渡しの方が速い場合がある。

値渡しはスタック上に置かれるためイミディエートオフセット命令が出る。(Read1回でデータを読み込める)
ポインタ渡しは間接参照になるため、アクセス速度が少し遅い。(2回Readが必要)
ただし値渡しは呼ぶ際と戻る際に構造体の中身を全コピーするので、それとの兼ね合いになる。
単純には、値渡しはコピーが2回発生するのだから、確実に速くなるとしたら3回以上使う場合で、
逆に言えば、2回以下のときはポインタ渡しにしておけ、となる。だから大体ポインタ渡しになる。
個人的には、このくらい自動で最適化してくれとも思うが、
Cは「書いたように動かせ、余分なことはするな」の文化だから、手動で切り替える方が好まれているのだろう。
(C++の場合はコピーコンストラクタが動くことになっているので、自動で切り替えたら違反になり、出来ないはず。)

441デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 20:17:50.04ID:aKjSawsU0
>>440
うーん、まあそうなんだけどね
今回はそんなに大きなデータでも無いので手抜きしてる
元々のコードは次元もパラメータとして持っていたので、基底空間の構造体そのものをベクトル構造体のリスト構造で構成するのが正解なんだろうね
ポインタでベクトル構造体を引き渡すことになるとは思う
ただそこまでやるのが面倒くさかったので、3次元ベクトル空間に限定して無理やりデータを小さくまとめてしまってる
この程度なら値渡しでもいいかと手抜きしてるのが裏事情、ぶっちゃっけて言うとまともに実装するのが面倒臭かった
まあ、あんまり細かいこと突っつかないで><

442デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/24(水) 20:58:24.14ID:5oCpuwxD0
>>441
やれば分かるが、そんなに記述量は変わらないぞ。
. が -> に変わるのが大半で、それ以外はほぼそのままで済むはず。

主に計算用途で、Python -> Cを目指しているのか?
だとしたら速い書き方が出来ないと意味無いだろ。
そして、ベクトルの値渡しとかスタックを余計に食う=再帰したら悲惨なことになるから止めとけ。
->の表記が気に入らないのなら、C++の「参照」を使えば . のままでも書ける。
この場合は、ソース自体の書き換えは呼び出し部分だけで済む。
(ただし、非const参照は推奨されていない場合もある。例:googleのコーディングルール)

443デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)2018/01/24(水) 21:18:35.41ID:aKjSawsU0
>>442
このスレには珍しく数学的な背景に詳しそうだな
ちょっと聞きたいけど、基底空間の拡張そのものはベクトル構造体をリスト化すれば簡単なんだけど、ベクトルの要素の拡張で簡単な方法ないかな?
実は最初にそれを考えたんだけど要素もリスト化するとポインタの連鎖が大変なことになりそうで、躊躇した結果がVECT3やBASIS3などの次元決め打ちになってしまってる
あとは演算部も際限なく項が増えていくので再起でも使わなければとても実装できそうもない
これもポインタの実装が大変なことになるのが容易に想像できる
参考までに先のコードを拡張するにあたって何か良さそうなアイディアないかな

444デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/24(水) 21:52:33.93ID:5oCpuwxD0
>>443
いや俺は多分君よりは詳しくないが。
ただ、君はだいぶ勘違いしてると思うぞ。

1. まず、値渡しをポインタ渡しにしたところで、記述量は大して変わらない。
これはやってみれば分かるし、どのみち通る道だろうからやっとけ。
大変なことになんてならない。

2. 次に、Cのポインタは配列のサイズは気にしてない。
だからベクトル要素の拡張とか、最初から気にする必要が無い。
強いてコツを言うなら、ド頭を「長さ」にして、データは末尾にしとけ、という程度。
(大体これで上手くいく)

typedef struct {
int num;
// int elemSize;
double* elems;
} VECTX;

typedef struct {
int num;
// int elemSize;
VECTX* vectors;
} BASISX;

多分これで全て事足りる。
混乱するようなら num を dim(ension) なり rank 等に変えてもいいが、
ダックタイプ的に手抜きする気なら num に統一してついでに int elemSize も構造体に入れとけ。
そしたらコピー等は同じ関数が使えるようになる。
(void*にキャストしてmemcpyするにしてもサイズが無いと無理。
Cには実行時型情報(RTTI)が無いから、必要なら自前で用意するしかない)
或いは、VECTXとBASISXを分けずに、どちらもvoid*にキャストして1種類の構造体で扱ってもいい。

構造体返しなんか、知らないうちに使ってるんだから気にするな。
君が返り値に指定したその型が実は構造体だったなんて誰も気にしてないから。

446デフォルトの名無しさん (ワッチョイ 0b81-QoPs)2018/01/24(水) 22:34:36.62ID:NLoTtXwc0
ファイル操作しているなら、
FILE構造体のお世話になっているはず
この構造体の中身を一度見てみると良いよ

447 ◆QZaw55cn4c (ワッチョイ 6360-Q2C4)2018/01/24(水) 22:56:45.32ID:m3QL6muE0
でも FILE 構造体を構造体返しや構造体渡しにはしないからなあ…

448デフォルトの名無しさん (スップ Sd43-BuBX)2018/01/24(水) 23:07:36.68ID:78SslThOd
fopen()のfpは誰の懐を指してるんだろう…

449デフォルトの名無しさん (アウアウエー Saf2-oJ1J)2018/01/25(木) 02:11:06.70ID:KWt8t+zYa
おまいら寄り道多過ぎΩ
早く本当のことを教えたれ

450デフォルトの名無しさん2018/01/25(木) 07:41:16.00
構造体返しやら構造体渡しやらを使ってる標準ライブラリ関数なんかあらへんやろ

451デフォルトの名無しさん (ブーイモ MM97-EQ2j)2018/01/25(木) 07:57:34.46ID:H7d70bA2M
構造体渡しはスタック汚すからなあ

452デフォルトの名無しさん (ワッチョイ aeea-MCTD)2018/01/25(木) 08:27:14.49ID:Wqza6sKp0
K&Rでも初期のほう
構造体の値渡し/構造体の値戻しは出来なかったわけで
標準関数に盛り込まれることはなかったんじゃなかろうかと

453デフォルトの名無しさん (ワッチョイ c78a-FYQJ)2018/01/25(木) 08:40:26.67ID:8P15F8nd0
socket うんそうだね

いや、コンパイラの吐くコードがアホだったから解放したスタックから値をコピーする事になっちまってただけだ。
割り込み専用スタックが無いアーキテクトマシンはそこで死んだ。

455デフォルトの名無しさん (ワッチョイ 5323-oJ1J)2018/01/25(木) 11:46:50.00ID:ZxAe+MwB0
>>448
mallocじゃね

456デフォルトの名無しさん (ワッチョイ 9e23-Pdni)2018/01/25(木) 12:45:13.85ID:roA8poOQ0
>>453
socket関連に構造体渡しってあったっけ?
あったっけっつっちゃった

457 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)2018/01/25(木) 13:07:09.92ID:LX8HI+AO0
>>456
由緒正しきバークレーソケットに構造体渡し・構造体返しがあるわけがない、常識的に

458デフォルトの名無しさん (ワッチョイ 5323-oJ1J)2018/01/25(木) 13:24:05.92ID:ZxAe+MwB0
返り血の話してるのになんで引数持ち出すかなぁ

459デフォルトの名無しさん (ワッチョイ ea96-4xH4)2018/01/25(木) 15:57:29.77ID:O5EWej8a0
返り血の話はチャンバラスレでやってくれ

旧K&Rにないからな

461デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/25(木) 23:05:29.63ID:BSIOcXgH0
構造体の値渡しについては440に書いたとおりだが、
構造体の値返しは通常はあり得ないだろ。
理由は何らメリットがないから。

462デフォルトの名無しさん (ワッチョイ e39f-rgA5)2018/01/25(木) 23:50:39.80ID:MvglAbIb0
ないな。呼ぶ側で何らかの方法で領域確保してそのポインタを渡せばいいし。
まあ物凄く良い感じで最適化されて無駄がなくなるならあってもいいが。

>>443
よほど高次元を扱わない限り決め打ちコピペ、マクロ、キャストを駆使する方法とかある
変態仕様だから俺はおすすめしない

typedef struct {
int element_sz;
int elements[2];
} VEC2;

typedef struct {
int element_sz;
int elements[3];
} VEC3;

#define INIT_VEC(name, size) \
VEC##dim name = {.elements_sz = size}

464デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 00:48:01.29ID:KrxIIzDl0
>>462
それ、ちょっと考えたんだけどさ、無理矢理1行に書けばいいだけなんだよね。

BASIS3 bas;
gram_schmidt(&bas, &v_1, &v_2, &v_3); // (A)

BASIS3 bas = gram_schmidt(&v_1, &v_2, &v_3); // (B)

BASIS3 bas; gram_schmidt(&bas, &v_1, &v_2, &v_3); // (C)

(A)が一般方式だ。
(B)が宣言的な記述で、関数型()な奴らが「美しい」と主張する書き方だ。
とはいえ俺も(A)よりは(B)の方がいいと思ってはいるんだが、
それなら(C)って書けばいいだけなんだよな。
あまり一般的ではないけど、確保&初期化に関してはありかなと思えてきてる。
実はマクロで(B)を(A)に変更することを考えていたのだけど、
そんなことやるなら(C)でいいじゃんってね。
コンパイラが(B)を(A)相当にするのも簡単だとは思うんだけど、(C++のクラスがこれだし)
(C)が出来るんだからこれでいいじゃん、で終わりだよなと。
basを2回書かないといけないのは何とかならんのか、というのはあるが。

465デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 01:18:33.62ID:KrxIIzDl0
>>463
ちなみにそれはちょっと違う。決め打ちにするのであれば、以下の方がいい。

typedef struct {
double x;
double y;
} Vec2;

typedef struct {
double x;
double y;
double z;
} Vec3;

決め打ちのメリットは、
・分かりやすい名前を使える
・型チェックが有効になる
ことだから。
上はそのままだから分かるだろ。下は、例えば内積計算関数が、
3次元*2次元とかの違法の場合に書きようがなく、コンパイル以前にIntellisenseで落とせる事。
elementsが配列になっていると、当然ループになり、3次元*2次元でも書けてしまう。
ただし決め打ちの場合はその後のコンパイラの型チェックで落とされるが。
VecXとして一般化した場合は、この辺が全部通ってしまうわけでね。

ただまあ、C言語は、コンパイラにバグ取りを手伝ってもらう言語ではなく、
そもそもおめーがバグなく書きゃいいだけだろ、というノリなんだが。

466デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/26(金) 01:37:49.07ID:aTHTXGTcM
>>465
それ演算式どうするんや?個別で書くんか?
アドレス渡しもできそうにないし、それ書くなら
typedef double[3] VEC3;
でよくね?

467デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 01:46:48.74ID:KrxIIzDl0
>>466
個別で書くに決まってるだろ。
実際それが最速だし、この場合は適切だ。

> アドレス渡しもできそうにないし
オイオイ。
つかお前、マジで言ってるのなら豆腐の角で頭打って死ぬレベルだぞ。

468デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/26(金) 01:56:56.10ID:aTHTXGTcM
>>467
アドレス渡しじゃねえ、キャストだ
アドレス渡ししてキャストできれば汎用にできそうやなあとか考えててアホなこと書いてたわ

個別で書くと割り切るならありやな

469デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/26(金) 01:59:16.78ID:aTHTXGTcM
>>468
誤解ないように追記しとくわ
void*でって意味

470デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 02:06:14.02ID:KrxIIzDl0
>>469
typedef double[3] VEC3;
で VEC3をvoid*にキャストするのは止めた方がいい。使い物にならないから。
void*で一般化するには何にしてもサイズが必要だから。

サイズ無しで型を一般化したいのなら素直にテンプレート使っとけ。

471デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/26(金) 02:13:45.05ID:aTHTXGTcM
>>470
いや、だからキャストを考えてないなら
typedef double[3] VEC3;
でよくね?と書いてた

472デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 02:35:47.82ID:KrxIIzDl0
>>471
それは使い勝手の問題だが、

VEC3 v0 = {1,2,3};
VEC3 v2;
v2[0] = 1; // 添字で指定



Vec3 v0 = {1,2,3};
Vec3 v1 = {.x=1,.y=2,.z=3}; // 名前が付いているからこれも出来る
Vec3 v2;
v2.x = 1; // 名前で指定

とどっちが見やすいかと聞かれたら、普通は後者と答えるだろ。
個別にした場合はループが回せないが、
2次元と3次元の決め打ちだけで済むならいらんだろ、ってことだよ。
(どうしてもループ回したければ double* p = &v1.x; で行けるし)

ただまあここら辺は外野の俺らが言い合っても意味がない。
使用者が決めればいいだけ。好みの範疇だからね。

473デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/26(金) 02:44:51.96ID:aTHTXGTcM
>>472
>>468にも書いたけど、個別で式書くと割り切るなら同じ意見やで
ただ、次元増えたときは面倒やろと思っただけ

474デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/26(金) 06:55:20.33ID:pq/m69bPd
変数名とかって付けるときなんかルール決めてます?

475デフォルトの名無しさん (ワイモマー MM77-1FxY)2018/01/26(金) 07:57:07.70ID:CM24TKAOM
>>474
アプリケーションハンガリアン記法。
参考までに、システムハンガリアン記法はNG。

戻り値が構造体ってのは、型宣言に構造体が使えるから言語仕様的に出来なきゃならないんだよ。本当はな。
でも関数内オート変数に一旦格納した型後でreturn オート変数ってやると、コンパイラがアホだからポインターだけ渡してスタック破棄した後に領域コピーしちまうんだ。
運が良ければ残ってるかもね。的な綱渡りさ。割り込みが掛かった時点で死ねる。

477デフォルトの名無しさん (ワッチョイ 56e7-Tfxv)2018/01/26(金) 11:39:53.54ID:ogezCzi+0
localtimeは変な奴

>>476
そんなアホコンパイラは捨てろよ w
そもそもC言語ではスタックの解放は呼び出し側でやるからお前みたいなトンチキが作らない限りそんなことにはならんよ

479デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/26(金) 13:00:59.90ID:eO6EE38Oa
>>476
それはどう実装されるかの問題。

まあしかし後付け感はあるな。配列はポインタにされちゃうのに構造体の中に配列入れると丸々渡せたりして。
まあ昔々に考えられて互換性を考慮して拡張されてきた言語なので仕方がないようにも思うが。

480デフォルトの名無しさん (アウアウエー Saf2-oJ1J)2018/01/26(金) 13:28:01.67ID:qmyxD0D3a
>>477
最近のは引数NULLで桶

481デフォルトの名無しさん (アウアウエー Saf2-oJ1J)2018/01/26(金) 13:34:27.88ID:qmyxD0D3a
>配列はポインタにされちゃうのに構造体の中に配列入れると丸々渡せたり

あほか

482デフォルトの名無しさん (ワッチョイ 3a12-fPTX)2018/01/26(金) 13:45:10.76ID:x7oC2VaJ0
>>427
構造体が話を難しくしているのではないか?
単純に最初から二次元配列を使うだけでいいのでは

Ideone.com - i9PcuN - Online C Compiler & Debugging Tool
ttps://ideone.com/i9PcuN

gram schmidt {{2, 3, 4, 5},{ 7, 8, 9, 10},{ 20, 90, 78, 3},{6, 6, 7, 7}} - Wolfram|Alpha Results
ttp://m.wolframalpha.com/input/?i=gram+schmidt+%7B%7B2%2C+3%2C+4%2C+5%7D%2C%7B+7%2C+8%2C+9%2C+10%7D%2C%7B+20%2C+90%2C+78%2C+3%7D%2C%7B6%2C+6%2C+7%2C+7%7D%7D

>gschmidt 2 3 4 5 7 8 9 10 20 90 78 3 6 6 7 7
これで試すとwolframのと同じになる

483デフォルトの名無しさん (ワッチョイ 3ad5-WBz1)2018/01/26(金) 14:03:06.38ID:Q8oR1nja0
スタックがどうたら言ってるやつ
ジジイの昔話をそのまま受け売りしてるだけだな

484デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/26(金) 15:18:50.21ID:lz5gZOTMa
>>481
何をアホと思ったのか詳細よろしく

485デフォルトの名無しさん (JP 0Haf-5dAg)2018/01/26(金) 17:02:38.76ID:pySevT5fH
基本型とユーザー定義型の概念が理解出来てないところかな

486デフォルトの名無しさん (JP 0Haf-5dAg)2018/01/26(金) 17:06:19.25ID:pySevT5fH
小手先のテクニックだけでなく概念そのものしっかり理解した方が良い

487デフォルトの名無しさん (スッップ Sdda-ZRsY)2018/01/26(金) 17:12:00.37ID:ghv3+z6qd
>>476
構造体を返せないコンパイラはいくらでもあるけど
>>476みたいな返し方のコンパイラは見たことがない
例えばどのコンパイラがそういう返し方をする?

doubleをレジスタで保持出来ないCPUも基本的には処理方法は構造体と同じと思う

488デフォルトの名無しさん (ブーイモ MMaf-FYQJ)2018/01/26(金) 18:02:06.76ID:rEWh5MIPM
主にDOS時代の話だなぁ
Sparcのアセンブラで説明する勇者は居らぬか

489愛知人2018/01/26(金) 20:24:07.81
配列で要素間をまたいで先頭からnビットの位置から6bit取り出してintに入れるにはどうしますか?

490デフォルトの名無しさん (ブーイモ MMaf-xvHi)2018/01/26(金) 20:31:38.70ID:QZv+kGezM
課題を丸投げするな。
自分なりの解を出して、もっと効率化できるかと聞くならあり。

491 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)2018/01/26(金) 20:34:35.30ID:2nQXk4BN0
>>489
一度に扱う便利な記述法はないから、地道に自分で 1 ビットずつ切り出すしかないのでは?
http://mevius.2ch.net/test/read.cgi/tech/1514772904/111

492愛知人2018/01/26(金) 20:35:58.71
>>491
ナカーマ(^人^)

組み込み系のヒープってなーに?の環境だと、まだまだ自動変数はスタックに置かれてたりするぞ。

>>489
ビットフィールドを使う組み合わせ分だけunionしろ。

495デフォルトの名無しさん (ワッチョイ c78a-5dAg)2018/01/26(金) 20:55:00.97ID:nXJEVt+40
C言語の登場当時に画期的だったのは構造体として自由に新しいデータ型を作り出すことが出来たことだった
C++では更にデータだけでは無くて関数まで含めたデータ型がクラスに発展してオブジェクトの概念にまで到達した
要は構造体は新しい概念をプログラムの世界に持ち込むための手段
ベクトルや多次元空間といった概念も構造体によってプログラム内で直接取り扱うことが出来る様になる

496デフォルトの名無しさん (ワッチョイ b3b3-MCTD)2018/01/26(金) 20:55:55.12ID:Qu3DLo0l0
配列の任意のところからの 6bit の抜出しってーと
Base64エンコードの実装か?

>>489
それはリトルエンディアンで考えるのかそれともビッグエンディアンなのか?
まあいずれにしてもまずはその配列の型のビット数で割る必要がある。
配列のその要素の中に先頭のビットがある。

498デフォルトの名無しさん (ワッチョイ b3b3-MCTD)2018/01/26(金) 20:59:05.70ID:Qu3DLo0l0
まんま 491 だったのか

>>496
BASE64は3バイトを4つの文字に置き換えるんだから、3バイトづつ処理するコードを書けばいいんだよ。
4文字を3バイトに変える方も同じく4文字づつ処理するコードを書く。
そーすれば、必ず同じ位置からビットフィールド取り出す処理だけになる。

あれ?もしや俺の書いたお題を解くために質問してたのか?
ま、頑張れ。調べていけば何れわかる。

501デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/26(金) 22:04:34.58ID:KrxIIzDl0

502デフォルトの名無しさん (ブーイモ MMaf-FYQJ)2018/01/26(金) 22:34:35.80ID:rEWh5MIPM
今更EBCDIC(BASE64)の実装?うげぇ

503愛知人2018/01/26(金) 22:36:08.45
>>499
なんだー
そんな方法でよかったのかぁ

504デフォルトの名無しさん (ワッチョイ 87b6-uzZr)2018/01/26(金) 22:56:37.84ID:dKJ1F5mn0
「ルール違反の残業には罰則を」安倍政権が成立を目指す「働き方改革関連法」を事前予習!
https://headlines.yahoo.co.jp/hl?a=20180125-00010003-abema-bus_all
長時間労働の是正へ「特別チーム」 厚労省、全国に設置
https://headlines.yahoo.co.jp/hl?a=20180125-00000010-asahi-soci
働き方改革、過半が「不満」 成功する企業の違いは
https://style.nikkei.com/article/DGXMZO25918060Z10C18A1000000?channel=DF180320167080

505デフォルトの名無しさん (ワッチョイ bab3-dVd5)2018/01/26(金) 23:06:51.56ID:8m7gdhLr0
>>495
> C言語の登場当時に画期的だったのは構造体として自由に新しいデータ型を作り出すことが出来たことだった
PL/1, Pascalにもあったし、範囲型とかをサポートしないサブセットだよ?
むしろポインタを陽に使える方が画期的だったな

506デフォルトの名無しさん (ブーイモ MMaf-FYQJ)2018/01/26(金) 23:34:31.60ID:rEWh5MIPM
ポインタはPascalにもあるし、アドレスと紐ついているというのが
受けたんだと思うけどね

507デフォルトの名無しさん (ワッチョイ bab3-dVd5)2018/01/26(金) 23:50:55.92ID:8m7gdhLr0
>>506
ああすまん、陽にって言うより自由に使えるって書いた方がよかったかな

508デフォルトの名無しさん (ワッチョイ e39f-SpET)2018/01/27(土) 05:09:48.31ID:ibqNKJrC0
>>502
EBSDICとBase64にどういう関係が?
バイナリならなんでも変換できるんだから特定のコードは関係ないだろう。

509デフォルトの名無しさん (ワッチョイ c78a-5dAg)2018/01/27(土) 06:32:51.94ID:7WxnX7MJ0
>>507
ここでのポインタが自由に使えるの意図は>>495 の構造体に対する考え方と本質的に意味することは同じだろ

510デフォルトの名無しさん (ワッチョイ c78a-5dAg)2018/01/27(土) 06:40:40.67ID:7WxnX7MJ0
要は言語としての設計思想というか考え方の問題であって、画期的の意味は最初という意味では無いということ

511デフォルトの名無しさん (ワッチョイ 3ad5-WBz1)2018/01/27(土) 07:17:40.52ID:K5pLMFks0
ポインタはCの先祖のBにもあったぞ

>>509
意味不明

>>510
バカの上塗り w
二番煎じ画期的とは言わない

画期的
これまでとは時代をくぎるほど目覚ましいさま。
新しい時代をひらくさま。
エポックメーキング。
https://dictionary.goo.ne.jp/jn/42567/meaning/m0u/

513デフォルトの名無しさん (ワッチョイ c78a-5dAg)2018/01/27(土) 07:37:40.78ID:7WxnX7MJ0
C言語はその生い立ちがUNIX のシステム記述のためのツールだからね
画期的ではあっても全く新規の考えというものを指摘するのは難しい
当時の構造化言語のアイデアをひとつの言語として完成させたことが最大の特徴

514デフォルトの名無しさん (ブーイモ MMaf-FYQJ)2018/01/27(土) 07:41:46.63ID:iJdP+2J8M
>>508
両方のコード表見比べて関係が判らないなら病院いけ

515デフォルトの名無しさん (ワッチョイ bab3-dVd5)2018/01/27(土) 08:12:45.44ID:ZgMGVzLO0
Base64 の話に EBCDIC とか言う奴の方が行くべきだろ w

516デフォルトの名無しさん (ワッチョイ b375-lqEN)2018/01/27(土) 11:43:45.46ID:rGBD/78P0
「EBCDIC(Base64)」(キリッ

>>499
3の倍数じゃないときは?

518デフォルトの名無しさん (ワッチョイ b375-lqEN)2018/01/27(土) 12:03:56.86ID:rGBD/78P0
>>517
ゼロで埋める

=とか
==で埋めるんじゃないの?
0埋めで変換したら結果違わなくない?

520デフォルトの名無しさん (ワッチョイ b375-lqEN)2018/01/27(土) 12:14:23.87ID:rGBD/78P0
どっちもだな

521デフォルトの名無しさん (ブーイモ MM97-xvHi)2018/01/27(土) 13:13:51.86ID:kGDKdUgoM
2バイト用と1バイト用のテーブルなんてちょろいでしょ

522デフォルトの名無しさん (アウウィフ FF77-qxBm)2018/01/27(土) 13:23:06.90ID:LkmGzMNLF
pddingは規格に則らないとね

523デフォルトの名無しさん (ワッチョイ 3ad5-WBz1)2018/01/27(土) 13:55:36.84ID:K5pLMFks0
プリン

524デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/27(土) 14:28:09.57ID:THs1wO2td
C言語学習中だけど企業等々でどんなことに使われてる?

525片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)2018/01/27(土) 14:34:22.79ID:TUhH5TnVd
>>524
OS、組み込み、速度が要求されるゲーム、数値計算など。

526デフォルトの名無しさん (ワッチョイ e39f-SpET)2018/01/27(土) 15:57:17.68ID:ibqNKJrC0
>>514
おだいじに。

527デフォルトの名無しさん (ワッチョイ c78a-5dAg)2018/01/27(土) 16:24:23.51ID:7WxnX7MJ0
>>524
純粋なC言語が使われているのは、リソースが厳しい組み込み分野と、他にはプログラミングの教育や学習の分野がほとんど全て
実用的にはC++への通過点といった感じで考えておいた方が無難
CとC++の使い分けは結構曖昧で緩い感じだけど意識しておいた方が良い
両者をまとめた適用分野で言えば>>525あたり

528デフォルトの名無しさん (ワッチョイ e39f-SpET)2018/01/27(土) 16:44:34.14ID:ibqNKJrC0
しかしなんというか、C++は発展させすぎて難しくなった感があるな。
C++ってWindowsネイティブアプリ以外で使われてるのあまり見ないような気がするんだけど。
Windows用で使われる理由は歴史的な理由で、もしこれがなければC++って廃れてないか?

529デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/27(土) 16:55:56.69ID:InjcCDJK0
>>527
> 実用的にはC++への通過点といった感じで考えておいた方が無難
ダウト。
というか個人的には俺もそう思っていたが、どうも実際はそうじゃない。
https://www.tiobe.com/tiobe-index/
https://techacademy.jp/magazine/8735
あまり毛嫌いする必要もないはずなのだが、C++に乗り換えてない奴らも相当数いる。
理由は>>528の言うとおりで、C++は若干暴走気味だよ。
Linusの言う「無駄に抽象化しすぎて話を余計にややこしくする馬鹿が多すぎる」というのも当たってる。

とはいえクラス構文すら入れないCのかたくなな姿勢はどうなのよ?とも思うが。

530デフォルトの名無しさん (ワッチョイ 9e23-Pdni)2018/01/27(土) 17:14:52.43ID:BOWgYHll0
「なんとなくアセンブラコードが想像できるところまで」
というのがC言語で実装する機能の上限だと思う。

まあ実態とだいぶ乖離しているが、最適化を切ったとかの前提でひとつ

531デフォルトの名無しさん (ワッチョイ c78a-Jirz)2018/01/27(土) 17:15:48.70ID:7WxnX7MJ0
個人的にはクラス云々よりもC言語では関数のオーバーロードやデフォルト引数あたりが使えないのがもやもやする
というかあまり詳しく調べてないけど、最近のC言語の仕様改定で標準化とかされてなかったよね?
大抵はC++の処理系を利用しているから有耶無耶で利用している人も多いと思うけど

532デフォルトの名無しさん (アウウィフ FF77-oJ1J)2018/01/27(土) 17:38:54.08ID:WgYcU0PsF
stdarg (... とか va_list) とマクロで出来んか

533デフォルトの名無しさん (アウウィフ FF77-oJ1J)2018/01/27(土) 17:40:42.13ID:WgYcU0PsF
ああrubyが頑張ってるか

534デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/27(土) 18:39:07.65ID:InjcCDJK0
個人的には評価が確定した物は入れればいいと思ってる。
クラス(またはプロトタイプ)が使えない実用言語なんてほぼ無いわけでさ。
ただ、
> 「なんとなくアセンブラコードが想像できるところまで」 (>>530)
が標準化委員会の指針なら、今の姿勢も分からんでもないが。

>>531
> 関数のオーバーロードやデフォルト引数あたり
実はここは評価が確定してない。
というか、どっちかがあれば大体解決する。
VC++/CLIではデフォルト引数は禁止でオーバーロードのみ。
JavaScriptはオーバーロード無しでデフォルト引数は常にundefinedのみ。
いずれも大した問題はない。

C++は壮大な実験場と化しているから、
Cはありがたくその結果だけを受け取って緩やかに発展させればいいと思うのだが。

535デフォルトの名無しさん (スップ Sd7a-grVD)2018/01/27(土) 18:45:25.09ID:n4Fyl/nRd
余計なもん要らんからクラスだけ追加したC+で頼む。

536デフォルトの名無しさん (ワッチョイ 3ae3-W10G)2018/01/27(土) 19:07:57.64ID:StvMpZM10
c++の使いたいとこだけ使えばいいじゃん

537デフォルトの名無しさん (ワッチョイ c78a-Jirz)2018/01/27(土) 19:10:00.20ID:7WxnX7MJ0
>>534
>実はここは評価が確定してない。

そんなに揉めるような機能か、これ?
特にオーバーロードなどは今すぐにでも導入されれば、似たような関数名であれこれいらんこと考えずに済むのでメリットしか考えられないんだが
デフォルト引数もあっても悪いものではないだろう
クラスの導入のように現行のC言語の規格を大きく変更(デメリットも含めて)することなく、簡単に言語の使い勝手を向上させるお手軽な改善だと思っていたんだが違うのか

538デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/27(土) 19:57:46.36ID:InjcCDJK0
>>537
> ●java
> デフォルト引数なし.オーバーロードはあり.
> ●python
> デフォルト引数はあるが,オーバーロードはなし.
> https://plaza.rakuten.co.jp/redbeeshrimp/diary/201112240001/

理由についてグダグダ言っている奴は他にもいたはずだが、例えば以下。
http://ufcpp.net/study/csharp/sp4_optional.html
> 余談: なんでいまさら?
以降を読んでみればいい。

型あり言語は型違いで無駄に同じ趣旨の関数が氾濫することになるから、
オーバーロード/テンプレート/ジェネリクスのどれかはあった方がソースは綺麗になる。
だから型無し言語(JavaScript/Python)はオーバーロード無しでデフォルト引数だけ、というのもまあ妥当な線だろう。
ならば、テンプレートを持っているC++は、
オーバーロード無しで、デフォルト引数+テンプレートだけで綺麗に書けるか、という話になる。
多分これもやれば出来るんだよ。
勿論そこに出ている「名前付き引数+テンプレート」でも綺麗に書ける。
どれを言語に取り込むべきか、ということに関して、C++は「全部入れちゃえ」というノリだからいいとして、
Cみたいにミニマムで美しく、というノリで「どれかにしろ」と言われたらちょっと迷うだろ。

Linusは多分オーバーロードすら要らん、という立場だぞ。
ちょっとググってもすぐには出てこなかったが、
「Cはこれについて馬鹿みたいに単純な方法(別の名前を付けること)で対応している。
実際、これはgrep出来るしメンテしやすい」
と言っていたはず。
まあ分からんでもないだろ。オーバーロードすら無しならgrepした関数に確実にそのまま当たる。
ソースを追うという意味ではこちらの方が当たってる。
オブジェクト指向の継承が良くない点の一つは、ぱっと見、どの関数が実行されるか分かりづらい点であってさ。
勿論、「分からなくていいし、分かる必要がない」というのがオブジェクト指向のノリだとしてもね。

539デフォルトの名無しさん2018/01/27(土) 20:51:31.73
あまりにミニマムすぎるとみんなが好き勝手なマクロを作って「僕が考えたエレガントなコーディング」を始めるから少しは高級な記法を用意しといてくれや

540デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/27(土) 20:56:30.77ID:0ISwxtuYa
うーん。Cはアセンブラ代わりの単純な言語にしておいてそれ以上の事は別の言語でやればいいような気がするが。

丁度よい言語が見つからないなら作れば良い。自分で作れなくても仕様を公開して作ってくれる人を募集すればその内誰か作ってくれることだろう。

541 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)2018/01/27(土) 21:31:52.27ID:S+YQeyK20
>>537
関数のオーバーロードは、リンク時の対応にアセンブラ互換性がとれなくなるので、お手軽ではないと思う
extern "C" を追加するか?え、C に extern "C" って意味わかんない…

542デフォルトの名無しさん (ワッチョイ 6e62-WBz1)2018/01/27(土) 21:34:53.32ID:MtS5alc90
>>541
おまえさんの言っていることこそ意味わかんない

543 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)2018/01/27(土) 21:40:36.80ID:S+YQeyK20
>>542
C++ 名前マングリングを指していたんだが…

544デフォルトの名無しさん (ワッチョイ 6ec3-WBz1)2018/01/27(土) 22:30:10.80ID:QdmRQWNl0
>>543
defファイルのことだとしたらしょーもねーな

545デフォルトの名無しさん (ブーイモ MMda-EQ2j)2018/01/27(土) 22:50:15.16ID:l2t/3O07M
CはUNIX思想の根源みたいなもんだし、十徳ナイフみたいな機能はいらんでしょ
どうしてもって人はC++使えばいいだろ
そのためにできたようなもんだし

546デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/28(日) 14:26:11.42ID:Ixu0c+cx0
質問答えてくれたら嬉しいです
配列の中身をfprintfでエクセルに書き込む方法を教えてください

fprintf(fp,"%3d , %3dn",0,value)
のように一変数を書きこむ方法は分かるのですが配列のすべての要素を書き込みたいです

547デフォルトの名無しさん2018/01/28(日) 14:36:25.54
>>546
Excelじゃないとだめなの?
CSVファイルとかじゃあかんの?

548デフォルトの名無しさん (ワッチョイ 43a8-JKdO)2018/01/28(日) 14:53:05.75ID:2u+0fM2+0
エクセル言ってるんだから、エクセルクラスモジュール組み込んでライブラリ使うんだろ?

549デフォルトの名無しさん (アメ MMaf-Ah9j)2018/01/28(日) 14:55:16.18ID:DwGHyqdDM
でもfprintfでやりたいそうだし…

550デフォルトの名無しさん (スップ Sd7a-grVD)2018/01/28(日) 15:01:30.88ID:uJNdMzSvd
Csvだろうな。
です
for()で
fprintf(format,array[i])
を回せばええんちゃうん?

551デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/28(日) 15:17:40.71ID:Ixu0c+cx0
>>547
csvファイルですね

552デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/28(日) 15:21:08.26ID:Ixu0c+cx0
なんの考えもなしに愚直に書くとこういうことがやりたいです

long value[100],k;

for(k=0;k<100;k++){
value[k]=500;
}

fprintf(fp,"%3d,%3d,%3d,%3d,%3d・・・,%3d\n",0,value[1],value[2],・・・value[100]);

553デフォルトの名無しさん (ワッチョイ e39f-rgA5)2018/01/28(日) 15:25:40.21ID:bdrFjlI30
for (k = 0; k < 100; k++) {
 if (k) putchar(',');
 fprintf(fp, "%3d", value[k]);
}
putchar('\n');

554デフォルトの名無しさん (ワッチョイ e39f-rgA5)2018/01/28(日) 15:26:25.54ID:bdrFjlI30
あ、間違えた。putchar() じゃなくて putc() にして fp に対して出力に書き換えて。

555デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/28(日) 15:34:24.62ID:Ixu0c+cx0
>>553
ありがとうございます!

fprintf(fp, "%3d", 0);
for (k = 0; k < 100; k++) {
  putc(',');
 fprintf(fp, "%3d", value[k]);
}
putc('\n');

であってますか?

556デフォルトの名無しさん (ワッチョイ bab3-dVd5)2018/01/28(日) 15:48:50.89ID:C2Jb//yt0
>>555
それでいいなら
fprintf(fp, "%3d", 0);
for (k = 0; k < 100; k++) {
 fprintf(fp, ",%3d", value[k]);
}
putc('\n', fp);
でいいかと

557デフォルトの名無しさん2018/01/28(日) 16:16:34.41
でも1バイトずつ出力なんて普通はしないで
行くらいはまとめて出力するやろ?

char buf[405]; /* 3桁数字×101個 + カンマ100個 + 改行 + 「¥0」でMAXサイズ決め打ち */
size_t pos;

/* 1行処理開始 */
pos = 0;
sprintf(&buf[pos], "%3d", 0); pos += 3;
for (k = 0; k < 100; k++) {
 sprintf(&buf[pos], “,%3d", value[k]); pos += 4;
}
sprintf(&buf[pos], “¥n”); pos++; /* buf[pos++] = ‘¥n’; buf[pos++] = ‘¥0’; でもいいけど */
fwrite(&buf[0], 1, pos, fp);
/* 1行処理終了 */

558デフォルトの名無しさん (アウアウウー Sa77-rgA5)2018/01/28(日) 20:06:56.21ID:4RSN9gyea
惜しいな。

>>555
putc() または fputc() の引数は文字コードと出力先FILE*の2つだ。

>>557
fprintf()のようなFILE*経由の出力はライブラリの中でバッファリングされるように
なっているので(自分でそのバッファの大きさをいじるのでない限りは)まとめて
出そうとかは考える必要がない。考えた方が良いのは write() で直接出力する
場合だ。

559デフォルトの名無しさん2018/01/28(日) 21:56:59.74
>>558
ロックのコストがかかるだろ

560愛知人2018/01/29(月) 00:59:07.31ID:pcTu+bOr
文字列の受け渡しでおかしくなります。なぜでしょうか。

https://i.imgur.com/Su6D5J5.png
https://i.imgur.com/VE4VgeV.png

561愛知人2018/01/29(月) 01:00:38.69ID:pcTu+bOr
画像の順番ミスりました。

562デフォルトの名無しさん (ワッチョイ e39f-SpET)2018/01/29(月) 01:22:55.81ID:CxmMjiyr0
>>559
どのレベルでのロック?

563愛知人2018/01/29(月) 01:45:54.32ID:pcTu+bOr
あ、原因わかりました

564デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/29(月) 13:52:22.33ID:FA24LoNZ0
>>558
ありがとうございます

565デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/29(月) 15:32:09.28ID:FA24LoNZ0
もう一つ質問させてください
long型の配列に空白を入れることは可能でしょうか?

>>556
ありがとうございます

566片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)2018/01/29(月) 15:40:58.91ID:MMFEPnwQd
long array[] = {1, 2, 3, ' '};
memset(array, ' ', sizeof(array));

567片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)2018/01/29(月) 15:55:33.60ID:MMFEPnwQd
配列に空白を入れるというのは、配列のどこかに、空白文字の文字コードを表す整数値を入れるという意味になる。
文字コードは、文字リテラルか整数リテラルで指定できる。

568デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)2018/01/29(月) 16:26:29.34ID:FA24LoNZ0
>>566
ご返事ありがとうございます

569デフォルトの名無しさん (ワッチョイ 9e23-Pdni)2018/01/29(月) 20:07:03.14ID:F9uU0ACk0
配列の初期化で
int arr[10] = {};
と空に書くのは本来は行儀悪いことなんだな

int arr[10] = {0};
と最低1個は書かないとだめなのか

570デフォルトの名無しさん (ワッチョイ 539f-fPTX)2018/01/29(月) 20:19:04.64ID:b/VoqT930

それ、空白じゃなくて、32だろ?

cの初心者抜け出したいんだがgithubってのを使えばいいの?

573デフォルトの名無しさん (ワッチョイ 3ae3-W10G)2018/01/30(火) 00:41:17.69ID:6zu/5bMS0
空白は32だろ

574デフォルトの名無しさん (ブーイモ MMaf-EQ2j)2018/01/30(火) 00:57:52.94ID:sO+vG/P3M
俺の32年間の空白は埋まらない・・・

575愛知人2018/01/30(火) 01:24:21.22ID:nQQmpnBb
空白=32=空白

576デフォルトの名無しさん (ワッチョイ ae81-veht)2018/01/30(火) 01:33:07.55ID:vYlu6VEV0
空白が全て

577デフォルトの名無しさん (ワッチョイ e39f-SpET)2018/01/30(火) 04:18:14.15ID:9ZRSIjLC0
今話題のEBCDICだと違うかも

578デフォルトの名無しさん (ワッチョイ 27c5-WBz1)2018/01/30(火) 07:10:20.07ID:fB1rx/fO0
64だね

579デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/30(火) 15:31:40.14ID:jZaFosZad
*min=100;

これの意味を教えてください。

じゃあ、空白と32はどうやって区別する気だ?

581愛知人2018/01/30(火) 15:46:46.33

582デフォルトの名無しさん (ワッチョイ aeea-MCTD)2018/01/30(火) 15:51:17.34ID:yCe36s9T0
(アスキーコードを使ってる仮定で) SPC文字 と 整数32 は等価
より大きいサイズへの整数への格上げも素直に行われるだろう
long a = ' ';
long b = 32;
// a と b は等しい

元質問 >>565
「long型の配列に空白を入れることは可能でしょうか?」における
空白とはなんぞや?が ' ' でいいのかどうかは知らん

583デフォルトの名無しさん (ワッチョイ 4f8a-DNDJ)2018/01/30(火) 15:52:45.57ID:do+1Lfb+0
区別はないのでは?
コード書く際のお約束事項

584 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)2018/01/30(火) 15:58:10.94ID:fLRARGcM0
>>579
min という変数がポインタだとして、min の指し示すところに 100 を代入する、という意味になる
部分だけではよくわからない場合もあるので、可能ならば全体を https://ideone.com に張ってもらえると、もっと解説できるかもしれない

585愛知人2018/01/30(火) 16:00:11.58
ロング型に文字入れてもprintfできないのに何の意味があるのか分からん

586デフォルトの名無しさん (ワッチョイ aeea-MCTD)2018/01/30(火) 16:13:20.24ID:yCe36s9T0
上位ビットのほうををフラグに使って下位は文字そのまんまかもしれんじゃん
まぁ 構造体・共用体でやれって話になるが

587デフォルトの名無しさん (ワッチョイ 8b8a-Jirz)2018/01/30(火) 16:15:56.75ID:027pZzxf0
>long a = ' ';
>long b = 32;
>// a と b は等しい

long a = 0;
long b = '0';
a と b は等しくない

588デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/30(火) 16:28:20.57ID:jZaFosZad
#include <stdio.h>
void maxmin(int array[],int max,int min); int main(void)
{
int i = 0,array[10],max,min;
do
{
printf("%d 番目の数:",i + 1); scanf("%d",&array[i]); i++;
} while (array[i - 1] != -1);

maxmin(array,&max,&min);

printf("最大値 %d : 最小%d\n",max,min);

return 0;
}

void maxmin(int array[],int max,int min)
{
int i = 0;
*max = 0;
*min = 100;
while (array[i] != -1)
{
if (array[i] > max) max = array[i];
if (array[i] < min) min = array[i];
i++;
}
}

589デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/30(火) 16:28:46.19ID:jZaFosZad
>>584
これです。

590愛知人2018/01/30(火) 16:35:56.43
int max, minが宣言されてなくね?

591愛知人2018/01/30(火) 16:37:38.36
int *max, *min

592デフォルトの名無しさん (ワッチョイ aeea-MCTD)2018/01/30(火) 16:42:57.56ID:yCe36s9T0
× void maxmin(int array[],int max,int min)
○ void maxmin(int array[],int *max,int *min)

× if (array[i] > max) max = array[i];
○ if (array[i] > *max) *max = array[i];

× if (array[i] < min) min = array[i];
○ if (array[i] < *min) *min = array[i];

ポインタ使わずに記述してて、呼び出し元に結果かえってないじゃーん
から、慌ててポインタに変えた感じかな?

593デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/30(火) 17:16:00.10ID:jZaFosZad
https://9cguide.appspot.com/15-q.html#S6

このサイトなんですけど間違ってるんですか?

594愛知人2018/01/30(火) 17:19:04.96
下の関数はmain関数と思い込んでだけどよく見たら引数あるのか

595デフォルトの名無しさん (ワッチョイ aeea-MCTD)2018/01/30(火) 17:21:54.42ID:yCe36s9T0
>>593
yes 間違ってるね

596デフォルトの名無しさん (アウアウエー Saf2-oJ1J)2018/01/30(火) 17:24:42.43ID:61BNvo+Ja
>>593
2-1の
関数の中身は間違い
ansの前に*が必要

597デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/30(火) 17:52:19.79ID:jZaFosZad
問題は3番です。

598デフォルトの名無しさん (アウアウエー Saf2-qxBm)2018/01/30(火) 18:07:51.62ID:zy+7iaPqa
これはひどい

599デフォルトの名無しさん (スップ Sdda-9VnS)2018/01/30(火) 18:15:55.76ID:XPIsRdtid
エラーが起きても仕方ないものとするとか
初心者向けでも考え方が間違ってる

600デフォルトの名無しさん (ワッチョイ 879b-pvFI)2018/01/30(火) 19:32:13.98ID:0s34k5D+0
エラーが起きないことを想定するとどんな書き方なんですか?

601片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)2018/01/30(火) 19:44:18.22ID:XXEBAVhRd
>>600
50メートル歩くプログラムで、こけても起き上がらず、足を動かして歩こうとするみたいな。

>>593
今すぐ見るのをやめるべき
って言うぐらいひどい
そもそも今時のコンパイラ使ってたら警告でるだろうに

603デフォルトの名無しさん (オッペケ Srab-9Pjq)2018/01/30(火) 21:14:33.45ID:YzkDukp0r
これは苦しいwwwww

604デフォルトの名無しさん (ワッチョイ 879b-pvFI)2018/01/30(火) 21:28:49.70ID:0s34k5D+0
結果、592みたいに書き換えればOKですか?

605デフォルトの名無しさん (ワッチョイ 6e9f-EJdX)2018/01/30(火) 23:29:38.46ID:00UPAqOQ0
※今回の問題は初心者にはなかなか難しい問題です

606デフォルトの名無しさん (スプッッ Sd7a-pvFI)2018/01/31(水) 07:45:53.23ID:Eqd0aQ/Ld
>>588ですけど、参考書は>>592の文になってました。ネットの方は間違ってるみたいですね。

607デフォルトの名無しさん (オッペケ Srab-9Pjq)2018/01/31(水) 07:53:31.27ID:OVj1tDHAr
>苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイトです。
>C言語の基本機能を体系立てて解説しており、市販書籍と同等以上の完成度です。

去年サイトリニューアルするまでは、項目はあるのにページが無いのとか結構あったし、完成してないのにこれで市販書籍以上の完成度とかよく書けるなw

608デフォルトの名無しさん2018/01/31(水) 08:25:41.29
>>607
運営者本人が初学者だから苦しんでるんだろうなw

609デフォルトの名無しさん (スップ Sd7a-grVD)2018/01/31(水) 09:31:32.60ID:mhVZZjkLd
苦しんで覚えるって意味では合ってんじゃね

>>604
ネット上には当てにならない情報が溢れているから、ある程度自分で判断できるレベルになるまではちゃんとした書籍で勉強した方がいいよ

611デフォルトの名無しさん (ワッチョイ b3b3-MCTD)2018/01/31(水) 09:51:21.11ID:4EcHtUfm0
とはいえ、書籍も正誤表があったりするから確認大事

612デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/31(水) 10:23:38.93ID:H6iQ2Lk/a
体で覚えるしかないな

なんて、コンパイラにバグがあって変な風に覚えちゃったりしてw

613デフォルトの名無しさん (ワッチョイ 9abb-WBz1)2018/01/31(水) 10:43:34.99ID:QvVHWT0m0
よくあるのが非標準拡張機能に騙されて
それが標準と思い込んでしまうことだ

614デフォルトの名無しさん (ワッチョイ 5323-oJ1J)2018/01/31(水) 11:31:00.48ID:S61vzQOK0
最近の書籍はあてにならない
著者も編集もレベル落ちてる

615デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/31(水) 12:50:06.35ID:lHClPcOQa
gccには騙されっぱなしです。

616デフォルトの名無しさん (アウアウカー Sa33-bnsf)2018/01/31(水) 12:52:56.34ID:lHClPcOQa
void * の変数に1を足しているのを見た時は驚きました。

617デフォルトの名無しさん (ワッチョイ 9abb-WBz1)2018/01/31(水) 14:31:32.52ID:QvVHWT0m0
メモリのハード的な最小単位へのポインタは欲しかった

618デフォルトの名無しさん (ワッチョイ ae81-veht)2018/01/31(水) 14:46:24.57ID:tg0W/TOu0
そういえば昔1/2ビットシフトなんてテクニックがあったな

619デフォルトの名無しさん (スップ Sdda-ZRsY)2018/01/31(水) 15:33:53.88ID:qM4FetfNd
なにそれ?

620デフォルトの名無しさん (アウウィフ FF77-qxBm)2018/01/31(水) 15:35:34.27ID:gelGqHfVF
円周率の任意の桁が求まるやつ

621デフォルトの名無しさん (ワッチョイ 8761-W10G)2018/01/31(水) 15:42:21.62ID:idpa2H+20
0.5ドットスクロールとかいう(ry

622デフォルトの名無しさん (ワッチョイ b3b3-MCTD)2018/01/31(水) 17:47:56.79ID:4EcHtUfm0
1.5ストップビットみたいな 立ってるビットの総和で1シフトする/しないとかの条件付きかと思ったけど

ふと 2で割る演算を 右へ算術シフトする話のほうっぽい

https://i.imgur.com/E6K8xX9.jpg
https://i.imgur.com/iiGBSA5.jpg

これの考え方から教えてください。
よろしくお願いします。

>>623
それC言語とは関係ないんじゃないか

625デフォルトの名無しさん (ワッチョイ b3b3-MCTD)2018/01/31(水) 22:05:54.65ID:4EcHtUfm0
ラプラス変換(からZ変換した)後に、やっとCのコーディングの話になるので
どこか余所できいたほうがいい

数学ですかね…
他に当たります。ありがとうございます。

627片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)2018/01/31(水) 22:16:19.21ID:azVmFw6Pd
>>623
数値微分の考え方をまず理解して、さらに三角関数の微分と、極限を理解しないといけない。大学数学だよ。

628デフォルトの名無しさん (ワッチョイ 8b8a-Jirz)2018/01/31(水) 23:09:12.67ID:DKLTi2Aw0
元が消えてるからよく分からんけど、>>627の内容って高校数学の内容じゃないの?

https://i.imgur.com/yXsENPk.jpg
https://i.imgur.com/LhIHXaC.jpg

こちらになります。
一応これをC言語でやれというものなので、よろしくお願いします。
解き方の方針だけでも、、、

θをラプラス変換後、伝達関数と掛け合わせてから、逆ラプラス変換をするのかと思いましたが、そんなこと計算できませんでした。
よろしくお願いします。

630愛知人2018/02/01(木) 01:41:00.48
流石にラプラス変換をC言語でやれという問題じゃないと思う(´・ω・`)
手計算で(6)式に対する出力信号(tの関数)をωcを含む形で導いてから、適当な値を変数omagacにセットして出力信号を数値計算するのでは...?

631デフォルトの名無しさん (ワッチョイ 9fc7-2d+2)2018/02/01(木) 02:11:44.27ID:1L/crdkJ0
手計算で、θをラプラス変換して、10式と掛け合わせて、ラプラス逆変換までするのかな?
それができたら、できそうだけど、、、
計算できるかな

632愛知人2018/02/01(木) 02:20:41.57
普通にやればできると思う。

633デフォルトの名無しさん (ワッチョイ 9fc7-2d+2)2018/02/01(木) 02:42:05.21ID:1L/crdkJ0
部分分数分解できねぇ…

634デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/01(木) 02:43:54.99ID:3G6Lk4x40
>>629
積分器の部分が面倒くさいな
単純に時間刻み値一段だけ遅延させてみたけどうまくcos波形にならない
何段遅延させればうまくいくかよく分からない
とりあえず方針としては、ブロック図を単純に差分方程式に落とし込んでやれば回答には辿り着けるはず
1/sの部分が積分器だから入力を適当に遅延させて出力させてやればいい
ラプラス変換云々は理論的な理解には大切だけど、プログラム的には最終的に差分方程式(数学的には微分方程式)の形に落とし込んでしまえばいいよ
もうここまでにして途中のソースだけ挙げておく
https://ideone.com/69YxIz

635愛知人2018/02/01(木) 02:49:41.29
部分分数分解なんか要らないと思うけど...

636愛知人2018/02/01(木) 02:52:06.51
ごめん、俺が知ってるやり方も部分分数分解だった。
でも手順に従うだけじゃ...?
http://lab.cntl.kyutech.ac.jp/~nishida/lecture/MathOfCntl/no5.pdf

>>634
伝達関数の使い方が、その方法じゃ分からないです…
勉強不足です。

>>635
θをラプラス変換したものを伝達関数と掛け合わせてから、逆ラプラス変換した結果がこうなりました。
T=ω/(ω^2+1)
P=0.1/ω^2+1000^2

と適当な文字において、
θ(t)'=T(-cos(t)+ωsin(t)+e^(-ωt))+
P(-cos(t)+ωsin(1000^(2)×t)/1000^(2)+e^(-ωt))
となりました。
これをtを0.001秒毎に、0〜10まで出していけばいいんですよね?
自分でやってみたんですけど、tが0.001秒毎に変わっていかなくて途方にくれてます。
多分簡単なことなんで、コードをお願いします。

638デフォルトの名無しさん (ワッチョイ f723-aShi)2018/02/01(木) 13:40:30.82ID:NCVvUhLZ0
宿題は宿題スレ

639愛知人2018/02/01(木) 15:22:38.94
>>637
計算結果が間違ってる(>_<)

640デフォルトの名無しさん (ワッチョイ 9f37-j4Dg)2018/02/01(木) 15:39:24.12ID:sLGIVvbi0
int main()
{
int a;
a=1;
sumNum(&a);
printf("%d\n",a);//13

char str;
sumStr(&str);
printf("%c\n",str);//□
}

void sumStr(char* str){
*str ="a";
}
int sumNum(int * num){
*num=*num+12;
return 0;
}
なぜ変数strの出力が"a"と表示されないのですか?

641 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/01(木) 15:48:02.96ID:Oiw/v1s80

642愛知人2018/02/01(木) 15:48:38.02
"a"は{'a', '\0'}へのポインタ
'a'は文字のa

型違うって警告出るだろこれ。

644デフォルトの名無しさん (ワッチョイ 9fbb-KBTD)2018/02/01(木) 18:02:04.83ID:qri+5ZQ+0
"a"はポインタじゃないぞ
printf("%u", sizeof "a"); //2
const char *p;
p = &"a"; //ill-formed
p = &"a"[0]; //well-formed

'a'はint型の0x41もしくは0xc1だ

645デフォルトの名無しさん (ワッチョイ 9f37-j4Dg)2018/02/01(木) 18:06:30.20ID:sLGIVvbi0
>>643
eclipseは出ない
どのIDE使えば書きやすいのかそれも教えてくれないか

646愛知人2018/02/01(木) 18:41:02.74
>>644
仮に文字列リテラルの式の値の型がポインタじゃないとして、それらが何故その根拠になるのか分かりません(>_<)

647デフォルトの名無しさん (スップ Sd3f-qmJt)2018/02/01(木) 18:42:24.84ID:4qOh33SSd
>>640

*str = 'a';

648デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/01(木) 18:46:32.22ID:7vK6yiTU0
"a"+1; セーフ
"a"++; 文法エラー

649愛知人2018/02/01(木) 18:48:48.23
>>648
文字列リテラルは定数なのでそれは分かります(>_<)

650デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/01(木) 19:02:17.43ID:7vK6yiTU0
char a[] = "A";

a+1 セーフ
a++ これも文法エラー ポインタならばこれは通るけど、配列では無理

651愛知人2018/02/01(木) 19:08:28.37
ポインタ変数にリテラルを代入した場合は...?(>_<)

652デフォルトの名無しさん (ワッチョイ 9fbb-KBTD)2018/02/01(木) 19:09:19.81ID:qri+5ZQ+0
>>646
面倒くせえやつだな
const char *p;
printf("%u", sizeof p); //4
const char (*q)[2];
q = &"a"; //well-formed
q = &a[0]; //ill-formed

653デフォルトの名無しさん (ワッチョイ 9fbb-KBTD)2018/02/01(木) 19:10:10.23ID:qri+5ZQ+0
>>648
syntax errorじゃない
semantics errorだ

654デフォルトの名無しさん (ワッチョイ 9fbb-KBTD)2018/02/01(木) 19:10:59.81ID:qri+5ZQ+0
>>649
定数だからエラーなのではない
char s[2]; //non-constant array
s++; //ill-formed

655愛知人2018/02/01(木) 19:16:30.75
>>652 ?ʕ•ᴥ•ʔ?

656デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/01(木) 19:17:57.92ID:7vK6yiTU0
>>653
あーーー  ありがとう

657愛知人2018/02/01(木) 19:18:03.81
>>654
これは分かりました(>_<)
配列の変数はポインタと同じようで違うんですね(>_<)

>>640
void sumStr(char* str){
*str ="a";
}

これ、strはcherのポインタでありその指す先はchar型だ。
"a"は 'a', '\0' と並んで入っている先を指すポインタだ。

*str は char 型で、"a" は char * 型だ。型が違う。

これが例えば *str = 'a'; だったり、あるいは *str = *"a"; だったりすれば型も一致するし目的の値の代入に成功するだろう。
(まあしかし普通は *str = *"a"; なんて書き方しないけどな)。

659デフォルトの名無しさん (ワッチョイ ff80-g5j1)2018/02/01(木) 21:49:26.76ID:iw8YX/Ps0
詳説 Cポインタ、2013、オライリー・ジャパン

ポインタの仕様だけで、本が1冊書けるw

どんなに面倒くさい言語やねんw

660 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/01(木) 22:02:25.75ID:Oiw/v1s80
>>659
そんなにネタはないと思うが、いったいどんな本なんだろう?

661659 (ワッチョイ ff80-g5j1)2018/02/01(木) 23:02:59.65ID:iw8YX/Ps0
ポインタ・文字列を、図解して説明している

"abc" なら、"abc\0" みたいに4バイトになるとか

662デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/01(木) 23:14:57.10ID:3G6Lk4x40
>>645
書きやすいかどうかは分からないが、VisualStudioだとこんな感じで警告どころかエラーでビルドに失敗する(C++プログラムとしてだけど)
正確にはビルドするまでもなく、コーディング段階で赤色の波下線で警告表示されるのでそれ以前に問題に気付く
https://i.imgur.com/6MLycv2.png

>>662
VisualStudioはエディタやデバッガが滅茶苦茶優秀
コンパイラがウンチだけど、それさえ許容できればVisualStudio一択

すまんアンカー間違えた

C能力検定てやる価値あるかな

これからC言語始めます自分で色々と調べたけっかこの2つが残りました
どちらがいいでしょうか?アドバイス下さい。それやめとけなんて話もあればお聞かせ下さい

1,「C言語プログラミング」(ハーベイ・M. ダイテル/ポール・J. ダイテル 、ピアソン)
2,プログラミング言語C 第2版 ANSI規格準拠 B.W. カーニハン (著),? D.M. リッチー

667デフォルトの名無しさん (アウアウエー Sadf-EZPO)2018/02/03(土) 04:53:07.36ID:pNC8Ba1va
gcc

668デフォルトの名無しさん (ワッチョイ ff80-g5j1)2018/02/03(土) 06:09:55.21ID:5C9YCfZr0
巨匠の柴田望洋・林 晴比古とか、
「猫でもわかるC言語プログラミング 第3版」粂井(くめい)康孝、2013

古い本だと、例題の開発環境が古いから、動かせないだろ

「c言語 入門書 おすすめ」で検索!

669デフォルトの名無しさん (アウウィフ FF5b-aShi)2018/02/03(土) 09:36:31.00ID:qWVkS+EsF
林晴比古はいまいち

670デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/03(土) 10:38:20.76ID:zCLT35Li0
>>666
新しいことを学ぶときは
・バイブル的な本(K&R第2版)
・初心者向け
の組み合わせで。
片方だけではダメ。

671デフォルトの名無しさん (ワッチョイ 77c9-VW3n)2018/02/03(土) 12:45:56.09ID:YTn5lucX0
ちょっと教えてくらさい。

最近Cを書くことが多くなったんですけど

#include <Includes/General.h>
#include "Includes/General.h"

これって、本来の動作的に厳密には何か違いがあるんですか?

672デフォルトの名無しさん (ワッチョイ f723-EZPO)2018/02/03(土) 13:15:26.42ID:5gvBi6mQ0
カレントディレクトリ

-I
の優先順

673デフォルトの名無しさん (ワッチョイ 179d-duq4)2018/02/03(土) 13:23:39.69ID:iWk8ZVwf0
>>671
#include <> はコンパイル環境指定のインクルードディレクトリから探索
#include "" はインクルードしたファイルのあるローカルディレクトリを先に探索してから環境のインクルードディレクトリを探索

つまり自分で今作ってるプログラムのヘッダファイルは#include ""を使わないと他人の同名のファイルをインクルードするかも知れない。

674デフォルトの名無しさん (ワッチョイ 77c9-r4To)2018/02/03(土) 14:54:39.21ID:YTn5lucX0
>>672-673

そういう事ですか、なるほど。
詳しくありがとうございました。勉強になりました。

675デフォルトの名無しさん (ワッチョイ bfe7-YYog)2018/02/03(土) 16:02:06.27ID:nCFMN0sb0
本当はコーディングルールから学ぶと良いが書ける人はとても忙しいので本がない。

676デフォルトの名無しさん (ワッチョイ 179f-A9+C)2018/02/03(土) 17:23:23.11ID:VDv79Nx+0
>>666
1は知らんけど2は絶対に読んだほうが良い本だと思うよ。

677デフォルトの名無しさん (エムゾネ FFbf-aShi)2018/02/03(土) 17:52:24.85ID:8pdQs/78F
読むなら訳本じゃなくて原著

678デフォルトの名無しさん (ワッチョイ 9793-8kmj)2018/02/03(土) 18:31:46.16ID:nLGH3QTp0
初心者脱出できる本教えて

679デフォルトの名無しさん (エムゾネ FFbf-EZPO)2018/02/03(土) 19:06:23.67ID:VzdMwW3vF
いくら本読んでも本に頼ってるうちは初心者
書いて書いて書きまくってエラー出しまくって経験積め

680デフォルトの名無しさん (スップ Sd3f-qmJt)2018/02/03(土) 19:16:40.14ID:23ehB4hAd
>>678
なんでもそうだと思うが、
悩んで解決した分 だ け が自らの糧となる。

681デフォルトの名無しさん (ワッチョイ bf37-27VS)2018/02/03(土) 19:17:34.81ID:O3yJsiXS0
入門はISO C11でも読めばいいんじゃね

>>168
このセリフは10年前にも言えたことだな

683デフォルトの名無しさん (ワッチョイ bfe7-YYog)2018/02/04(日) 08:54:40.33ID:8x/2YGfJ0
トリッキーなコード書いて自滅するな。

684デフォルトの名無しさん (ワイモマー MM5b-Rd6c)2018/02/04(日) 11:15:43.36ID:snv+Mm9gM
>>168
トイプログラムはそうなるかもな。

685デフォルトの名無しさん (ワッチョイ d7c3-YYog)2018/02/04(日) 12:44:06.41ID:TVUXtLT70
初心者です。参考書を読んで勉強していたのですが
「浮動小数点数の利点は、一定の有効桁数(精度)の範囲内で、小さな数から大きな数まで表現できることです」(分かりやすいC入門編:川場隆)
とあったのですが、どういう意味か分かりま出んでした。
ネットで調べても同じようなことしか書いてなくて。浮動小数点数の利点を教えてください。

686デフォルトの名無しさん (アウウィフ FF5b-EZPO)2018/02/04(日) 12:49:52.12ID:D/BHnVHFF
利点と欠点が同時に書かれてるな

687デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 12:53:55.66ID:9kHA/gVX0
>>685
123,000,000,000=123×10^9

右辺の方がコンパクトだろ?

688デフォルトの名無しさん (ワッチョイ ffd7-wbgk)2018/02/04(日) 13:03:24.65ID:WecC8o2P0
>>685
利点とは、何かよりも優れている点であることは解っているか?
浮動小数点と何を比較するのかで答えは違ってくるぞ
整数か? それとも固定小数点か?

689デフォルトの名無しさん (ワッチョイ d7c3-YYog)2018/02/04(日) 13:24:01.43ID:TVUXtLT70
>>686
というと?
>>687
では、数字が少数になったらどうなんでしょうか?
例えば12469125478.945→1.2469125478945×10^10。これでコンパクトになっていると言えるのでしょうか?
>>688
すいません。固定小数点数と比べて、です。

690デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/04(日) 13:26:59.75ID:mpGHvQVh0
0.000000000123 = 1.23e10

691デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/04(日) 13:29:05.43ID:mpGHvQVh0
間違えた
0.000000000123 = 1.23e-10

692デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 13:30:24.68ID:9kHA/gVX0

693デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 13:36:20.20ID:9kHA/gVX0
二進数32ビットで123,000,000,000は表せないけど、
32ビットを符号部、指数部、仮数部に分けると表現できる。
有効桁数は仮数部のビット数で決まる。

694デフォルトの名無しさん (ワッチョイ ff80-g5j1)2018/02/04(日) 13:40:30.68ID:ue7FPdZ+0
例えば、8ビットなら、2^8 通り、0〜255 しか表現できない

それを5ビットにして、残りの3ビットを桁をずらす機能にすると、
2^5 通り、0〜31 しか表現できないけど、

残りの3ビットで、0〜7 を表現できるので、それをずらす桁とすると、
7桁ずらせば、310,000,000 を表現できる

だから精度は減ったけど、桁をずらせるようになったから、
非常に小さな数や、大きな数を表現できる

桁をずらす部分は、指数部という。
実際には、10進数ではなく、2進数でずらしていく

695デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 13:43:30.54ID:uz8VZN5uM
初心者質問おねがいします。

二つのunsigned char型があり、
一つ目が 0b10001000 で、
二つ目が 0b01110111 です。
これを合わせて 0b10001000 となる計算式はどうすればいいですか?
よろしくおねがいします。

696デフォルトの名無しさん (ワッチョイ f7a7-iPrh)2018/02/04(日) 13:49:58.29ID:lzMLg/n40
>>695
希望の結果が1つ目の値そのままのように見えるが

697デフォルトの名無しさん (ワッチョイ 1781-hxSR)2018/02/04(日) 13:56:57.78ID:B901qm/S0
一つ目をそのまま代入すればよろしいかと

698デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 13:59:02.90ID:uz8VZN5uM
>>696
すみません。
説明不足でした。
二つ目のchar型は刻々と変化するので、一つ目のchar型の各ビットを二つ目の各ビットが変わったら
そのビットだけ反転させたいのです。
よろしくお願い致します

699デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/04(日) 14:06:52.59ID:mpGHvQVh0
>>698
直前の値とのEXORを取れば変化ビットだけ抽出はできるけど、それとは別に何かのマスクを掛けたいということ?

700デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:13:06.96ID:uz8VZN5uM
>699

すみません。
超初心者なのでマスクとかよくわからないです。
単純に、一つ目のchar型の各ビットを二つ目のchar型の各ビットが変化したらそのビットだけ反転させたいだけです。

701デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 14:16:40.27ID:9kHA/gVX0
>>700
わかりにくい。
ビット単位で4パタン説明して。

702デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:25:23.15ID:uz8VZN5uM
>>701
すみません
こんな感じでわかりますか?

一つ目の初期値 0b11010110
二つ目の初期値 0b01001011


二つ目が0b01001010に変化

一つ目が0b11010111に変化させたい





二つ目 0b01001010

703デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:27:02.24ID:uz8VZN5uM
もう一例です

一つ目の初期値 0b11010110
二つ目の初期値 0b01001011


二つ目が0b010000111に変化

一つ目が0b11011110に変化させたい

704デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 14:27:32.63ID:9kHA/gVX0
>>702
なぜ話をややこしくする?
ビット単位で説明すればいいじゃん。

705デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:28:16.45ID:uz8VZN5uM
すみません
>>702の最期の行は不要です

706デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:30:17.33ID:uz8VZN5uM
>>704

ビット単位で比較してそれぞれ操作するしかないということでしょうか?
できればバイト単位で一括で操作できる方法があればとおもいました

707デフォルトの名無しさん (ブーイモ MMcf-OTNK)2018/02/04(日) 14:34:23.14ID:dDFDgXmuM
>>706
敢えて質問するけど
1.全ビット反転させてはいけない理由はあるの?
2.何処のビットが変化したかどうやって判別してるの?

708デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 14:35:53.94ID:9kHA/gVX0
>>706
だれがビット単位で操作するしかないと言ったの?

709デフォルトの名無しさん (ワイモマー MMbf-aajP)2018/02/04(日) 14:40:21.25ID:uz8VZN5uM
>>707

1、はい。全ビットは反転してはまずいです。
2、マイコンの入力ポートです。

>>708

すみません。
そんなつもりではありません。
ということは、自分の望む計算式があるのでしょうか?

710デフォルトの名無しさん (ワッチョイ d78a-IOOI)2018/02/04(日) 15:00:01.65ID:mpGHvQVh0
>>709
イメージとしては、二つ目の変数の変化をEXORで抽出しながら変更用マスクを作成
そのマスクで一つ目の変数と再度EXOR演算、これで二つ目の変更ビット個所だけ一つ目のビットが反転する

ざっくりとした流れはこんな感じ
一つ目の値(状態)a、二つ目の値(入力)b、入力比較用変数c、変更ビットマスクd
c = input(b);
while(1) {
d = c ^ input(b);
c = b;
a ^= d;
}

711デフォルトの名無しさん (ワッチョイ 9793-d/ts)2018/02/04(日) 15:18:24.98ID:tHspdphL0
ちょっと整頓させてくれ。

>>702 の場合
二つ目の unsigned char
01001011 ... 最初の値
01001010 ... 新しい値
00000001 ... 変化したビット

一つ目の unsigned char
11010110 ... 最初の値
11010111 ... 二つ目の unsigned char の変化にともない新たに取るべき値
00000001 ... 変化したビット (二つ目の unsigined char の変化したビットと等しい)

>>703 の場合
二つ目が0b010000111に変化 ... ビット数が増えとるやん!


>>710 の言う通り「二つ目」のビット変化をexor(^演算子)で抽出した結果を
「一つ目」のビットに作用させれば良さそうだけど、
「二つ目」のビットが1から0に変化したときには「一つ目」にはどう反映させたいの?

712デフォルトの名無しさん (ワッチョイ ffe4-TMol)2018/02/04(日) 15:33:13.79ID:F4VHcN9w0
>>710

ありがとうございます。
何となくですが少しイメージが浮かんできました。

>>711

すみません。

二つ目が 0b01000011 に変化の間違いです。

713デフォルトの名無しさん (ワッチョイ 179f-wbgk)2018/02/04(日) 15:44:44.53ID:fXO59JwO0
まずはやりたいことを普通の日本語で書け。

1001110
1101001
1101000
1101111
1101110
1100111
1101111
0100000
1100100
1100101
0100000
1001111
1001011

715デフォルトの名無しさん (ワッチョイ 179f-wbgk)2018/02/04(日) 16:57:20.23ID:fXO59JwO0
こ、こうか・・・
1001110 N
1101001 i
1101000 h
1101111 o
1101110 n
1100111 g
1101111 o
0100000
1100100 d
1100101 e
0100000
1001111 O
1001011 K

716デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/04(日) 17:03:35.16ID:NeQWIMjc0
2つめ着目ビットが 0 -> 1 となったとき 1つめ対象ビットを 反転/0/1 にする
2つめ着目ビットが 1 -> 0 となったとき 1つめ対象ビットを 反転/0/1 にする

0->1 でも 1->0 でも 1つめ対象ビットを反転すればいいのけ?

new_1st = old_1st ^ (old_2nd ^ new_2nd);

717デフォルトの名無しさん (ワッチョイ ffe4-TMol)2018/02/04(日) 18:21:03.27ID:F4VHcN9w0
>>716

正にその通りです!
その式で思ってる通りに制御できました!
ありがとうございましたm(_ _)m

718デフォルトの名無しさん (アークセー Sxcb-/IWG)2018/02/04(日) 22:32:58.82ID:ZlHMYtZlx
全くの初心者です。
「2の3乗を求める」という計算プログラムを勉強しています。
最終的には3^1024を求めたいのですが。
ネットで見ていると30乗ぐらいまではプログラムがあるのですが
1024乗ぐらいになると難易度的に難しくなるのでしょうか?

719デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/04(日) 22:50:53.35ID:9kHA/gVX0
>>718
3^1024=(3^2)^512

3^2≒10ってことで、だいぶ大雑把だけど

3^1024≒10^512

10進数で500桁以上の大きな数になりますね。
どの型の変数を使う?

720片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1)2018/02/04(日) 23:03:25.92ID:i7yJvuTcd
多倍長演算か、筆算するしかない。

721デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)2018/02/04(日) 23:07:38.36ID:88eIJAAv0
>>718
やることは3に3を1,023回掛けるだけだから難しくはない
ただ>>719の言うようにかなりでかい値になる(ちょっとpythonで計算したら489桁だった)から普通のlong intとかではオーバーフローする
なので
多倍長整数 C言語
とかでググるがよろし

722デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)2018/02/04(日) 23:20:52.68ID:dMpklRXW0
DOSで4000桁の電卓つくるにはって考えてたことあったな。

723 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/04(日) 23:23:16.19ID:p5zvJFKF0
>>718
自力でどうにか解決できたらプログラミングの力がつくよ、がんばって!

724デフォルトの名無しさん (ワッチョイ ffd7-wbgk)2018/02/05(月) 00:05:03.48ID:GuU0avOk0
>>718
GMPというフリーのライブラリを使えば3^1024は簡単に求まるぞ

725デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/05(月) 00:05:41.82ID:atUOEIz80
BCD(二進化十進)ライブラリを拾ってくるのが汚れた大人だけど、
若者は勉強のためにBCDライブラリを作ってみては?

726デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/05(月) 00:06:32.23ID:atUOEIz80
おっと、更新せずに書き込んだらこんなことに(笑)

727 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/05(月) 00:44:22.39ID:Qlm7SRQb0
>>725
10進の世界を前提に計算するのは、メリットがよくわからないんですが

728愛恥人2018/02/05(月) 01:36:30.57
10進じゃないと0.1が無限に数字が続くらしい
よく分からんけど

729 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/05(月) 01:40:21.91ID:Qlm7SRQb0
>>728
10進だと 1/3 が無限に数字が続きますよね

それはさておき、多桁長+浮動小数点が落としどころではないかと
すると、BCD の意義がよくわからないのです

730デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)2018/02/05(月) 01:40:54.20ID:cqMdaOnR0
効率よく2進値を10進表記するアルゴリズムが思いつくならメリット無いかもな。

731デフォルトの名無しさん (ワッチョイ 1781-hxSR)2018/02/05(月) 01:47:14.45ID:zlSI53sS0
とりあえず質問者の意図にそって
多倍長整数演算と言うことに絞ろう

732デフォルトの名無しさん (ワッチョイ ffea-C7gl)2018/02/05(月) 08:31:52.64ID:QaNROXZC0
結果を可視化するときにBCDだと楽

733デフォルトの名無しさん (ワッチョイ ffd7-wbgk)2018/02/05(月) 10:06:47.08ID:GuU0avOk0
16進ダンプしたとき読みやすい
それだけ

3増し符号とか使ってたやついる?

734デフォルトの名無しさん (アウアウカー Sa2b-gGCH)2018/02/05(月) 12:29:13.25ID:cbvE2oU2a
3進数なら歯切れの良い数なんだけどな・・・

735デフォルトの名無しさん (ワッチョイ 97a1-+DFt)2018/02/05(月) 15:20:22.81ID:vN182Yvh0
>729

COBOLはBCDを使っているはず、

736デフォルトの名無しさん (ワッチョイ 179d-jn1r)2018/02/05(月) 20:03:34.68ID:GlpP/XMd0
>すると、BCD の意義がよくわからないのです

科学技術計算は浮動小数点でいいが、リアルなお金の計算とかでは10進で計算するのがディフォールト
2進と10進では結果が大幅にちやうから。
ま俺の財産なら誤差0.1円くらいかもしれんが、、

737デフォルトの名無しさん (スップ Sd3f-qmJt)2018/02/05(月) 21:30:58.83ID:jWi5SYZhd
いま必死に考えてる
昔のCPUは絶対に持っていた機能だ
レジスタが8ビットだとすると、256以上のデータが表現できなくなるけど、そんなことはない
だから何か仕組みがあるはず
プログラマが勝手にこのビットが立ったら2の15乗だとか自由に決めて、8ビビットの重み付けをしてるんだとおもう
あとは計算と結果の表現次第だ
指数法則を使えばできそうだけど、これはなかなか面白い課題だね

738愛恥人2018/02/05(月) 21:36:06.47
ググれよw

739デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)2018/02/05(月) 21:47:00.70ID:cqMdaOnR0
ADD HL,BC

740デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/05(月) 22:00:56.57ID:atUOEIz80
ゼッパチ(笑)

741デフォルトの名無しさん (ワッチョイ f7a7-iPrh)2018/02/05(月) 22:04:10.39ID:/FiCbPih0
>>737
キャリーフラグと言ってレジスタの範囲を超える加減算があると1になるビットがステータスレジスタにある
32ビットCPUにだってあるぞ

742 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)2018/02/05(月) 22:11:11.10ID:Qlm7SRQb0
>>741
C で多桁長計算を記述するときは、キャリーフラグという便利なものが使えないので、いちいちマスクしたり、と苦労しますね
http://mevius.2ch.net/test/read.cgi/tech/1434079972/28
C で書かないほうが楽で記述量も少ないかもしれない
>>718 は初学者には無理かもしれません

743デフォルトの名無しさん (ワッチョイ d7d2-VW3n)2018/02/05(月) 22:15:51.73ID:bjLIcRum0
【有賀さつき(52)小林麻央(34)黒木奈々(32)】 世界教師 マイトLーヤ「早死には原発事故の隠蔽のせい」
http://rosie.5ch.net/test/read.cgi/liveplus/1517828233/l50

744デフォルトの名無しさん (ワッチョイ 9fe1-pzKJ)2018/02/05(月) 22:26:42.74ID:7nDvhhdf0
アセンブラだと当たり前のようにキャリーフラグを見るけど
高級言語だとキャリーフラグを活用してるのは皆無じゃないかと
思えてくるのが悲しい

745デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)2018/02/05(月) 22:57:52.16ID:BWargw5G0
>>744
高級言語でキャリーフラグを扱えるのはTL/I以外に見たことない
https://ja.m.wikipedia.org/wiki/TL/I

746デフォルトの名無しさん (スップ Sd3f-qmJt)2018/02/05(月) 23:32:47.33ID:jWi5SYZhd
I/Oがメモリにマッピングされてるんだから見れると思ってる
ぼくはそういうプログラミングがしたい

747デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/05(月) 23:40:30.69ID:atUOEIz80
Reno版のカーネルのソース読んだとき、
VAXのHDDのドライバが分かりやすくてビビった。
メモリマップドI/Oだた。

ここの人達ってOpaqueポインタとか使ってます?

749デフォルトの名無しさん (アークセー Sxcb-/IWG)2018/02/06(火) 00:31:17.27ID:WaNrl6wPx
とりあえず本買ってきて読んでいます。3月末ぐらいにはなんとか結果を出したい・・・

750デフォルトの名無しさん (アークセー Sxcb-/IWG)2018/02/06(火) 00:37:33.65ID:WaNrl6wPx
とりあえずプログラム初心者だが将来有望な頭脳をもった奴を
2人ほど用意した・・・。

751デフォルトの名無しさん (ワッチョイ 179f-gGCH)2018/02/06(火) 01:36:11.08ID:FVXSsnAc0
>>742
うーん。最上位ビット使えばできるのでは?
まあしかしアセンブラ使った方が効率はいいだろうな。
CPU違ったら動かんけど。

752デフォルトの名無しさん (ワッチョイ 179f-gGCH)2018/02/06(火) 01:43:46.77ID:FVXSsnAc0
>>748
滅多に使わない。

753デフォルトの名無しさん2018/02/06(火) 04:19:56.87
>>748
実ソースではvoidポインタしか見たことない

754デフォルトの名無しさん (エムゾネ FFbf-EZPO)2018/02/06(火) 13:31:15.57ID:HnlXhHfVF
3進数用にBCD3を定義する
1桁を2進数2bitで表現して
最下位桁の次に2bitのエンドコード11を付与する
例えば
0=00 11
1=01 11
2=10 11
3=01 00 11
4=01 01 11
5=01 10 11
6=10 00 11
7=10 01 11
8=10 10 11
9=01 00 00 11
...
3^1024=01 00 00 ...(00 が1020個(左右に書いたもの含めると1024個))... 00 00 11

755デフォルトの名無しさん (ワッチョイ 9793-d/ts)2018/02/06(火) 17:23:11.09ID:f2WbB5Mw0
>>754 議論の本質から逸れた混ぜ返しになるけど、
BCD が 二進化十進数 binary coded decimal の略なら、
3進数の場合は binary coded tricimal で BCT ではないかしら。

3進数が tricimal なのか、ちょいと自信がないけど、
とりあえずネット検索でヒットする言葉みたい。

756デフォルトの名無しさん (JP 0Hab-465M)2018/02/06(火) 17:37:36.42ID:vr+u4qHrH
ternaryだよ

757デフォルトの名無しさん (ワッチョイ ffd7-wbgk)2018/02/06(火) 17:38:13.02ID:CtmFRYuD0
BiCMOS TTL compatible

758デフォルトの名無しさん (エムゾネ FFbf-EZPO)2018/02/06(火) 17:46:17.35ID:b1TJyJggF
>>755
BC3でいいよもう

759755 (ワッチョイ 9793-d/ts)2018/02/06(火) 19:06:57.63ID:f2WbB5Mw0
>>756
訂正ありがとう。確かに ternary が辞書に載ってる言葉みたいね。
triple あたりからの類推では到達できない綴りだったわ。
これからは注意して取り締まることにする。

760デフォルトの名無しさん (ワッチョイ 57b3-iQWu)2018/02/06(火) 19:11:28.74ID:Yrf3PZ3s0
取り締まり頑張ってね

761片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1)2018/02/06(火) 19:38:09.83ID:c7ouIjcHd
取締役なのか、パトロールなのか。。。

762デフォルトの名無しさん (JP 0Hab-465M)2018/02/06(火) 21:27:30.96ID:vr+u4qHrH
tricimal→取り締まるかよ

最近のbooleanがヌルも扱えるから三進数?

764デフォルトの名無しさん (ブーイモ MMdb-465M)2018/02/07(水) 00:06:04.12ID:9RlVVxZwM
従来のbooleanの変数が1個だけあっても、2進数とは呼ばんだろ。

765デフォルトの名無しさん (スップ Sdbf-Md37)2018/02/07(水) 00:41:24.75ID:J2C0nRVPd
それに当てはまるのは二値論理・三値論理だ

766デフォルトの名無しさん2018/02/07(水) 07:37:48.03
2進数なら無駄なく表せるけど
struct {
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
}
3進数だと3バイトずつセットにしないと無駄なく表せないよね
3進数使うメリットあんの?

767デフォルトの名無しさん (スップ Sd3f-qmJt)2018/02/07(水) 08:20:31.75ID:cTCYWpamd
自然対数の底2.71828…により近い3進数の方が効率が良いっておばあちゃんが言ってた。
2進数なのは単に電気で表しやすいからだって。

768デフォルトの名無しさん (ワッチョイ d78a-uppE)2018/02/07(水) 08:24:31.98ID:nJAlkrj20
元の質問が3の累乗を求める問題だから3進数の方が単純化できるというだけのこと

769デフォルトの名無しさん (ワッチョイ d72b-Mu/V)2018/02/07(水) 09:10:28.34ID:VNvdmR7o0
このあたりのソース揃ってるソフトでC言語の勉強してるわ。
スカパーの録画環境も構築できるし。
https://www65.atwiki.jp/psky/

770恥人2018/02/07(水) 09:17:15.35
へえ、おもしろ

test

772デフォルトの名無しさん (スップ Sd3f-27VS)2018/02/07(水) 17:58:56.36ID:jSJcfZwQd
const char ○○とchar ○○について。
○○はフォルダ名。

後者ではエラー、前者ではエラーにならない場合何が考えられますか?
CとC++だと記述が違うとかあります?

773デフォルトの名無しさん (ワッチョイ d78a-uppE)2018/02/07(水) 18:21:27.23ID:nJAlkrj20
恐らく何らかの標準関数の引数にでもした時にエラーが発生したんだろうけど、具体的なことが分からないので何とも言えない
constについてはCとC++では微妙に扱いが違う

>>766
そりゃ2値で3進数を表現しようとしてるから当たり前
1本の線が3値になるようなハードなら3進数の方がやり易い

775デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/07(水) 18:37:42.61ID:I0UlpN+80
エラー発生箇所の最小のコードとエラー内容を張らないと憶測だらけに

776デフォルトの名無しさん (ワッチョイ 1781-hxSR)2018/02/07(水) 18:42:33.73ID:IzVO5E4y0
>>774
0と正負で出来そうな気がする

777デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/07(水) 18:46:00.12ID:I0UlpN+80
HI/LO/ハイインピーダンス の 3ステート

>>776
それはソフト屋さんの思考やね
ハード的に0ピッタリなんてできなくて結局ある範囲を見る必要があるから1V, 2V, 3Vでも-1V, 0V, 1Vでもたいしてハードは変わらない

779デフォルトの名無しさん (スップ Sdbf-9nxG)2018/02/07(水) 19:16:14.19ID:pu3VMwXTd
curl.exeをsystemコールするのだけど
その標準出力をバフに入れたり、バフの値を標準入力に入れたりするのってどうすればできるのだろう?

780デフォルトの名無しさん (スップ Sdbf-9nxG)2018/02/07(水) 19:17:04.25ID:pu3VMwXTd
>>779
オプションをつけて標準入力をcurl.exeで〜とかってのはコマンドライン上で実現できてるけど
それをコードで実現する方法が知りたいです

781デフォルトの名無しさん (ワッチョイ f79b-27VS)2018/02/07(水) 19:40:09.15ID:v2LQurHa0
>>773
>>775
携帯でやったので文字化けしたのでハチャメチャですが
https://i.imgur.com/BvsCZnA.png

782デフォルトの名無しさん (ワッチョイ 97b3-C7gl)2018/02/07(水) 19:49:53.17ID:I0UlpN+80
const 無しのポインタ変数にリテラル文字列を与えると

C++だと (リテラル文字列の)指し先を書き換える気あるのかボケェ と警告やエラーになるですよ

Cは過去のコードの互換性の為に黙ってることが多い
(けどオプションで警告したりエラーにしたりするんだっけか?)

783デフォルトの名無しさん (ワッチョイ ffd7-wbgk)2018/02/07(水) 21:40:51.11ID:DHh/hU+x0
規格票読んでねえんだな

784デフォルトの名無しさん (ワッチョイ 57b3-wbgk)2018/02/07(水) 22:29:07.83ID:MTpdY7NJ0
"!"!"!MOHYO!"!"!"2"

1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]

2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!

3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{

41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end

{

785デフォルトの名無しさん (ワッチョイ 9fe3-+DFt)2018/02/07(水) 22:54:26.24ID:9NswO6iD0

786デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/08(木) 02:47:50.39ID:31uXy/SD0
>>779-780
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
例えば下は、メモ帳の実行ファイルの場所を探す

resText = ""
IO.popen("where notepad") { |io| resText = io.read }
puts resText

出力結果
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

787786 (ワッチョイ 2e80-2I1n)2018/02/08(木) 03:57:59.54ID:31uXy/SD0
>>779-780
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
これで、サイトのHTML が取れる

resText = ""

IO.popen("curl サイトのURL") { |io| resText = io.read }

puts "終了ステータス : #{$?}", resText

788デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/08(木) 04:04:45.98ID:FQ2Hecmn0
>>779
system()ではなくpopen()使うと楽だ。

789デフォルトの名無しさん (ワッチョイ c68a-Rwrx)2018/02/08(木) 07:36:30.89ID:CSlRHtTo0
色々ありがとう

>>785
Linuxだからそいつは無理なんだ...

>>787
>>788
すまん
Cは決定で、さらに言うとexecvで実行も決定なんだ
実行部のソースコードの変更はしたくないので...

curl.exe を Linux で?
こりゃ触っちゃダメな人だな

791デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/08(木) 07:57:31.83ID:31uXy/SD0
Linux なら、curl はコマンドである。
環境変数PATH も通っている

which curl で、
/usr/bin/curl

>>787
これは、Windows10 のWSL 上の、Ubuntu 16.04 で、Ruby で実行したもの

792デフォルトの名無しさん (スップ Sdc2-Rwrx)2018/02/08(木) 08:12:52.25ID:JMUgsKdMd
>>790
すまねぇ
正確に言うとcurlだった
実行ファイルってのを言いたかったんだけど紛らわしかったわ....

>>791
コマンドラインで実行をコード上からして
その結果をメモリに書き込みたいって感じ

int main()

char* buff[1024]
execv(curl..........)


子プロセス作成とかは書いてないけどこのexecvの結果をbuffにいれたい

793デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/08(木) 08:29:27.70ID:Mx6kxOEl0
>>779>>789 は同じ投稿者なのかな?

「curl.exeをsystemコールする」という文の意味は、
実際には curl.exe でなく /usr/bin/curl かどこかの Linux のコマンド、
systemコールと言っても system() 関数でなく execv() 関数で呼ぶ、
という条件でいいの?

794デフォルトの名無しさん (スップ Sdc2-Rwrx)2018/02/08(木) 08:33:32.64ID:JMUgsKdMd
>>793
同じです
メチャクチャ困惑させてすみません

そうです

795デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/08(木) 09:24:02.21ID:Mx6kxOEl0
#include <unistd.h>
#include <stdio.h>

int main() {
  int pp[2];
  pid_t pid;
  pipe(pp);   // パイプを生成 (エラーチェック略)
  pid = fork(); // プロセスを複製 (エラーチェック略)
  if (pid > 0) {
    // 親プロセス: 子プロセスから情報を受け取る
    close(0);   // 標準入力のディスクリプタを閉じる
    dup(pp[0]);  // パイプの入力を標準入力に複製
    close(pp[0]); // パイプの入力を閉じる
    close(pp[1]); // パイプの出力側は使わない
    char buf[1024];
    int nbytes = read(0, buf, sizeof(buf)); // 子プロセスからのデータ受け取り
    printf("[%*s]\n", nbytes, buf); // 受け取ったデータの確認
  } else {
    // 子プロセス: 外部コマンドを呼び出し、標準出力経由で親プロセスに送る
    char *cmds[] = { "/usr/bin/echo", "hello, darling", NULL }; // ダミーの外部コマンド
    close(1);   // 標準出力のディスクリプタを閉じる
    dup(pp[1]);  // パイプの出力を標準出力に複製
    close(pp[1]); // パイプの出力を閉じる
    close(pp[0]); // パイプの入力側は使わない
    // 外部コマンドの呼び出し (エラーチェック略)
    execv(*cmds, cmds);
  }
  return 0;
}

796デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/08(木) 09:25:00.98ID:Bk9SeRO9a
自分で fork, exec するなら pipe() 作って dup() で繋げ。
やり方はUNIXやLinuxのシステムコールに関する入門書みたいなのがあれば必ず書いてあると思うのでそういうのを見るか、またはググれば世界中で解説やサンプルプログラムが見つかると思う。
かなり基本的な事だ。

797795 (ワッチョイ 4193-jcwv)2018/02/08(木) 09:25:52.35ID:Mx6kxOEl0
急造のデッチ上げだけど、こんな感じかな。

要点は、名前なしパイプを作って標準入出力と差し替える。
外部コマンドの標準出力はパイプを通って出ていく、
呼び出した側は標準入力を読むとパイプから入ってくる。

32行制限に収めるために行が詰めたら見にくいね。

798デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/08(木) 09:26:09.44ID:Bk9SeRO9a
などと書いている最中に真上にサンプルプログラム出現w

799デフォルトの名無しさん (ワッチョイ 42a1-HQKA)2018/02/08(木) 11:52:39.29ID:ZE8Ol0Sg0
curlだったら、オプションで全部ファイルに書き出せるじゃないか

800デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/08(木) 12:29:54.84ID:Mx6kxOEl0
親プロセス側は標準入力をパイプに差し替える必要ないね。
パイプのディスクリプタから素直に読みゃいいんだわ。

// close(0);   // (不要)標準入力のディスクリプタを閉じる
// dup(pp[0]);  // (不要)パイプの入力を標準入力に複製
// close(pp[0]); // パイプの入力側はまだ閉じちゃダメ!
  close(pp[1]); // パイプの出力側は使わない

// int nbytes = read(0, buf, sizeof(buf)); // (変更)
  int nbytes = read(pp[0], buf, sizeof(buf)); // 子プロセスからのデータ受け取り
  close(pp[0]); // 使用済みパイプの入力を閉じる

801デフォルトの名無しさん (ワッチョイ 99b3-H5sa)2018/02/08(木) 18:13:43.55ID:GCWLssPX0
iOSのソースコード一部流出らしいけど
これホンモノ?
iBoot
https://github.com/h1x0rz3r0/iBoot/archive/master.zip

802デフォルトの名無しさん (アウアウカー Sa69-DUI6)2018/02/08(木) 18:39:44.85ID:Z1lo1am9a

803デフォルトの名無しさん (ワッチョイ d123-jA6l)2018/02/08(木) 22:11:08.17ID:6pPoEzd60
>>801
本物らしいな
しかも解説ドキュメント付
やっぱオープンソースよりプロプライエタリのほうが忖度が充実してるね

804愛恥人2018/02/08(木) 22:40:11.36
消えてる(>_<)

805愛恥人2018/02/08(木) 22:50:04.00
転載見つけた(´・ω・`)
https://0xacab.org/sizeofcat/iBoot

806デフォルトの名無しさん (ワッチョイ eda7-3W2a)2018/02/08(木) 23:02:55.43ID:H9Fqva5B0
流出どころかAppleがそもそも堂々と公開してるじゃないか

807恥人2018/02/08(木) 23:03:59.16
どういう意味?(´・ω・`)

808デフォルトの名無しさん2018/02/08(木) 23:13:56.52

809恥人2018/02/08(木) 23:17:16.32
>>808
OSのソースコードはないじゃん(´・ω・`)

810デフォルトの名無しさん2018/02/08(木) 23:51:25.87

811恥人2018/02/08(木) 23:57:44.62
>>810
気づかなかった(´・ω・`)

恥を知れ

(*^-^*)

まあ、ライセンスが必要な部分は非公開なんだけどね。

815デフォルトの名無しさん (ワッチョイ 4193-rNjp)2018/02/09(金) 21:20:19.26ID:BFrn0IJr0
処理が進んでくにつれてエラー処理のif文の中身が増えていくのをどうにかしたいんだがいい方法ない?

>>815
エラー時に行う定型的な処理の塊を関数化するのではいかんの?

817デフォルトの名無しさん (ワッチョイ be23-jA6l)2018/02/09(金) 22:18:00.58ID:iHLCNyuu0
>>815
普段起こりえないエラーは全部gotoでケツに例外処理を書く

818デフォルトの名無しさん (ワッチョイ c68a-Rwrx)2018/02/09(金) 22:24:15.39ID:9/m4CaSQ0
gotoは可読性落ちない?

819デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/09(金) 22:53:36.09ID:nN2BoaGY0
>>815
あー。ファイル1を開く、エラーならリターン、ファイル2を開く、エラーならファイル1をクローズしてリターン、ファイル3を開く、エラーならファイル1、ファイル2をクローズしてリターン、
・・・って具合にリターン直前にクローズするファイルがどんどん増えていくみたいなやつだよね?

そういうのは俺はもう goto 使って関数の終わりの方に飛ばしてそこで必要なクローズやらfree()やらをまとめてやるようにしたよ。関係する変数は関数のブロックの先頭の宣言で全部 NULL や -1 で初期化して goto の飛び先で NULL や -1 でなければクローズやfree()をする。
(但し関数の途中で自分でクローズやfree()をした場合はその直後にNULLや-1を代入するように書く必要がある)。C言語は try catch みたいな例外処理は作れないから仕方がないね。

goto 使わずにやるとしたら for (;;) か while (1) のブロック内に書いてエラーが出たら break すればできる(もちろんループの終わりは break)。しかしこの方法はループでもないのにループを書くという何か不自然なものになる。

820デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/09(金) 22:55:50.14ID:nN2BoaGY0
>>817
うう。かぶった。リロード忘れてた。

821デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/09(金) 23:00:38.39ID:nN2BoaGY0
>>818
C言語の場合は同じような事をする場合はgotoの方が可読性高いと思うけどなあ。とにかく間すっ飛ばして使ったリソース開放して即リターンしたいわけだし。

822デフォルトの名無しさん (ワッチョイ 4193-rNjp)2018/02/09(金) 23:48:06.18ID:BFrn0IJr0
>>816
それで対応できるものもあるんですけどね・・・

>>817
>>819
gotoは絶対使っちゃいけないみたいな感覚があって考えていませんでした
どうしようもないときに使ってみます

823片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd62-d/x4)2018/02/09(金) 23:53:39.52ID:owaGciqsd
goto hell;はdo-whileで置き換え可能。

do {
...
break; // goto hell;
...
} while (0);
hell:;

824デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/10(土) 00:06:47.82ID:l9ZzjyKP0
>>823
ああ。do while で 0 で抜けるようにするのでもできるか。
まあしかし goto 使わないならそんな風にするしかないよな。

825デフォルトの名無しさん (ワッチョイ c2e1-15El)2018/02/10(土) 00:17:25.15ID:uwwIAPPB0
単純に置き換え可能じゃないから do while(0) は定着しなかった
※個人の感想です

826デフォルトの名無しさん (ワッチョイ d12b-04A9)2018/02/10(土) 00:35:21.68ID:FI3VGJcC0
do while(0) も使うけど、その中でループを書く場合は面倒だからgoto使うかなあ
必ずどっちかだけってことは無いですね

827デフォルトの名無しさん (ワッチョイ e1b3-Db5I)2018/02/10(土) 04:34:11.76ID:pC7oS8hD0
return は1箇所でまとめる派 (関数出口は1箇所)
とっと return してしまう派 (関数出口は散らばる)

cでgoto使わないのは唐揚げにレモンかけないようなもんやで

829デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)2018/02/10(土) 05:56:43.86ID:1vRRPdaia
break 1 とか
break 2 とかで
抜ける {} の段数指定できない仕様が糞

830デフォルトの名無しさん (ワッチョイ 6ed7-jA6l)2018/02/10(土) 05:58:46.40ID:cpx12OHt0
>>823
gotoというキーワードに対する言葉狩りでしかない
うちの若いのがそんな変態コード書いたらしばく

831デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)2018/02/10(土) 06:14:37.72ID:1vRRPdaia
do{}while(0)は普通に使うやろ
特にマクロで
どこが変態やねん!

832デフォルトの名無しさん2018/02/10(土) 08:04:34.03
int ret = 1;
int fdA = -1;
int fdB = -1;
int fdC = -1;

if (ret) {
 fdA = open(A);
 if (fdA < 0) {
  printf(“ファイルAオープンエラー¥n”);
  ret = 0;
 }
}

if (ret) {
 fdB = open(A);
 if (fdB < 0) {
  printf(“ファイルBオープンエラー¥n”);
  ret = 0;
 }
}

if (ret) {
 fdC = open(A);
 if (fdC < 0) {
  printf(“ファイルCオープンエラー¥n”);
  ret = 0;
 }
}

if (ret) {
 いろいろ処理
}

if (fdA >= 0) close(fdA);
if (fdB >= 0) close(fdB);
if (fdC >= 0) close(fdC);

return ret;

833デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/10(土) 08:04:56.81ID:aodeHLjm0
O'ReillyのLinuxデバイスドライバ本では
初期化の失敗時、一部分だけ確保できたリソース群を
確保時とは逆順に行儀良く解放するのにgotoを使う方法を勧めてるね。

そういう具合にgotoが出てくる場面が明確ならば
必ずしもgotoが可読性を落とす、とは言えないじゃろ。

834デフォルトの名無しさん (ワッチョイ 42b3-/0XS)2018/02/10(土) 08:36:08.48ID:Sj+J5yD30
>>829
なんかの理由でネストを増やしたら全部書き換えになる糞仕様だろ
ループにラベルつけてラベルを指定してbreakできるようにしてほしい

835デフォルトの名無しさん (ワッチョイ 6ed7-jA6l)2018/02/10(土) 08:53:45.34ID:cpx12OHt0
>>831
使わねーよノーマルさんなら
変態の自覚がない真性変態め

836デフォルトの名無しさん (ワッチョイ e1a1-nHV3)2018/02/10(土) 08:54:55.97ID:DmmJmf560
goto を使わないようにというのは
昔、ダイクストラ大先生が「gotoは有害だ!」
とのたまわれたので、それ以後gotoを使わない
構造化プログラミングというのが流行ってFortranなども
Fortran 77で一部構造化されたりしてきたという経緯が
あります。

たしかに、昔のBASICプログラムはやたらgoto が多くて
まさにスパゲッティプログラムで論理を追うのに苦労しました。

最近のBasis(たとえばFree Basic)などは構造化されていて
使いやすく感じます。

Cもgotoを使わなくて書けるのですから、やむおえない
(gotoを使わなければ、どうしようもない)場合場合以外は
使わないにこしたことはないと思います。

837デフォルトの名無しさん (ワッチョイ 6ed7-jA6l)2018/02/10(土) 09:02:56.46ID:cpx12OHt0
ダウト
昔のBASICはGOTO文のせいで読みづらいんじゃない
最大のネックは変数が全てグローバルであること
次いでFOR文のNEXTの自由度が高すぎることだ
メインフレーム脳でPCを語るジジイどもが
行番号を批判していたが的外れもいいとこ

838デフォルトの名無しさん (スップ Sdc2-IOan)2018/02/10(土) 09:50:38.48ID:1KCikl+Sd
>>833
gotoの使い道なんてそのパターン以外ないな。

Linuxカーネルで登場するgotoをざっくりgrepしてみたらラベルの種類は1000種類程度
top10は以下
12257 out
2534 err
1609 done
1520 error
1415 fail
1351 exit
737 unlock
493 retry
421 again
368 bail

grepが雑すぎた
1753種でtop10は以下
2つ目のoutは先頭にスペースあり

12257 out
2534 err
1609 done
1520 error
1415 fail
1351 exit
1213 out
737 unlock
493 retry
421 again

841デフォルトの名無しさん (ワッチョイ 419f-VKlD)2018/02/10(土) 11:25:11.36ID:wR2OqAa50

842デフォルトの名無しさん (ワッチョイ 419f-VKlD)2018/02/10(土) 11:29:39.16ID:wR2OqAa50
すまんこっちの方が良かったかも
https://qiita.com/nothingcosmos/items/af2f7f0a827b4a7c8998

843デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/10(土) 11:35:32.34ID:4W9TXsf60
>>818
初心者…gotoを使いまくる
中級者…gotoを一切使わない
上級者…適材適所を覚える

844デフォルトの名無しさん (ワイモマー MMa5-O4V4)2018/02/10(土) 12:01:34.42ID:s8Yuzl0xM
>>818
内部的には全部goto(継続とか)だって事を理解すれば、適切な使い方が出来るようになる。

845デフォルトの名無しさん (アークセー Sxf1-c21i)2018/02/10(土) 12:09:51.29ID:BZD8vxg8x
ドラクエもテトリスもファイナルファンタジーも全部
C言語で作っているのですか?ふと疑問に思いました。

>>836
知識30年以上前で遅れてないか?
C言語なら理由があるgoto文は普通に使われるぞ
他言語で言う例外処理機能やラベル付きbreak文が無いからな

847デフォルトの名無しさん (ワッチョイ 419f-VKlD)2018/02/10(土) 14:08:50.97ID:wR2OqAa50
>>846
> C言語なら理由があるgoto文は普通に使われるぞ
さすがにこれは言い過ぎだろう。
ただしgoto不要論も50年前の理論であり、盲信するのも間違いだというだけだ。

問題は、goto を無くしたいだけの理由で余分なフラグやループ(もどき)を導入する是非だ。
ソースが余計に見にくくなるのは事実だからね。
最近の風潮なら、linter等によって「間違ったgotoの使い方」を検出できるようになれば、
gotoは完全にありになるだろう。
問題はこれが難しい(と言うよりやる気がない)ことで、
Cのノリなら「お前が間違えなければいいだけ、何故特化文法が必要になる?」になってしまう。
ラベル付きbreakとか、導入しても俺はいいと思うけどね。

例外については、今のところ他言語でも上手い解を見つけられていない。
goto文を使った場合はあくまで自関数内のtry-catchになってしまうが、正直、これで十分だ。
OOPでの継承先からのcatchとかを許可すると、便利な反面、密結合になってしまい、
noexceptとか言いだしているし、完全にあっちは暗礁に乗り上げつつある。
Cだと最初からnoexceptしかない。OOPが色々屋上屋を架しているのも事実だね。

848デフォルトの名無しさん (ワッチョイ ed61-nHV3)2018/02/10(土) 14:32:07.09ID:rkQpRkjv0
毎年どっかのスレでGOTO戦争起こってる気がする。

goto使えないなら、setjmpにマクロ被せてtry〜catch風にしちゃえw

850デフォルトの名無しさん (オッペケ Srf1-5OAx)2018/02/10(土) 14:35:35.79ID:hk3lMPpyr
>>836
「gotoは有害!」と言われるそのgotoは昔のBASICみたいな、別のサブルーチンの中に無節操にジャンプできる機能のことだったんじゃないかと思われる。
関数の外に飛べないgotoなら、関数の行数が少なければさして問題じゃない。

gotoのラベルって、関数内しか有効じゃなかったっけ?

852デフォルトの名無しさん2018/02/10(土) 15:41:31.33
こんな時代だからこそあえてmain関数にすべてを詰め込むプログラミングスタイルを確立していきたい

853デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/10(土) 15:42:18.37ID:l9ZzjyKP0
あー。別サブルーチンにgotoあったねえ。

6502アセンブラで書かれた Apple ][ のモニタプログラムにもそういうの結構あって当時すげえとか思ったが、無理矢理2KBのROMに押し込むための苦肉の策だったんだよな。
当時はメモリが高価で少ないのが当たり前だったから何でもかんでもトリッキーな方法使って小さくしてた。

854デフォルトの名無しさん (ワッチョイ 0676-3MxQ)2018/02/10(土) 15:45:49.28ID:jClKPuF30
long_jump

855デフォルトの名無しさん (ワッチョイ 319f-R9JW)2018/02/10(土) 15:47:06.49ID:l9ZzjyKP0
>>851
試してみ。お前のコンパイラは何か違うかも知れない。
ただし出来た場合、それをC言語と読んで良いのかどうか悩ましいところだ。
それと、一体どのようなコードを作っているのかが気になる所だな。

>>852
変なことに挑戦するなよw
Cだとそれできちゃうんだからw

856デフォルトの名無しさん (ワッチョイ 42b3-/0XS)2018/02/10(土) 16:02:44.60ID:Sj+J5yD30
>>836
> 昔、ダイクストラ大先生が「gotoは有害だ!」
> とのたまわれた
本人が書いたわけじゃないけどな

857デフォルトの名無しさん (ワッチョイ 3181-Ejv6)2018/02/10(土) 16:03:51.94ID:mAbz3z0v0
>>851
むかーし、データ受信専用のホストアプリ作ったときは、setjmp、longjmp使ったな

858850 (オッペケ Srf1-5OAx)2018/02/10(土) 19:34:42.47ID:hk3lMPpyr
>>851
ああ、>>850 で書いたのはもちろんC言語のgotoじゃない。
そもそもgotoはよくないという主張が叫ばれたのが1960年代、C言語ができたのは1972年らしいんだから。

859デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/10(土) 21:42:11.48ID:YQ6eMVvy0
ガチの初心者で申し訳ないんやが...。
unsigned char型変数には8ビットしか入らんはずやのに
0〜255の数値が入るのはなんでなんや?
8ビットを二進数変換すると11111111でこれを10進数に変換すると255になるのは分かるんやが
なぜ255の半角が入るのかがわからんのや。

#質問するとこ、ここで合ってるよな?

860デフォルトの名無しさん (ワッチョイ e1b3-Db5I)2018/02/10(土) 21:47:37.77ID:pC7oS8hD0
「255の半角」が何を指してるのかわからにゃい

861デフォルトの名無しさん2018/02/10(土) 21:48:30.15
>>859
うん、”255”の半角を入れるなら終端文字まで含めると4バイト必要だね
‘2’(0x32) ‘5’(0x35) ‘5’(0x35) ‘¥0’(0x00)

862デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/10(土) 22:03:49.07ID:l9ZzjyKP0
>>859
君がどういう勘違いをしているのかよくわからない。

863デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/10(土) 22:17:10.51ID:4W9TXsf60
>>861
小人さんがASCIIコードに変換してる

864デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/10(土) 22:18:39.30ID:YQ6eMVvy0
すまん、いま投稿しようと思ったら、クソ規制に弾かれたわ
だから詳細が書けない。

865デフォルトの名無しさん2018/02/10(土) 22:19:04.81
たぶんこんな感じ

2進数で格納すると8文字(11111111)
16進数で格納すると2文字(FF)
10進数で格納すると3文字(255)分の領域が必要なはず

なのになんで10進数の数値255を
1文字分の領域(unsigned char型変数)に格納できるの???

866デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/10(土) 22:23:07.55ID:YQ6eMVvy0
>>865
だいたいこんな感じ。

867片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd62-d/x4)2018/02/10(土) 22:23:46.71ID:x9I4Wn6Pd
表記と実データは本質的に異なるものだ。

868デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/10(土) 22:26:25.15ID:YQ6eMVvy0
簡単に書くわ

signed char var = 255;

↑これが何故格納できるのかわからない。

869デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/10(土) 22:31:38.43ID:4W9TXsf60
>>868
さっきまでunsigned言うてたのに…

870デフォルトの名無しさん (ワッチョイ d12b-04A9)2018/02/10(土) 22:40:49.51ID:FI3VGJcC0
ワロタ

871デフォルトの名無しさん2018/02/10(土) 22:44:47.34
>>868
signed charでは-1を意味しているけど
中身は同じ8bit(2進数で表すと11111111)だから格納はできる

872デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/10(土) 23:11:03.86ID:YQ6eMVvy0
>>869
ごめん、「un」を書き忘れてた。

873デフォルトの名無しさん (ワッチョイ 3181-Ejv6)2018/02/10(土) 23:18:49.98ID:mAbz3z0v0
何が分からないのか、それがよく分からない
1ビットなら、0,1
2ビットなら、0,1,2,3
3ビットなら、0,1,2,3,4,5,6,7




8ビットなら、0,1,2,3,4,5,6,7.....253,254,255

指折るなりしてちょっと考えてみよう

874 ◆QZaw55cn4c (ワッチョイ 2260-nHV3)2018/02/11(日) 00:16:49.68ID:bT0HWvJB0
>>861
それは255という数値を "255" という文字列に変換しているね
0〜255 の「数値」は 8 ビット = 1 バイトで表現できますよ

875デフォルトの名無しさん (ワッチョイ e1a1-nHV3)2018/02/11(日) 00:27:54.48ID:aNzM17qZ0
>856

Edgar Dijkstra: Go To Statement Condidered Harmful

Communications of the ACM 11, 3(March 1968) 147-148

というように、ダイクストラ大先生が権威ある
Communications of the ACM
にお書きになっていますが。

この論文は検索すれ読めますよ。

876デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/11(日) 00:43:28.76ID:B0DbdRYG0
>>868
数値としての255だからだよ。コンパイラが"255"の文字の並びを見て数値の255として扱って8bitのvarを初期化するコードを作ってくれるの。

877恥人!id:ignore (ワッチョイ e175-80pK)2018/02/11(日) 00:43:51.30ID:/hLQhQLG0
コンディダードってなんだよ

878デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/11(日) 00:45:40.11ID:B0DbdRYG0
知らない

879デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/11(日) 07:01:25.77ID:o7b316W00
>>877 そんなのネットですぐ分かるだろ、と「コンディダード」を検索したら
5ちゃんねるの「C言語なら俺に聞け 144」て掲示板の投稿877番がトップに出た。

最新のネット用語で言うところの「モルゲッソヨ」みたいな感じね。

880デフォルトの名無しさん (ワッチョイ 42b3-/0XS)2018/02/11(日) 08:37:08.13ID:S5L6PYJ00
>>875
だからその
> Go To Statement Condidered Harmful
って言うタイトルはダイクストラじゃなくてニクラウス・ヴィルト(Pascal作った人)が付けたって話な
ちなみに本人がつけたタイトルは A Case Against the Goto Statement
そもそも論文の中身を読めばgoto有害一辺倒でないこともわかる
読んでない知ったかさんがタイトルだけで騒ぎすぎ w

881デフォルトの名無しさん (ワッチョイ 6e24-yPCn)2018/02/11(日) 11:51:21.08ID:90c1E0800
>>876
なるほど、数値だから格納できるのか。
仕組みに関しては初心者が触れたら戻ってこれなさそうだから
「そういう物」って感じに覚えておくよ。

>>881
> 「そういう物」って感じに覚えておくよ。
まずはそれでいい
そのうち、あ〜そういうことね、ってわかる日が来るから

883デフォルトの名無しさん (アウアウエー Sa4a-W92t)2018/02/11(日) 12:57:51.12ID:aLeqVhz7a
test

884デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/11(日) 16:12:35.10ID:QA9xO9uU0
>>882
テストすんな

885デフォルトの名無しさん (ワッチョイ ddc3-saCW)2018/02/11(日) 16:45:51.58ID:Iux9XEWP0
CとC++、C#の違いすら把握していない初心者だけど
構造体っていうのはC++にのみあってCにはない概念なの?
ポインタはCにもあるよね?

886デフォルトの名無しさん (アウアウカー Sa69-DUI6)2018/02/11(日) 17:06:15.27ID:HsXbtZ8Ra
>>832
これはヒドい

887デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/11(日) 17:27:21.28ID:QA9xO9uU0
>>885
あるね

>>1
>>1 > C言語の話題のみ取り扱います
どうぞお帰りください

889デフォルトの名無しさん2018/02/11(日) 17:58:53.20
>>886
そうかな?
MISRA-Cの一つの出口の原則を守りつつ、ネストもあまり深くならない。
問題と言えば、一瞥して「これはヒドい」と思う人がいるのと、retの評価コストと、retの使い方に一貫性を持たせないとバグを生むリスクくらいじゃないかな?

890デフォルトの名無しさん (ワッチョイ ddc3-saCW)2018/02/11(日) 22:36:44.98ID:Iux9XEWP0
簡単なSTGが作れるようになったが次は何を勉強したらいいんだ?
まだまだわからないことだらけだ
指定子だとかポイントだとかアロー演算子だとかまだまだ

891デフォルトの名無しさん (ワッチョイ 42d2-e8Wn)2018/02/12(月) 03:18:10.68ID:t1XkZnCw0
>>890
自分が作りたいものがないんならやる意味ないよ

892デフォルトの名無しさん (ササクッテロラ Spf1-TNUB)2018/02/12(月) 08:59:15.07ID:iLNVddvep
この問題なんですが、2次元累積和の実装部分がわかりません
ご教授おねがいします><


https://i.imgur.com/8X6E27O.jpg
https://i.imgur.com/ZFk0cal.jpg
https://i.imgur.com/kPW9vdi.jpg
https://i.imgur.com/v3ZSJpm.jpg

893デフォルトの名無しさん (ワッチョイ c212-VKlD)2018/02/12(月) 09:15:03.65ID:F/mYoq3g0
>>892
ゲームボーイのQビリオンの動画を見ると
実装方法が自ずと思い付く

894デフォルトの名無しさん (ワッチョイ ddc3-saCW)2018/02/12(月) 10:57:03.46ID:sATukCOa0
>>891
そんな意味なんて人それぞれやん…
バカじゃねえの

895デフォルトの名無しさん (エムゾネ FF62-W92t)2018/02/12(月) 12:16:05.58ID:4ugd2bUvF
>>890
time_t とか struct time とか使って書いたことある?

896片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ 99b3-d/x4)2018/02/12(月) 12:21:54.34ID:AQ5CwM330
>>890
時間制限付きの算数ドリルなんてどうや?

897デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/12(月) 13:17:05.73ID:S+p/PDus0
>>892
プログラミング・コンテストの問題だろ

898デフォルトの名無しさん (ワッチョイ 2eea-Db5I)2018/02/12(月) 13:23:04.80ID:uipfUTPJ0
宿題もたいがいだけど、その上をいくな
(既に〆てる奴なら上位の回答見れないのけ?)

899デフォルトの名無しさん (ワッチョイ 4193-rNjp)2018/02/12(月) 13:31:31.53ID:jZ2wOFuS0
プログラムはある程度かけるけどそういうコンテストみたいなのってからっきしダメなんだよなあ
将来これでやってけるのか不安

900デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 13:35:50.98ID:+qsRixLI0
まず問題が意味不明なんだが...

901デフォルトの名無しさん (ワッチョイ 498a-myDV)2018/02/12(月) 14:07:42.60ID:klSKPNC+0
>>892
中身はあまり見てないけど C言語(GCC 5.4.1)での解答例
https://abc086.contest.atcoder.jp/submissions/all?task_screen_name=arc089_b&language_screen_name=gcc_5.3.0

902デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/12(月) 14:35:15.10ID:S+p/PDus0
プログラミング・コンテスト・チャレンジブック、第2版、2012

1年掛けて、この本の問題をやれば?

903デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 14:38:07.49ID:+qsRixLI0
誰か問題の意味おしえてくれ

904デフォルトの名無しさん (ワッチョイ ed23-3MxQ)2018/02/12(月) 14:53:57.93ID:5RLElXD90
マジでわからんのか?
小学生?

905デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 14:55:09.61ID:+qsRixLI0
大学生

906デフォルトの名無しさん (ワッチョイ c2af-Y8Ua)2018/02/12(月) 15:56:28.34ID:1+ieDEY/0
まず問題の読む気がしないんだが・・÷

907デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 16:06:46.43ID:+qsRixLI0

908デフォルトの名無しさん (ワッチョイ be23-jA6l)2018/02/12(月) 16:24:33.69ID:WS7T92Up0
>>906
やる気がないなら帰れ!

909デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/12(月) 17:13:21.80ID:gfcybQxo0
>>892
問題の意味がわからない。

910デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 17:22:37.79ID:+qsRixLI0
与えられた希望一覧の中の希望を1番多く叶えられるようなチェック柄の位置に対する叶えられる与えられた希望の数を求めるらしい(´・ω・`)

911デフォルトの名無しさん (ワッチョイ 2eea-Db5I)2018/02/12(月) 17:23:25.54ID:uipfUTPJ0
複数の条件 (xi,yi,ci) ci =白か黒 と 市松模様の大きさ K

KxK の市松模様を任意の位相でプロットし(=(周期2Kの中で)位相を適当に振ったとき)
与えられた条件をできる限り満たしたい。 変数は位相
解で要求されているのは満たした条件数

912デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/12(月) 17:44:17.61ID:gfcybQxo0
希望ってなに?

913デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 17:48:08.77ID:+qsRixLI0
シカくんが塗りたいマスの一覧
シカくんは出来るだけ多くのマスを塗りたいらしい。

914デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 17:49:33.05ID:+qsRixLI0
出来るだけ多くのマスを塗りたい(希望一覧の中のマスの中で)

915デフォルトの名無しさん2018/02/12(月) 17:52:57.98
どうやるの?
パターンを全種類生成してから条件に合わないものを弾いていくの?
数学苦手だから分からない><

916デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 17:54:49.90ID:+qsRixLI0
だいたいそんな感じらしい。

917デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/12(月) 17:55:21.96ID:gfcybQxo0
あー。なんとなくわかってきたぞ。白か黒かに塗りたいのはその指定された座標の1マスだけということか。
その希望を実現するためのマス目を求めるってこと?
でもその出力例ってなんなの?数字一つしか出力されてないけど。なんの値が出力されてるの?マス目の一辺の長さ?

918デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 18:00:52.49ID:+qsRixLI0
希望を出来るだけ多く満たせるようなチェック柄の位置に対する満たせる希望の数を出力するらしい

919デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/12(月) 18:06:23.28ID:gfcybQxo0
わからんw

しかし、わかる必要性もないような気がしてきたw

わからない事はわからないままにしておこう。
きっと今はその時ではないのだ。

920デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 18:09:02.94ID:+qsRixLI0
シカくんが塗りたいマスで実際に塗れるのは何個か求めるんだよ(>_<)

921デフォルトの名無しさん2018/02/12(月) 18:25:06.20
N=100000、K=1000の場合、考え得る模様のパターン数は幾つになるのかな?
全部計算するのに何分かかる?
生成パターンを保存するためのメモリ容量は何MB必要?

922デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 18:28:36.70ID:+qsRixLI0
模様のパターンは 2K × 2K 通りで時間はO(N×K^2)

923デフォルトの名無しさん (ワッチョイ e175-jzYt)2018/02/12(月) 18:29:27.69ID:+qsRixLI0
パターンの保存は要らない

924デフォルトの名無しさん (ワッチョイ 319f-jA6l)2018/02/12(月) 18:31:53.32ID:gfcybQxo0
>>920
もうよい。昔の事は忘れようではないか。w

ていうかここでこの話続けるのもスレチな感じがしてきた。C言語かどうかの問題じゃないし。

925デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/12(月) 19:25:10.56ID:EAmFNd0B0
確かにパズルの解き方の部分と、Cによる実現は別々に考えた方が良さそう。

それにしても問題文が酷いね。
たぶん元は外国語で、サイエンティフィック・アメリカン誌の
読者への問題コーナーみたいなノリの文章だったんだろうけど、
日本人向けにはまるまる再構成すべきだわ。

926デフォルトの名無しさん (ワッチョイ dd9f-nHV3)2018/02/13(火) 19:02:29.17ID:52PaDV7e0
解き方のイメージとしては↓こんな感じ?
x = (x[i] /K) & 1;
y = (y[i] /K) & 1;
c = x^y;
if (c1==c) count++;

ニキ質問!
頑張ってくるCといかいうサイト終わりそうなんだけど、2冊めってか次やるなら何がいいっすか?

ちなここ最初以外はわかりにくかったンゴ…

929デフォルトの名無しさん (ワッチョイ 22f9-YiuZ)2018/02/14(水) 07:54:39.17ID:TsEGZMPg0
>>927
そのサイトは知らないけど、解説読んだり課題解くだけじゃ大して進歩しないから、とにかく自分でコード書いて悩んで調べて考えて乗り越えるのを繰り返してみたら。やってるうちに自分が理解していないのはどこか、自分がやりたいことに必要な物が何か分かると思う。
あと、こういうことやりたいのにこんなめんどくさい方法しかないの?って思うようなことは既に上手いやり方が確立してたりするから、そういうのも一度自分で経験してから身につけると理解が深まると思うよ。

930デフォルトの名無しさん (ワッチョイ c212-VKlD)2018/02/14(水) 10:40:30.59ID:waZcmI6l0
>>927

              「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                                ↓

     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                                ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                                ↓

      「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ

                                ↓

           「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター

                                ↓

        「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する

                                ↓

                              神の誕生

931デフォルトの名無しさん (ワッチョイ 715b-jA6l)2018/02/14(水) 11:26:21.33ID:nmVabXov0
神だってお
どんだけレベル低いんだよ

まあレベルの問題でもないんだが
なにがしか発明をしてやっと神界の入り口だぞ

青色LEDとかflashメモリーとか発明して初めて神の領域

933デフォルトの名無しさん (ワッチョイ 715b-jA6l)2018/02/14(水) 12:04:47.68ID:nmVabXov0
己の創りたもうた世界に住人がいなきゃ
どんなにレベルだけ高くても神と呼んでくれる人がいない

934デフォルトの名無しさん (ワッチョイ 3181-Ejv6)2018/02/14(水) 12:06:43.64ID:pyMH7FMU0
ハードなんかいくら発明したって、神になれる訳ないよ

935デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/14(水) 12:09:50.36ID:1w/9kxzBa
>>933
その場合は呼んでくれる人が居なくても最初から神に確定してるのでどうでもよい。

まあしかし夢の中では夢の世界を作ったのは自分なのに、その夢の中の登場人物は特に崇めてくれないのと同様に、本物の神は普通は崇められていない。

936デフォルトの名無しさん (ワッチョイ 715b-jA6l)2018/02/14(水) 12:12:31.56ID:nmVabXov0
ん、俺はあくまで喩え話をしていたんだが
ガチの宗教論になってきたのか?

937デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/14(水) 12:51:21.42ID:gwupYb1h0
>>927
柴田 望洋、林 晴比古

宗教論なら、gotoは悪とかreturnは関数末にひとつだけ論とかやろうぜ?

939デフォルトの名無しさん (ガックシ 0626-aTUk)2018/02/14(水) 13:24:38.15ID:SGvlTtFD6
質問。
1/3を3回、6回、9回足し合わせる計算を単精度と倍精度でそれぞれ行うプログラムを作ったんだけど、
6回足したときの結果が単と倍で逆転しているような気がする
これってプログラムがおかしい?それともこうなるようになってる?
プログラム
https://imgur.com/ncjlu.jpg
実行結果
https://imgur.com/QpRfO.jpg

940デフォルトの名無しさん (ガックシ 0626-aTUk)2018/02/14(水) 13:26:29.23ID:SGvlTtFD6

941デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/14(水) 13:43:36.53ID:QwasDp2Da
>>940
10進数に直した時に小数点以下20桁ないからそうなるだけでは?
どちらも本当はだめなんだけどビット数の都合でうまいこと10進で丸まる事があるだけだと思うが。

942デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/14(水) 13:46:59.31ID:QwasDp2Da
>>940
これと同じなら10進数では小数点以下は15桁だ。
http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html

分数を実数で扱うからこうなる。
分数なら分数のまま、分子と分母が扱える型を使って計算しろ。

944デフォルトの名無しさん (ワッチョイ 2e80-2I1n)2018/02/14(水) 16:52:06.55ID:gwupYb1h0
分数なら、Ruby の、Rational とか

浮動小数点は、常に誤差があるから、
正確な値は表せないから、== で比較もできない

また、式の順番を入れ替えたり、コンパイル時・実行時で、
同じ式でも値が異なるとか、とにかく実装依存

945デフォルトの名無しさん (ワッチョイ 715b-jA6l)2018/02/14(水) 17:21:41.09ID:nmVabXov0
C使いにオヌヌメするならC++だろ
分数クラスはないが、標準にgcd関数があるから
小学校の算数ができる人ならすぐ自作できるし、
ratioなら翻訳時評価までできる

946デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/14(水) 17:41:23.35ID:fTssTv6G0
>>930
紹介してる本は良いものだと思うけど、入手性はどう?
今でも新本で買えるのかな。
…いや、俺の経験じゃ古本屋ではついぞ見かけなくてね。

cでカーネルとか書いたことないからアレなんだけどmalllcとかfopenとかどうやって書いてるのかしりたい

948デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)2018/02/14(水) 17:55:57.41ID:rMSOrK/Ha
OSとかCPUによって違う

949片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ 99b3-d/x4)2018/02/14(水) 18:02:48.86ID:210BqIGr0
>>947
ターゲットのOS、CPU、コンパイラーのC実行時ライブラリー(C runtime; CRT)のソースを探せ。

950デフォルトの名無しさん (ブーイモ MM85-YAUl)2018/02/14(水) 20:07:04.81ID:MlbBMtNyM
>>947
俺はLinuxしか知らんが

mallocなら
https://youtu.be/0-vWT-t0UHg

システムコールなら
http://softwaretechnique.jp/Linux/SystemCall/index.html

951デフォルトの名無しさん (ワッチョイ 4193-jcwv)2018/02/14(水) 20:13:10.91ID:fTssTv6G0
malloc() の原理というか基礎的な実装方法は
『プログラミング言語C』で1章割いてた記憶がある。
まるまる1章じゃなかったかも知れんけど。

あとは「標準ライブラリのmalloc()は遅くて使い物にならん」と言って
でかいメモリブロックをひとつだけシステムから借り受けた後、
小分け部分は自前で管理する実装がネットのあちこちで紹介されてる。
TLSF とかいうアルゴリズム。

みてみます

953デフォルトの名無しさん (アウアウカー Sa69-OLJ2)2018/02/14(水) 20:46:48.95ID:vhVaHeOTa
>>947
その辺は glibc とかがソース公開してるんじゃないかな。

でもそんなに難しくないよ。
ある程度わかってくると自作もできる筈。
既にあるので作る意味ないけどな。

954デフォルトの名無しさん (ワッチョイ 715b-jA6l)2018/02/14(水) 21:10:16.24ID:nmVabXov0
>>951
その小分けの階層構造に愕然とはしなかったのか

955デフォルトの名無しさん (ワッチョイ 99b3-7Au1)2018/02/14(水) 22:35:16.23ID:JQ2Po4sY0
若者はinetdのソースを是非読んで欲しい。
貧乏くさくて涙ちょちょぎれるぞ。

956デフォルトの名無しさん (アウアウエー Sadf-kYbg)2018/02/15(木) 07:35:08.14ID:0Fgr05via

957デフォルトの名無しさん (ワッチョイ bf10-NEPM)2018/02/17(土) 20:16:03.04ID:SegumL7e0
最近組み込みやデバイスドライバでもC++使われるのが増えてきたけど、Cの未来ってあるのかな?

958デフォルトの名無しさん (ワッチョイ 579f-T3WU)2018/02/17(土) 20:42:14.56ID:EWYfJ6l00
縮小傾向はあるのでは?しかし、UNIX系OSが根強いから中々なくならんだろうけどね。
特に Linux が組み込み関係や Android で物凄く広まってほぼ定着してしまったからな。

959デフォルトの名無しさん (ワッチョイ 178a-GcT2)2018/02/17(土) 20:50:55.90ID:NJ9Pxjnh0
組み込みLinuxやAndroidではC言語ってそんなに使われてないと思うが

960デフォルトの名無しさん2018/02/17(土) 23:27:11.62
C以外見たことない

961デフォルトの名無しさん (ワッチョイ 178a-GcT2)2018/02/17(土) 23:43:15.75ID:NJ9Pxjnh0
例えば組み込みLinuxとして有名なRaspbianではPython、またAndroidではJavaが主流
直接カーネルでも弄るような特殊な事例を除けば、C言語でのアプリ開発なんか殆ど誰も行なわないだろ

962デフォルトの名無しさん (ワッチョイ 9f60-qi38)2018/02/17(土) 23:43:40.47ID:I0BNlfaX0
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

つまりこういうことだ: C を選ぶのは、唯一のまともな選択だ。
ぼくは C よりも C++ をプロジェクトに使いたがるようなプログラマーは、みな
*本当に* ムカつかせておきたいようなプログラマーだという結論に達した。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。

963デフォルトの名無しさん (ワッチョイ 9fd4-oNSK)2018/02/18(日) 00:49:33.48ID:nAWX2+xR0
ん?組込みは今でもCが主流なんだけど…

>>962
FILE* は優秀
time_t とか struct tm は糞

965デフォルトの名無しさん (ワッチョイ 178a-h07R)2018/02/18(日) 07:51:17.74ID:fDbSCHET0
>>963
そういった分野ではOS自体が必要無いしな
ファイルシステムやコンソール入出力が存在しない場合も多い
メモリと入出力ポートさえ直接制御出来さえすればいい
アセンブラに比べればC言語の方が主流ではある

966デフォルトの名無しさん (ワッチョイ d793-MfWd)2018/02/18(日) 07:55:15.82ID:G+NN3epc0
「組み込み」て言葉を、プアなハードウェア環境をギリギリ限界まで使う、と
寸法は小さくても目的には十分以上の能力を持ったコンピュータ、と
両様の意味で使ってて議論がちぐはぐになってるように感じる。

967デフォルトの名無しさん (ワッチョイ 9fe1-/1mG)2018/02/18(日) 08:25:09.12ID:8LzivY1B0
組み込みが小さいとは限らない

968デフォルトの名無しさん (ワッチョイ bfe7-QcxC)2018/02/18(日) 11:19:58.12ID:wZRbQg+g0
実行の高速性を狙うならC以外選択肢がない。

969デフォルトの名無しさん (ワッチョイ 178a-h07R)2018/02/18(日) 11:31:05.49ID:fDbSCHET0
選択肢がないと言うのは語弊がある
とことんまで高速性を追求するならアセンブラということになる

970デフォルトの名無しさん (ワッチョイ 579f-+35F)2018/02/18(日) 13:34:14.26ID:oDDrqbus0
>>959
OSそのものがCで書かれている。

971デフォルトの名無しさん (ワッチョイ 579f-+35F)2018/02/18(日) 13:35:54.27ID:oDDrqbus0
>>961
ああ。アプリ開発ではCはほとんど使われてないだろうな。

972デフォルトの名無しさん (ワッチョイ 178a-GcT2)2018/02/18(日) 13:37:07.35ID:fDbSCHET0
OSそのものがCで書かれているからと言って応用アプリもCで書くのか?

973デフォルトの名無しさん (ワッチョイ 579f-+35F)2018/02/18(日) 13:46:35.49ID:oDDrqbus0
>>962
Linusと書いてなくても、元の英語のままでなくても内容からしてLinusが書いたとわかってしまうなw

974デフォルトの名無しさん (ワッチョイ 57aa-E5n2)2018/02/18(日) 13:49:23.41ID:V3U0RnBF0
とことん高速求めるなら、FPGAでワイヤーロジック組めよ。

975デフォルトの名無しさん (ワッチョイ 579f-+35F)2018/02/18(日) 14:03:17.66ID:oDDrqbus0
>>972
それはOSとは関係ないがLinuxの場合組み込み用のボードでよく使われている関係上使われる率は今のところ高いんじゃないかな。
Cだと最終的に作られる実行形式のバイナリが小さいというのもあるしね。

>>972
書くだろ
アプリと言うから違和感あるけど、制御プログラムなら今でもCは普通に使われてる

977デフォルトの名無しさん (ワッチョイ 579f-+35F)2018/02/18(日) 14:17:13.11ID:oDDrqbus0
まあしかしソースが公開されていて誰でも開発に参加できるOSがCで書かれているとなるとそのOSが使われ続ける限り最低でもそこでCが使われ続けるということだからCは消えないだろう。

俺の予想では別の言語をベースにして作った互換性のあるOSが爆発的に流行してLinuxやUNIX系OSを誰も使わなくなった時にCが完全に廃れると思う。なので100年以上先なのではないかな。
(途中time()の都合で改造が入るだろうが、それが元でOSごと全部廃れることはないと思う)。

978デフォルトの名無しさん (スップ Sd3f-mN3I)2018/02/18(日) 14:27:14.85ID:r7mlcZbxd
ちょっと前のパソコンスペックのlinux機だって組み込みと言うし。

979デフォルトの名無しさん (ワッチョイ 5716-7aOx)2018/02/18(日) 17:43:52.76ID:4qWLRsuo0
なんでパソコンってアプリケーションから書き換え可能なFPGAを搭載しないの?
その回路を使って光速で処理できるのに...

980デフォルトの名無しさん (アウウィフ FF9b-OKH7)2018/02/18(日) 17:49:25.56ID:AoWf7ouiF
標準じゃないだけで
載せたければいくらでも載せられる

981デフォルトの名無しさん (ワッチョイ 9fb3-dLOu)2018/02/18(日) 17:51:55.34ID:f4Owde4c0
>>979
FPGAになに期待してるのか知らんけどやりたきゃ自分でやれよ
http://www.mish.co.jp/list_fpga.html

982デフォルトの名無しさん (ワッチョイ d7f2-T3WU)2018/02/18(日) 17:54:06.20ID:Ct2k6iqr0
プラス数万円程度のFPGAじゃあ性能なんてたかが知れてるだろう。
Intelがチップセットに内蔵するというならともかく。

983デフォルトの名無しさん (ワッチョイ 5716-7aOx)2018/02/18(日) 17:58:08.19ID:4qWLRsuo0
ニコニコ動画かどこか忘れたけど動画の処理をFPGAに実装できるらしいけどあれって高いのかな

984デフォルトの名無しさん (アウウィフ FF9b-OKH7)2018/02/18(日) 18:08:02.66ID:AoWf7ouiF
>>983
数年前にドワンゴがFPGAかASICだか開発して販売するとか記事読んだ覚えあるわ
すっかり忘れてた
その後続報聴かんし

985 ◆QZaw55cn4c (ワッチョイ 9f60-qi38)2018/02/18(日) 18:29:47.34ID:AAhzNgFK0
>>979
FPGA は ASIC に比べると「遅い」

986デフォルトの名無しさん (スップ Sd3f-mN3I)2018/02/18(日) 18:40:22.10ID:r7mlcZbxd
PCIボードかなんかあるじゃねえの?

987デフォルトの名無しさん (ワッチョイ 37a7-q5UL)2018/02/18(日) 18:48:56.93ID:FFNb1XM40
速くなるかはさておき、C/C++でのFPGA設計はRTLより楽ではある

988デフォルトの名無しさん (ワッチョイ 3761-qi38)2018/02/19(月) 13:09:18.45ID:bY0NvIgt0
ふと「最近 \e ってネタ聞かなくなったなぁ」と思った。

989デフォルトの名無しさん (ワッチョイ 3723-OKH7)2018/02/19(月) 13:13:01.30ID:nOlxtT0c0
ASIC って書き換え出来ないやん?
>>979 の意図で ASIC は無いと思うんだが

990デフォルトの名無しさん (ワッチョイ 9f60-qi38)2018/02/19(月) 14:37:11.19ID:RiKI2VJM0
>>989
だから FPGA は遅い、といっている

セットアップ時間が掛かるって話と、応答速度がごっちゃになってるけど、わざと?

992デフォルトの名無しさん (ワッチョイ ff3f-T3WU)2018/02/19(月) 16:02:25.62ID:wBFQMwB50
ASICはApprication Specific ICというだけで、フルカスタムという場合もある
ただし、それだけが理由ではない
仮に自分とこがフルカスタムでも、それはIntelと同じ土俵に立ったに過ぎない
開発費を同等以上にかけられるとは限らないがね

>>991
キティの相手しなくていいよ

994デフォルトの名無しさん (ワッチョイ d7f2-T3WU)2018/02/19(月) 21:25:07.65ID:+XovCnpU0
セットアップ時間の話なんかしてないと思うがな。
回路構成を変更できるようゲートアレイだから遅いと言ってるんだろう。

またアホがトンチンカンな事言ってるw
FPGAは論理合成された結果だけになるから
下手なロジック回路より速いんだぜ。

996デフォルトの名無しさん (ワッチョイ 178a-h07R)2018/02/19(月) 21:48:55.76ID:jK4wyRuz0
ASIC, FPGA, ゲートアレイの用語が混同されている気がする

997デフォルトの名無しさん (ワッチョイ d7f2-T3WU)2018/02/19(月) 21:54:17.96ID:+XovCnpU0
まさか、ASICは論理合成しないとでも思ってるのか。

>下手なロジック回路より速いんだぜ。

これも意味わからん。FPGAはロジック回路じゃないとでも?
それとも、いまどき「下手なロジック回路」をASICで作るとでも?

そりゃFPGAでバグ取りした回路がASICになるんだからだろ?

999デフォルトの名無しさん (ワッチョイ 5781-qput)2018/02/19(月) 22:14:36.13ID:9/te2eSJ0

1000デフォルトの名無しさん (アウアウカー Sa6b-GHyv)2018/02/19(月) 22:32:06.42ID:B9G3IBM9a
C言語から脱線してる奴らは皆まとめてどこかに行け

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 2時間 58分 23秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。