X



C言語なら俺に聞け 144
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 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
0002デフォルトの名無しさん (ワッチョイ 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
0003 ◆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 番目の乱数を知らなくてもいいもの)はないでしょうか?
こういう乱数はテクニカルタームとしてはどのように呼ばれるのでしょうか?
0004デフォルトの名無しさん (ワッチョイ ffe3-bqMz)垢版2017/12/24(日) 02:41:31.08ID:rYvbui2B0
>>3
擬似乱数のことでいいんだよね?
今普通って言ったらメルセンヌツイスターだと思うんだけど、
「次の乱数は f(x)」 とか「f(n + 1) で計算」とかしないよ
数千bitほどの内部状態から数列を生み出すんだよ
じゃないと周期とか質が悪い
0007デフォルトの名無しさん (ワッチョイ 13f2-7LW1)垢版2017/12/24(日) 09:52:22.24ID:RXtl733r0
>(すなわち、次の乱数は f(x) となる)、これは n + 1 番目の乱数を作るには、n 番目の乱数を知らなければならないことになります。

それランダムにならんように思うが。
0011デフォルトの名無しさん (ワッチョイ 639f-buzn)垢版2017/12/24(日) 13:57:11.07ID:7ASFTRv40
>>3
普通の計算機である以上何かを元にして計算するしかないのでは?
f(n+1) を計算する時に f(n) を使わずに n を元にして計算する?
だったら乱数計算する前に必ずシードをセットするようにするしかないのではないか?
例えば rand() の直前に必ず srand() で種をセットするということね。
(実際これやると乱数にならないような気がするが)
0014デフォルトの名無しさん (ワッチョイ 2393-YNiV)垢版2017/12/24(日) 17:37:51.83ID:DT7VHm750
>>3 の質問の真意は
「(擬似)乱数列のn+1番目の値を出すためにn+1回のループを回す必要がない
アルゴリズムを紹介してくれ」だと思うよ。

n+1番目の乱数値を作るためにn番目までの乱数値を知る(次の値の計算に使う)
必要がある、という意味ではないでしょ。
001514 (ワッチョイ 2393-YNiV)垢版2017/12/24(日) 17:43:11.44ID:DT7VHm750
おっと、「〜だと思うよ」の部分は「〜じゃないかな?」に訂正させてくれ。
読み直したら、そこまで断定する自信がなくなった。

質問者 >>3 による見解を求む。
…と言っても、いずれにせよ俺には答えられない問題だけどネ。
0016デフォルトの名無しさん (ワッチョイ 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が引き伸ばしされている様に見せたいのですが上手くいきません。
教えてください。よろしくお願いします。
0018 ◆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, ....
とした場合に、この暗号に対してどのような解読方法が考えられるか?
0020片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)垢版2017/12/24(日) 19:24:00.18ID:gjaYlpPed
>>16
「引き延ばし」というのは専門用語じゃないよね。位置とサイズをちゃんと指定くれないと、人間にもわからないよ。
イベント駆動については勉強した? サイズを自動調整するには、イベント駆動で「サイズ変更」のイベントを捕まえるか、自動レイアウトにするしかないよ。
0022デフォルトの名無しさん (ワッチョイ 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 って普段は教える側の人じゃなかったっけ?
0026 ◆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)
なんかもっときれいになりそうだけれども…

