【初心者歓迎】C/C++室 Ver.105【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0601デフォルトの名無しさん
垢版 |
2020/02/03(月) 17:13:32.87ID:Si1aHG26
ビッグオーが変わるようなのはアルゴリズムの違いだろうけど
ビッグオーがそのままで計算量だけが変わるのはどっちとも言いがたい
0602デフォルトの名無しさん
垢版 |
2020/02/03(月) 17:33:31.72ID:MWPuXKWI
>>600
より除算回数の少ないアルゴリズムを選択することは現状のCPUは除算が遅いことに対応するわけだからHW依存と言えなくもない
この主張に対してそういった選択はアルゴリズムでもなければオーダーもかわらないと反論しているのですか?
0604デフォルトの名無しさん
垢版 |
2020/02/03(月) 23:33:51.85ID:e9E2NTEb
計算量のオーダーが変わらないアルゴリズム的最適化なんていくらでもあるよ
0605デフォルトの名無しさん
垢版 |
2020/02/04(火) 00:20:58.43ID:mQynHgib
有限の並列度の並列化ってオーダー変わらないけどワザワザ並列化可能なアルゴリズム使うよね
0607デフォルトの名無しさん
垢版 |
2020/02/04(火) 00:37:14.93ID:mQynHgib
と言うか最適なオーダーのアルゴリズムなんて殆んど既知だから、オーダー変わるような最適化ってあんまりないよね
0608デフォルトの名無しさん
垢版 |
2020/02/04(火) 12:35:39.06ID:SyKO2BA6
車輪の再発明は良く批判されるけど
素数を列挙するプログラムなんて
既に判ってる素数はテーブル参照するのが最適なのに
なんで毎回計算して地球環境破壊に貢献してる訳?
0612デフォルトの名無しさん
垢版 |
2020/02/04(火) 16:52:46.33ID:t6zt27Qb
>>608
素数の話はどっから出てきた?
アルゴリズムの例として挙げたのかも知れんが、
別のスレッドで最近見た気のする話題なので投稿する場を間違えたのかと。

実用プログラムでは「車輪の再発明」は上手いやり方じゃないけど、
低レベルの部分から組み上げたほうが理解が深まるって面はあるでしょ。
0618デフォルトの名無しさん
垢版 |
2020/02/05(水) 13:53:11.70ID:rzfrqein
バイナリデータを、文字列に変換して保持しようとした場合、素直に16進数表記にするのがよい?
データ量倍になるけど
0621デフォルトの名無しさん
垢版 |
2020/02/05(水) 14:32:42.49ID:rzfrqein
>>620
あーそんなのありましたな
ちょっとググったらライブラリも出てきたしよさそう
ありがとうございます
0623デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:07:18.33ID:ImPcpEtv
それでいいなら%Xで出力するのでも良い気がするね
base64にすると単純な16進表記よりデータ量増えるし、%Xなら余分なライブラリもいらないし
まぁどっちでもいいんだろうけど
0624デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:08:34.43ID:ImPcpEtv
嘘言ったわ、base64は6ビットごとに1文字だからデータはこっちのほうが小さいか
0625デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:54:58.67ID:2rKdW1Ec
8bit→HEX2桁→2倍
8bit→Base64→4/3倍
やろ
一定数以上桁が必要なのでpaddingとかあるし100%ではないが
0626デフォルトの名無しさん
垢版 |
2020/02/05(水) 18:52:50.41ID:hYuejzNd
base64なんかビットシフトとテーブルだけで簡単に実装できるし依存ライブラリ増やす必要もないのでは
0628デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:23:50.17ID:2rKdW1Ec
データ量にもよるけど
"\x00\x00\x00\x00..." が一番楽じゃね
0629デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:35:11.50ID:hYuejzNd
何のためにテキストに変換したいのかがわからんとなんとも言えんな
目的によって使える文字種も違うからな
0631デフォルトの名無しさん
垢版 |
2020/02/05(水) 23:15:38.55ID:NEouxGwD
Base64 は、HTML でもよく使う

Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める

