C言語なら俺に聞け 151

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cf8f-fy95)
垢版 |
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0
!extend:checked:vvvvv:1000:512
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/05/25(土) 15:55:14.60ID:jppBZDTS0
>>661
片山先生は私とは比較にならないほど生産性の高いプログラマですよ
2019/05/25(土) 16:03:59.98ID:jppBZDTS0
>>652
はじめて知りました、>>650 は勘違いした内容でした、すみません
ご紹介ありがとうございます。今試しているところです!
2019/05/25(土) 16:17:34.75ID:Tic4GHY30
>>668
真面目な話、規格書読んでこい
ツッコミどころが頓珍漢すぎる
2019/05/25(土) 17:02:40.54ID:jppBZDTS0
>>673
コメントありがとうございます。確かに >>668 には誤りが含まれていました

ISO/IEC 9899:1999
6.7.2.1.5
As discussed in 6.2.5, a structure is a type consisting of a sequence of members, whose
storage is allocated in an ordered sequence,

JIS X3010:2003
構造体は,メンバの列から成る型とし,メンバの記憶域は,並べられた順に割り付ける(6.2.5参照)。

しかし、この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます

よって、>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書く
>それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる

構造体の先頭にパディングがあった場合は、この記述は正しくないのではないでしょうか。
2019/05/25(土) 17:37:11.41ID:jppBZDTS0
>>674
よくよく考えると、私の「この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます」もかなり疑わしい、
パディングというものは、一つのメンバがあって、それに対してもう一つのメンバを置くときにパディングを置くものであって、最初からパディングを置く必然性がないですね

struct S {
int a;
} b;
のとき
&b = &(b.a)
は保障されている、時間がたつにつれてそんな気がどんどんしてきました…

>>658 を認め、同時に単一継承であれば C で OO と継承を表現できることを認めます
2019/05/25(土) 18:11:59.97ID:jppBZDTS0
>>674
> a type consisting of a sequence of members, whose storage is allocated …
この is にも惑わされてしまいました
これは
a type consisting of a sequence of members, each of which is allocated about storage in an ordered sequence
とか
a type consisting of a sequence of members, each of which's storage is allocated in an ordered sequence
くらいに解釈するべきなんですね
検討する機会をいただきありがとうございました
2019/05/25(土) 21:04:32.61ID:DDy3bloZM
>>675
絶対許さんぞおおおお
2019/05/25(土) 21:07:06.72ID:aM9QB8YDa
オブジェクト指向って抽象化が目的なのに、メモリ配置とか気にするのは馬鹿みたいだよな
2019/05/25(土) 21:23:55.56ID:cjrLAMgS0
MicrosoftのCOMはほとんど全てのコンパイラが構造体のメモリ配列を同じ様にするってのを利用してるんだっけ?
2019/05/25(土) 22:13:30.07ID:UN9uDEfaM
>>678
ここにも概念と実装の区別がついてないバカが…w
2019/05/25(土) 23:25:49.27ID:KPhaQb+n0
>>669
C言語でオブジェクト指向を表現する (クラス、継承)
https://qiita.com/qiita_kuru/items/8f3441bce9b2f53d1d62
この辺でも読んどけ。

「何故できるか」まで言及したもっといい文献はあるがカスには教えない。
俺は「せざるを得ない」状況だったのでCでOOしたが、ネイティブでOOできるならそれに越したことはない。