>普段は
え?それはそうみえるだけじゃないでしょうか?
002722 (ワッチョイ 2393-YNiV)垢版2017/12/25(月) 06:33:17.53ID:kqgEt8jU0
>>26
本当だ。変形間違ってるわ。
ステップ毎に項数が増える漸化式の展開で必ず同じミスするなぁ。
0030デフォルトの名無しさん (ブーイモ MM67-nFIV)垢版2017/12/25(月) 09:54:22.59ID:8JScrlTJM
>>28
精度保証がそれなりで良ければ分母の逆数をニュートン法で求めて乗算。
整数の商が正確に必要で除数が一定なら逆数と補正をあらかじめ用意できる。
定数の除算をアセンブリで出してみると驚くよ。
0031デフォルトの名無しさん (ワッチョイ cf3f-tRgI)垢版2017/12/25(月) 11:53:59.36ID:9U/P4ALl0
整数を2の自然数乗で割るのは右シフト演算に置き換えられる
0034デフォルトの名無しさん (アウアウカー Sac7-vdkM)垢版2017/12/25(月) 12:46:35.23ID:Lg9qxqUaa
>>33
いや、そうだけど、ゼロの代入しても最適化されてマシン語ではそれになってることあると思うよ。CPUにもよるだろうけどね。
レジスタをゼロクリアする専用の命令があればそちらが使われるだろうし、多分その方が何も計算しない分だけ速い。
0037デフォルトの名無しさん (アウアウカー Sac7-vdkM)垢版2017/12/25(月) 13:37:06.87ID:Lg9qxqUaa
>>35
今時のC言語だと意味がないばかりかコンパイラの最適化の邪魔になりかねないので変な小技は忘れた方が良いと思うよ。registerとかと同じ。
0040デフォルトの名無しさん (ワッチョイ 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のイベントから動くようにするには、どうしたらいいのでしょうか。
初歩的な質問ですみません。よろしくお願いします。
0042デフォルトの名無しさん (ドコグロ MMdf-6aYH)垢版2017/12/25(月) 19:35:55.33ID:hykLc5AjM
>>34
> レジスタをゼロクリアする専用の命令があればそちらが使われるだろうし、多分その方が何も計算しない分だけ速い。
レジスタじゃなくてメモリーだけど68000のCLR命令はなぜか0を書く前に謎の読み出しを行うので遅かったりした
0043デフォルトの名無しさん (ワッチョイ 03c6-MZER)垢版2017/12/25(月) 19:44:53.59ID:+TGgWy910
>>41
Cソース
https://ideone.com/324qDo
UIソース
https://ideone.com/o3pHFq

コメントにした部分は、動くことは動くけれど、ラベルが反応しない。
今の非コメント部分は、main関数は動きますが、それ以外はエラーが出ます。
動かないのを知っていて、プログラムが中途半端に書かれています。
なので責めないでください。
迷走している様子が伝わってくると思います。
0045デフォルトの名無しさん (ワッチョイ 93fb-tRgI)垢版2017/12/26(火) 09:52:36.67ID:yJ/B7pz80
V850?
0052デフォルトの名無しさん (エーイモ 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言語ではこういうルールがあるのでしょうか?
0053片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdea-hOPe)垢版2017/12/30(土) 17:46:47.07ID:jArhle36d
それはコーディングスタイルとか、コーディングルールとかいうけど、会社や組織によって違う。
制御構造の構造を明確にするために、「インデント」したり文字の位置を揃えたりする。
まあ、初心者ならANSIスタイル使っておけば無難かな。
0056デフォルトの名無しさん (ワッチョイ 0b9f-RYVm)垢版2017/12/30(土) 17:52:13.74ID:Xyp0qNcm0
>>52
> こういう書き方をよく見る
嘘つくな。
というか、本当にそう思うのなら見るべきソースを間違っている。

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

繰り返すが、初心者がコーディングスタイルにこだわるのは全くの無駄だから、止めろ。
君が入門書を読んで勉強しているのなら、その本のスタイル通りに書け。
初めはそれでいい。
0060デフォルトの名無しさん (スッップ Sdea-7LGL)垢版2017/12/30(土) 18:16:52.49ID:l+pzRLn8d
>>52
たまーに引数が多くて読みずらい関数とかをメンテするハメになったときに、コメントつけるためにやる程度。

例のような短いのでそんな事になってたら、元担当見つけて小一時間問い詰めろ。
0062デフォルトの名無しさん (アウアウカー Sacb-9mWg)垢版2017/12/30(土) 19:19:44.15ID:bLWDJrONa
>>52
人間が見る時の見易さのためだけにそう書いているのがある。言語としての決まりはない。
C言語で改行に意味があるのはダブルクォーテーションで括った文字列内とプリプロセッサが処理する#で始まる行ぐらいだ。
0063デフォルトの名無しさん (ワッチョイ ff89-OTe3)垢版2018/01/03(水) 19:26:04.56ID:AMJZwzU90
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 <見るべきソースを間違っている。
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |
0070デフォルトの名無しさん (ワッチョイ 3b89-2A+B)垢版2018/01/05(金) 11:52:20.32ID:e4FSU8sj0
char *p="aiueo"; //これが通るのは必要悪
const char *p="aiueo"; //本来こうであるべき
*(p+3)='\0'; //constついてりゃ並みのアフォなら気付けるはず
0073デフォルトの名無しさん (ワッチョイ 1fd6-2A+B)垢版2018/01/05(金) 17:54:32.46ID:SpC7EOR80
>>71
ブーメランおいしい?www
0074デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/05(金) 18:07:43.83ID:T2NhU/kFa
そういや前にどこにconst入れるとどこが定数扱いになるか色々やって調べたことあるなあ。
0076デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/05(金) 19:10:23.97ID:T2NhU/kFa
まあしかしコンパイラには char *p = "..."; の宣言で *p に書き込みアクセスするような記述を見つけたら警告ぐらい出して欲しいところだな。
実際に(少なくともデフォルトでは)動かないコード吐くわけだし。
0080デフォルトの名無しさん (ワッチョイ 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
0082デフォルトの名無しさん (アウアウウー 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
0083デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/06(土) 18:52:18.14ID:0jo5cy8h0
>>82
悪問だけどな。結局の所、
・constは複数回指定できる
・constの右側の固まり全体が定数と見なされる
だけだし。逆に言えば、それらを別物/良問として認識するような奴は上達しないのだと思う。
(記憶の前処理としてabstractionする癖がない)

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

そしてそれ以前にconstが大して役に立たないからなあ。
0089デフォルトの名無しさん (ワッチョイ 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のパターンがない

こういう奴はプログラマーに向いてない
0090デフォルトの名無しさん (ワッチョイ 0b9f-hL1C)垢版2018/01/06(土) 21:08:00.94ID:BwjYxRoc0
キリッ
0091デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/06(土) 22:07:37.32ID:0jo5cy8h0
>>87
例外ではない。
char部分はCでは常にcons扱い(=int等に変更できない)だから
constが修飾する対象に仕様上なり得ないだけ。
だからその2つは結果的に同じ意味になる。

というかCは文法例外はほぼ無いはず。
0093デフォルトの名無しさん垢版2018/01/07(日) 06:32:55.29
自分流に解釈して覚えるのはいいけど、それが世界の真実かのように講釈するのは恥ずかしいから控えた方がいいよ
まあこのスレではいいけど、リアルの人間関係では陰で馬鹿にされるだけだよ
0094デフォルトの名無しさん (ワッチョイ 0bbb-2A+B)垢版2018/01/07(日) 19:53:30.95ID:8XJu4dlo0
>>91
charがintに変更できないのがconstだからだと?
おまえさん char c; *(int*)&c = 1; が許されないことと勘違いしているのか?
0095デフォルトの名無しさん (ワッチョイ 0bbb-2A+B)垢版2018/01/07(日) 19:54:10.54ID:8XJu4dlo0
いかん、間違えた
おまえさん char c; (int)c = 1; が許されないことと勘違いしているのか?
0096デフォルトの名無しさん垢版2018/01/07(日) 20:44:34.88
ほらね、共通語をしゃべらないから話が発散する
0098デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 15:27:35.06ID:u4QX+fVn0
>>97
当たらずといえども遠からず
自分で言ってて無理を感じるなら
それが正解だ
0099デフォルトの名無しさん垢版2018/01/08(月) 15:31:40.17
>>97
んなこたあない
>>94の書いてるコードと同義で、cの先頭アドレスからint分の領域に代入するだけで、cを拡張したり戻したりしてるわけではない
gcc 3.xやVC++2008では通ったが今のgccではコンパイルエラーになる記法
0101デフォルトの名無しさん (ワッチョイ 2bb3-RrJ/)垢版2018/01/08(月) 16:09:19.72ID:eKvnY0O/0
(int)cって右辺値じゃないの?
0102デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 17:43:28.20ID:u4QX+fVn0
>>101
そうだよ
だけど一部の(まずいことに大手の)コンパイラが
左辺値としての用法を古くから許していた
0105デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 19:03:01.62ID:u4QX+fVn0
若造が見たことないのは仕方ないよ
活発に議論されていたのがC89制定を目指していた頃のことだから
0108デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 19:26:48.32ID:u4QX+fVn0
>>106
一児の父だが孫はまだいねえよ
0109デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/08(月) 19:45:48.59ID:8LuLzpAV0
>>107
例外じゃないって立場は俺しか居ないのか?
その場合、お前らはこれを整合性よく説明できない馬鹿共だということになるが、それで良いか?

逆に考えてみろ。
君がそれを「例外」だとしているのなら、つまり「例外」でなければ君は
const <type> *p = ... // (A)
<type> const *p = ... // (B)
で意味が違うべきだというわけだ。
その場合、それぞれどういう意味と捉えるべきだと考えるのか、言えるか?
0111デフォルトの名無しさん (ワッチョイ 9fb3-TPPA)垢版2018/01/08(月) 20:23:19.52ID:7hYpzMEE0
こんなの決め事なんだからもしそう言うのがあったとしても
> その場合、それぞれどういう意味と捉えるべきだと考えるのか、言えるか?
は、作った奴に聞くしかないだろ
0112デフォルトの名無しさん垢版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

で、なぜそうなっているかを自分流に解釈して自分の中で整合性を取るのはいいけど、それを他人に押しつけるなってことだね。
0113デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 20:24:45.15ID:u4QX+fVn0
ちゃんと理詰めで理解できるやつもいれば
暗記するしかないやつもいる

世の中、人それぞれだな
0114デフォルトの名無しさん垢版2018/01/08(月) 20:39:32.52
>>113
別に太陽が地球の周りを公転していると解釈してもいいんですよ?
結果さえ合っていればね。
ただその自分流の解釈を他人に講釈したら恥をかきますよって話。
0116デフォルトの名無しさん (ワッチョイ 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|   \    ソ
0118デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 21:43:42.37ID:u4QX+fVn0
無知なやつには
恥をかかせるよりも
教えないことが最も堪えるからな
0120デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 21:51:24.43ID:u4QX+fVn0
悪党の泣き声は言い響きだ
何を教えるつもりなのか聞き出したいんだなあwww
0122 ◆QZaw55cn4c (ワッチョイ 1f60-1EiW)垢版2018/01/08(月) 21:58:13.44ID:F+Qn6y7R0
正直なところ

const int x

int const x
は同等、

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

‥えっと、細かい人にとって、この場合どうでもいいのか、どうでもよくないのか、どっちだったっけ??
0124デフォルトの名無しさん (ワッチョイ 8ba8-15OS)垢版2018/01/08(月) 22:04:03.83ID:t4bSGeIh0
同等も何も、修飾する主体が変数だけなんだから、何をどう変えろと?
対象がポインタなのかポインタの内容なのかって話に意味の無い例を挙げてどうしたいんだ?
0125デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 22:17:28.76ID:u4QX+fVn0
収穫ゼロ
 ざ ま あ www
0126デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/08(月) 22:43:40.28ID:8LuLzpAV0
>>116
>>125
禿同

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

ヒントは既に書いたし、それ以前にC流の文法解釈をすれば特段不自然でもないし。
「例外」だと言いつつ(A)≠(B)を妥当とする根拠もないのはただの自己矛盾だと気付け。
そしてK&RはCの作者によって書かれているんだが、それも知らないのか?
Cしかなかった昔ならともかく、今お前らみたいな馬鹿がCやる理由は無いと思うんだがなぁ。
0127デフォルトの名無しさん垢版2018/01/08(月) 23:14:54.65
>>126
で、K&Rのどの記述からconstに関する解釈(constの右側の固まり全体が定数と見なされる)を読み取ったの?
0128デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 23:16:56.57ID:u4QX+fVn0
K&Rにconstはねえな
constの設計は髭と禿の合作だが
0130デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 23:28:56.73ID:u4QX+fVn0
おまえの手元のK&RってISBNはいくつだ?
0131デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)垢版2018/01/08(月) 23:40:40.21ID:u4QX+fVn0
眠い・・・落ちるぞ
0134デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/09(火) 09:57:35.67ID:2pt0JvoIa
人の事はどうでもいい。Cの話を書け。
0136デフォルトの名無しさん (ワッチョイ 0bf6-5YeV)垢版2018/01/09(火) 10:17:45.46ID:BapSTNU/0
constがないK&Rが本のことだと思ったアフォはもう死んじまったのか?
0138デフォルトの名無しさん (ワッチョイ 0f8a-jAz5)垢版2018/01/09(火) 13:34:20.42ID:IJNuACex0
プログラミング言語Cの第2版(白本)は初版(緑本)と違ってANSI規格準拠
型修飾子や型指定子の項目にconstは存在する
というかconstとvolatileはANSI標準で新設されたものと明言されてる
一般には同一著者なので第2版まで含めてK&R本と呼ばれているから紛らわしい
0143デフォルトの名無しさん (ワッチョイ 0bf6-8O7H)垢版2018/01/09(火) 21:51:12.35ID:BapSTNU/0
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこいOgju
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
0145デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/10(水) 15:34:00.74ID:Y4Jjv91Na
つまり君は愛を求めてここに来たんだね。
0147デフォルトの名無しさん (ワッチョイ 4f23-ldot)垢版2018/01/10(水) 18:12:49.28ID:b0jd81470
openじゃなくてfopenみたいに、ファイルの存在確認のaccess関数に
対応するちょっと上位の標準関数ってある?
0148デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/10(水) 18:24:05.75ID:lfXyh+0pa
>>147
stat()とfstat()なんかどうだ?

まあでもopen(), fopen()の関係とは違うけどな。
open()はシステムコールだがfopen()はライブラリ関数だ。
(UNIX系OSの話ではあるが)。
0149デフォルトの名無しさん (アウアウウー Sa8f-sUx7)垢版2018/01/10(水) 19:13:04.16ID:7FV5Lym6a
俺の希望は、たいしたやりたくもないけど、
ちょっとやってみたら?とか丁寧に教えるからやってみなよ!
とかさ、そういう感じで優しく接してもらってだな、で、出来も悪いからなかなか覚えないけどそれでも教える側が知恵を絞ってどうにかうまく理解させる方法はないだろうかと創意工夫して育てる環境というのかな。とにかく頼むよまじ
0151デフォルトの名無しさん垢版2018/01/10(水) 20:01:31.67
>>149
授業料ももらってないのに優しく教える理由なんかないわな
5chなんて煽り合いと罵り合いの場だよ
0152デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/10(水) 20:07:35.30ID:s9KBVpbq0
>>149
日本語でおk
そして死ね

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

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

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

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


そしてこれとは別に、俺は2chとは別の掲示板を立ち上げようとしているのだが、
君はこれについて興味あるか?
追える限りでの発言を確認したが、君は煽るだけの無能ではないらしい。
俺は今の2chのシステムでは行けるところまで行っている(既に飽和している)と見ているから、
これ以上の物を求めるのなら何かしら新しい機能が必要だと考えている。
今はそれのアイデア出し中だ。何かあれば是非。
0153デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)垢版2018/01/10(水) 20:09:47.69ID:aFHgFo+Q0
漠然とした質問で失礼します。
私は最近c言語の勉強を始めたところでギリギリポインタ等も理解できたところです。
そこで、アルゴリズムとデータ構造の勉強をしようと思い本を何冊か買ってきたのですが、
スタックなどのデータ構造の仕組みがよくわかりません。。
どの参考書でも、「スタックとは後入れ先出しで…」という説明の後、「それではc言語でスタックを
実装してみましょう」といって意味不明なコード(長い)が書かれているパターンが王道のようです。
このパターンは線形リストとかでも同じです(諸兄にはいうまでもないでしょうが…)。
どのような実益があってこのようなデータ構造を生成する必要があるのでしょうか。
python等でいうところのリストに相当するデータ構造をc言語で作成するためということ?
また、実際のプログラムにおいては、データ構造の定義だけでかなりコード長くなると思われるのですが、
よく利用される手法なのでしょうか。
0156デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/10(水) 20:26:57.23ID:s9KBVpbq0
>>153
std::stack相当の話?
なら大して使わないから、とりあえず読み飛ばしていい。

つか、最初から全部キッチリ理解しようとせず、
まずは分かる範囲で組み、その後、自分の出来る範囲を広げていくようにした方がいい。
(1度読んで全部理解して捨てる、ではなく、最初から5回読む前提で分かるところから読み進める)
そのうち、stackを使うべき用途に遭遇したら、なるほどと理解できるようになる。
0157デフォルトの名無しさん (ワッチョイ 9fd7-r3wo)垢版2018/01/10(水) 20:34:17.56ID:01jIFW0g0
>>153
直近のご要望としては、スタックの使い所を知りたいって事かな?

ほとんどの実行環境において、C言語の関数呼び出しなんかの実現に使われてるよ。
呼び出した側の状態を保存する場合にpush、呼び出され側から戻るときにpop的な。
0159デフォルトの名無しさん (アウアウウー Sa8f-hL1C)垢版2018/01/10(水) 20:43:06.09ID:M55Gu+ZEa
>>153
どのような実益?そうだなあ。スタックといえば以前PerlでXMLの階層構造を
SAX使ってRDBに全て入れる時に使ったなあ。まあ、それだけでなく先入先出に
するとやりやすくなる処理はあるよ。再起処理でも使われるし(スタックに積まれて
いるとあまり意識する必要ないかもしれないが)。

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

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

>>157
はい、なんかそのようなことも本に書いてあったのです。
しかしこれが、「スタックとはプログラミング言語内においても既に設計されている基本構造なのだ。以上終わり。」
であれば、スッキリするのですが、
「それでは、これをc言語で実装してみましょう」といって、スタックをc言語のプログラムで作り出すことの意義
が今一つわからないというか。
0162デフォルトの名無しさん (アウアウカー Sa4f-dSb4)垢版2018/01/10(水) 21:00:10.17ID:lfXyh+0pa
それ用途が違うよね。
0163デフォルトの名無しさん (ワッチョイ 9fb0-hg+r)垢版2018/01/10(水) 21:00:44.51ID:aFHgFo+Q0
>>159
難しすぎます!
おそらく当分使えるようにはならなさそうです!
0164デフォルトの名無しさん (ワッチョイ 4b9f-Ogju)垢版2018/01/10(水) 22:13:09.56ID:s9KBVpbq0
>>160
> とりあえずソートアルゴリズムのが理解したいと思い勉強をしていたのですが
アルゴリズムとデータ構造をソートで学ぶのは昔流で、今はそれをこの段階でやる必要はない。
今はとりあえず次の章に行ってしまって、for/while/if等を使いこなせるようになった方がいい。

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

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

とはいえこれが一方的に悪い訳でもなくて、逆に言えば、
スタック構造を知っていることがプログラミングの本質ではない、ということなんだよ。
だから君みたいな初心者は、分からないところは飛ばして分かるところから読み進めればいいんだよ。
というか、今、君のレベルの初心者がCから始める意味は無いし、
無駄に遠回りになるだけだが、それ分かってやってるか?
0165デフォルトの名無しさん (ワッチョイ 2bb3-IKYq)垢版2018/01/10(水) 22:17:21.44ID:3INPjtq00
>>160
ハノイの塔のパズルを解くプログラムを書いてみて。
スタックを使う場合と使わない場合の2パターン描いてみて。
で、どちらが少ない行数で書けるか、どちらが実行速度が速いか、
どちらが理解しやすい美しいコードか、さまざまな観点で比較してみて。
0166デフォルトの名無しさん (ワッチョイ 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等は、グダグダ考えずに全部リストでやれ、それの方が分かりやすいし、という文化だろ。
0167デフォルトの名無しさん (ワッチョイ 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のリストやまた
それ以外のデータ構造を自分で作成するということですか。
0168デフォルトの名無しさん (ワッチョイ 1bd0-fRwE)垢版2018/01/10(水) 23:52:55.49ID:Klfu8N/c0
どうでもいいけどプログラミングなんて10年後オワコンじゃない?
コード共有サイト行けば書きたかったコード見つかるしコピペすればおk
世界で既に誰かが書いてるもの二回三回書く必要性はない
この流れが自動化されれば終わるだろうな
0170デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/11(木) 00:13:19.12ID:pXQSKlgS0
>>169
なに言ってんだこいつ
調べれば1000000億%出るから自分で調べろよ
まさかgithubも使ったことないのかい?
0171デフォルトの名無しさん (ワッチョイ 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はズブの初心者向きではないんだよ。

ただまあ、話を聞く限り、君が「アルゴリズムとデータ構造」をやるのは悪くはない。
とはいえ、現実的にソートのアルゴリズム知ってても大して意味はないし、
直接目標に向かった方がいいと思うが。
例えば、ゲームを作りたいのなら、何でもいいからとりあえず動くゲームを作ってみろ、ということ。
どうせこの最中にいろいろな問題にぶち当たることになるから。
0172デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/11(木) 00:30:31.27ID:zDr2JTOQ0
一応付け加えておくと、
Pythonのリストは、C++で言う array, deque, forward_list, list, queue, stack, vector のどの用途にも使える。
でもその分遅いし、メモリも食う。
Pythonを使うというのは、これを認めて、楽さを取る、ということ。
逆に、最高速度で動かしたい、メモリを無駄に食うのは嫌だ、となると、
リストの実際の使われ方を確認して、最も適切なものを選べ、
或いはさらにチューニングできるのなら自作しろ、となるのがC。

だから、組み合わせて作るのではなく、使い分ける。
0173デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/11(木) 00:39:50.99ID:zDr2JTOQ0
例えて言った方がいいかな?

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

細かくチューニングしたいからそれ以上の解像度が必要だ、というときにだけCが必要で、
逆に言えば、その気がないのならPython/Rubyで十分だと思うし、そうするべきだとも思う。
Cは実行速度は最速だが、開発速度は最速ではないので。
0174デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/11(木) 00:45:19.80ID:pXQSKlgS0
なお、人工知能にはPython使う模様
cさん...w
0175デフォルトの名無しさん垢版2018/01/11(木) 00:48:46.80
Pythonでも速度求めるんならスタック・キューはlistじゃなくてcollections.deque使うやろ
0176デフォルトの名無しさん (ワッチョイ 6ad7-LeTx)垢版2018/01/11(木) 01:47:55.44ID:RB8iNeAj0
>>174
py なのはインタフェースだけでしょ。
0177デフォルトの名無しさん (ワッチョイ 6ad7-LeTx)垢版2018/01/11(木) 01:55:31.45ID:RB8iNeAj0
>>160
えっ?
データ構造を学んでるんでしょ?
その実装例がでてきたことに対して、実装する意義がわからないっておかしくない?
学習するためじゃないんかい…

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

とちょっと斜め上の視点をとってみた。
0178デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/11(木) 08:54:30.53ID:oCnGxyW+a
今からお前らが書いてるコードが全て車輪だってことなんだよなぁ...
0179デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/11(木) 08:56:46.29ID:oCnGxyW+a
2chにいる時点で端くれプログラマーなんだし世界で既に書かれたコードしか書いてないでしょ...()
0181デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/11(木) 10:09:07.84ID:oCnGxyW+a
>>180
これは無能確定
何回も同じコードを書くのかい?
0184デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/11(木) 11:04:46.69ID:oCnGxyW+a
>>183
非効率だよな
0185デフォルトの名無しさん垢版2018/01/11(木) 12:08:37.79
自分でコード書かないと npm left-pad みたいな問題が起きる

ブラックボックス的に使う部分と内製化する部分はきっちり区別して
内製部分はすべてのコードを完璧に把握しておくべきだ
0186デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/11(木) 14:34:55.01ID:xUZeJB/aa
>>185
そりゃコードは把握すべきだよ
けど基本全部他かりゃ引っ張ってくりゃ解決するんだよなプログラムなんざ
プログラマーを神格化する風潮やめようぜ
0193デフォルトの名無しさん (ワッチョイ c576-01qY)垢版2018/01/11(木) 23:02:15.41ID:/sH2FBYP0
いやしかし、ひどい質問だなw
プログラムどころかアルゴリズムの時点で特許がどうの騒ぐ時代なのに、プログラムを全世界で共有とか頭悪すぎる。
0194デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)垢版2018/01/12(金) 03:12:29.92ID:a7+Gi3xg0
部分的にはライブラリの配布みたいな感じで出来てはいるけどな。
0195デフォルトの名無しさん (ワッチョイ 11d0-rzLw)垢版2018/01/12(金) 03:27:24.54ID:2CbWWRaV0
正直車輪の再開発なんていってたら商売成り立たないよな
ほかの人に見せて第三者がそのコード使ったら普通に嫌だと思うんだけどコードの共有化とか利益と競争を考えてない綺麗事じゃないか?
コード使い回しなんて実際問題、会社内ぐらいでしかやらんだろ
0197デフォルトの名無しさん垢版2018/01/12(金) 11:55:16.87
GNU汚染問題もあるし出所の怪しいコードをやたらとホイホイ取り込めないよな
0199デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/12(金) 17:10:11.05ID:L71nmxDMa
何も見ないで独自に作ってもある日サブマリン特許にやられたりする
0201デフォルトの名無しさん (ワッチョイ a58a-oih1)垢版2018/01/12(金) 17:19:40.33ID:oHmTflkZ0
ソフト特許権絡みの問題なんて余程優れたアルゴリズムを実現でもしない限り発生しないだろ
少なくとも車輪の再発明レベルでは問題が起きようがない
ライセンス関係の問題の殆どは著作権絡みであって特許権の問題ではない
0202デフォルトの名無しさん (ワッチョイ 59f4-UJUP)垢版2018/01/12(金) 18:00:17.09ID:NPCVz5+f0
卑怯なことは一切せずに作ったオリジナルなものを
突然パクり呼ばわりされるんだぜ?
開発者としてこれ以上の侮辱があるかよ
いつそうなるかの予測もほぼ不可能だし
それで金よこせってまるで強盗かヤクザの集金だろうが
0206デフォルトの名無しさん (ワッチョイ 3d93-j9tc)垢版2018/01/12(金) 19:19:49.18ID:dSWv3bkd0
自分で発明したものを後から特許とられて…って話でなければ
先に出願しとけってのは無茶、というか超時空理論だわな。

「サブマリン特許で攻められるのが嫌なら
何か作る前に全ての特許を調べておけ」という主張には、
「皆がそんな調査をする必要がある社会では何も生み出せないだろう」
という意見を出したいね。
0207デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/12(金) 19:35:56.68ID:oHmTflkZ0
いやいや製品開発では商品企画段階で先行技術調査はやってて当たり前のことだぞ
後で他社から特許侵害の訴えを受けると面倒くさいことになる
というか大手メーカの組み込みソフト技術者は、技術レポート作成や特許出願の年間ノルマが課せられることも多い
例え特許として特許庁に認められなくても出願したという実績さえあれば先行技術として認められる
サブマリン特許といえども既に世の中に公知されている先行技術のあるものに対して実施料を請求することは出来ない
米国はサブマリン特許に見られるように特許を攻撃戦略をとすることが多いが、日本企業の場合は防衛が特許戦略の中心とする傾向が強い
0208デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/12(金) 19:57:45.41ID:oHmTflkZ0
話が脱線気味だけど、特にソフトウェアに限って言えば余程のことがない限りコードの中身そのものが問題になることは少ない
ただし製品の制御方法についてはソフトが問題になることはある
例えば、炊飯器のご飯の炊き方や洗濯機の攪拌方法やエアコンの運転方法など、これらは特許(パテント)の出来損ないのペテントで
そのノウハウはがっちり固められてるし、下手すりゃ権利の侵害問題に発展することもある
ただし繰り返しになるけど、純粋なコードの権利については特許というよりは著作権の方が問題になることが多い
0210デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/12(金) 20:20:38.77ID:AcL8GFCQa
プログラミングあんま知らんけどコードって著作権あるの?
俺普通に本とかの模写しまくってるんだけど...
もちろん勉学目的で商用してるわけじゃないけど大丈夫だよな...?
0211デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/12(金) 20:23:47.74ID:oHmTflkZ0
特許に必要なのは、新規性と独創性と再現性
技術的に高度でも既に知られているものは特許にはならない
技術的にたいしたものでなくても今まで誰も考えつかなかったものは特許になる
ソフトウェアでも既に知られているアルゴリズムでは特許にならない
全く新しい理論に基づくアルゴリズムを実現すれば特許になる
0222デフォルトの名無しさん (ワッチョイ 6a12-0PCX)垢版2018/01/12(金) 23:05:54.72ID:t7pO81Ne0
既にある連結リストにはqsortは使えない(これは常人でも考えれば分かる)
後からどうしてもソートしたいならマージソートを使う(これは常人がすぐに思い付くモンじゃないので知らないと出来ない、つまりは考えても無駄)
0223デフォルトの名無しさん (ブーイモ MMc9-sUJ4)垢版2018/01/12(金) 23:14:51.66ID:b7j7QzhUM
>>210,212
著作権は商用かどうかは無関係。
個人で楽しむなどの目的で例外的に複製が認められるだけ。
もちろん勉強用なら複製は構わない。
それ以上の利用は本に明示してあることもある。
0226デフォルトの名無しさん垢版2018/01/12(金) 23:30:11.38
>>219
「以下のプログラムの (1) (2) の部分を作成し」の「(1) (2) の部分」が見つからない
0231デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)垢版2018/01/13(土) 13:00:13.08ID:ZTdbWh7g0
だいたいの人は既に頭の中で解けている
0232デフォルトの名無しさん垢版2018/01/13(土) 13:27:35.73
>>219見てちょっと考えてみたけど、
初回だけ(topが未設定の場合だけ)場合分けで例外的な処理がいるの?
あと、大小で判定して挿入するとき、先頭もしくは末尾だけは例外的な処理がいるの?
かっこよくスマートに書けるやりかた教えて!
0235デフォルトの名無しさん垢版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;
(省略)
0236デフォルトの名無しさん垢版2018/01/13(土) 15:52:19.19
>>235
先頭に挿入した場合の例外的な処理も必要だった

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

if (z != NULL) {
z->next = p;
} else {
top = p;
}
0237デフォルトの名無しさん垢版2018/01/13(土) 16:02:34.49
>>235
>struct PLAYER
PLAYER
の誤りだった
0239デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/13(土) 16:27:20.61ID:dAIHjdGT0
割とマジでvolatileって何に使うんだ。。。?
0242デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)垢版2018/01/13(土) 17:17:58.88ID:ZTdbWh7g0
>>239
volatile は揮発性のものってことで、読んだ次の瞬間に値が変わっている可能性がある変数に付けとくやつだ。
その変数は実際にはハードウェアによって変化するものに結びついているかも知れないし、他のプロセスや
スレッドによって書き換えられるものかも知れない。とにかくそのプログラムのメインの流れとは無関係に
変化する可能性があるということ。だから読む場合は必ずその変数の内容が読まれるようにコンパイルされる
必要がある。最適化してさっきから変更してないからレジスタに入ってる内容で代用しようみたいなコードに
なってはいけないわけだ。volatile を付けておくとそういう最適化をしなくなる。
0243デフォルトの名無しさん垢版2018/01/13(土) 17:32:56.34
>>239
知らないほうが幸せだよ
本当に必要なプロジェクトなら、過去に誰かがよく分からん不具合に何日・何週間も悩まされた末にコーディングルールに追加されてるから
0246デフォルトの名無しさん (ワッチョイ 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() 使うこと自体が稀だろうとは思うが。
0248デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/13(土) 18:11:34.78ID:dAIHjdGT0
>>247
volatileは?
0249デフォルトの名無しさん (ワッチョイ 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
0254デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)垢版2018/01/13(土) 20:16:39.27ID:ZTdbWh7g0
>>253
そうそう。それでいい。
0255デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/13(土) 20:30:50.57ID:bxTj5irD0
>>249
そのサンプルコード、ハンドシェークしてるんだが、そもそも普通これしないよな?

並列させたいだけなら、普通はシグナル(sleep/wake up)で同期させる。それの方が軽いはずだし。
スピンロックでハンドシェークって、完全非同期で独立動作してるときだが、
あまり用途は無いと思うんだが。
0259デフォルトの名無しさん (ワッチョイ 6a9b-p8jN)垢版2018/01/14(日) 00:51:15.96ID:+jsAfOue0
vbaを扱えるようになったんで次にC言語触ってみようと思うんですが、どう勉強してったらいいですか?これ作ればあらかた基礎コードや仕組みが学べるものってあります?
やることによるんだろうけど、例えばテトリス作れば基礎が固まるとか。ネット検索しても今一ピンとこなくて。
おすすめの参考書とかもあれば教えてください。
0261デフォルトの名無しさん (ワッチョイ 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の特徴をありありと感じながら使えて
多重レベルポインタの**を全く悩まずにすんなり習得できた
0262デフォルトの名無しさん (ワイモマー MM21-62yH)垢版2018/01/14(日) 08:31:23.76ID:Ef+VW+YvM
>>259
コマンドラインで使えるミニツール(dirなど)を真似て作ってみたら?
標準入出力、ファイルアクセス、データ編集の基礎が身につくと思う。
0266デフォルトの名無しさん (ワッチョイ b5b3-aDaF)垢版2018/01/14(日) 11:22:32.01ID:D7wQbzM+0
>>259
Small-Cっていう C言語のサブセットがあって、
そのコンパイラを作るって本があったよ。
オレはこれで C言語の基礎を勉強した。
30年くらい前かな?
たぶん絶版で入手困難だと思う。

あと、アンドリュータネンバウム先生のMINIXオペレーティングシステムも勉強になる。
Linuxを作ったリーナストーバルズもアンドリュータネンバウム先生の教え子だったはず。
0268デフォルトの名無しさん垢版2018/01/14(日) 11:47:19.55
初心者は結城浩先生の
 新版C言語プログラミングレッスン-入門編-
あたりで学習しときなyo!
0271デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/14(日) 17:24:36.08ID:X58RAQQJ0
プログラミング初心者なんだけどコマンドプロンプトとかの知識って必要なん?
一応簡単なバッチファイル作れるレベルまでは来たんだけど
0274デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/14(日) 17:51:22.52ID:q1SBtCCQa
>>271
君にとって必要かどうかは君がこれから何をするかによって変わる。
0275デフォルトの名無しさん (ワッチョイ 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){}文は使えないの?
0276デフォルトの名無しさん (ワッチョイ 5e7f-o2Il)垢版2018/01/14(日) 22:05:03.57ID:t1pyzP2Y0
すみません、Javaのスレに書こうとして間違えました
0280デフォルトの名無しさん (ワッチョイ ea6e-EKU2)垢版2018/01/15(月) 19:03:01.00ID:WG2cD3TY0
プログラミング全く関係ねぇんだけど
組み込み系のプログラマーって電子制御とか電子回路、機械工学の知識必要ないん?
これ絶対プログラミングだけの知識で食っていける分野じゃねぇだろ
0281デフォルトの名無しさん (オッペケ Srbd-01qY)垢版2018/01/15(月) 19:07:26.61ID:nis3xk1Qr
必要ないわけ無いじゃんw
何でそんな勘違いにたどり着いたしw
0282デフォルトの名無しさん (ワッチョイ ea6e-EKU2)垢版2018/01/15(月) 19:12:07.64ID:WG2cD3TY0
>>281
やっぱそうなん?
あほらし
じゃあ組み込みc言語の本全部捨てよ
あほくさ、そんなん全部学ぶとか無理無理
情報工学の二回生だけどやめやめ、ばーか
0283デフォルトの名無しさん (オッペケ Srbd-01qY)垢版2018/01/15(月) 19:14:45.00ID:nis3xk1Qr
Cは別に組み込み専用言語でもないんだし、勉強続けりゃ良いじゃん。
0284デフォルトの名無しさん (ワッチョイ ea6e-EKU2)垢版2018/01/15(月) 19:18:35.04ID:WG2cD3TY0
>>283
あほやなぁ...
組み込み系以外でc言語の案件なんかまともにねぇだろ
どっかでグラフ見たけどcの用途なんか限られまくってるし
素直にPython勉強して人工知能するわ
人工知能なら電子回路とか機械工学の知識必要なさそうだし
0285デフォルトの名無しさん垢版2018/01/15(月) 19:24:26.25
組み込みCもいずれは勘定系のCOBOLみたいにごく一握りの職人にしかメンテできない時代になるんかな
0286デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 19:30:46.90ID:kUJAacmi0
>>285
ヒエ〜!
機械工学科と電子電気科でもプログラミングの授業に力を入れる運動が出て来てるし(メカニクス的な意味で)こわい
情報学科って生きていけるんやろうか
俺も今のうちに基本的な電子回路制御の知識はつけておくべきか
アルゴリズムとか通信系学んだところでなんの意味があるんだくそがっ!
0287デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/15(月) 19:31:33.79ID:IGiFRvDqa
どうかなあ?少なくとも新しいデバイスのデバイスドライバはC使われ続けるんじゃないか?丸々全部アセンブラにするより楽だから。
その後の処理は何の言語でも良い。
0288デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/15(月) 19:36:30.16ID:IGiFRvDqa
あとやはりOSはまだまだC言語使われ続けると思う。UNIXやLinuxは根深いからな。
LinuxなんかAndroidのベースになっちゃったしそこらじゅうのネットワーク機器や家電に入っちゃったもんだからまだまだ思い切り使われ続けるだろう。
0289デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 20:00:27.65ID:kUJAacmi0
Linuxってc言語で作られてるんか...?
0291デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 20:12:27.42ID:kUJAacmi0
とりあえず電子電気工学とか機械工学科じゃ太刀打ちできない人工知能の研究室選ぶは...
やっぱ時代はアルゴリズムや!
0293デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 20:22:02.89ID:kUJAacmi0
>>292
もちろんcとPythonはやるぜ!

Java、Rubyさんはポイッ!w

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

夢を決めると頑張れるな
0295デフォルトの名無しさん (アウアウウー Sa21-QpsD)垢版2018/01/15(月) 21:03:20.78ID:hdW0ysAta
プログラマーは鳥籠のようなものだ。
外にいる鳥たちはいたずらに中に入ろうとし、
中にいる鳥たちはいたずらに外に出ようともがく。
0297デフォルトの名無しさん (アウアウウー Sa21-QpsD)垢版2018/01/15(月) 21:13:57.00ID:hdW0ysAta
>>289
そう。ソース公開されてるから見てみな。
所々アセンブラ使ってる所があったとは思うが大半がC言語。
これについてはUNIXも同じ。というかむしろOS作って配布しやすくするためにC言語作ったようなもの。
そうするとCPUが違っても移植が楽だからね。
0298デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)垢版2018/01/15(月) 21:22:28.42ID:/vxf22Ts0
>>295
それだけ根性ねえやつがなる職業ってことかねえ
俺の時代っちゃなんだけど、あの当時は大学に情報処理のコースなんかほとんどなくて
大人たちはみんなゲーム小僧の遊びの延長はメインフレームには関係ねえなんて
ぬかしてやがってて、それでも実際に大学のセンターと家のマイコンを触り比べて
一縷の勝ち目を感じるのを信じて大勝負に出たんだよ
でジジイたちにひと泡吹かせることにはいちおう成功した
今さら後悔なんかしてねえぜ
0299デフォルトの名無しさん垢版2018/01/15(月) 21:37:18.31
ぜひ組み込みCを自らプログラミングできる人工知能を生み出して
このスレにいる前時代の遺物のおっさんどもをギャフンと言わせてほしい
0302デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 21:54:53.07ID:kUJAacmi0
情報工学だからこそっていう仕事ねぇのか?
組み込み系って
情報工学でもやっていけるんか結局?
機械工学、電気電子のやつより上にたてる?
あいつらよりは地位上でいたい
なんかムカつくから
0303デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)垢版2018/01/15(月) 22:02:04.83ID:/vxf22Ts0
あくまで私見だけどね
ストレートに情報へ行ったやつより
遠回りしてきたやつのほうが
俺は個人的には期待しちゃうな
ストレートタイプにもすげえのいるけど
確率論的なやつで
0304デフォルトの名無しさん垢版2018/01/15(月) 22:18:51.33
情報工学って結局何ができるのかね?
プログラミングなんかやってる奴よりは
MATLABとか操ってる奴の方が格上だし
PowerPointとExcelしか触らない奴の方がさらに格上だわな
0305デフォルトの名無しさん (ワッチョイ a58a-oih1)垢版2018/01/15(月) 22:25:47.87ID:nB3IxhPi0
>>302
情報専攻の奴が他分野と張り合うとしたら工学の領域では厳しい
情報工学としてではなく情報科学の方面で学会とかで研究成果を発表していく研究者としての方が
上の立場を狙いやすいと思う
0311デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/15(月) 23:29:43.21ID:kUJAacmi0
>>303
なんか先輩で

機械工学から大学院で知能情報なんとか?に入った人いるって言ってたけどそういうタイプか
でもそういうのって役に立つ人材なのかね
機械工学と情報工学が交わることって一切ないし
0313デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/15(月) 23:52:43.23ID:nB3IxhPi0
>>311
例えばだが、運動解析や流体解析などの人工知能を弄るような場合などは機械系の出身者の方が純粋培養の情報系よりは役に立つだろうな
工学の応用という点では情報だけでは潰しが効かない
何か秀でた専門分野を持っていれば強力な武器になる
0314デフォルトの名無しさん垢版2018/01/16(火) 00:42:39.48
俺は仕事で必要になるまでアクチュエータという言葉すら聞いたことがなかった

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

結局、純粋な情報系なんて糞食らえってことだ
0317デフォルトの名無しさん (ワンミングク MM7a-euJe)垢版2018/01/16(火) 01:50:08.80ID:ai9xYpzuM
最近の流行りで言えば、たぶんブロックチェーンは情報系。
他にはOSとかコンパイラとか人工知能そのものがたぶん情報系。
「情報系の成果を他の工学で使う」話をしてるのだったら、他の工学の知識の方が重要になるに決まってる。
0318デフォルトの名無しさん (ワッチョイ aad4-1Ifv)垢版2018/01/16(火) 01:53:49.35ID:r8efykKY0
何言ってんだこのバカ
0319デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/16(火) 02:22:28.13ID:fnx7xBaf0
いや俺は>>317は当たっていると思うぞ。

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

ブロックチェーン(P2P)/OS/コンパイラ/人工知能『そのもの』はソフトウェアで完結してる。
他は超並列とか、少し前ならクラウドや仮想化/ライブマイグレーションとか。
0320デフォルトの名無しさん (ワッチョイ a58a-oih1)垢版2018/01/16(火) 03:31:07.22ID:Kooe0tJU0
情報科学とソフトウェア工学が中途半端に混じり合った上に、計算機科学や電子工学と被る部分も大きく、訳わからんのがいわゆる情報工学という学問分野
技術の発展を基盤とする工学なのか、純粋理論を追求する科学なのかスッキリしない
個人的に情報系の学問の本質は数学や物理学などの科学に近いと考えているが、ソフトウェアだけに限れば工学的なアプローチも間違いとは言えない
ただ情報系がソフトウェアだけにフォーカスしたものと言うのは極論すぎる
0323デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/16(火) 18:09:55.18ID:I7+QVB4Ua
むしろこのご時世でプログラミングで食っていけるc言語プログラマーどこにいんの?
俺はweb系だしc言語詳しくないから友人の話だけど自動車のアンチロックブレーキシステムなんかの制御は自動車の知識をトップレベルで持つものにしかさわれないらしいな
c言語なんてweb系でもアプリ系でも使われてない以上むしろ機械系の人間専用みたいなとこあるんじゃないん
0324デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/16(火) 18:58:32.24ID:fnx7xBaf0
やっぱWeb系は馬鹿だなとしか。

そういえばWeb系は情報系でも問題ないね。完全にソフトウェアでしかないし。
というかマジでWeb系は腹が立つほどレベルが低いから、
ちゃんと勉強した情報系の連中が押し寄せて、今のWeb系全員殺して欲しい。
C界隈にも分かるように言うと、「スクリプト言語しか出来ない奴をプログラマと呼ぶな」っての、偶にいるだろ。
あれよりさらに輪をかけて酷い感じ。
0325デフォルトの名無しさん (ワッチョイ 6a12-0PCX)垢版2018/01/16(火) 18:59:42.08ID:IFxShTi+0
・実は情報系人材以外のエンジニアにはオブジェクト指向や関数型は難し過ぎる
現代的?な言語の中でそこそこ簡単でそこそこ使えるのは実はCしかない

・機械語に変換して全て精査する場合は機械語に近い方がいいかもしれない
原発とかロケットとか製鉄所とかエアバスとか人工衛星とかいろいろ
0327デフォルトの名無しさん (ドコグロ MM6d-J7fK)垢版2018/01/16(火) 19:02:42.12ID:P6mPXtajM
>>323
まあ車の制御系は機能安全とかも要求されるからハードル高いわな
でも車でもボディ系(ワイパーとかパーウインドの制御とかいわゆる上半分のところ)はそこまで厳しくない
あと車じゃなくても家電製品とかプリンタとかカメラとかありとあらゆるものにソフトが入ってる時代だから組込屋って意外としぶとく生き残ってるよ
0328デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/16(火) 19:08:39.06ID:0ZvsnQMA0
web系ってばかではないでしょ
むしろ天才気質が多い
0329デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/16(火) 19:10:51.68ID:Kooe0tJU0
プログラミングだけなら文系でもできる
ただC言語の中心である組み込み機器の制御系のプログラム設計/作成となると文系では荷が重い
制御プログラムの中身というか制御モデルは大量の連立微分方程式で記述される
機械系にしろ電気電子系にしろ制御理論にある程度精通していないと手も足も出ない
工学系技術者としての存在意義はC言語の文法に精通することではなくて、C言語(別に何の言語でもいいけど)でシステム設計/記述が出来る点にある
自分は電子系出身で専門はブラシレスモータのベクトル制御の分野
簡単に言えばハイブリッド自動車などの駆動モータ制御なんかで使われている技術のこと
0330デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/16(火) 19:14:20.95ID:0ZvsnQMA0
>>329
すまない、質問で悪いんだがプログラミングは会社に入ってから身につけた?
それと大学院卒?
0332デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/16(火) 19:23:16.79ID:0ZvsnQMA0
>>331
【朗報】ワイ、情報工学生、希望を持つ
0333デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/16(火) 19:24:51.35ID:fnx7xBaf0
>>325
> ・実は情報系人材以外のエンジニアにはオブジェクト指向や関数型は難し過ぎる
そんな訳ない。それはお前が理解出来てないだけ。

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

Cが組み込みに使われるのは、余分なことをせず、書いた通りに動くから。
組み込み分野が広がっているのは、機械式よりも電子式制御のほうが圧倒的に楽だから。
考えてみろよ、車のエンジンで燃費最適化でバルブの開閉/点火タイミングを調整したいとき、
電子式なら1usずつ振るのも楽勝だが、機械式だと死ねるだろ。
VWの排ガス不正なんて、機械式では絶対に無理だった話だぞ。
0338デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/16(火) 21:22:59.09ID:npxrv4qJa
>>323
ここに居る。
0340デフォルトの名無しさん (ワッチョイ 11d0-EKU2)垢版2018/01/16(火) 22:08:44.23ID:0ZvsnQMA0
連立微分方程式ってc言語で解けるもんなんか
そうとう頭良くないと難しそうだな
0343デフォルトの名無しさん垢版2018/01/16(火) 22:51:20.18
ラスカル変換とか自慰定数とかわけわからんよな
0344デフォルトの名無しさん (ワッチョイ 6ad7-bCzB)垢版2018/01/17(水) 00:23:33.18ID:n4hXUBWy0
アライグマかよ
0345愛知人垢版2018/01/17(水) 00:55:17.46ID:BsDn1sQu
連立微分方程式を解くのはmatlabでやるんだろ
その結果を使って制御プログラムをCで実装する
0346デフォルトの名無しさん (アウアウカー Sa55-EKU2)垢版2018/01/17(水) 01:34:39.49ID:mXaMftmXa
まぁ結論から言うとプログラミングが必要な技術者とかいないから安心しとけ
機械系とか電気系はプログラミング理解してるとむしろ馬鹿にされる
無駄な知識付けてるってことだから要領ないってことだし
0347デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)垢版2018/01/17(水) 02:14:48.88ID:TP+o0KtY0
結論から言うと、現代においてプログラミングが出来ない>>346みたいな奴は池沼以下だと気づけ。
だからこそ、小学校からプログラミング授業が必修化される。(個人的にはこれには反対だが)
あと10年もすると、「エ、マジ、キモーイ、プログラミングが出来なくていいのは、小学生までだよね」の世界がマジで来る。
そうなれば>>346は老害オブ老害だ。

だからこんなところを荒らしてるんじゃなくて、マジでプログラミングを勉強した方がいい。
Cである必要はないが。
0348デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/17(水) 02:42:01.62ID:rMDm0SCW0
制御での微分方程式は解くためのものじゃない
制御対象の挙動を単純化してモデル化するために使うんだよ
言い換えれば、物理現象をプログラムで扱えるようにするために数式に落とし込むための道具だよ
挙動を記述さえできればプログラムで制御することが出来る
0349デフォルトの名無しさん (ワッチョイ a58a-8O9q)垢版2018/01/17(水) 02:52:45.50ID:rMDm0SCW0
ついでに言うと微分方程式そのものは代数的に解くんじゃないよ
プログラム上で数値計算によって制御対象(モーター回転数など)がリアルタイムに目標値に追従するように制御量(電圧など)を制御するのが
狙いなので解そのものを求める必要はない
0353デフォルトの名無しさん (ワッチョイ ea6e-EKU2)垢版2018/01/17(水) 10:55:01.85ID:yTTfDOoo0
>>347
なんだこいつ...
プログラミングを学ぶことは否定しないがそれが別の分野で役立つ
つまり専門的な分野+プログラミングが必要な人材っていうのは嘘
適材適所ってあんだろ、飛行機のパイロットが彦井の設計しますか?
飛行機の設計する人が飛行機内の電子回路制御担当しますか?
飛行機内の電子回路制御担当する人がマイコン系のプログラミング担当しますか?

しない、以上
0354デフォルトの名無しさん (ササクッテロレ Spbd-5nGQ)垢版2018/01/17(水) 10:58:26.02ID:PqtOC17Fp
プログラマについてだけは専業は限界があるんだよな。
別分野で使うツールを作る仕事だから、その分野の事を知らないとまともなインターフェースを提供出来ないからな。
そう言ういみではプログラマほど他業種との交流を大事にしないとならない職業なんだ。
0357デフォルトの名無しさん (アウアウカー Sa55-f6zg)垢版2018/01/17(水) 12:36:59.86ID:yjhk8Mz+a
俺も彦井の設計してみたい
0359デフォルトの名無しさん (ドコグロ MM0a-J7fK)垢版2018/01/17(水) 19:38:25.93ID:2byJTHHUM
>>354
プログラミングって日本語とか英語とかで書いてある要件をC言語とかに翻訳する作業だから要件に対する知識とか要件を知ってる人との交流が重要なのは当たり前
政治家に同行する同時通訳者が政治の知識を持ってないと勤まらないとの似たようなもんだよ
0361デフォルトの名無しさん (ワッチョイ adba-UJUP)垢版2018/01/17(水) 20:57:44.11ID:bqqIYUkv0
おまえら暢気だなー
ほんっと金銭感覚が絶望的にアウトなやつら

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

仕事ってそういうもんだぜ?
未来永劫食うに困らないなんて保証はねえんだよ
その時その時の社会情勢を見て自分にできることをやって
おまんまにありつくんだよ
0363デフォルトの名無しさん (ワッチョイ 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で完結しているのならそれだけでいいが。
工学系にとってのプログラミングはあくまでもツールだからね。
0368デフォルトの名無しさん (ワッチョイ c58a-68Hl)垢版2018/01/18(木) 00:25:48.70ID:zprwsW+f0
荒れてるな
それではネタでも投下してみるか
単純な制御プログラムのサンプルとして物理現象を連立微分方程式としてどの様にプログラムに落とし込むかを示してみる
実際は目標値に対して追従するように入力項を加えるのだけど面倒くさいので省略
制御プログラムのサンプルと言いながら実は中身は単純なシミュレーションだけど大体こんな感じ
>>348,349で微分方程式の解そのものを求める必要はないといった意味は分かると思う

https://ideone.com/Od1fxj
0369デフォルトの名無しさん垢版2018/01/18(木) 01:43:35.84
>>368
それで、質問は何?
0371デフォルトの名無しさん (ワッチョイ c58a-nVvH)垢版2018/01/18(木) 07:32:44.38ID:zprwsW+f0
工学系のプログラミングの一面を示しただけだよ
業務系そのものを否定する気はない
スレに粘着してる情報工学の学生の参考にどうぞ
組み込みのC言語プログラムの理解の助けにでもなればいい
0374デフォルトの名無しさん (ワッチョイ 4dd0-Cxnk)垢版2018/01/18(木) 15:03:42.71ID:uBrEQRuR0
>>372
どうでもいいけど末尾6でガックシって大学内でのWi-Fi経由での書き込みやん
大学内Wi-Fiは監視されてるから2chに書き込まないほうがいいぞマジで
俺の大学は学籍番号登録して大学Wi-Fi繋ぐタイプだったがアプリとか落としまくってたらメールで呼び出しくらったわ
利用禁止だけで済んだけど
0381デフォルトの名無しさん (ワッチョイ 0b81-QoPs)垢版2018/01/18(木) 16:57:47.29ID:gRlOykmi0
大学当局が何の規制も監視もしていないことは自慢にはならないぞ
外部の違法サイトにも好き放題でアクセス出来てしまうって事は、
学内に不正侵入も招きかねない
学生の個人情報も流出しかねない大学だって言うことだろう
0387デフォルトの名無しさん (ワッチョイ 239b-Q7o0)垢版2018/01/18(木) 18:35:59.35ID:/FcYukkO0
C言語勉強するにあたり相談です。

@スクールに通って学ぶ(170時間程度)
A3日間の会社主催のセミナー参加
B本、参考書等やネットで独学
Cその他
それぞれ理由とおすすめがあればお願いします!
0393デフォルトの名無しさん (ドコグロ MM13-3fO/)垢版2018/01/18(木) 19:29:03.24ID:r+5+UL4/M
>>392
会社の命令なら会社主催のセミナー行けよ
C言語の話以外にもその会社独自のやり方の説明もあるだろうし
それとは別に独学でも学びたいと言うならスクールでも本でもいいけど、なんか簡単なゲームでも作って色々ここで聞きまくるって言うのでいいんじゃね?
0395デフォルトの名無しさん (ワッチョイ 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で書いてみたものの、やっぱり記述量が無駄に多いので、ラムダにしたい。
0396愛知人垢版2018/01/20(土) 12:29:33.07ID:+yb3sEoQ
void abssortごと置き換える
C++詳しくないから知らんけど
0397デフォルトの名無しさん (ワッチョイ 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 );
}
0403愛知人垢版2018/01/21(日) 22:55:40.90ID:TYCBS/Jo
K&R
0405愛知人垢版2018/01/21(日) 22:59:34.82ID:TYCBS/Jo
Cって何のためにやるの?組み込みしかなくね?そんなの極める必要ある?
C++やろうぜ
0407愛知人垢版2018/01/21(日) 23:05:45.96ID:TYCBS/Jo
じゃあC++やろうぜ

って言ってるけどな
0408愛知人垢版2018/01/21(日) 23:06:44.66ID:TYCBS/Jo
>>401
C++やろうぜ
0410愛知人垢版2018/01/21(日) 23:09:24.66ID:TYCBS/Jo
ダイレクトエックス?テン?か知らないけどそれの本は?
0413デフォルトの名無しさん (アウアウカー Sa21-/TBa)垢版2018/01/21(日) 23:37:23.07ID:WHQpxhYLa
>>412
自作ゲームを作るのが目的で、自分の性分として元祖からやっていきたいと思って、、、、
ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、

要領が小さい横スクロールアクション(ロックマンの亜種)を作ってみたいのです。
0414デフォルトの名無しさん (ワッチョイ 759f-HMlX)垢版2018/01/21(日) 23:38:09.13ID:I2+B/hhs0
うーん。K&Rを知らないか・・・
0416デフォルトの名無しさん (ワッチョイ c58a-68Hl)垢版2018/01/21(日) 23:51:41.82ID:KmWcS8tF0
>>413
>ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、

何処からそんなデマを聞いたんだ?
ファミコン実機の中身はx86どころか8bitCPU(6502ベースのカスタム品)だということ知ってる?
0420デフォルトの名無しさん (ワッチョイ c58a-68Hl)垢版2018/01/22(月) 00:23:02.56ID:FvAm1M5e0
>>419
DirectXはその前身のGame SDKでさえWin95(1995年)と同時期にリリースされてる
スーパーファミコンの登場はそれより前のWin3.1(1992年)すら登場していない時期
まだMS-DOSの全盛期だよ、タイミング的に有り得ない
0422デフォルトの名無しさん (アウアウエー Sa93-JCrA)垢版2018/01/22(月) 06:53:09.36ID:1d4s07YIa
木屋さん元気かな
0423デフォルトの名無しさん (アウアウウー Sad9-vZoh)垢版2018/01/23(火) 09:06:26.50ID:oQb/6sLaa
>>152
遅くなったが、なかなか難しいがその難しさ含めアイデア次第でとても面白いな!

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


よし、俺もC本気出してやるかw
0427デフォルトの名無しさん (ワッチョイ 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
0430デフォルトの名無しさん (ワッチョイ 8b2b-pQa0)垢版2018/01/24(水) 08:13:51.80ID:DWaVEiCq0
>>428
なるほど、ありがとう
カンマ演算子ってのを初めて知ったよ

>>429
41行目
0431デフォルトの名無しさん垢版2018/01/24(水) 08:36:54.65
>>427
見た感じ、エンディアン問題っぽい
0433デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)垢版2018/01/24(水) 09:51:46.57ID:aKjSawsU0
結局、質問者は問題点が何処にあるか理解できたのかな?
カンマ演算子の評価結果は、最後の式の評価結果だからね
余計なお世話かも知れないけど、どうしても結果を戻り値で返したい場合は構造体に纏めれば出来るよ
というか、ベクトル自体を配列ではなくて構造体に纏めた方がプログラムの見通しがすっきりすると思う
0436デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)垢版2018/01/24(水) 17:11:55.26ID:aKjSawsU0
もう駄目だ
>>427のコードを構造体に纏めて書き換えてみたけど、ideoneのコマンドライン入力がどうやってもエラーを吐く
もう諦めたのでテストデータ埋め込みでコードを晒す(数学的には意味のないテストデータだけど)
誰か原因分かる人確認お願いします
手元のVC++2017ではコマンドライン入力でも正常動作することは確認してる
https://ideone.com/IEGKl0
0440デフォルトの名無しさん (ワッチョイ 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++の場合はコピーコンストラクタが動くことになっているので、自動で切り替えたら違反になり、出来ないはず。)
0441デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)垢版2018/01/24(水) 20:17:50.04ID:aKjSawsU0
>>440
うーん、まあそうなんだけどね
今回はそんなに大きなデータでも無いので手抜きしてる
元々のコードは次元もパラメータとして持っていたので、基底空間の構造体そのものをベクトル構造体のリスト構造で構成するのが正解なんだろうね
ポインタでベクトル構造体を引き渡すことになるとは思う
ただそこまでやるのが面倒くさかったので、3次元ベクトル空間に限定して無理やりデータを小さくまとめてしまってる
この程度なら値渡しでもいいかと手抜きしてるのが裏事情、ぶっちゃっけて言うとまともに実装するのが面倒臭かった
まあ、あんまり細かいこと突っつかないで><
0442デフォルトの名無しさん (ワッチョイ 559f-x16F)垢版2018/01/24(水) 20:58:24.14ID:5oCpuwxD0
>>441
やれば分かるが、そんなに記述量は変わらないぞ。
. が -> に変わるのが大半で、それ以外はほぼそのままで済むはず。

主に計算用途で、Python -> Cを目指しているのか?
だとしたら速い書き方が出来ないと意味無いだろ。
そして、ベクトルの値渡しとかスタックを余計に食う=再帰したら悲惨なことになるから止めとけ。
->の表記が気に入らないのなら、C++の「参照」を使えば . のままでも書ける。
この場合は、ソース自体の書き換えは呼び出し部分だけで済む。
(ただし、非const参照は推奨されていない場合もある。例:googleのコーディングルール)
0443デフォルトの名無しさん (ワッチョイ 3d8a-68Hl)垢版2018/01/24(水) 21:18:35.41ID:aKjSawsU0
>>442
このスレには珍しく数学的な背景に詳しそうだな
ちょっと聞きたいけど、基底空間の拡張そのものはベクトル構造体をリスト化すれば簡単なんだけど、ベクトルの要素の拡張で簡単な方法ないかな?
実は最初にそれを考えたんだけど要素もリスト化するとポインタの連鎖が大変なことになりそうで、躊躇した結果がVECT3やBASIS3などの次元決め打ちになってしまってる
あとは演算部も際限なく項が増えていくので再起でも使わなければとても実装できそうもない
これもポインタの実装が大変なことになるのが容易に想像できる
参考までに先のコードを拡張するにあたって何か良さそうなアイディアないかな
0444デフォルトの名無しさん (ワッチョイ 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種類の構造体で扱ってもいい。
0449デフォルトの名無しさん (アウアウエー Saf2-oJ1J)垢版2018/01/25(木) 02:11:06.70ID:KWt8t+zYa
おまいら寄り道多過ぎΩ
早く本当のことを教えたれ
0450デフォルトの名無しさん垢版2018/01/25(木) 07:41:16.00
構造体返しやら構造体渡しやらを使ってる標準ライブラリ関数なんかあらへんやろ
0451デフォルトの名無しさん (ブーイモ MM97-EQ2j)垢版2018/01/25(木) 07:57:34.46ID:H7d70bA2M
構造体渡しはスタック汚すからなあ
0454デフォルトの名無しさん (ササクッテロル Spab-JKdO)垢版2018/01/25(木) 10:31:04.17ID:SJLkFufqp
いや、コンパイラの吐くコードがアホだったから解放したスタックから値をコピーする事になっちまってただけだ。
割り込み専用スタックが無いアーキテクトマシンはそこで死んだ。
0458デフォルトの名無しさん (ワッチョイ 5323-oJ1J)垢版2018/01/25(木) 13:24:05.92ID:ZxAe+MwB0
返り血の話してるのになんで引数持ち出すかなぁ
0463デフォルトの名無しさん (アウアウウー Sa77-fQjY)垢版2018/01/26(金) 00:42:46.48ID:d5sN0H9Ta
>>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}
0464デフォルトの名無しさん (ワッチョイ 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回書かないといけないのは何とかならんのか、というのはあるが。
0465デフォルトの名無しさん (ワッチョイ 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言語は、コンパイラにバグ取りを手伝ってもらう言語ではなく、
そもそもおめーがバグなく書きゃいいだけだろ、というノリなんだが。
0466デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/26(金) 01:37:49.07ID:aTHTXGTcM
>>465
それ演算式どうするんや?個別で書くんか?
アドレス渡しもできそうにないし、それ書くなら
typedef double[3] VEC3;
でよくね?
0467デフォルトの名無しさん (ワッチョイ 539f-fPTX)垢版2018/01/26(金) 01:46:48.74ID:KrxIIzDl0
>>466
個別で書くに決まってるだろ。
実際それが最速だし、この場合は適切だ。

> アドレス渡しもできそうにないし
オイオイ。
つかお前、マジで言ってるのなら豆腐の角で頭打って死ぬレベルだぞ。
0468デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/26(金) 01:56:56.10ID:aTHTXGTcM
>>467
アドレス渡しじゃねえ、キャストだ
アドレス渡ししてキャストできれば汎用にできそうやなあとか考えててアホなこと書いてたわ

個別で書くと割り切るならありやな
0469デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/26(金) 01:59:16.78ID:aTHTXGTcM
>>468
誤解ないように追記しとくわ
void*でって意味
0470デフォルトの名無しさん (ワッチョイ 539f-fPTX)垢版2018/01/26(金) 02:06:14.02ID:KrxIIzDl0
>>469
typedef double[3] VEC3;
で VEC3をvoid*にキャストするのは止めた方がいい。使い物にならないから。
void*で一般化するには何にしてもサイズが必要だから。

サイズ無しで型を一般化したいのなら素直にテンプレート使っとけ。
0471デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/26(金) 02:13:45.05ID:aTHTXGTcM
>>470
いや、だからキャストを考えてないなら
typedef double[3] VEC3;
でよくね?と書いてた
0472デフォルトの名無しさん (ワッチョイ 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; で行けるし)

ただまあここら辺は外野の俺らが言い合っても意味がない。
使用者が決めればいいだけ。好みの範疇だからね。
0473デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/26(金) 02:44:51.96ID:aTHTXGTcM
>>472
>>468にも書いたけど、個別で式書くと割り切るなら同じ意見やで
ただ、次元増えたときは面倒やろと思っただけ
0475デフォルトの名無しさん (ワイモマー MM77-1FxY)垢版2018/01/26(金) 07:57:07.70ID:CM24TKAOM
>>474
アプリケーションハンガリアン記法。
参考までに、システムハンガリアン記法はNG。
0476デフォルトの名無しさん (ササクッテロル Spab-JKdO)垢版2018/01/26(金) 10:35:41.57ID:uizSPI6cp
戻り値が構造体ってのは、型宣言に構造体が使えるから言語仕様的に出来なきゃならないんだよ。本当はな。
でも関数内オート変数に一旦格納した型後でreturn オート変数ってやると、コンパイラがアホだからポインターだけ渡してスタック破棄した後に領域コピーしちまうんだ。
運が良ければ残ってるかもね。的な綱渡りさ。割り込みが掛かった時点で死ねる。
0479デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/26(金) 13:00:59.90ID:eO6EE38Oa
>>476
それはどう実装されるかの問題。

まあしかし後付け感はあるな。配列はポインタにされちゃうのに構造体の中に配列入れると丸々渡せたりして。
まあ昔々に考えられて互換性を考慮して拡張されてきた言語なので仕方がないようにも思うが。
0480デフォルトの名無しさん (アウアウエー Saf2-oJ1J)垢版2018/01/26(金) 13:28:01.67ID:qmyxD0D3a
>>477
最近のは引数NULLで桶
0481デフォルトの名無しさん (アウアウエー Saf2-oJ1J)垢版2018/01/26(金) 13:34:27.88ID:qmyxD0D3a
>配列はポインタにされちゃうのに構造体の中に配列入れると丸々渡せたり

あほか
0482デフォルトの名無しさん (ワッチョイ 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のと同じになる
0484デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/26(金) 15:18:50.21ID:lz5gZOTMa
>>481
何をアホと思ったのか詳細よろしく
0487デフォルトの名無しさん (スッップ Sdda-ZRsY)垢版2018/01/26(金) 17:12:00.37ID:ghv3+z6qd
>>476
構造体を返せないコンパイラはいくらでもあるけど
>>476みたいな返し方のコンパイラは見たことがない
例えばどのコンパイラがそういう返し方をする?

doubleをレジスタで保持出来ないCPUも基本的には処理方法は構造体と同じと思う
0489愛知人垢版2018/01/26(金) 20:24:07.81
配列で要素間をまたいで先頭からnビットの位置から6bit取り出してintに入れるにはどうしますか?
0492愛知人垢版2018/01/26(金) 20:35:58.71
>>491
ナカーマ(^人^)
0495デフォルトの名無しさん (ワッチョイ c78a-5dAg)垢版2018/01/26(金) 20:55:00.97ID:nXJEVt+40
C言語の登場当時に画期的だったのは構造体として自由に新しいデータ型を作り出すことが出来たことだった
C++では更にデータだけでは無くて関数まで含めたデータ型がクラスに発展してオブジェクトの概念にまで到達した
要は構造体は新しい概念をプログラムの世界に持ち込むための手段
ベクトルや多次元空間といった概念も構造体によってプログラム内で直接取り扱うことが出来る様になる
0497デフォルトの名無しさん (アウアウウー Sa77-rgA5)垢版2018/01/26(金) 20:57:29.63ID:UUEYCaGha
>>489
それはリトルエンディアンで考えるのかそれともビッグエンディアンなのか?
まあいずれにしてもまずはその配列の型のビット数で割る必要がある。
配列のその要素の中に先頭のビットがある。
0499デフォルトの名無しさん (ササクッテロル Spab-JKdO)垢版2018/01/26(金) 21:07:37.65ID:uizSPI6cp
>>496
BASE64は3バイトを4つの文字に置き換えるんだから、3バイトづつ処理するコードを書けばいいんだよ。
4文字を3バイトに変える方も同じく4文字づつ処理するコードを書く。
そーすれば、必ず同じ位置からビットフィールド取り出す処理だけになる。
0503愛知人垢版2018/01/26(金) 22:36:08.45
>>499
なんだー
そんな方法でよかったのかぁ
0504デフォルトの名無しさん (ワッチョイ 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
0505デフォルトの名無しさん (ワッチョイ bab3-dVd5)垢版2018/01/26(金) 23:06:51.56ID:8m7gdhLr0
>>495
> C言語の登場当時に画期的だったのは構造体として自由に新しいデータ型を作り出すことが出来たことだった
PL/1, Pascalにもあったし、範囲型とかをサポートしないサブセットだよ?
むしろポインタを陽に使える方が画期的だったな
0508デフォルトの名無しさん (ワッチョイ e39f-SpET)垢版2018/01/27(土) 05:09:48.31ID:ibqNKJrC0
>>502
EBSDICとBase64にどういう関係が?
バイナリならなんでも変換できるんだから特定のコードは関係ないだろう。
0513デフォルトの名無しさん (ワッチョイ c78a-5dAg)垢版2018/01/27(土) 07:37:40.78ID:7WxnX7MJ0
C言語はその生い立ちがUNIX のシステム記述のためのツールだからね
画期的ではあっても全く新規の考えというものを指摘するのは難しい
当時の構造化言語のアイデアをひとつの言語として完成させたことが最大の特徴
0516デフォルトの名無しさん (ワッチョイ b375-lqEN)垢版2018/01/27(土) 11:43:45.46ID:rGBD/78P0
「EBCDIC(Base64)」(キリッ
0518デフォルトの名無しさん (ワッチョイ b375-lqEN)垢版2018/01/27(土) 12:03:56.86ID:rGBD/78P0
>>517
ゼロで埋める
0520デフォルトの名無しさん (ワッチョイ b375-lqEN)垢版2018/01/27(土) 12:14:23.87ID:rGBD/78P0
どっちもだな
0526デフォルトの名無しさん (ワッチョイ e39f-SpET)垢版2018/01/27(土) 15:57:17.68ID:ibqNKJrC0
>>514
おだいじに。
0527デフォルトの名無しさん (ワッチョイ c78a-5dAg)垢版2018/01/27(土) 16:24:23.51ID:7WxnX7MJ0
>>524
純粋なC言語が使われているのは、リソースが厳しい組み込み分野と、他にはプログラミングの教育や学習の分野がほとんど全て
実用的にはC++への通過点といった感じで考えておいた方が無難
CとC++の使い分けは結構曖昧で緩い感じだけど意識しておいた方が良い
両者をまとめた適用分野で言えば>>525あたり
0528デフォルトの名無しさん (ワッチョイ e39f-SpET)垢版2018/01/27(土) 16:44:34.14ID:ibqNKJrC0
しかしなんというか、C++は発展させすぎて難しくなった感があるな。
C++ってWindowsネイティブアプリ以外で使われてるのあまり見ないような気がするんだけど。
Windows用で使われる理由は歴史的な理由で、もしこれがなければC++って廃れてないか?
0529デフォルトの名無しさん (ワッチョイ 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のかたくなな姿勢はどうなのよ?とも思うが。
0530デフォルトの名無しさん (ワッチョイ 9e23-Pdni)垢版2018/01/27(土) 17:14:52.43ID:BOWgYHll0
「なんとなくアセンブラコードが想像できるところまで」
というのがC言語で実装する機能の上限だと思う。

まあ実態とだいぶ乖離しているが、最適化を切ったとかの前提でひとつ
0531デフォルトの名無しさん (ワッチョイ c78a-Jirz)垢版2018/01/27(土) 17:15:48.70ID:7WxnX7MJ0
個人的にはクラス云々よりもC言語では関数のオーバーロードやデフォルト引数あたりが使えないのがもやもやする
というかあまり詳しく調べてないけど、最近のC言語の仕様改定で標準化とかされてなかったよね?
大抵はC++の処理系を利用しているから有耶無耶で利用している人も多いと思うけど
0532デフォルトの名無しさん (アウウィフ FF77-oJ1J)垢版2018/01/27(土) 17:38:54.08ID:WgYcU0PsF
stdarg (... とか va_list) とマクロで出来んか
0534デフォルトの名無しさん (ワッチョイ 539f-fPTX)垢版2018/01/27(土) 18:39:07.65ID:InjcCDJK0
個人的には評価が確定した物は入れればいいと思ってる。
クラス(またはプロトタイプ)が使えない実用言語なんてほぼ無いわけでさ。
ただ、
> 「なんとなくアセンブラコードが想像できるところまで」 (>>530)
が標準化委員会の指針なら、今の姿勢も分からんでもないが。

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

C++は壮大な実験場と化しているから、
Cはありがたくその結果だけを受け取って緩やかに発展させればいいと思うのだが。
0537デフォルトの名無しさん (ワッチョイ c78a-Jirz)垢版2018/01/27(土) 19:10:00.20ID:7WxnX7MJ0
>>534
>実はここは評価が確定してない。

そんなに揉めるような機能か、これ?
特にオーバーロードなどは今すぐにでも導入されれば、似たような関数名であれこれいらんこと考えずに済むのでメリットしか考えられないんだが
デフォルト引数もあっても悪いものではないだろう
クラスの導入のように現行のC言語の規格を大きく変更(デメリットも含めて)することなく、簡単に言語の使い勝手を向上させるお手軽な改善だと思っていたんだが違うのか
0538デフォルトの名無しさん (ワッチョイ 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した関数に確実にそのまま当たる。
ソースを追うという意味ではこちらの方が当たってる。
オブジェクト指向の継承が良くない点の一つは、ぱっと見、どの関数が実行されるか分かりづらい点であってさ。
勿論、「分からなくていいし、分かる必要がない」というのがオブジェクト指向のノリだとしてもね。
0539デフォルトの名無しさん垢版2018/01/27(土) 20:51:31.73
あまりにミニマムすぎるとみんなが好き勝手なマクロを作って「僕が考えたエレガントなコーディング」を始めるから少しは高級な記法を用意しといてくれや
0540デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/27(土) 20:56:30.77ID:0ISwxtuYa
うーん。Cはアセンブラ代わりの単純な言語にしておいてそれ以上の事は別の言語でやればいいような気がするが。

丁度よい言語が見つからないなら作れば良い。自分で作れなくても仕様を公開して作ってくれる人を募集すればその内誰か作ってくれることだろう。
0541 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)垢版2018/01/27(土) 21:31:52.27ID:S+YQeyK20
>>537
関数のオーバーロードは、リンク時の対応にアセンブラ互換性がとれなくなるので、お手軽ではないと思う
extern "C" を追加するか?え、C に extern "C" って意味わかんない…
0545デフォルトの名無しさん (ブーイモ MMda-EQ2j)垢版2018/01/27(土) 22:50:15.16ID:l2t/3O07M
CはUNIX思想の根源みたいなもんだし、十徳ナイフみたいな機能はいらんでしょ
どうしてもって人はC++使えばいいだろ
そのためにできたようなもんだし
0546デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)垢版2018/01/28(日) 14:26:11.42ID:Ixu0c+cx0
質問答えてくれたら嬉しいです
配列の中身をfprintfでエクセルに書き込む方法を教えてください

fprintf(fp,"%3d , %3dn",0,value)
のように一変数を書きこむ方法は分かるのですが配列のすべての要素を書き込みたいです
0547デフォルトの名無しさん垢版2018/01/28(日) 14:36:25.54
>>546
Excelじゃないとだめなの?
CSVファイルとかじゃあかんの?
0551デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)垢版2018/01/28(日) 15:17:40.71ID:Ixu0c+cx0
>>547
csvファイルですね
0552デフォルトの名無しさん (ワッチョイ 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]);
0555デフォルトの名無しさん (ワッチョイ 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');

であってますか?
0557デフォルトの名無しさん垢版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行処理終了 */
0558デフォルトの名無しさん (アウアウウー Sa77-rgA5)垢版2018/01/28(日) 20:06:56.21ID:4RSN9gyea
惜しいな。

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

>>557
fprintf()のようなFILE*経由の出力はライブラリの中でバッファリングされるように
なっているので(自分でそのバッファの大きさをいじるのでない限りは)まとめて
出そうとかは考える必要がない。考えた方が良いのは write() で直接出力する
場合だ。
0559デフォルトの名無しさん垢版2018/01/28(日) 21:56:59.74
>>558
ロックのコストがかかるだろ
0561愛知人垢版2018/01/29(月) 01:00:38.69ID:pcTu+bOr
画像の順番ミスりました。
0562デフォルトの名無しさん (ワッチョイ e39f-SpET)垢版2018/01/29(月) 01:22:55.81ID:CxmMjiyr0
>>559
どのレベルでのロック?
0563愛知人垢版2018/01/29(月) 01:45:54.32ID:pcTu+bOr
あ、原因わかりました
0564デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)垢版2018/01/29(月) 13:52:22.33ID:FA24LoNZ0
>>558
ありがとうございます
0565デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)垢版2018/01/29(月) 15:32:09.28ID:FA24LoNZ0
もう一つ質問させてください
long型の配列に空白を入れることは可能でしょうか?

>>556
ありがとうございます
0567片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-iVxB)垢版2018/01/29(月) 15:55:33.60ID:MMFEPnwQd
配列に空白を入れるというのは、配列のどこかに、空白文字の文字コードを表す整数値を入れるという意味になる。
文字コードは、文字リテラルか整数リテラルで指定できる。
0568デフォルトの名無しさん (ワッチョイ 9e9f-eGIS)垢版2018/01/29(月) 16:26:29.34ID:FA24LoNZ0
>>566
ご返事ありがとうございます
0575愛知人垢版2018/01/30(火) 01:24:21.22ID:nQQmpnBb
空白=32=空白
0577デフォルトの名無しさん (ワッチョイ e39f-SpET)垢版2018/01/30(火) 04:18:14.15ID:9ZRSIjLC0
今話題のEBCDICだと違うかも
0581愛知人垢版2018/01/30(火) 15:46:46.33
0582デフォルトの名無しさん (ワッチョイ aeea-MCTD)垢版2018/01/30(火) 15:51:17.34ID:yCe36s9T0
(アスキーコードを使ってる仮定で) SPC文字 と 整数32 は等価
より大きいサイズへの整数への格上げも素直に行われるだろう
long a = ' ';
long b = 32;
// a と b は等しい

元質問 >>565
「long型の配列に空白を入れることは可能でしょうか?」における
空白とはなんぞや?が ' ' でいいのかどうかは知らん
0584 ◆QZaw55cn4c (ワッチョイ da60-L5Bk)垢版2018/01/30(火) 15:58:10.94ID:fLRARGcM0
>>579
min という変数がポインタだとして、min の指し示すところに 100 を代入する、という意味になる
部分だけではよくわからない場合もあるので、可能ならば全体を https://ideone.com に張ってもらえると、もっと解説できるかもしれない
0585愛知人垢版2018/01/30(火) 16:00:11.58
ロング型に文字入れてもprintfできないのに何の意味があるのか分からん
0588デフォルトの名無しさん (スプッッ 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++;
}
}
0590愛知人垢版2018/01/30(火) 16:35:56.43
int max, minが宣言されてなくね?
0591愛知人垢版2018/01/30(火) 16:37:38.36
int *max, *min
0592デフォルトの名無しさん (ワッチョイ 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];

ポインタ使わずに記述してて、呼び出し元に結果かえってないじゃーん
から、慌ててポインタに変えた感じかな?
0594愛知人垢版2018/01/30(火) 17:19:04.96
下の関数はmain関数と思い込んでだけどよく見たら引数あるのか
0596デフォルトの名無しさん (アウアウエー Saf2-oJ1J)垢版2018/01/30(火) 17:24:42.43ID:61BNvo+Ja
>>593
2-1の
関数の中身は間違い
ansの前に*が必要
0598デフォルトの名無しさん (アウアウエー Saf2-qxBm)垢版2018/01/30(火) 18:07:51.62ID:zy+7iaPqa
これはひどい
0603デフォルトの名無しさん (オッペケ Srab-9Pjq)垢版2018/01/30(火) 21:14:33.45ID:YzkDukp0r
これは苦しいwwwww
0607デフォルトの名無しさん (オッペケ Srab-9Pjq)垢版2018/01/31(水) 07:53:31.27ID:OVj1tDHAr
>苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイトです。
>C言語の基本機能を体系立てて解説しており、市販書籍と同等以上の完成度です。

去年サイトリニューアルするまでは、項目はあるのにページが無いのとか結構あったし、完成してないのにこれで市販書籍以上の完成度とかよく書けるなw
0608デフォルトの名無しさん垢版2018/01/31(水) 08:25:41.29
>>607
運営者本人が初学者だから苦しんでるんだろうなw
0612デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/31(水) 10:23:38.93ID:H6iQ2Lk/a
体で覚えるしかないな

なんて、コンパイラにバグがあって変な風に覚えちゃったりしてw
0614デフォルトの名無しさん (ワッチョイ 5323-oJ1J)垢版2018/01/31(水) 11:31:00.48ID:S61vzQOK0
最近の書籍はあてにならない
著者も編集もレベル落ちてる
0615デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/31(水) 12:50:06.35ID:lHClPcOQa
gccには騙されっぱなしです。
0616デフォルトの名無しさん (アウアウカー Sa33-bnsf)垢版2018/01/31(水) 12:52:56.34ID:lHClPcOQa
void * の変数に1を足しているのを見た時は驚きました。
0629デフォルトの名無しさん (アウアウカー Sa33-/a9j)垢版2018/01/31(水) 23:29:55.01ID:NqV1T3vca
https://i.imgur.com/yXsENPk.jpg
https://i.imgur.com/LhIHXaC.jpg

こちらになります。
一応これをC言語でやれというものなので、よろしくお願いします。
解き方の方針だけでも、、、

θをラプラス変換後、伝達関数と掛け合わせてから、逆ラプラス変換をするのかと思いましたが、そんなこと計算できませんでした。
よろしくお願いします。
0630愛知人垢版2018/02/01(木) 01:41:00.48
流石にラプラス変換をC言語でやれという問題じゃないと思う(´・ω・`)
手計算で(6)式に対する出力信号(tの関数)をωcを含む形で導いてから、適当な値を変数omagacにセットして出力信号を数値計算するのでは...?
0632愛知人垢版2018/02/01(木) 02:20:41.57
普通にやればできると思う。
0634デフォルトの名無しさん (ワッチョイ d78a-IOOI)垢版2018/02/01(木) 02:43:54.99ID:3G6Lk4x40
>>629
積分器の部分が面倒くさいな
単純に時間刻み値一段だけ遅延させてみたけどうまくcos波形にならない
何段遅延させればうまくいくかよく分からない
とりあえず方針としては、ブロック図を単純に差分方程式に落とし込んでやれば回答には辿り着けるはず
1/sの部分が積分器だから入力を適当に遅延させて出力させてやればいい
ラプラス変換云々は理論的な理解には大切だけど、プログラム的には最終的に差分方程式(数学的には微分方程式)の形に落とし込んでしまえばいいよ
もうここまでにして途中のソースだけ挙げておく
https://ideone.com/69YxIz
0635愛知人垢版2018/02/01(木) 02:49:41.29
部分分数分解なんか要らないと思うけど...
0636愛知人垢版2018/02/01(木) 02:52:06.51
ごめん、俺が知ってるやり方も部分分数分解だった。
でも手順に従うだけじゃ...?
http://lab.cntl.kyutech.ac.jp/~nishida/lecture/MathOfCntl/no5.pdf
0637デフォルトの名無しさん (アウアウカー Sa2b-2d+2)垢版2018/02/01(木) 12:27:50.14ID:Df+LK2Bma
>>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秒毎に変わっていかなくて途方にくれてます。
多分簡単なことなんで、コードをお願いします。
0639愛知人垢版2018/02/01(木) 15:22:38.94
>>637
計算結果が間違ってる(>_<)
0640デフォルトの名無しさん (ワッチョイ 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"と表示されないのですか?
0642愛知人垢版2018/02/01(木) 15:48:38.02
"a"は{'a', '\0'}へのポインタ
'a'は文字のa
0646愛知人垢版2018/02/01(木) 18:41:02.74
>>644
仮に文字列リテラルの式の値の型がポインタじゃないとして、それらが何故その根拠になるのか分かりません(>_<)
0649愛知人垢版2018/02/01(木) 18:48:48.23
>>648
文字列リテラルは定数なのでそれは分かります(>_<)
0651愛知人垢版2018/02/01(木) 19:08:28.37
ポインタ変数にリテラルを代入した場合は...?(>_<)
0655愛知人垢版2018/02/01(木) 19:16:30.75
>>652 ?ʕ•ᴥ•ʔ?
0657愛知人垢版2018/02/01(木) 19:18:03.81
>>654
これは分かりました(>_<)
配列の変数はポインタと同じようで違うんですね(>_<)
0658デフォルトの名無しさん (アウアウウー Sa5b-wbgk)垢版2018/02/01(木) 21:16:29.83ID:bg4M2KC6a
>>640
void sumStr(char* str){
*str ="a";
}

これ、strはcherのポインタでありその指す先はchar型だ。
"a"は 'a', '\0' と並んで入っている先を指すポインタだ。

*str は char 型で、"a" は char * 型だ。型が違う。

これが例えば *str = 'a'; だったり、あるいは *str = *"a"; だったりすれば型も一致するし目的の値の代入に成功するだろう。
(まあしかし普通は *str = *"a"; なんて書き方しないけどな)。
0661659 (ワッチョイ ff80-g5j1)垢版2018/02/01(木) 23:02:59.65ID:iw8YX/Ps0
ポインタ・文字列を、図解して説明している

"abc" なら、"abc\0" みたいに4バイトになるとか
0666デフォルトの名無しさん (アウアウウー Sa5b-wbgk)垢版2018/02/03(土) 01:07:56.65ID:uJsu8afca
これからC言語始めます自分で色々と調べたけっかこの2つが残りました
どちらがいいでしょうか?アドバイス下さい。それやめとけなんて話もあればお聞かせ下さい

1,「C言語プログラミング」(ハーベイ・M. ダイテル/ポール・J. ダイテル 、ピアソン)
2,プログラミング言語C 第2版 ANSI規格準拠 B.W. カーニハン (著),? D.M. リッチー
0667デフォルトの名無しさん (アウアウエー Sadf-EZPO)垢版2018/02/03(土) 04:53:07.36ID:pNC8Ba1va
gcc
0668デフォルトの名無しさん (ワッチョイ ff80-g5j1)垢版2018/02/03(土) 06:09:55.21ID:5C9YCfZr0
巨匠の柴田望洋・林 晴比古とか、
「猫でもわかるC言語プログラミング 第3版」粂井(くめい)康孝、2013

古い本だと、例題の開発環境が古いから、動かせないだろ

「c言語 入門書 おすすめ」で検索!
0670デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/03(土) 10:38:20.76ID:zCLT35Li0
>>666
新しいことを学ぶときは
・バイブル的な本(K&R第2版)
・初心者向け
の組み合わせで。
片方だけではダメ。
0671デフォルトの名無しさん (ワッチョイ 77c9-VW3n)垢版2018/02/03(土) 12:45:56.09ID:YTn5lucX0
ちょっと教えてくらさい。

最近Cを書くことが多くなったんですけど

#include <Includes/General.h>
#include "Includes/General.h"

これって、本来の動作的に厳密には何か違いがあるんですか?
0673デフォルトの名無しさん (ワッチョイ 179d-duq4)垢版2018/02/03(土) 13:23:39.69ID:iWk8ZVwf0
>>671
#include <> はコンパイル環境指定のインクルードディレクトリから探索
#include "" はインクルードしたファイルのあるローカルディレクトリを先に探索してから環境のインクルードディレクトリを探索

つまり自分で今作ってるプログラムのヘッダファイルは#include ""を使わないと他人の同名のファイルをインクルードするかも知れない。
0674デフォルトの名無しさん (ワッチョイ 77c9-r4To)垢版2018/02/03(土) 14:54:39.21ID:YTn5lucX0
>>672-673

そういう事ですか、なるほど。
詳しくありがとうございました。勉強になりました。
0676デフォルトの名無しさん (ワッチョイ 179f-A9+C)垢版2018/02/03(土) 17:23:23.11ID:VDv79Nx+0
>>666
1は知らんけど2は絶対に読んだほうが良い本だと思うよ。
0679デフォルトの名無しさん (エムゾネ FFbf-EZPO)垢版2018/02/03(土) 19:06:23.67ID:VzdMwW3vF
いくら本読んでも本に頼ってるうちは初心者
書いて書いて書きまくってエラー出しまくって経験積め
0684デフォルトの名無しさん (ワイモマー MM5b-Rd6c)垢版2018/02/04(日) 11:15:43.36ID:snv+Mm9gM
>>168
トイプログラムはそうなるかもな。
0685デフォルトの名無しさん (ワッチョイ d7c3-YYog)垢版2018/02/04(日) 12:44:06.41ID:TVUXtLT70
初心者です。参考書を読んで勉強していたのですが
「浮動小数点数の利点は、一定の有効桁数(精度)の範囲内で、小さな数から大きな数まで表現できることです」(分かりやすいC入門編:川場隆)
とあったのですが、どういう意味か分かりま出んでした。
ネットで調べても同じようなことしか書いてなくて。浮動小数点数の利点を教えてください。
0686デフォルトの名無しさん (アウウィフ FF5b-EZPO)垢版2018/02/04(日) 12:49:52.12ID:D/BHnVHFF
利点と欠点が同時に書かれてるな
0687デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/04(日) 12:53:55.66ID:9kHA/gVX0
>>685
123,000,000,000=123×10^9

右辺の方がコンパクトだろ?
0693デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/04(日) 13:36:20.20ID:9kHA/gVX0
二進数32ビットで123,000,000,000は表せないけど、
32ビットを符号部、指数部、仮数部に分けると表現できる。
有効桁数は仮数部のビット数で決まる。
0694デフォルトの名無しさん (ワッチョイ 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進数でずらしていく
0695デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 13:43:30.54ID:uz8VZN5uM
初心者質問おねがいします。

二つのunsigned char型があり、
一つ目が 0b10001000 で、
二つ目が 0b01110111 です。
これを合わせて 0b10001000 となる計算式はどうすればいいですか?
よろしくおねがいします。
0698デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 13:59:02.90ID:uz8VZN5uM
>>696
すみません。
説明不足でした。
二つ目のchar型は刻々と変化するので、一つ目のchar型の各ビットを二つ目の各ビットが変わったら
そのビットだけ反転させたいのです。
よろしくお願い致します
0700デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:13:06.96ID:uz8VZN5uM
>699

すみません。
超初心者なのでマスクとかよくわからないです。
単純に、一つ目のchar型の各ビットを二つ目のchar型の各ビットが変化したらそのビットだけ反転させたいだけです。
0701デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/04(日) 14:16:40.27ID:9kHA/gVX0
>>700
わかりにくい。
ビット単位で4パタン説明して。
0702デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:25:23.15ID:uz8VZN5uM
>>701
すみません
こんな感じでわかりますか?

一つ目の初期値 0b11010110
二つ目の初期値 0b01001011


二つ目が0b01001010に変化

一つ目が0b11010111に変化させたい





二つ目 0b01001010
0703デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:27:02.24ID:uz8VZN5uM
もう一例です

一つ目の初期値 0b11010110
二つ目の初期値 0b01001011


二つ目が0b010000111に変化

一つ目が0b11011110に変化させたい
0704デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/04(日) 14:27:32.63ID:9kHA/gVX0
>>702
なぜ話をややこしくする?
ビット単位で説明すればいいじゃん。
0705デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:28:16.45ID:uz8VZN5uM
すみません
>>702の最期の行は不要です
0706デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:30:17.33ID:uz8VZN5uM
>>704

ビット単位で比較してそれぞれ操作するしかないということでしょうか?
できればバイト単位で一括で操作できる方法があればとおもいました
0708デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/04(日) 14:35:53.94ID:9kHA/gVX0
>>706
だれがビット単位で操作するしかないと言ったの?
0709デフォルトの名無しさん (ワイモマー MMbf-aajP)垢版2018/02/04(日) 14:40:21.25ID:uz8VZN5uM
>>707

1、はい。全ビットは反転してはまずいです。
2、マイコンの入力ポートです。

>>708

すみません。
そんなつもりではありません。
ということは、自分の望む計算式があるのでしょうか?
0710デフォルトの名無しさん (ワッチョイ 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;
}
0711デフォルトの名無しさん (ワッチョイ 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に変化したときには「一つ目」にはどう反映させたいの?
0712デフォルトの名無しさん (ワッチョイ ffe4-TMol)垢版2018/02/04(日) 15:33:13.79ID:F4VHcN9w0
>>710

ありがとうございます。
何となくですが少しイメージが浮かんできました。

>>711

すみません。

二つ目が 0b01000011 に変化の間違いです。
0713デフォルトの名無しさん (ワッチョイ 179f-wbgk)垢版2018/02/04(日) 15:44:44.53ID:fXO59JwO0
まずはやりたいことを普通の日本語で書け。
0716デフォルトの名無しさん (ワッチョイ 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);
0717デフォルトの名無しさん (ワッチョイ ffe4-TMol)垢版2018/02/04(日) 18:21:03.27ID:F4VHcN9w0
>>716

正にその通りです!
その式で思ってる通りに制御できました!
ありがとうございましたm(_ _)m
0718デフォルトの名無しさん (アークセー Sxcb-/IWG)垢版2018/02/04(日) 22:32:58.82ID:ZlHMYtZlx
全くの初心者です。
「2の3乗を求める」という計算プログラムを勉強しています。
最終的には3^1024を求めたいのですが。
ネットで見ていると30乗ぐらいまではプログラムがあるのですが
1024乗ぐらいになると難易度的に難しくなるのでしょうか?
0719デフォルトの名無しさん (ワッチョイ 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桁以上の大きな数になりますね。
どの型の変数を使う?
0721デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)垢版2018/02/04(日) 23:07:38.36ID:88eIJAAv0
>>718
やることは3に3を1,023回掛けるだけだから難しくはない
ただ>>719の言うようにかなりでかい値になる(ちょっとpythonで計算したら489桁だった)から普通のlong intとかではオーバーフローする
なので
多倍長整数 C言語
とかでググるがよろし
0725デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/05(月) 00:05:41.82ID:atUOEIz80
BCD(二進化十進)ライブラリを拾ってくるのが汚れた大人だけど、
若者は勉強のためにBCDライブラリを作ってみては?
0726デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/05(月) 00:06:32.23ID:atUOEIz80
おっと、更新せずに書き込んだらこんなことに(笑)
0728愛恥人垢版2018/02/05(月) 01:36:30.57
10進じゃないと0.1が無限に数字が続くらしい
よく分からんけど
0729 ◆QZaw55cn4c (ワッチョイ 9f60-soeb)垢版2018/02/05(月) 01:40:21.91ID:Qlm7SRQb0
>>728
10進だと 1/3 が無限に数字が続きますよね

それはさておき、多桁長+浮動小数点が落としどころではないかと
すると、BCD の意義がよくわからないのです
0734デフォルトの名無しさん (アウアウカー Sa2b-gGCH)垢版2018/02/05(月) 12:29:13.25ID:cbvE2oU2a
3進数なら歯切れの良い数なんだけどな・・・
0736デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 20:03:34.68ID:GlpP/XMd0
>すると、BCD の意義がよくわからないのです

科学技術計算は浮動小数点でいいが、リアルなお金の計算とかでは10進で計算するのがディフォールト
2進と10進では結果が大幅にちやうから。
ま俺の財産なら誤差0.1円くらいかもしれんが、、
0737デフォルトの名無しさん (スップ Sd3f-qmJt)垢版2018/02/05(月) 21:30:58.83ID:jWi5SYZhd
いま必死に考えてる
昔のCPUは絶対に持っていた機能だ
レジスタが8ビットだとすると、256以上のデータが表現できなくなるけど、そんなことはない
だから何か仕組みがあるはず
プログラマが勝手にこのビットが立ったら2の15乗だとか自由に決めて、8ビビットの重み付けをしてるんだとおもう
あとは計算と結果の表現次第だ
指数法則を使えばできそうだけど、これはなかなか面白い課題だね
0738愛恥人垢版2018/02/05(月) 21:36:06.47
ググれよw
0740デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/05(月) 22:00:56.57ID:atUOEIz80
ゼッパチ(笑)
0747デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/05(月) 23:40:30.69ID:atUOEIz80
Reno版のカーネルのソース読んだとき、
VAXのHDDのドライバが分かりやすくてビビった。
メモリマップドI/Oだた。
0749デフォルトの名無しさん (アークセー Sxcb-/IWG)垢版2018/02/06(火) 00:31:17.27ID:WaNrl6wPx
とりあえず本買ってきて読んでいます。3月末ぐらいにはなんとか結果を出したい・・・
0750デフォルトの名無しさん (アークセー Sxcb-/IWG)垢版2018/02/06(火) 00:37:33.65ID:WaNrl6wPx
とりあえずプログラム初心者だが将来有望な頭脳をもった奴を
2人ほど用意した・・・。
0751デフォルトの名無しさん (ワッチョイ 179f-gGCH)垢版2018/02/06(火) 01:36:11.08ID:FVXSsnAc0
>>742
うーん。最上位ビット使えばできるのでは?
まあしかしアセンブラ使った方が効率はいいだろうな。
CPU違ったら動かんけど。
0752デフォルトの名無しさん (ワッチョイ 179f-gGCH)垢版2018/02/06(火) 01:43:46.77ID:FVXSsnAc0
>>748
滅多に使わない。
0753デフォルトの名無しさん垢版2018/02/06(火) 04:19:56.87
>>748
実ソースではvoidポインタしか見たことない
0754デフォルトの名無しさん (エムゾネ 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
0755デフォルトの名無しさん (ワッチョイ 9793-d/ts)垢版2018/02/06(火) 17:23:11.09ID:f2WbB5Mw0
>>754 議論の本質から逸れた混ぜ返しになるけど、
BCD が 二進化十進数 binary coded decimal の略なら、
3進数の場合は binary coded tricimal で BCT ではないかしら。

3進数が tricimal なのか、ちょいと自信がないけど、
とりあえずネット検索でヒットする言葉みたい。
0759755 (ワッチョイ 9793-d/ts)垢版2018/02/06(火) 19:06:57.63ID:f2WbB5Mw0
>>756
訂正ありがとう。確かに ternary が辞書に載ってる言葉みたいね。
triple あたりからの類推では到達できない綴りだったわ。
これからは注意して取り締まることにする。
0760デフォルトの名無しさん (ワッチョイ 57b3-iQWu)垢版2018/02/06(火) 19:11:28.74ID:Yrf3PZ3s0
取り締まり頑張ってね
0766デフォルトの名無しさん垢版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進数使うメリットあんの?
0769デフォルトの名無しさん (ワッチョイ d72b-Mu/V)垢版2018/02/07(水) 09:10:28.34ID:VNvdmR7o0
このあたりのソース揃ってるソフトでC言語の勉強してるわ。
スカパーの録画環境も構築できるし。
https://www65.atwiki.jp/psky/
0770恥人垢版2018/02/07(水) 09:17:15.35
へえ、おもしろ
0772デフォルトの名無しさん (スップ Sd3f-27VS)垢版2018/02/07(水) 17:58:56.36ID:jSJcfZwQd
const char ○○とchar ○○について。
○○はフォルダ名。

後者ではエラー、前者ではエラーにならない場合何が考えられますか?
CとC++だと記述が違うとかあります?
0773デフォルトの名無しさん (ワッチョイ d78a-uppE)垢版2018/02/07(水) 18:21:27.23ID:nJAlkrj20
恐らく何らかの標準関数の引数にでもした時にエラーが発生したんだろうけど、具体的なことが分からないので何とも言えない
constについてはCとC++では微妙に扱いが違う
0782デフォルトの名無しさん (ワッチョイ 97b3-C7gl)垢版2018/02/07(水) 19:49:53.17ID:I0UlpN+80
const 無しのポインタ変数にリテラル文字列を与えると

C++だと (リテラル文字列の)指し先を書き換える気あるのかボケェ と警告やエラーになるですよ

Cは過去のコードの互換性の為に黙ってることが多い
(けどオプションで警告したりエラーにしたりするんだっけか?)
0784デフォルトの名無しさん (ワッチョイ 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

{
0786デフォルトの名無しさん (ワッチョイ 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
0787786 (ワッチョイ 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
0788デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/08(木) 04:04:45.98ID:FQ2Hecmn0
>>779
system()ではなくpopen()使うと楽だ。
0792デフォルトの名無しさん (スップ Sdc2-Rwrx)垢版2018/02/08(木) 08:12:52.25ID:JMUgsKdMd
>>790
すまねぇ
正確に言うとcurlだった
実行ファイルってのを言いたかったんだけど紛らわしかったわ....

>>791
コマンドラインで実行をコード上からして
その結果をメモリに書き込みたいって感じ

int main()

char* buff[1024]
execv(curl..........)


子プロセス作成とかは書いてないけどこのexecvの結果をbuffにいれたい
0793デフォルトの名無しさん (ワッチョイ 4193-jcwv)垢版2018/02/08(木) 08:29:27.70ID:Mx6kxOEl0
>>779>>789 は同じ投稿者なのかな?

「curl.exeをsystemコールする」という文の意味は、
実際には curl.exe でなく /usr/bin/curl かどこかの Linux のコマンド、
systemコールと言っても system() 関数でなく execv() 関数で呼ぶ、
という条件でいいの?
0795デフォルトの名無しさん (ワッチョイ 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;
}
0796デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/08(木) 09:25:00.98ID:Bk9SeRO9a
自分で fork, exec するなら pipe() 作って dup() で繋げ。
やり方はUNIXやLinuxのシステムコールに関する入門書みたいなのがあれば必ず書いてあると思うのでそういうのを見るか、またはググれば世界中で解説やサンプルプログラムが見つかると思う。
かなり基本的な事だ。
0797795 (ワッチョイ 4193-jcwv)垢版2018/02/08(木) 09:25:52.35ID:Mx6kxOEl0
急造のデッチ上げだけど、こんな感じかな。

要点は、名前なしパイプを作って標準入出力と差し替える。
外部コマンドの標準出力はパイプを通って出ていく、
呼び出した側は標準入力を読むとパイプから入ってくる。

32行制限に収めるために行が詰めたら見にくいね。
0798デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/08(木) 09:26:09.44ID:Bk9SeRO9a
などと書いている最中に真上にサンプルプログラム出現w
0800デフォルトの名無しさん (ワッチョイ 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]); // 使用済みパイプの入力を閉じる
0804愛恥人垢版2018/02/08(木) 22:40:11.36
消えてる(>_<)
0807恥人垢版2018/02/08(木) 23:03:59.16
どういう意味?(´・ω・`)
0809恥人垢版2018/02/08(木) 23:17:16.32
>>808
OSのソースコードはないじゃん(´・ω・`)
0811恥人垢版2018/02/08(木) 23:57:44.62
>>810
気づかなかった(´・ω・`)
0819デフォルトの名無しさん (ワッチョイ 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)。しかしこの方法はループでもないのにループを書くという何か不自然なものになる。
0820デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/09(金) 22:55:50.14ID:nN2BoaGY0
>>817
うう。かぶった。リロード忘れてた。
0821デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/09(金) 23:00:38.39ID:nN2BoaGY0
>>818
C言語の場合は同じような事をする場合はgotoの方が可読性高いと思うけどなあ。とにかく間すっ飛ばして使ったリソース開放して即リターンしたいわけだし。
0824デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/10(土) 00:06:47.82ID:l9ZzjyKP0
>>823
ああ。do while で 0 で抜けるようにするのでもできるか。
まあしかし goto 使わないならそんな風にするしかないよな。
0829デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)垢版2018/02/10(土) 05:56:43.86ID:1vRRPdaia
break 1 とか
break 2 とかで
抜ける {} の段数指定できない仕様が糞
0831デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)垢版2018/02/10(土) 06:14:37.72ID:1vRRPdaia
do{}while(0)は普通に使うやろ
特にマクロで
どこが変態やねん!
0832デフォルトの名無しさん垢版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;
0833デフォルトの名無しさん (ワッチョイ 4193-jcwv)垢版2018/02/10(土) 08:04:56.81ID:aodeHLjm0
O'ReillyのLinuxデバイスドライバ本では
初期化の失敗時、一部分だけ確保できたリソース群を
確保時とは逆順に行儀良く解放するのにgotoを使う方法を勧めてるね。