<img src="data:image/png;base64,xxxxx..." />
0632デフォルトの名無しさん
垢版 |
2020/02/06(木) 00:01:41.26ID:7WdfZf7H
base64って7bit通信路通すためのもんでしょ?
textにするならヒューマンリーダブルにするのが無難だと思うけど
そうじゃなけりゃバイナリでいいじゃん
と思った
まぁ好きにしなよ
0637デフォルトの名無しさん
垢版 |
2020/02/06(木) 10:19:44.96ID:s0z6ZqT0
テキストファイルを結合してishでデコードしてえっちなMAGファイルを見てた人は手をあげなさい
0638デフォルトの名無しさん
垢版 |
2020/02/06(木) 13:08:45.50ID:sNihMBVC
ishはBase64と違って誤り訂正あるやん?
0640デフォルトの名無しさん
垢版 |
2020/02/07(金) 02:44:46.72ID:FDFOp562
boost::serializationがお手軽にシリアライズできて便利だなと使いまくってたら、
map系コンテナがあると一気に性能落ちるっぽいんですが、これって当たり前ですかね?
protocol buffersなどの他のシリアライザに替えて解決するものでもなさそうだし、どうしたもんかな…
0641デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:04:33.34ID:j3f+aFgv
>>637
here!
0642デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:15:10.05ID:0A6dyGR7
独学で組み込みやりたいんだが…
0643デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:40:38.84ID:PWhN+bN7
圧縮してからBase64すればbitチェックも出来てサイズも減って一石二鳥
0648デフォルトの名無しさん
垢版 |
2020/02/07(金) 12:47:59.75ID:0A6dyGR7
Arduinoでいい?
0651デフォルトの名無しさん
垢版 |
2020/02/07(金) 13:31:27.53ID:0A6dyGR7
制御的な知識は多少あるから今更Lチカやってもなぁって感じだ
0653デフォルトの名無しさん
垢版 |
2020/02/07(金) 13:51:42.69ID:PWhN+bN7
条件後出しするなとあれほど
板チ
0654デフォルトの名無しさん
垢版 |
2020/02/07(金) 14:39:32.66ID:aI41PDC9
>>642
SPRESENSE、Arduinoよりスペックが高いからあまり制約を考えずに触れるからいいよ
0655デフォルトの名無しさん
垢版 |
2020/02/07(金) 18:25:14.52ID:tbpxydmI
組み込みって難しそうなのに年収は総じて低めだよね
オラオラ系Webプログラマとかのほうがマシだったりするし
なんか世知辛い
0656デフォルトの名無しさん
垢版 |
2020/02/07(金) 20:39:09.61ID:Dpv8aBJv
組み込みで出来る人は多分大企業メーカーのR&Dに転職してっちゃうんじゃないかな。
なんとなくのイメージだけど、組み込みプログラミングが必要な製品の品質管理を考えると、
請負組み込みの会社に開発を頼める範囲ってごく簡単な部分に限られそうだから、
単価が低い仕事が多くなっちゃうのかも。
0658デフォルトの名無しさん
垢版 |
2020/02/08(土) 00:46:23.22ID:Q7LgS8OA
オラオラ系というよりウェーイ系というほうが表現が適切だろう
ホームページ見ただけでウェーイって叫びながら意識高い開発してる姿が容易に想像できる
0660デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:16:27.70ID:v1IBJgnW
京セラも陶器だったんやな
0661デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:11:48.90ID:poOKFhcK
そもそもここで質問するのが適切か分からないのですが
とりあえずC++っぽいので分かる方がいたら教えてください。

とあるライブラリのビルドスクリプトを叩いたところ以下のようなエラーが出ました。

```
略/filesystem.hpp:784:13: error: no member named 'make_absolute' in 'std::__1::__fs::filesystem::path'


```

ファイル名からC++のコンパイルに失敗しているようなのでした。
普段は別の言語を触っておりC++は触ったことがありません。
調べた限り、ヘッダの二重読み込みでエラーになっているとのことでしたが
該当の `filesystem.hpp` には #pragma once が宣言されています。

環境はMacOS 10.15.3で、とりあえず途中でgccを入れ直したりしましたがやはり同じところでコケます。
Mac上で #pragma once が機能するように環境を設定するにはどうしたら良いでしょうか。

よろしくお願い致します。
0662661
垢版 |
2020/02/11(火) 18:13:22.88ID:poOKFhcK
貼り付けるエラー文言間違い得ました。

```
略/filesystem.hpp:52:9: error: redefinition of 'path'


```