あ、同じ板でハッシュが一致してるのでお前は蟻。
2019/05/26(日) 01:24:13.78ID:zv+FEFKTa
>>681
またおまえか
2019/05/26(日) 08:36:08.16ID:o+/j3IaP0
>>670
は? 俺は主張なんざしてねえぜ
事実をありのまま指摘しただけだ
何勘違いしてやがる
というか勘違いということにせねば立場がねえってかw
2019/05/26(日) 08:56:22.54ID:7tI1cTYc0
もうこんなとこで喧嘩しても勝敗つかないんだからやめろw
仲良くできねえのかお前らは
2019/05/26(日) 12:29:05.12ID:lzKtO2WM0
でも冷静になって考えてみろ
単細胞時代から何億年と喧嘩してきた結果今の人間がいる訳だから喧嘩をやめてしまったらそれは果たして生物と言えるのか
逆に言えばAIが人知を超える時
人間は機械に滅ぼされ地球から人間はいなくなっているという事
つまり今何をすべきかと言うと人間は思考をやめアホになるべきである
そうアホの坂田こそ未来の救世主ネオなのである
2019/05/26(日) 15:17:23.15ID:CpBTYp0n0
>>681
そのご紹介のリンク先は、内容について、はっきりいって詰めが甘いです
すなわち、継承と委譲を区別できていません
そんな中途半端な理解で quita に掲載するとか、玉か石かどちらかといえば、石の部類でしょう、全然参考になりませんでした
そんな中途半端な内容の記事を掲載するあなたも同様と判断いたします
2019/05/26(日) 15:19:14.79ID:CpBTYp0n0
>>683
事実かどうかは、主観的か客観的か、に依存すると思いますが、
相対論においてはすべての事象について純客観的などありえない…@
ので、@より、あなたは主観を主張しているものと私は理解します
2019/05/26(日) 15:46:43.76ID:aNhG7Lwu0
>>686
「継承」に必要な操作一式を委譲に基づいて提供できているなら継承できていると思うんだけど、
言語サポートを伴って暗黙的に機能しない限り「継承」と呼ぶべきではない、ということなの?
そこで明確に区別することにあんまり意義が見出せないんだけど、その定義どっか出典示せる?
2019/05/26(日) 15:52:14.70ID:CpBTYp0n0
>>688
委譲による実装で継承を実現できているのなら、それは継承(の一形態)である、…@ という主張ですね
@は私にも理解できますが、委譲はダイヤモンド継承を回避できない欠点があるのでは、と考えています
「ダイヤモンド継承」については C++ の書籍には大概載っているかと、具体的な書籍名は探しておきます
2019/05/26(日) 16:00:20.28ID:Jdhtsrqd0
まあ継承なんてオブジェクト指向と関係ないからね
2019/05/26(日) 16:02:51.60ID:CpBTYp0n0
>>690
それは初耳です
Object Oriented に継承は憑き物だと思っていました、継承のない OO って存在するのですか?それは例えばなにですか?
2019/05/26(日) 16:08:55.02ID:aNhG7Lwu0
>>689
ちょっと何言ってるかわからないな。
ダイアモンド継承の問題を「継承」で回避しているが委譲では回避できないであろう例を挙げてくれたら考える。

明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
2019/05/26(日) 16:22:19.45ID:Jdhtsrqd0
>>691
なにって、言語を知りたいということ?
2019/05/26(日) 16:37:44.23ID:vwTAovQx0
クラスベースのOOP言語ではクラスの継承は一般的だけどプロトタイプベースのOOP言語では継承の概念は存在しないよ
2019/05/26(日) 16:40:12.48ID:CpBTYp0n0
>>692
クラス A, B, C, D について、
A のメンバ変数を a とする、また
B->A(B は A を派生する)
C->A
D->B, C (多重継承)
において、これを委譲で実装すると、B.A.a と C.A.a が同じであるべきにもかかわらず二重にインスタンスとして生成されてしまうので、
継承で実装した D.a を、委譲で実装した D.B.a と同一視するか、D.C.a と同一視するか、また継承における D.a を更新した場合に委譲では D.B.a と D.C.a の両方を更新するコードを生成しなければならないのか、
等あいまいな部分がでてくる、これがダイヤモンド継承問題です

継承で実装すれば、C++ ではこれを仮想継承といいますが D.a の実態を一つに限定することができますし、D.B.a, D.C.a の両方を保存することもできます、つまりモデリングにおいて選択肢を準備できる
しかし委譲で実装すると D.a の実態を一つに限定することが不可能です、つまり選択肢を準備できません