そういう具合にgotoが出てくる場面が明確ならば
必ずしもgotoが可読性を落とす、とは言えないじゃろ。
0836デフォルトの名無しさん (ワッチョイ e1a1-nHV3)垢版2018/02/10(土) 08:54:55.97ID:DmmJmf560
goto を使わないようにというのは
昔、ダイクストラ大先生が「gotoは有害だ!」
とのたまわれたので、それ以後gotoを使わない
構造化プログラミングというのが流行ってFortranなども
Fortran 77で一部構造化されたりしてきたという経緯が
あります。

たしかに、昔のBASICプログラムはやたらgoto が多くて
まさにスパゲッティプログラムで論理を追うのに苦労しました。

最近のBasis(たとえばFree Basic)などは構造化されていて
使いやすく感じます。

Cもgotoを使わなくて書けるのですから、やむおえない
(gotoを使わなければ、どうしようもない)場合場合以外は
使わないにこしたことはないと思います。
0837デフォルトの名無しさん (ワッチョイ 6ed7-jA6l)垢版2018/02/10(土) 09:02:56.46ID:cpx12OHt0
ダウト
昔のBASICはGOTO文のせいで読みづらいんじゃない
最大のネックは変数が全てグローバルであること
次いでFOR文のNEXTの自由度が高すぎることだ
メインフレーム脳でPCを語るジジイどもが
行番号を批判していたが的外れもいいとこ
0843デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/10(土) 11:35:32.34ID:4W9TXsf60
>>818
初心者…gotoを使いまくる
中級者…gotoを一切使わない
上級者…適材適所を覚える
0844デフォルトの名無しさん (ワイモマー MMa5-O4V4)垢版2018/02/10(土) 12:01:34.42ID:s8Yuzl0xM
>>818
内部的には全部goto(継続とか)だって事を理解すれば、適切な使い方が出来るようになる。
0845デフォルトの名無しさん (アークセー Sxf1-c21i)垢版2018/02/10(土) 12:09:51.29ID:BZD8vxg8x
ドラクエもテトリスもファイナルファンタジーも全部
C言語で作っているのですか?ふと疑問に思いました。
0847デフォルトの名無しさん (ワッチョイ 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が色々屋上屋を架しているのも事実だね。
0850デフォルトの名無しさん (オッペケ Srf1-5OAx)垢版2018/02/10(土) 14:35:35.79ID:hk3lMPpyr
>>836
「gotoは有害!」と言われるそのgotoは昔のBASICみたいな、別のサブルーチンの中に無節操にジャンプできる機能のことだったんじゃないかと思われる。
関数の外に飛べないgotoなら、関数の行数が少なければさして問題じゃない。
0852デフォルトの名無しさん垢版2018/02/10(土) 15:41:31.33
こんな時代だからこそあえてmain関数にすべてを詰め込むプログラミングスタイルを確立していきたい
0853デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/10(土) 15:42:18.37ID:l9ZzjyKP0
あー。別サブルーチンにgotoあったねえ。

6502アセンブラで書かれた Apple ][ のモニタプログラムにもそういうの結構あって当時すげえとか思ったが、無理矢理2KBのROMに押し込むための苦肉の策だったんだよな。
当時はメモリが高価で少ないのが当たり前だったから何でもかんでもトリッキーな方法使って小さくしてた。
0854デフォルトの名無しさん (ワッチョイ 0676-3MxQ)垢版2018/02/10(土) 15:45:49.28ID:jClKPuF30
long_jump
0855デフォルトの名無しさん (ワッチョイ 319f-R9JW)垢版2018/02/10(土) 15:47:06.49ID:l9ZzjyKP0
>>851
試してみ。お前のコンパイラは何か違うかも知れない。
ただし出来た場合、それをC言語と読んで良いのかどうか悩ましいところだ。
それと、一体どのようなコードを作っているのかが気になる所だな。

>>852
変なことに挑戦するなよw
Cだとそれできちゃうんだからw
0858850 (オッペケ Srf1-5OAx)垢版2018/02/10(土) 19:34:42.47ID:hk3lMPpyr
>>851
ああ、>>850 で書いたのはもちろんC言語のgotoじゃない。
そもそもgotoはよくないという主張が叫ばれたのが1960年代、C言語ができたのは1972年らしいんだから。
0859デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/10(土) 21:42:11.48ID:YQ6eMVvy0
ガチの初心者で申し訳ないんやが...。
unsigned char型変数には8ビットしか入らんはずやのに
0〜255の数値が入るのはなんでなんや?
8ビットを二進数変換すると11111111でこれを10進数に変換すると255になるのは分かるんやが
なぜ255の半角が入るのかがわからんのや。

#質問するとこ、ここで合ってるよな?
0861デフォルトの名無しさん垢版2018/02/10(土) 21:48:30.15
>>859
うん、”255”の半角を入れるなら終端文字まで含めると4バイト必要だね
‘2’(0x32) ‘5’(0x35) ‘5’(0x35) ‘¥0’(0x00)
0863デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/10(土) 22:17:10.51ID:4W9TXsf60
>>861
小人さんがASCIIコードに変換してる
0864デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/10(土) 22:18:39.30ID:YQ6eMVvy0
すまん、いま投稿しようと思ったら、クソ規制に弾かれたわ
だから詳細が書けない。
0865デフォルトの名無しさん垢版2018/02/10(土) 22:19:04.81
たぶんこんな感じ

2進数で格納すると8文字(11111111)
16進数で格納すると2文字(FF)
10進数で格納すると3文字(255)分の領域が必要なはず

なのになんで10進数の数値255を
1文字分の領域(unsigned char型変数)に格納できるの???
0866デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/10(土) 22:23:07.55ID:YQ6eMVvy0
>>865
だいたいこんな感じ。
0868デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/10(土) 22:26:25.15ID:YQ6eMVvy0
簡単に書くわ

signed char var = 255;

↑これが何故格納できるのかわからない。
0869デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/10(土) 22:31:38.43ID:4W9TXsf60
>>868
さっきまでunsigned言うてたのに…
0871デフォルトの名無しさん垢版2018/02/10(土) 22:44:47.34
>>868
signed charでは-1を意味しているけど
中身は同じ8bit(2進数で表すと11111111)だから格納はできる
0872デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/10(土) 23:11:03.86ID:YQ6eMVvy0
>>869
ごめん、「un」を書き忘れてた。
0873デフォルトの名無しさん (ワッチョイ 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

指折るなりしてちょっと考えてみよう
0875デフォルトの名無しさん (ワッチョイ 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
にお書きになっていますが。

この論文は検索すれ読めますよ。
0876デフォルトの名無しさん (ワッチョイ 319f-jA6l)垢版2018/02/11(日) 00:43:28.76ID:B0DbdRYG0
>>868
数値としての255だからだよ。コンパイラが"255"の文字の並びを見て数値の255として扱って8bitのvarを初期化するコードを作ってくれるの。
0877恥人!id:ignore (ワッチョイ e175-80pK)垢版2018/02/11(日) 00:43:51.30ID:/hLQhQLG0
コンディダードってなんだよ
0878デフォルトの名無しさん (ワッチョイ 319f-jA6l)垢版2018/02/11(日) 00:45:40.11ID:B0DbdRYG0
知らない
0879デフォルトの名無しさん (ワッチョイ 4193-jcwv)垢版2018/02/11(日) 07:01:25.77ID:o7b316W00
>>877 そんなのネットですぐ分かるだろ、と「コンディダード」を検索したら
5ちゃんねるの「C言語なら俺に聞け 144」て掲示板の投稿877番がトップに出た。

最新のネット用語で言うところの「モルゲッソヨ」みたいな感じね。
0880デフォルトの名無しさん (ワッチョイ 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
0881デフォルトの名無しさん (ワッチョイ 6e24-yPCn)垢版2018/02/11(日) 11:51:21.08ID:90c1E0800
>>876
なるほど、数値だから格納できるのか。
仕組みに関しては初心者が触れたら戻ってこれなさそうだから
「そういう物」って感じに覚えておくよ。
0883デフォルトの名無しさん (アウアウエー Sa4a-W92t)垢版2018/02/11(日) 12:57:51.12ID:aLeqVhz7a
test
0884デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/11(日) 16:12:35.10ID:QA9xO9uU0
>>882
テストすんな
0885デフォルトの名無しさん (ワッチョイ ddc3-saCW)垢版2018/02/11(日) 16:45:51.58ID:Iux9XEWP0
CとC++、C#の違いすら把握していない初心者だけど
構造体っていうのはC++にのみあってCにはない概念なの?
ポインタはCにもあるよね?
0886デフォルトの名無しさん (アウアウカー Sa69-DUI6)垢版2018/02/11(日) 17:06:15.27ID:HsXbtZ8Ra
>>832
これはヒドい
0887デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/11(日) 17:27:21.28ID:QA9xO9uU0
>>885
あるね
0889デフォルトの名無しさん垢版2018/02/11(日) 17:58:53.20
>>886
そうかな?
MISRA-Cの一つの出口の原則を守りつつ、ネストもあまり深くならない。
問題と言えば、一瞥して「これはヒドい」と思う人がいるのと、retの評価コストと、retの使い方に一貫性を持たせないとバグを生むリスクくらいじゃないかな?
0890デフォルトの名無しさん (ワッチョイ ddc3-saCW)垢版2018/02/11(日) 22:36:44.98ID:Iux9XEWP0
簡単なSTGが作れるようになったが次は何を勉強したらいいんだ?
まだまだわからないことだらけだ
指定子だとかポイントだとかアロー演算子だとかまだまだ
0891デフォルトの名無しさん (ワッチョイ 42d2-e8Wn)垢版2018/02/12(月) 03:18:10.68ID:t1XkZnCw0
>>890
自分が作りたいものがないんならやる意味ないよ
0894デフォルトの名無しさん (ワッチョイ ddc3-saCW)垢版2018/02/12(月) 10:57:03.46ID:sATukCOa0
>>891
そんな意味なんて人それぞれやん…
バカじゃねえの
0904デフォルトの名無しさん (ワッチョイ ed23-3MxQ)垢版2018/02/12(月) 14:53:57.93ID:5RLElXD90
マジでわからんのか?
小学生?
0909デフォルトの名無しさん (ワッチョイ 319f-jA6l)垢版2018/02/12(月) 17:13:21.80ID:gfcybQxo0
>>892
問題の意味がわからない。
0911デフォルトの名無しさん (ワッチョイ 2eea-Db5I)垢版2018/02/12(月) 17:23:25.54ID:uipfUTPJ0
複数の条件 (xi,yi,ci) ci =白か黒 と 市松模様の大きさ K

KxK の市松模様を任意の位相でプロットし(=(周期2Kの中で)位相を適当に振ったとき)
与えられた条件をできる限り満たしたい。 変数は位相
解で要求されているのは満たした条件数
0915デフォルトの名無しさん垢版2018/02/12(月) 17:52:57.98
どうやるの?
パターンを全種類生成してから条件に合わないものを弾いていくの?
数学苦手だから分からない><
0917デフォルトの名無しさん (ワッチョイ 319f-jA6l)垢版2018/02/12(月) 17:55:21.96ID:gfcybQxo0
あー。なんとなくわかってきたぞ。白か黒かに塗りたいのはその指定された座標の1マスだけということか。
その希望を実現するためのマス目を求めるってこと?
でもその出力例ってなんなの?数字一つしか出力されてないけど。なんの値が出力されてるの?マス目の一辺の長さ?
0921デフォルトの名無しさん垢版2018/02/12(月) 18:25:06.20
N=100000、K=1000の場合、考え得る模様のパターン数は幾つになるのかな?
全部計算するのに何分かかる?
生成パターンを保存するためのメモリ容量は何MB必要?
0925デフォルトの名無しさん (ワッチョイ 4193-jcwv)垢版2018/02/12(月) 19:25:10.56ID:EAmFNd0B0
確かにパズルの解き方の部分と、Cによる実現は別々に考えた方が良さそう。

それにしても問題文が酷いね。
たぶん元は外国語で、サイエンティフィック・アメリカン誌の
読者への問題コーナーみたいなノリの文章だったんだろうけど、
日本人向けにはまるまる再構成すべきだわ。
0929デフォルトの名無しさん (ワッチョイ 22f9-YiuZ)垢版2018/02/14(水) 07:54:39.17ID:TsEGZMPg0
>>927
そのサイトは知らないけど、解説読んだり課題解くだけじゃ大して進歩しないから、とにかく自分でコード書いて悩んで調べて考えて乗り越えるのを繰り返してみたら。やってるうちに自分が理解していないのはどこか、自分がやりたいことに必要な物が何か分かると思う。
あと、こういうことやりたいのにこんなめんどくさい方法しかないの?って思うようなことは既に上手いやり方が確立してたりするから、そういうのも一度自分で経験してから身につけると理解が深まると思うよ。
0930デフォルトの名無しさん (ワッチョイ 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言語プログラムとは何かを各人で考察する

                                ↓

                              神の誕生
0935デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/14(水) 12:09:50.36ID:1w/9kxzBa
>>933
その場合は呼んでくれる人が居なくても最初から神に確定してるのでどうでもよい。

まあしかし夢の中では夢の世界を作ったのは自分なのに、その夢の中の登場人物は特に崇めてくれないのと同様に、本物の神は普通は崇められていない。
0939デフォルトの名無しさん (ガックシ 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
0941デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/14(水) 13:43:36.53ID:QwasDp2Da
>>940
10進数に直した時に小数点以下20桁ないからそうなるだけでは?
どちらも本当はだめなんだけどビット数の都合でうまいこと10進で丸まる事があるだけだと思うが。
0942デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/14(水) 13:46:59.31ID:QwasDp2Da
>>940
これと同じなら10進数では小数点以下は15桁だ。
http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html
0944デフォルトの名無しさん (ワッチョイ 2e80-2I1n)垢版2018/02/14(水) 16:52:06.55ID:gwupYb1h0
分数なら、Ruby の、Rational とか

浮動小数点は、常に誤差があるから、
正確な値は表せないから、== で比較もできない

また、式の順番を入れ替えたり、コンパイル時・実行時で、
同じ式でも値が異なるとか、とにかく実装依存
0948デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)垢版2018/02/14(水) 17:55:57.41ID:rMSOrK/Ha
OSとかCPUによって違う
0951デフォルトの名無しさん (ワッチョイ 4193-jcwv)垢版2018/02/14(水) 20:13:10.91ID:fTssTv6G0
malloc() の原理というか基礎的な実装方法は
『プログラミング言語C』で1章割いてた記憶がある。
まるまる1章じゃなかったかも知れんけど。

あとは「標準ライブラリのmalloc()は遅くて使い物にならん」と言って
でかいメモリブロックをひとつだけシステムから借り受けた後、
小分け部分は自前で管理する実装がネットのあちこちで紹介されてる。
TLSF とかいうアルゴリズム。
0953デフォルトの名無しさん (アウアウカー Sa69-OLJ2)垢版2018/02/14(水) 20:46:48.95ID:vhVaHeOTa
>>947
その辺は glibc とかがソース公開してるんじゃないかな。

でもそんなに難しくないよ。
ある程度わかってくると自作もできる筈。
既にあるので作る意味ないけどな。
0955デフォルトの名無しさん (ワッチョイ 99b3-7Au1)垢版2018/02/14(水) 22:35:16.23ID:JQ2Po4sY0
若者はinetdのソースを是非読んで欲しい。
貧乏くさくて涙ちょちょぎれるぞ。
0957デフォルトの名無しさん (ワッチョイ bf10-NEPM)垢版2018/02/17(土) 20:16:03.04ID:SegumL7e0
最近組み込みやデバイスドライバでもC++使われるのが増えてきたけど、Cの未来ってあるのかな?
0958デフォルトの名無しさん (ワッチョイ 579f-T3WU)垢版2018/02/17(土) 20:42:14.56ID:EWYfJ6l00
縮小傾向はあるのでは?しかし、UNIX系OSが根強いから中々なくならんだろうけどね。
特に Linux が組み込み関係や Android で物凄く広まってほぼ定着してしまったからな。
0960デフォルトの名無しさん垢版2018/02/17(土) 23:27:11.62
C以外見たことない
0961デフォルトの名無しさん (ワッチョイ 178a-GcT2)垢版2018/02/17(土) 23:43:15.75ID:NJ9Pxjnh0
例えば組み込みLinuxとして有名なRaspbianではPython、またAndroidではJavaが主流
直接カーネルでも弄るような特殊な事例を除けば、C言語でのアプリ開発なんか殆ど誰も行なわないだろ
0962デフォルトの名無しさん (ワッチョイ 9f60-qi38)垢版2018/02/17(土) 23:43:40.47ID:I0BNlfaX0
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

つまりこういうことだ: C を選ぶのは、唯一のまともな選択だ。
ぼくは C よりも C++ をプロジェクトに使いたがるようなプログラマーは、みな
*本当に* ムカつかせておきたいようなプログラマーだという結論に達した。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
0965デフォルトの名無しさん (ワッチョイ 178a-h07R)垢版2018/02/18(日) 07:51:17.74ID:fDbSCHET0
>>963
そういった分野ではOS自体が必要無いしな
ファイルシステムやコンソール入出力が存在しない場合も多い
メモリと入出力ポートさえ直接制御出来さえすればいい
アセンブラに比べればC言語の方が主流ではある
0966デフォルトの名無しさん (ワッチョイ d793-MfWd)垢版2018/02/18(日) 07:55:15.82ID:G+NN3epc0
「組み込み」て言葉を、プアなハードウェア環境をギリギリ限界まで使う、と
寸法は小さくても目的には十分以上の能力を持ったコンピュータ、と
両様の意味で使ってて議論がちぐはぐになってるように感じる。
0970デフォルトの名無しさん (ワッチョイ 579f-+35F)垢版2018/02/18(日) 13:34:14.26ID:oDDrqbus0
>>959
OSそのものがCで書かれている。
0971デフォルトの名無しさん (ワッチョイ 579f-+35F)垢版2018/02/18(日) 13:35:54.27ID:oDDrqbus0
>>961
ああ。アプリ開発ではCはほとんど使われてないだろうな。
0973デフォルトの名無しさん (ワッチョイ 579f-+35F)垢版2018/02/18(日) 13:46:35.49ID:oDDrqbus0
>>962
Linusと書いてなくても、元の英語のままでなくても内容からしてLinusが書いたとわかってしまうなw
0975デフォルトの名無しさん (ワッチョイ 579f-+35F)垢版2018/02/18(日) 14:03:17.66ID:oDDrqbus0
>>972
それはOSとは関係ないがLinuxの場合組み込み用のボードでよく使われている関係上使われる率は今のところ高いんじゃないかな。
Cだと最終的に作られる実行形式のバイナリが小さいというのもあるしね。
0977デフォルトの名無しさん (ワッチョイ 579f-+35F)垢版2018/02/18(日) 14:17:13.11ID:oDDrqbus0
まあしかしソースが公開されていて誰でも開発に参加できるOSがCで書かれているとなるとそのOSが使われ続ける限り最低でもそこでCが使われ続けるということだからCは消えないだろう。

俺の予想では別の言語をベースにして作った互換性のあるOSが爆発的に流行してLinuxやUNIX系OSを誰も使わなくなった時にCが完全に廃れると思う。なので100年以上先なのではないかな。
(途中time()の都合で改造が入るだろうが、それが元でOSごと全部廃れることはないと思う)。
0980デフォルトの名無しさん (アウウィフ FF9b-OKH7)垢版2018/02/18(日) 17:49:25.56ID:AoWf7ouiF
標準じゃないだけで
載せたければいくらでも載せられる
0992デフォルトの名無しさん (ワッチョイ ff3f-T3WU)垢版2018/02/19(月) 16:02:25.62ID:wBFQMwB50
ASICはApprication Specific ICというだけで、フルカスタムという場合もある
ただし、それだけが理由ではない
仮に自分とこがフルカスタムでも、それはIntelと同じ土俵に立ったに過ぎない
開発費を同等以上にかけられるとは限らないがね
0997デフォルトの名無しさん (ワッチョイ d7f2-T3WU)垢版2018/02/19(月) 21:54:17.96ID:+XovCnpU0
まさか、ASICは論理合成しないとでも思ってるのか。

>下手なロジック回路より速いんだぜ。

これも意味わからん。FPGAはロジック回路じゃないとでも?
それとも、いまどき「下手なロジック回路」をASICで作るとでも?
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 2時間 58分 23秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況