です。
0663デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:30:48.12ID:GpQNLMm4
>>661-662
とあるライブラリとか言わずにそのライブラリを示して。
初心者はどんな情報が必要か判断する能力がないので、情報を選別してはいかん。
情報を小出しにされるとイライラゲージが上昇しやすいから、
状況を再現可能な情報を提示することを心掛けて。
0664デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:38:14.46ID:poOKFhcK
>> 663

すみません、おっしゃる通りですね。
このライブラリのインストールになります。

github.com/WonderMediaProductions/Maya2glTF
0666デフォルトの名無しさん
垢版 |
2020/02/26(水) 11:09:35.39ID:wiEfavJ1
見ないで答えるけど
include path の順番がまずいんじゃね
0667デフォルトの名無しさん
垢版 |
2020/02/27(木) 10:57:15.88ID:RXnANkEf
-----sample.h (classAは変更不可)
class A
{ private: virtual void funcX(void) = 0;
 public: void funcY(void);
 public: void funcZ(void);
};
class B : private A {・・・};
-----

このような関係性で
classBでfuncXとfuncY(内部でfuncXを使用)が不要、funcZが必要な場合
funcXをclassBに追加せずに済む方法があればいいのですが
funcXもclassBに追加するしかないですか?
0671デフォルトの名無しさん
垢版 |
2020/02/27(木) 15:19:56.24ID:G6pyHvdg
Icon とか継承したクラス造ろうとしたら protected 観たいなエラー出るのですが
無理やり継承する方法はありますか?
0672デフォルトの名無しさん
垢版 |
2020/02/27(木) 21:56:32.66ID:nCyLO+2A
Ruby では、Forwardable モジュールで、
継承ではなく、包含を使って、インスタンス変数に委譲できる

使えるメソッドも、限定できる。
配列のメソッド中、指定した2つのメソッドだけが使える

@ary = [ ]
def_delegators( :@ary, :push, :pop )
0673デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:15:25.36ID:IR/jNZBp
組み込みプログラマになりたいんだけどオススメの本とかあったら教えてください
0674デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:20:30.25ID:dsi+r0l9
組み込みって言っちゃうと範囲が相当広いと思うんだけど具体的に何か目指してるのとかあるの?
0675デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:22:34.36ID:IR/jNZBp
機械メーカーで製造やってるんどけどいつか組み込みシステムの部署に行きたいのです
0676デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:28:28.18ID:IR/jNZBp
C言語は学生の頃少しやった程度ですが、苦Cや新明解C言語などの本で勉強し直しているところ
0678デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:33:26.60ID:IR/jNZBp
>>677
いきなり難易度が高そうだ…
0679デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:44:47.37ID:R9m18Hk4
>>675
先に異動してしまってそこで学ぶ方がいいのでは?
若いなら可能だよ
おっさんならそもそも実務経験なしのスキルは評価されないと思う
0680デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:05:06.65ID:IR/jNZBp
>>679
29歳は若手ですか?
0681デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:12:49.02ID:R9m18Hk4
>>680
転職で考えればまだポテンシャルで採ってもらえる年齢
まぁ30前半までだと思うけど
企業文化にもよるけど可能性はあるんじゃない?
だめもとでいってみて、ダメでもそれが将来のコネになるかもしれないのだから
情熱あるなら動いてみるのが正解だと思うよ
0682デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:19:52.21ID:IR/jNZBp
>>681
ありがとう。
上司にはいつかは異動したいとは言ってる。後は組み込みやってるところにアピールする必要もあると思うんだ。
だから基礎でもいいから勉強しときたい。
0683デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:24:42.92ID:dsi+r0l9
異動先の想定があるなら異動先の人間に聞くのが一番良いんじゃないかな?
話できる機会を作ってもらえるならポテンシャルやモチベーションを見せるチャンスにもなるし
組み込みって業種や企業で文化がだいぶ違うイメージだから自社内異動想定なら自社に目標合わせるのが一番だと思う
0684デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:29:18.61ID:IR/jNZBp
>>683
聞いたことあるんだけど、プログラミングできなくても設計書読めたらなんとかなりますよーって言われたなぁ。
0686デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:43:07.61ID:dsi+r0l9
>>684
個人的にはプログラミング的なことなんざ実務やってりゃ嫌でも身につくんでそんな気にしない
素養とか基礎知識はあったほうがそりゃいいけどね
どれくらい部署間の関係性が強いかわからんが他部署出身者はその部門のことをケアした提案とかができるからむしろ重宝するくらい
やる気ある人間にやらせたほうが結果的に効率上がるからそういうのは積極的に対応する