以上より委譲で継承のすべてを代行できないため、委譲と継承を区別する必要が生じると考えます
ただし、多重継承を認めないのであれば、委譲と継承は同一視しても差し支えないと考えます
2019/05/26(日) 16:41:21.10ID:CpBTYp0n0
>>693-694
ふーん、インタプリタ JavaScript には継承はないのですか
2019/05/26(日) 16:41:38.74ID:vwTAovQx0
https://ja.m.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9
2019/05/26(日) 17:08:49.07ID:CpBTYp0n0
>>692
>明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
「単一継承に限定するのならば委譲による継承の実装も可能である」という意味での>>689の「理解します」の文言だと解釈ください
ただし委譲で継承をすべて実現できないので、>>681 掲載のリンク先は「詰めが甘い」と判断せざるを得ない、そんなリンク先を紹介する >>681 も同様と判断するものです
2019/05/26(日) 17:11:49.57ID:iR9VJ5EUa
継承がオブジェクト指向と無関係なんだから、委譲で実現する必要がない
2019/05/26(日) 17:25:25.86ID:aNhG7Lwu0
>>695
C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
アップキャストがnopで済むか、オフセットの足し算になるかなどの詳細に基づいて区別しろってことに
聞こえるんだけど、やっぱりそんな区別の意義が見えてこない。
2019/05/26(日) 17:39:21.34ID:kcdU4Ge60
もうそろそろ別スレ立ててやれや

> それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
とか言う様な奴を相手にしても永遠に終わらんと思うが…
2019/05/26(日) 17:50:19.72ID:CpBTYp0n0
>>700
>C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
そこで実現されているのは私のいうところの継承であって、私のいうところの委譲ではありません
委譲ではダイヤモンド継承に対応できない(選択肢を提供できない)
したがって、委譲と継承とは区別するべきであり委譲で継承を実装するべきではない、という私の主観には一貫性があると思います
2019/05/26(日) 17:56:41.22ID:NrZyzakr0
>>702
継承はだめだよ
これから使ったら反省文ね
2019/05/26(日) 18:07:56.35ID:aNhG7Lwu0
>>702
むちゃくちゃだなぁ。「私のいうところの」「継承」「委譲」の区別がどうにも掴めないし、
その区別の意義も示されなさそうだし、迷惑してる人もいるみたいだから、離脱させてもらうよ。
2019/05/26(日) 18:09:31.06ID:CpBTYp0n0
>>703
私がいつ「継承は要らない子」とかいいましたか?
あくまでも「継承を委譲で実装できない」とは言っていますが(これは部分的に意見を修正していますが)「継承不要論」とかは一切主張していないと考えていますよ
2019/05/26(日) 18:13:13.41ID:CpBTYp0n0
>>704
継承と委譲の区別は必要だと思いますよ、その言葉を贈らせていただきましょう
2019/05/26(日) 18:34:08.86ID:NrZyzakr0
>>705
だから、世界の共通認識として要らないもの。
使っちゃだめ。
2019/05/26(日) 18:57:26.86ID:mCW+tIqA0
もういい加減やめてくれないかな
やりたいなら、Cでクラス実装とかって
別スレたててその中でやってくれ
2019/05/26(日) 19:03:45.32ID:NrZyzakr0
>>708
またおまえか
2019/05/26(日) 20:50:42.22ID:o+/j3IaP0
>>706
私のいうところのって、最初の論旨からずいぶん乖離しているな
カプセル化や継承ができるかどうかって話だっただろうがよ

いつから、おまえのお気に召すかどうかって話になったんだよ
2019/05/26(日) 23:38:41.06ID:SA/0I36h0
>>686
煽って、良い文献の情報を得ようとしているのだろうが、カスにはやらんよwwww
712デフォルトの名無しさん (ワッチョイ dfad-Yys2)
垢版 |
2019/05/27(月) 01:54:45.96ID:sXav5Bzw0
https://jp.quora.com/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B
2019/05/27(月) 02:52:02.77ID:jiPRfYyG0
ソロソロ終わって良いですよね?
この議論は、C使っている人とは違う世界に感じる
2019/05/27(月) 03:09:42.07ID:HzhW79+j0
>>713
またおまえか
715デフォルトの名無しさん (ワッチョイ 87d2-Ni/X)
垢版 |
2019/05/27(月) 09:01:49.81ID:Nqk3VxBP0
stddef.hをインクルードして
#define __STDC_WANT_LIB_EXT1__ 1
を定義して
-std=c11をつけても
gccでrsize_tが使えないですけど
なぜですか?
windows版のGCCでは使えました
2019/05/27(月) 09:23:40.73ID:or6IbtWZa
defineの順番とか…
717デフォルトの名無しさん (ワッチョイ 87d2-Ni/X)
垢版 |
2019/05/27(月) 09:34:14.79ID:Nqk3VxBP0
>>716
順番は試しましたが駄目でした
2019/05/27(月) 10:04:44.33ID:PB+ZSyAza
rsize_tって多分オプションだから実装されてないよね?
windowsはなぜか実装してる
719デフォルトの名無しさん (ワッチョイ bfba-9b2Z)
垢版 |
2019/05/27(月) 10:11:08.57ID:Zyn15i1D0
C#でポインタ使えばC、C++は無くても良いんじゃないですか?
2019/05/27(月) 10:15:55.39ID:gR3ITcWOM
C#使うならポインタのように面倒臭いこと考えなくても変数でも関数でも参照できるだろ
2019/05/27(月) 19:48:50.47ID:0mZL0xC90
C#のポインタはC/C++ほど使い勝手が良くない
C#でポインタを使ったところでパフォーマンスはC++の半分程度

