- 1 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 11:35:36.76 ID:4wggfTwe.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part145 mevius.5ch.net/test/read.cgi/tech/1568362404/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
- 211 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:17:34 ID:GwsQnBsH.net]
- >>191はstaticがついてなければyesで終わる話
それに勝手な前提つけたしていらん押し付けをするからお前らは駄目なんだぞ
- 212 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:28:32 ID:FGS0cB19.net]
- >>207
会話するのが嫌いならわざわざ書き込まなくて良いんだよ
- 213 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:51:04 ID:jE+AmQNT.net]
- ゴミみたいな会話するな
- 214 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火)
]
- [ここ壊れてます]
- 215 名前:16:11:06 ID:FF/Zqwz/.net mailto: https://ideone.com/kprgQF
ちょっと暇だったので、 昔のビットシフトの掛け算と割り算って、 今の技術使ったら爆速になるんじゃないかと思ったのですよ。 で、書いてみたのだけど、知識不足で到達しないんだ。 なんでだろう?? [] - [ここ壊れてます]
- 216 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:15:11.65 ID:fUnM+X7O.net]
- >>202
そのプログラム全体が速度が要求される訳でもなかろう。必要なところだけ必要なぶんだけ高速化しろよ。 速度が要求されない部分も別にわざわざ別の言語で作るメリットがなければC++のままで構わないわけだし。
- 217 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:18:03.80 ID:fUnM+X7O.net]
- >>208
質問者にとっては混乱させられるだけの余分な情報だし、知っている人からすれば当たり前で価値のない情報だし、実のない議論したいだけの無意味な付け足しは要らんよ。
- 218 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:46:50 ID:FF/Zqwz/.net]
- 俺が言いたいのは一つだ。
C言語は超高等言語なので、その前にC++使うのだ!
- 219 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:39:44.76 ID:M+fYb0eE.net]
- >>211
>>203
- 220 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:59:37.88 ID:yLsU10sd.net]
- いやそもそも>>195の前半で解答は終わってるだろ
>>195の後半は余計
- 221 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 18:06:10.26 ID:M+fYb0eE.net]
- >>210
普通の型なら普通にC++で書いた方が良い 定数ならコンパイラが工夫する 普通じゃない型、例えば多倍長でも 1ビットずつシフトして速くなることは無いと思って良い
- 222 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 18:06:14.04 ID:Wuw5jSRm.net]
- >>210
>今の技術使ったら爆速に ならねーよw
- 223 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 18:52:42.91 ID:FF/Zqwz/.net]
- >>217
ならないかー。 コンパイルタイム時に置き換えるから、1サイクルに落ちるものだと・・・。
- 224 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 19:27:14.09 ID:Kb2Sko2q.net]
- 爆速にならなくても1サイクルだろうよ
- 225 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 19:41:24.45 ID:78UVTJ0X.net]
- 1サイクルじゃシフトしか出来ない
- 226 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 19:48:34.46 ID:2UYQ/Noe.net]
- なんか根本的にconstexprを勘違いしてる初心者がよくそういうこと言うけど
定数同士の計算の省略なんか大昔からある最適化だぞ C++03以前を偉そうにデイスってる奴(>>210は別として)最近多いけど、そういうのに限ってこういう基礎が全くわかってない
- 227 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 19:57:12.90 ID:dLX9Z9/K.net]
- constexprの利点はtemplateとif constexprの組み合わせがおすすめだと思うの。
- 228 名前: mailto:sage [2019/11/26(火) 20:04:28.16 ID:eitz3RWA.net]
- >>210
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 多桁長演算の乗算・除算もやってみたかったので書いたものです
- 229 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:23:56.31 ID:78UVTJ0X.net]
- >>218を読まずに>>220を書いた
コンパイル時に解決するなら0サイクルだ
- 230 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:29:02.34 ID:78UVTJ0X.net]
- よく分からない多倍長ライブラリを使うのであれば
当然コンパイル時に解決出来るとは限らない
- 231 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:32:56.90 ID:sE/nea3J.net]
- >>223
多倍長の乗算は筆算の要領で出来るの算数程度の数学で足りるが、 多倍長の除算は、CPUが持っている除算命令を使って行おうとすると 数学的な考える力が必要になる。アルゴリズムは既に有ることはあるはずだが、 丁寧に解説されているわけではないので自分の力で証明できるくらいの 人で無いと難しいと思う。
- 232 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:35:31.27 ID:78UVTJ0X.net]
- >>226
素人が適当な事を言わない方が良いかと
- 233 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:39:17.37 ID:78UVTJ0X.net]
- 多倍長の乗算は、
非常に桁数が少ないときのみ筆算方式 もうちょっと大きいとカラツバ もっと大きいとフーリエ変換 除算はニュートン法が一般的かと もちろん、 特殊な形だと特殊な方法があったりする
- 234 名前: mailto:sage [2019/11/26(火) 20:47:20.16 ID:eitz3RWA.net]
- >>226
それは乗算と除算が逆なのでは? 除算は筆算流しか手はありません、乗算はいろいろなやりかた(カラツバ・FFT)があるようです
- 235 名前: mailto:sage [2019/11/26(火) 20:48:04.78 ID:eitz3RWA.net]
- >>228
>除算はニュートン法が一般的かと ニュートン法で剰余を求めることはできますか?
- 236 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:49:49.76 ID:78UVTJ0X.net]
- >>230
そりゃ当然出来ますよ 桁数が大きいときは、 除算は乗算の3倍程度の時間で出来ます
- 237 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:51:56.72 ID:78UVTJ0X.net]
- 除算を筆算方式なんかでやってたら日がくれる
- 238 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:54:28.73 ID:78UVTJ0X.net]
- 分子の桁数が大きくて分母の桁数が非常に小さい場合のみ筆算方式が有効
この場合も、 非常に遅い割り算命令なんかは使いませんが
- 239 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:56:28.50 ID:sE/nea3J.net]
- >>229
>除算は筆算流しか手はありません そうではありません。除算をCPUにある除算命令を使った筆算で行うには、x/y の xのBIT数を増やすのは容易ですが、yの方のBIT数を増やすのは非常に難しいのです。 不可能では有りませんが、非常に数学的な注意が必要となります。 私は数学マニアみたいなものなので、自分なりのアルゴリズムを作ったことが ありますが、個人的には、それをするためにはテーラー展開の剰余項や解析学的な 知識が必要だと思っています。 考えもしませんでしたが、他にも除算は、ニュートン方を使う流儀もあるそうです。
- 240 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 20:58:37.06 ID:sE/nea3J.net]
- >>233
いえ、そうでもありません。テーラー展開の剰余項を注意深く扱うと、 CPUがもつdiv命令を使った筆算の場合でも、x/y の y の方のBIT数を 増やすアルゴリズムがありえます。何度も書いてますが、それは数学的に とても慎重さを必要とします。
- 241 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:00:22.71 ID:sE/nea3J.net]
- >>235
ただし、ニュートン法を使う方法については考えたことがなかったので、 どっちが効率が良いかは分かりません。
- 242 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:03:02.62 ID:78UVTJ0X.net]
- >>235
普通のPCのDIV命令は30サイクル近くもかかる 乗算は1〜4サイクル スーパーコンピューターでも除算は非常に遅い >>233の条件では 除算命令などは使わない方が速い 除算は乗算に置き換えるのが普通
- 243 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:04:44.09 ID:78UVTJ0X.net]
- 分母、分子それぞれの桁数によって
最適な方法は変わる だからそういった条件をセットで語らないと意味がない
- 244 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:06:41.35 ID:78UVTJ0X.net]
- 巨大な桁数同士だとニュートン法が速い
乗算の3倍ほどの時間で出来る 割り算を組み合わせたらそんな時間では計算出来ない
- 245 名前: mailto:sage [2019/11/26(火) 21:15:26.74 ID:eitz3RWA.net]
- >>231
ニュートン法(にゅーとんらぷそん)って、曲線で与えられる関数の根の一つを求める方法でしょ? いわゆる実数の根を求める方法であって、整数の剰余を求めることはニュートン法では無理なのでは? 何がどうなって「当然」なんですか?
- 246 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:19:25.20 ID:78UVTJ0X.net]
- 除算が出来るんだから剰余も当然求められる
- 247 名前: mailto:sage [2019/11/26(火) 21:22:34.40 ID:eitz3RWA.net]
- >>241
で、その剰余はどうやって求めるのですか? まさか、求めた商に除数をかけて被除数から引くのですか?それって遅くないですか?
- 248 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:23:39.77 ID:78UVTJ0X.net]
- 遅くないです
- 249 名前: mailto:sage [2019/11/26(火) 21:25:15.97 ID:eitz3RWA.net]
- >>243
本当ですか?わざわざ、あらためて掛け算をするんですよ?私には馬鹿みたいな方法にみえますが?
- 250 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:26:45.06 ID:78UVTJ0X.net]
- 馬鹿みたいな方法にみえるのはあなたが馬鹿だからです
- 251 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:29:07.44 ID:sE/nea3J.net]
- >>242
ニュートン法なので、 z = b / a の z を求めたい場合、直線 y = a * x - b と x 軸(y=0) との交点の x を求めることによって行う。その際、x0, x1, ・・・, xn のように x を 漸化的に交点に近づけて
- 252 名前:いく。数学的直感だと、その途中で剰余も求められ
るように出来そうな気がする。 [] - [ここ壊れてます]
- 253 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:43:45.68 ID:sE/nea3J.net]
- >>246
色々なやり方はあると思うけど、2^m <= a < 2^(m+1) の場合、 x_{k+1} = x_k - (y_k << m); y_{k+1} = a * x_{k+1} - b; の漸化式でいけるかも知れない。 間違っていたらゴメンなさい。
- 254 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:44:43.61 ID:78UVTJ0X.net]
- >>246
その方法で乗算の3倍の時間で除算が出来ますか? 無理ですよね?
- 255 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:49:53.94 ID:sE/nea3J.net]
- >>248
漸化式が三回くらい行ったら正しい答えに到達するのであれば、 乗算の三倍程度の時間で済むと思う。 何回で到達するかは、まだ考えて無いのでわからない。
- 256 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:53:39.27 ID:sE/nea3J.net]
- >>247
ここで、0<= y_k < x_k が満たされれば、x_k が商、y_k が余りだと思う。 初期条件は、 x_0 = 1; y_0 = a * x_0 - b; とすればよいはず。 途中、y_k が負の値になることが有るが、問題ない。
- 257 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:55:42.20 ID:78UVTJ0X.net]
- 前提は分母も分子も巨大な桁数で良いんだよね?
- 258 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:56:38.32 ID:78UVTJ0X.net]
- 分母の桁数があまり大きくないならテーラー展開も有効だよ
- 259 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:57:23.51 ID:sE/nea3J.net]
- >>251
一般的な場合を取り扱うのであれば、その条件が、もっともらしいと思います。
- 260 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:57:37.73 ID:78UVTJ0X.net]
- いずれにしろ、
除算命令を多用することは無い
- 261 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:58:41.68 ID:sE/nea3J.net]
- ニュートン法を使うのは初めて聞きました。
とても勉強になります。
- 262 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 21:59:47.69 ID:78UVTJ0X.net]
- >>253
それで漸化式3回なんてことはあり得ないかと
- 263 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:01:24.02 ID:sE/nea3J.net]
- ○<< m とせずに ○<< (m+1) としておけば、y_k は負の数にならないかも
知れない。ただ、数学的直感的に、収束速度は、前者の方が速い気がする。
- 264 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:03:05.27 ID:78UVTJ0X.net]
- >>240
数年前にも「にゅーとんらぷそん」とか書いてた糞コテがいたんですが もしかして本人? 文のレベルも頭の悪さもそれっぽい
- 265 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:07:18.12 ID:78UVTJ0X.net]
- 八木アンテナを八木宇田アンテナと書かないのと同程度に
ニュートンラプソン法とは書かないと思っているので 印象に残ってます
- 266 名前: mailto:sage [2019/11/26(火) 22:08:38.03 ID:eitz3RWA.net]
- >>258
raphson の ph を摩擦音で読むか、有気破裂音で読むかは、選択可能かと思っていましたが
- 267 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:10:11.81 ID:sE/nea3J.net]
- >>247
まず、シフトの向きが右で、正しくは、○>>○ でした。
- 268 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:16:30.64 ID:78UVTJ0X.net]
- >>260
何を指摘されてるのかわかってないwww
- 269 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:19:47.56 ID:sE/nea3J.net]
- >>256
では、BIT SHIFT ではなく、浮動小数点演算にして、以下の様にすれば速くなるかもしれません。 (i) 初期条件 η = 1/a; // 多倍長の浮動小数点 x_0 = 1; y_0 = a * x_0 - b; (ii) 漸化式 x_{k+1} = x_k - (int_N)(y_k * η); y_{k+1} = a * x_{k+1} - b; 但し、int_N は、多倍長の浮動小数点を多倍長整数に直す cast。
- 270 名前:デフォルトの名無しさん [2019/11/26(火) 22:34:50.59 ID:FauhtWma.net]
- #include <iostream>
using namespace std; int main() { string str = "abc"; cout << &str << endl; cout << str << endl; cout << str.c_str() << endl; return 0; } VisualStudio2019のdebugとreleaseとで&strのメモリダンプ内容が異なるのはなぜでしょうか? debug : 78 f7 b6 00 61 62 63 00 release : 61 62 63 00
- 271 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:34:54.21 ID:78UVTJ0X.net]
- 1/a が求まれば
あとは乗算2回(と軽い演算)で剰余が求まるでしょ 漸化式にするまでもなく
- 272 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:36:37.97 ID:78UVTJ0X.net]
- >>264
デバッグ情報とか破壊検出用データとかじゃ?
- 273 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:37:41.67 ID:sE/nea3J.net]
- >>265
細部までは分かりませんが、直感でなんとなく分かります。 aが32BITの場合なら、一度にほぼ、32BIT分計算が終わる気がします。
- 274 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:42:23.06 ID:FauhtWma.net]
- >>266
ありがとうございます。 ということはdebug版の呼び出し元(exe)とrelease版の呼び出し先(dll) 間ではstring型を関数の引数にするとバグりますね。
- 275 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:44:29.12 ID:78UVTJ0X.net]
- >>267
>>251の前提はどこに?
- 276 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:45:06.01 ID:sE/nea3J.net]
- >>268
そうなりますね。 malloc() や new なども、Debug 版と Release 版ではライブラリに互換性が 有りません。Debug 版では、まさに、破壊検出用の埋め草のような物が入っていたり、 new を行った行番号情報が入っていたりします。
- 277 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:46:50.29 ID:FauhtWma.net]
- >>270
多謝!!! しりませんでした。
- 278 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:49:29.81 ID:sE/nea3J.net]
- >>269
私は特に仮定はしていませんが、四倍浮動小数点型などに興味があり、 それを整数演算に置き換えて実装してみようかと思っていたりするので、 割る数も割られる数も同じくらいのBIT数の整数の場合に興味があります。 前に調べたところ、倍精度浮動小数点演算を用いて、四倍精度浮動小数点 の乗算、除算まで実装する方法があるようですね。ただし、その場合、 Intelの内部拡張倍精度(80BIT)方式をONにしていると駄目なんだそうですが。
- 279 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:57:18.80 ID:78UVTJ0X.net]
- >>272
4倍弱精度なら Haswell以降で使えるFMA命令がとても約に立ちます
- 280 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:58:49.33 ID:YRq1zw3m.net]
- >>264
こっちで試した限りだと、debugとreleaseでコンソール表示の長さは変わらんかったぞ x86とx64なら差が出たが
- 281 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:59:27.13 ID:sE/nea3J.net]
- >>265
aがN BIT の場合、例えば、1/a を、64BIT 程度で求めた場合は、 (N / 64) (回) 程度の乗算が必要になりそうです。 1/a を高速に N BIT まで求めるアルゴリズムがありますでしょうか?
- 282 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 22:59:32.53 ID:78UVTJ0X.net]
- それ以前の普通の乗算でも出来るけど
AVXでSIMD化出来るのでたくさん計算するならぜひ
- 283 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:01:27.32 ID:sE/nea3J.net]
- >>273
興味深いです。教えていただければ幸いです。
- 284 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:02:58.56 ID:YRq1zw3m.net]
- >>274
メモリダンプという言葉をみおとしていた スレ汚しすまぬ
- 285 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:05:02.93 ID:78UVTJ0X.net]
- >>275
私が何度か除算は乗算の3倍の時間と書いたのは 例えば100万桁同士の除算は100万桁同士の乗算の3倍な時間という意味 乗算命令の回数ではなくて aが100万桁で1/aを100万桁精度で求めるのは 100万桁同士の乗算の2倍くらいの時間で出来る
- 286 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:10:41.35 ID:sE/nea3J.net]
- 例えば、割り算部分をテーラー展開ですか。
- 287 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:17:37.02 ID:78UVTJ0X.net]
- >>277
{a_hi, a_lo} と {b_hi, b_lo} の乗算で a_hi * b_hi を求めてから、 本当の a_hi * b_hi との誤差を求めるところ c_hi = a_hi * b_hi とやってから a_hi * b_hi - c_hi をFMAでやれば誤差が簡単に求まる
- 288 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:19:37.46 ID:78UVTJ0X.net]
- fusedな3個の足し算命令とかもあると
加減算も簡単になるんだけど そんな命令は(他のCPU含めて)見たことがない
- 289 名前:デフォルトの名無しさん mailto:sasge [2019/11/26(火) 23:24:07.48 ID:sE/nea3J.net]
- a=1+q の時:
y/a=y/(1+q) =y*{1 - q + q^2 - q^3 + ... } =y*(1-q*(1-q*(1-q...))}
- 290 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:30:51.74 ID:sE/nea3J.net]
- >>283
この式は、|q|<1の場合にだけ正しいので、 aをa=u*2^n (u = 1.0 + q)の形式に直してから 1/a = 1/(u*2^n)=1/(1+q)*2^(-n) = (1-q*(1-q*(1-q...)))*2^(-n) とするのですかね。 なるほど、qの精度を考えれば、乗算の回数は2個くらいまで で済みそうですね。
- 291 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:36:41.80 ID:sE/nea3J.net]
- >>284
すみません、これだと二回では精度が足りなさそうですね。
- 292 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:37:21.85 ID:78UVTJ0X.net]
- 多倍長の1/aの話なら
テーラー展開は遅すぎて使いませんよ 4倍弱精度の話であれば 除算命令やテーラー展開は使いますが どれの話をしてるのかわかるようにかいてくれませんか? >>238 の通りなので
- 293 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:49:53.60 ID:sE/nea3J.net]
- >>286
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?
- 294 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 23:53:50.60 ID:78UVTJ0X.net]
- >>228
- 295 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:00:48.09 ID:T7KqQ5kC.net]
- >>288
もしかすると、 y = 1/(a*x) - 1 と y = 0 の交点をニュートン法で求めるのでしょうか。
- 296 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:02:25.36 ID:T7KqQ5kC.net]
- >>289
すみません、違いますね。
- 297 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:27:57.72 ID:tKRTExPe.net]
- 初歩的な質問ですみません
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか #include<stdio.h> double func(double,double); /*プロトタイプ宣言*/ int main(void) { double a,b; printf("実数をスペースで区切って入力してください\n"); scanf("%d %d",&a,&b); printf("%d",func(a,b)); /*呼び出し*/ return 0; } double func(double x,double y) { if(x/y > y/x) return x/y; if(y/x > x/y) return y/x; if(x==0) return 0; if(y==0) return 0; }
- 298 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:33:48.17 ID:ynQDuheL.net]
- %dのところがおかしい
それは整数用
- 299 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:42:47.79 ID:tKRTExPe.net]
- ありがとうございます 1時間くらい悩んでたのが馬鹿みたいだ
- 300 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 00:53:21 ID:ynQDuheL.net]
- 入力に0を含めてテストするように
- 301 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 01:11:14 ID:tKRTExPe.net]
- ifの順番変えたら完成しました
- 302 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 02:13:53.15 ID:XGkmLsxS.net]
- QZは馬鹿
- 303 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 02:41:24 ID:Q9FMbuzn.net]
- xとyが等しいケースは書いたんじゃろうか
- 304 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 11:43:48.59 ID:g3LmaZYt.net]
- 世にある仕事の数でいうと
java:C#:C++が5:3:1くらいだな。
- 305 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 12:16:41.56 ID:zdI/1sLa.net]
- このスレ過疎かと思ったら話題でた途端に加速するな
- 306 名前:デフォルトの名無しさん [2019/11/27(水) 13:47:03 ID:KtqS+hCI.net]
- const は要らない子
- 307 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 14:58:41.90 ID:vSkP4LPU.net]
- 本当はね・・・constの逆が欲しいのさ
デフォが書き込み禁止で許可を明示だったらと キャプチャのmutableみたいな
- 308 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:05:41.36 ID:Yu9S3/3Y.net]
- めんどくさいだけ
- 309 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:08:54.83 ID:lAIqGT0K.net]
- Pointという点を表すクラスがあって、2点間の距離を取得する関数を追加したいのですが、
double Point::GetDistance(const Point &p) const にすべきか、ただのCの関数で double GetDistance(const Point &p1, const Point &p2) にしたほうがいいのか迷っています。 設計的にいいのはどっちなんでしょうか?
- 310 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:13:19.55 ID:zdI/1sLa.net]
- >>303
下 Pointに必要以上の機能を作らない
- 311 名前:デフォルトの名無しさん mailto:sage [2019/11/27(水) 15:32:27 ID:FMRbYBnJ.net]
- 下に1票。同じ理由
|

|