まぁとは言っても企業文化次第ではあるけどねー
0687デフォルトの名無しさん
垢版 |
2020/02/28(金) 00:06:09.61ID:bgqQewMR
>>682
勉強するのはもちろん構わない
でもしっかり勉強してから異動とか思ってたら機を逃すから注意ね

上でも言ってるとおり組み込みといっても千差万別で幅広い
組み込みlinuxかRTOSかぐらいは絞らないと
0689デフォルトの名無しさん
垢版 |
2020/02/28(金) 23:31:02.28ID:KhVuQUrV
float型からdouble型にキャストした際に値が変わってしまうのですが、一般にどうやって対処するのでしょうか。
float f4_sample_t =0.0002;
double f8_sample_t = (double)f4_sample_t;
とすると、0.0002を期待するのですが0.000199****となります。

↓のように、してみましたが0.00199**となってしまいました。
f8_sample_t=(double)((uint)(f4_sample_t*10000))/10000;
0690デフォルトの名無しさん
垢版 |
2020/02/28(金) 23:53:01.56ID:bgqQewMR
>>689
簡単に言うと浮動小数の中身は2進数の小数
なのでもともと0.0002を正確に表せない
表示する際に人にわかりやすくするために10進数の小数に変換するが
そのとき何桁まで計算するかで変わってるように見える
0691デフォルトの名無しさん
垢版 |
2020/02/29(土) 00:56:43.52ID:WzbNfV7+
0.0002 は循環小数だなぁ。
十進数ではキリのよい小数でも二進数では正確に表せないのはよくあること。
誤差はあるものだという考えで扱わないといけない。

一般には double の仮数部は 52bit の精度だから、この精度の範囲を超えるような (浮動小数点の) 計算は諦めるしかない。
https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
そんでもって計算の内容次第では精度が失われることがあるから、そこらへんも注意が必要。
https://ja.wikipedia.org/wiki/%E8%AA%A4%E5%B7%AE#%E8%A8%88%E7%AE%97%E8%AA%A4%E5%B7%AE%E3%81%AE%E7%A8%AE%E9%A1%9E
どうやれば出来るという簡単なものではないのでちゃんとした専門書で学ばないといけないと思う。

浮動小数点で計算するのは諦めて速度も諦めるなら
十進小数ライブラリを作るか導入してもいいだろうし、
計算の内容によっては有理数型を導入するとか
まあ出来ることは色々とあるよ。
0694デフォルトの名無しさん
垢版 |
2020/02/29(土) 08:19:49.16ID:WjxTYPok
>>690-693
ありがとうございます。
現時点では理解できてないのですが、厳密に表現出来ない値があるという認識で良いでしょうか。
宣言時にdoubleで0.0002とする場合はその後の積和演算の誤差が問題にならないのですが、こちらの制約上でfloat入力しかできないのでキャストしています。
0695デフォルトの名無しさん
垢版 |
2020/02/29(土) 08:23:33.95ID:a4Xwg1lT
厳密に表現出来ない値があるのは当たり前
floatやdoubleで表現出来る値は有限通りなんだから
0696デフォルトの名無しさん
垢版 |
2020/02/29(土) 08:32:37.79ID:a4Xwg1lT
floatの中身が元々10進数で簡単に表せる数という事がわかってるなら
doubleにするときに単純なキャストではなく
そういう補正を加えれば良い
10進7桁までならdouble精度に復元出来る
0697デフォルトの名無しさん
垢版 |
2020/02/29(土) 14:00:46.61ID:3sltTQiA
>>693
>>689 のは既にfloatの時点で0.0002じゃないんだよなω
0698デフォルトの名無しさん
垢版 |
2020/02/29(土) 17:13:36.11ID:VpO1O9GW
>>694
許容できる誤差の閾値がどうやって決まってんのか謎だけど
0.0002を救いたいなら例えば入力は10000倍しておくという運用にして
doubleにするときに10000で割るとかね
■ このスレッドは過去ログ倉庫に格納されています

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