まあトータルで見れば最優秀クラスの言語なのは間違いないけどね
C++みたいなスパゲティ言語ではないし
722デフォルトの名無しさん (アウアウウー Saab-EYzY)
垢版 |
2019/05/27(月) 20:36:21.78ID:f4m/nmMua
まあ、だいたいの後から出た言語はC/C++の欠点を補おうとしているのでポインタがあっても安全なのが普通だな。
2019/05/27(月) 20:42:45.71ID:MaSSH1d10
安全じゃないのがc#のポインタの特長だろ。
特徴じゃなく
2019/05/27(月) 21:12:57.55ID:RgnUDQi4a
そりゃC#のポインタ使うにはunsafeオプションが必要だからね。安全じゃないわね。
C#のポインタは過去資産APIを使うための必要悪って感じか。
2019/05/28(火) 07:12:55.99ID:gr6HI2ftM
>>722
Cの前からでてたPascalにもポインタはあるんだが…
むしろC/C++が例外的
726デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
垢版 |
2019/05/28(火) 09:09:59.25ID:HGTlDNNW0
数年前からこのプロジェクトがちょっと注目されてるけどどう思う?
RustはC++を置き換えてもCを置き換えないだろうと思うし、
ZigはCの置き換えとしては妥当なんじゃないかという気がする。
Cより高速、単純、堅牢らしい。
https://ziglang.org/
727デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
垢版 |
2019/05/28(火) 09:29:30.01ID:HGTlDNNW0
Cより速いと主張
>Speaking of performance, Zig is faster than C.

単純な言語仕様
>Small, simple language

性能と堅牢性
>Performance and Safety: Choose Two

個人的にとても興味を持ってるんだが
2019/05/28(火) 17:05:35.46ID:5GqHhS1Q0
CはC++ほどではないにせよ色々酷いから
Cを置き換えられる言語があるなら見てみたいしぜひ置き換えてほしい
2019/05/28(火) 17:30:53.21ID:vL2LyOeQ0
>>726
ttps://www.spriters-resource.com/resources/sheets/34/36939.png
ちょっと検索してみたらもうドット絵まで準備されてるらしい
さすがに西洋人は仕事が早いな
2019/05/28(火) 19:02:59.10ID:Pzgny9jf0
https://www.datadeliver.net/receiver/file_box.do?fb=966f97555e424f19a29d0d866b4b3cf5&;rc=683943257e194056afc95195b542ba5d&lang=ja

キューを実装する?プログラムを書いたのだがコアダンプになってしまったため、どこが悪いのか調べるために1回だけenqueueをするように変えたら無限に10を生成するようになってしまった
どこが悪かったのか、どうして10が無限に生成されるのか、教えて欲しい

環境は学校の端末演習室でやったから詳しいことはわからんです
2019/05/28(火) 19:04:37.65ID:F6815kaN0
>>730
それじゃあ検証のしようがない
ネットカフェで書いてここに晒せ
2019/05/28(火) 20:11:39.46ID:vL2LyOeQ0
「無限に10を生成するようになってしまった」「どうして10が無限に生成されるのか」
コレがポイントだな
無限に生成してるように見えるだけだよ

要するにprintが悪い
whileだと分かりづらいんだよ
forだとラク
「q->head = temp;」とか、自分で書いてて分からなかったんだろ
だからwhile文だとこのケースでは分かりにくくなる
forを試gうのが正解

void print(struct queuel *q){
struct cell *pt;

printf("[");
for( pt = q; pt != NULL; pt = pt->next ){
printf(" %d", pt->data);
}
printf(" ]\n");

}
733デフォルトの名無しさん (アウアウウー Saab-EYzY)
垢版 |
2019/05/28(火) 21:09:24.77ID:Rd7hCJnFa
>>725
Pascalの方が先にできたんだっけ?

まあでも用途が大幅に違うよね。Pascalはコンピュータの学習用の高級言語でCはOS記述用でアセンブラ代わりに使う言語。
2019/05/28(火) 21:27:52.19ID:jSvCRMUQ0
Pascalが嫌いな人が作った言語だ
2019/05/28(火) 22:21:26.92ID:/lAZ9dU10
>>733
だからそんなことを言い出したら>>722の言うポインタが安全な言語って用途が違う言語だよね
って話にしかならないんだが…
736デフォルトの名無しさん (アウアウウー Saab-EYzY)
垢版 |
2019/05/28(火) 22:24:51.47ID:Rd7hCJnFa
>>735
まあそうだな。
Cは用途が違う上に古くて安全性が低い感じか。
2019/05/28(火) 23:20:22.65ID:jSvCRMUQ0
安全性って何だよ
インテルのerrataみたいなことか?
2019/05/28(火) 23:34:40.02ID:IamnQRk90
子供にはナイフを使わせるなというのと同じ類いか
2019/05/29(水) 04:57:03.97ID:mWed49vm0
>>736
いやOSを書くにはその安全性が邪魔になるから両立は難しいよ
740デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
垢版 |
2019/05/29(水) 06:20:35.18ID:D5Uzvk1s0
OSのコードはどんな感じなの?
ポインタを使ったトリッキーな事をやってるの?

未だにLinuxでバッファオーバーフローの脆弱性出てるよね
2019/05/29(水) 06:48:57.50ID:Bfh00rIBM
>>740
OSのソースなんてちょっとググればいくらでも出てくるから自分で見なよ
2019/05/29(水) 07:45:37.52ID:6C23lth10
見たこともないやつが議論してたのかよ
2019/05/29(水) 08:03:59.01ID:aFUCBt4U0
詳細linuxとかいう1000ページの宗教書だろ
持ってるだけで御利益がある
2019/05/29(水) 08:13:08.04ID:akQz27P/d
オープンソースなのだから1分もあればソースコードくらい見られるだろうに
2019/05/29(水) 18:31:01.76ID:8RGCI4670
>>740
>未だにLinuxでバッファオーバーフローの脆弱性出てるよね
最近は聞かないね…
2019/05/29(水) 19:51:04.91ID:D+pGsdPRa
今普通に静的・動的解析使うとバッファオーバーフローなんてあり得ない感じするわ。
2019/05/29(水) 20:40:15.44ID:rT4tqcG+0
strcpyとかsprintfとか使ってるコードはまだたくさんあるでしょ
dstのサイズ指定しないライブラリとか
748デフォルトの名無しさん (アウアウウー Saab-EYzY)
垢版 |
2019/05/29(水) 21:00:57.32ID:FFsAnOexa
Cは標準ライブラリ考え直した方が良いかもね。
749デフォルトの名無しさん (トンモー MM97-OIQ8)
垢版 |
2019/05/31(金) 08:23:23.52ID:JBiczG6TM
Cが最も好きだけど、
C十十のほうがライブラリが
便利なのあるから、
個人で趣味で作るものは最近は
CとC++混在で作ります。
わりと自由に混在できるので
とても助かってます。
こうゆの俺だけですかね?
2019/05/31(金) 08:28:11.59ID:7PD5X056a
C††
2019/05/31(金) 08:30:02.90ID:LyENK1r60
C‡‡
752デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
垢版 |
2019/05/31(金) 09:21:15.46ID:GTUdpXapa
С++

キリル文字
753デフォルトの名無しさん (トンモー MM97-OIQ8)
垢版 |
2019/05/31(金) 18:42:40.60ID:JBiczG6TM
C十十つ
―ー
2019/05/31(金) 18:46:16.16ID:4felF8bG0
C田田
2019/05/31(金) 19:11:42.88ID:Ki0lpFF5M
C云々
756デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
垢版 |
2019/05/31(金) 19:45:27.77ID:/GnAMAD/a
⊂┼┼
2019/05/31(金) 21:44:53.32ID:r0b/3vSWd
C言語認定一級を取得したら転職でどれぐらい評価されますか?
758デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
垢版 |
2019/05/31(金) 21:48:01.31ID:I0+j7s4/a
さあ?
その会社がどの程度その知識を必要としているかで変わるのでは?
2019/05/31(金) 21:48:52.32ID:r0b/3vSWd
>>758
そういうときは一般化して正確じゃなくても妥当な範囲で思考して回答する癖をつけましょうね〜
2019/05/31(金) 21:56:26.15ID:OHagz7+U0
うちの周囲じゃ全く参考にもしていないし資格給が出るわけでもないって所が多いな
2019/05/31(金) 22:06:46.05ID:4X6MeSMk0
英検1級の方が重要そう。
762デフォルトの名無しさん (スフッ Sd8a-92O4)
垢版 |
2019/06/01(土) 11:44:52.57ID:2YdNSpFdd
http://codepad.org/NUCaFYyE
雨が降る様子を自分の今持ってる知識だけで作ろうとしたんですが、表現が上手くできてない気がします

だれか改善案があれば助言お願いします
2019/06/01(土) 18:13:48.99ID:w9UetZ9K0
>>762
それはC言語の問題ではなかろう
764デフォルトの名無しさん (スフッ Sd8a-92O4)
垢版 |
2019/06/01(土) 18:56:55.84ID:2YdNSpFdd
>>763
抜けてました
プログラムの問題として、実行すると縦に雨粒が重なってしまうのが目立っていて、この原因がわからず質問しようと思いました。
2019/06/01(土) 19:26:44.16ID:w9UetZ9K0
>>764
それは使用する言語とは無関係に、雨らしく見せるアルゴリズムの問題ではないか?
ある処理をC言語で実現したいがどう書いていいか分からないとか、書いたものが想定通りにならないのはなぜかとかなら答えようがあるが。
766デフォルトの名無しさん (スフッ Sd8a-92O4)
垢版 |
2019/06/01(土) 21:18:58.51ID:2YdNSpFdd
>>765
1番上の行で雨を発生させるとき何列目で発生させるかは乱数できめているはずなのに、何行か連続で同じ列に発生しているのがよく見られていて、それが何故なのかがわかりません。

このプログラムは改良中のもので、その前のプログラムは雨粒が全部同じ速さのやつを作っていてそれは問題なく(上の現象も起きず)動いていたので、乱数でなくプログラムの問題かなと思って質問しました
2019/06/01(土) 21:37:41.87ID:njUSTe0T0
>>766
乱数っていうのは偏るものだから、同じ列に連続して発生することが普通。
同じ列に発生しないような作為をする場合は乱数とは言わないと思う。
https://twitter.com/Newton_Science/status/1031788874836529152

あと、'o'が縦に連続するのに違和感があるのなら'|'などに置き換えれば良いと思う。
https://i.imgur.com/wR1mNu5.gif
みたいな感じで
適当に作っててチカチカしちゃってるからあまり参考にならないかもしれない
https://twitter.com/5chan_nel (5ch newer account)
768デフォルトの名無しさん (スフッ Sd8a-92O4)
垢版 |
2019/06/01(土) 22:01:32.09ID:2YdNSpFdd
>>767
すごい!!!
一気に雨っぽく見えるようになりましたw

乱数の件大変勉強になりました
もっと改良するとしたら、そのツイートのように不自然に見えるランダムさをなくすため振るいにかけるような工夫もしてみようと思います。

あと、もしよければGIFのやつのソースコードを貼ってもらえないでしょうか。よろしくお願いします
2019/06/01(土) 22:03:49.20ID:gZsm+Fjra
一様分布でなくても乱数とは言えるだろう
2019/06/01(土) 22:10:20.53ID:njUSTe0T0
>>768
一応貼るけど自分はC言語あまり得意でない上に適当にササっと作ったのだからあんまり参考にはしないでほしい
https://ideone.com/FG3nNS

system("cls")で画面更新してるけどチカチカさせずに滑らかに動かしたいならpdcursesとか使ったほうが良いと思う
あとLinuxだったらclsでは動かない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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