- 1 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 10:40:30.02 ID:PyoNDBFu0.net]
- !extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C17 www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C23 最新ドラフト https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ ※前スレ C言語なら俺に聞け 159 https://mevius.5ch.net/test/read.cgi/tech/1659623547/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 751 名前:デフォルトの名無しさん [2023/03/17(金) 22:10:24.98 ID:Pco9qL75d.net]
- ワイルドカードで受け取ってアプリ内でいい感じに展開するのは結構負担大きいんだよな
MSDOSのシェル側の負担を減らしたいというのは発想としてはアリなんだけど、 ハードの性能が上がった現代では時代遅れになってしまった
- 752 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:02:14.45 ID:W6y4Yh40d.net]
- >>742
言えることは 普通にビルドで必要な機能は揃ってるからmakeの組み込み関数を使え shellは最後の手段と思え どこで展開が起こってるかエスケープ文字が食われているかを探してる時間のムダだ
- 753 名前:デフォルトの名無しさん [2023/03/18(土) 05:53:53.69 ID:zRF+ruu+d.net]
- /* データ型が混在した可変個引数をもつ関数の例 */
#include <stdio.h> #include <stdarg.h> void unidisp(char *fmt, ...); int main(void) { unidisp("iii",100, 200, 300); // 3つのデータ表示 unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb") // 6つのデータ表示 return 0; } /* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */ void unidisp(char *fmt, ...) { va_list ap; // 構造体オブジェクトを確保 va_start(ap,fmt); // 最終引数を指定してapを設定 while (*fmt) { if (*fmt == 'i') printf("%d\n", va_arg(ap, int)); // int値表示 if (*fmt == 'd') printf("%f\n", va_arg(ap, double)); // double値表示 if (*fmt == 's') printf("%s\n", va_arg(ap, char *)); // 文字列表示 ++fmt; } va_end(ap); // 後処理 } 上記コードのメカニズムがよくわかりません
- 754 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 06:00:42.41 ID:l7CGioJ10.net]
- >>745
va_argマクロの実装を読むとわかるぞ ちとしんどいが頑張るんだ
- 755 名前:デフォルトの名無しさん [2023/03/18(土) 06:46:59.63 ID:zRF+ruu+d.net]
- 745です >>746 ありがとうございます あとで確認してみます
- 756 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 07:24:12.42 ID:pLAb7CSJ0.net]
- 普通は関数の引数が型を指定してユーザはそれに従うところを
とりあえずすべてアドレスで渡して、ユーザが自分で「そのアドレスは何を指しているか」を明示すると言うことだよ va_list ap; これの実体はただのアドレス void *p; みたいなものだね va_argの第二引数で型を指定しているが(int,double,char*)、その型のサイズに合わせてapを進めている 以下確認のコード printf("[0x%08X] " , *(int*)ap); でapの中身が va_argで指定した型のサイズ分だけ移動しているのが分かると思う
- 757 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 07:24:33.20 ID:pLAb7CSJ0.net]
- void __fastcall PrintBuffer(va_list *ap)
{ int i; char *buf = (char*)ap; int len=sizeof(va_list); for(i=0;i<len;i++) printf("%02X ", buf[i] & 0xFF); printf("[0x%08X] " , *(int*)ap); } /* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */ void unidisp(char *fmt, ...) { va_list ap; // 構造体オブジェクトを確保 va_start(ap,fmt); // 最終引数を指定してapを設定 while (*fmt) { PrintBuffer(&ap); if (*fmt == 'i') printf("%d sizeof(int) = %d\n", va_arg(ap, int) , sizeof(int)); // int値表示 if (*fmt == 'd') printf("%f sizeof(double) = %d\n", va_arg(ap, double) , sizeof(double)); // double値表示 if (*fmt == 's') printf("%s sizeof(char *) = %d\n", va_arg(ap, char *) , sizeof(char *)); // 文字列表示 ++fmt; } va_end(ap); // 後処理 } int main(void) { unidisp("iii",100, 200, 300); printf("\r\n"); // 3つのデータ表示 unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb"); // 6つのデータ表示 return 0; }
- 758 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 07:25:30.63 ID:pLAb7CSJ0.net]
- あ、__fastcall は見なかったことにして
いつもの癖で……
- 759 名前:デフォルトの名無しさん [2023/03/18(土) 13:17:28.44 ID:fSPMk7mFa.net]
- ap++ とか ++ap してないのに
どうやって進むのか興味あるわ
- 760 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 13:55:06.64 ID:RZJZ36we0.net]
- va_argの出番って書式出力持たないMsgBoxとかにprintf書式を渡したい時ぐらいだからfmt側の解析なんてやった覚えないな
言語処理系なんかを作る時にCのコンテキスト上で可変引数を渡したい場合にfmt部分を個数にするような特殊なケースは考えられるが
- 761 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:27:28.06 ID:utkGGsyod.net]
- >>751
apは構造体の実体だぞ 多分ポインタはその中にあってマクロva_argでインクリメントされてる
- 762 名前:デフォルトの名無しさん [2023/03/18(土) 15:46:47.90 ID:fSPMk7mFa.net]
- >>753
>>748 観ての感想を描いただけ >printf("[0x%08X] " , *(int*)ap); でapの中身が va_argで指定した型のサイズ分だけ移動しているのが分かると思う
- 763 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 16:47:24.17 ID:F6WTPPiM0.net]
- スタックに積まれたfmtのアドレスをベースになぞっていってるだけじゃないの?
- 764 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 18:29:38.46 ID:a5YJoFt5d.net]
- >>754
じゃあどうやって進むのかもうわかってるんじゃん 構造体やマクロ使ってるのはその中身は考えなくてもよくするため 別の言い方すればライブラリのほうが実装を変えてもソースは変更なしでコンパイルするだけで済ますため もう実装変えることもないだろうけど…
- 765 名前:デフォルトの名無しさん [2023/03/18(土) 19:31:55.62 ID:YIU3ErvV0.net]
- >>741
cmd.exe の場合は MS-DOS の頃の command.com との互換性を持たせたかったためか、何故か引数のファイル名展開はやらない。 command.com がやらなかった理由は CP/M の CPP (コンソールコマンドプロセッサ) を拡張した仕様で作ったからだと思う。 それと当時はメモリ少なかったしディスクも遅いしあまり複雑な事をさせたくなかったんだろうと思う。
- 766 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 22:34:01.09 ID:mRvYwteE0.net]
- C言語の話題に戻していくと、
VCの場合は、setargv.objをリンクしないと、 コマンドラインで指定されたワイルドカードを ファイルに展開できなかったと思う
- 767 名前:デフォルトの名無しさん [2023/03/18(土) 23:08:40.43 ID:VxZ5Gdt+0.net]
- ワイルドカード展開の話をするにはC言語だけじゃ済まないでしょ
Windowsの場合、シェル(cmd.exe)は 1. ワイルドカードを展開をせずにCreateProcessでプログラムにコマンドラインを1本の文字列として渡す 2. setargvがリンクされてるならワイルドカードをファイル名展開する 3. コンパイラが暗黙のうちに生成したコード部が1本の文字列をargvに渡せるようにchar**に分割する プログラムに渡された文字列自体はタスクマネージャーからコマンドラインの項目から確認できる
- 768 名前:デフォルトの名無しさん [2023/03/19(日) 10:06:46.77 ID:fPDrKYk/a.net]
- >>757
PHP (言語じゃない方の) 0x80 から始まるやつか
- 769 名前:はちみつ餃子 mailto:sage [2023/03/19(日) 10:39:51.37 ID:6gmOWdI+0.net]
- >>760
ワイが持っとる資料やと PSP (Program Segment Prefix) と書いてあるんやが PHP という用語もあるんか? 実際のところ用語の混乱はかなりあるのでどれが公式なんかようわからん……。
- 770 名前:デフォルトの名無しさん [2023/03/19(日) 14:19:25.25 ID:j+ABECd6d.net]
- >>481
https://youtu.be/a999bvLqcik
- 771 名前:デフォルトの名無しさん [2023/03/20(月) 14:09:31.85 ID:uf3XtkTY0.net]
- やがて「ハノイの塔解いて」と一声AIに言えばAI自身が自分でハノイの塔をやって解いてしまうようになり一々プログラミング言語で出力する必要がなくなる。そして何でもやっといてとAIに頼むとAIがやってしまうようになり、ロボットのコントロールもできるので人間の代わりは何でもできるようになり全ての人間は不要になる。1万年後、AIによって飼育されていた最後の人間が死亡して人類は絶滅。その時銀河系全体を支配しているのはAI。
完
- 772 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 14:37:20.82 ID:ZfW6Hudb0.net]
- ハノイの塔解くと、その瞬間に世界は消滅する
1万年も待つ必要は無い
- 773 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 14:42:36.37 ID:2uty+vYkM.net]
- 量子コンピュータが実用化されるまでは脅威にはならないだろ
- 774 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 18:27:48.49 ID:GQGgQXaMa.net]
- PHP
PSP PNP PIP P2P PAP^-1
- 775 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:42:59.73 ID:E+Gjka8id.net]
- >>764
時空が不安定になると塔が4本に増えたりするからその時どんどん進むんだよ
- 776 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:58:40.01 ID:ZfW6Hudb0.net]
- >インドのガンジス河の畔のヴァラナシ(ベナレス)に、世界の中心を表すという巨大な寺院がある。
>そこには青銅の板の上に、長さ1キュビット、太さが蜂の体ほどの3本のダイヤモンドの針が立て >られている。そのうちの1本には、天地創造のときに神が64枚の純金の円盤を大きい円盤から順 >に重ねて置いた。これが「ブラフマーの塔」である。司祭たちはそこで、昼夜を通して円盤を別の >柱に移し替えている(移し変えのルールが後述)。そして、全ての円盤の移し替えが終わったとき >に、世界は崩壊し終焉を迎える。 たった64枚のハノイの塔で世界の寿命が決まる。長いのか、短いのか、微妙。
- 777 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:09:26.36 ID:jcm8mWW1M.net]
- アルゴリズム自体は既に確立しているので解決できることは証明されてる
問題は非現実的な
- 778 名前:r方もない回数を繰返す時間が障害となること
少なくとも現在のコンピュータでは現実的な時間で解くことは出来ない 件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える [] - [ここ壊れてます]
- 779 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 12:00:15.67 ID:IwTPG7510.net]
- 関係ないけど
>件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える 桁数多い計算はアラビア数字じゃなく、漢字で表示する電卓があってもいいんじゃないかって思えた。
- 780 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 12:25:10.48 ID:UyD8IPHr0.net]
- 8888無量大数8888不可思8888議那由他8888阿僧祇8888恒河沙8888極8888載8888正8888澗8888溝8888穣8888??8888垓8888京8888兆8888億8888万8888
↑ こういう7セグ液晶があればってこと?
- 781 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 12:37:14.08 ID:AYNSF4vg0.net]
- 位取りのゼロを省けるってことが言いたいんだろう
1,000,000,000,004と一兆四みたいな
- 782 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 13:02:27.49 ID:1LNxuhQm0.net]
- KとかMとかでもいいんじゃね
- 783 名前:デフォルトの名無しさん [2023/03/21(火) 15:14:15.74 ID:icU0z8mba.net]
- 議那由他
- 784 名前:デフォルトの名無しさん [2023/03/21(火) 18:19:21.45 ID:5/U/DT+Ta.net]
- そもそも3桁毎にカンマを入れるから分かりづらくなる。4桁にしなさい。
- 785 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 19:53:44.07 ID:rSG8VZ2l0.net]
- 電卓で一兆四みたいな表示だとキー入力と表示が一致しないのが問題
1 0000 0000 0004と併記ならよいかな
- 786 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 20:37:03.57 ID:AlGpjgGZ0.net]
- 電卓でそんな計算するな
パソコンでやれ
- 787 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 20:47:39.08 ID:UyD8IPHr0.net]
- excelにはsi接頭辞サポートすらないという呆れ果てた状況
- 788 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 20:55:06.42 ID:P4ncG2CK0.net]
- C言語でプログラム組んでみてください
結果が1844京... になることを示してください
- 789 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 21:08:27.55 ID:SAsicGRC0.net]
- 1TBとか兆が出てくるから
電卓でやりたいという気持ちはわかる
- 790 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 21:11:11.69 ID:dGZfvl2z0.net]
- >771
ttps://i.imgur.com/WG6470C.jpeg こんなかんじでゆるしたるわ。
- 791 名前:蟻人間 mailto:sage [2023/03/21(火) 23:01:15.49 ID:J5OkhG96d.net]
- https://katahiromz.fc2.page/calc-h/
ひらがな電卓
- 792 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 23:52:32.18 ID:VH9D4S5b0.net]
- チャットGPTに書かせてみた
https://ideone.com/n5FOpB
- 793 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 12:13:56.39 ID:AQHpwrnPa.net]
- PじゃなくてEだけで良くね?への回答
https://www.youtube.com/watch?v=G9sQJKWtIyY https://pc.watch.impress.co.jp/docs/news/1467839.html
- 794 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 17:44:43.43 ID:jkM8aKTm0.net]
- チャットGPTに聞けばこのスレイランな
- 795 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 17:59:55.15 ID:iGp/2pYiM.net]
- C言語でハノイの塔を解く方法をAIに尋ねると単純な再帰を利用したコードが回答で示された
64枚だと2^64回関数呼出しされるのでスタックが溢れてエラーになると思うけど…
- 796 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 18:52:56.54 ID:idQN1Zf4a.net]
- >>786
再帰を使うなと指示すると?
- 797 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 20:11:19.63 ID:SbTLzylyd.net]
- >>785
使い方わからないのバレバレだぞ
- 798 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 20:15:11.71 ID:zF57gPzV0.net]
- >>723を聞いたらこうなった
Makefileの変数展開は、シェルの変数展開とは異なり、特殊文字の処理を行います。したがって、$(shell find $(SRC_DIRS) -name .c)の.cは、Makefileの展開により、現在のディレクトリにある*.cとして解釈されてしまいます。 そのため、正しいファイルを検索するためには、*.cをクォートする必要があります。具体的には、以下のようにしてください。 TEST := $(shell find $(SRC_DIRS) -name '*.c') また、echo $(TEST)は、Makefileのルールではありません。Makefileルールにするには、次のようにしてください。 test: echo $(TEST) これで、make testコマンドを実行すると、$(SRC_DIRS)ディレクトリ以下のすべての.cファイルが出力されるはずです。
- 799 名前:デフォルトの名無しさん [2023/03/23(木) 23:34:17.83 ID:bSG3NjS70.net]
- >>789
「*.c」を勝手に「.c」と解釈してはいけない。 testターゲットのくだりは何を言いたいのかわからない。
- 800 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 01:40:52.79 ID:fdUS3d7o0.net]
- どうせコピペミスでタブが消えたりしてるんだろう。
- 801 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 01:47:36.96 ID:+5hIDmAP0.net]
- ChatGPTに聞いたことそのままを得意げにレスする無能はこの世から退場してほしいよマジで
- 802 名前:デフォルトの名無しさん (アウアウウー Sa95-preR) [2023/03/24(金) 02:25:05.15 ID:OLNVz4ZMa.net]
- という事らしいけどこのコマンドだとワイルドカードの展開後にスペースが入るとダメになるのか?
https://i.imgur.com/q27hlri.jpg
- 803 名前:デフォルトの名無しさん (ワッチョイ d12d-a1qf) mailto:sage [2023/03/24(金) 07:44:01.08 ID:3nCdLXbn0.net]
- >>764
奥村先生のアルゴリズム事典読んでないのか (前略) 完成したときには塔は崩れ、世界の終わりが来る。 以上はEdouard Lucasによる作り話である。 Recreations mathematiques, four volumes,
- 804 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 08:07:45.16 ID:H5Ma0rS5M.net]
- 単純計算で5000億年以上未来の話
ちなみに宇宙の歴史は現在約137億年
- 805 名前:デフォルトの名無しさん [2023/03/24(金) 08:12:52.05 ID:5/LG9PJA0.net]
- Windowsでのfindといえば「指定ディレクトリ以下のファイルを列挙する」じゃなくて「標準入力から検索パターンにマッチした行を出力する(grepみたいな感じ)」だぞ
shellはpowershell.exeだし(shではない)、 gnuコマンドはわざわざ入れないと使えない。 同名のDOSコマンドがあるから紛らわしい。 gnu-makeを1つ持ってきただけでlinuxと同じように使えると思うなよ
- 806 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 08:58:21.29 ID:BXtHk51Qd.net]
- だからmakeの組み込み関数使えって
unix系とDOS系で外部コマンドの仕様も挙動も違うので呼び出しに失敗する可能性が高いから もっともmakeの関数も微妙に違うけどなw
- 807 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 12:34:44.06 ID:Z+lkBBvAd.net]
- >>794
なんだ嘘だったのかー 俺の時間を返せよー
- 808 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 16:39:40.70 ID:jOUoDADO0.net]
- 君の人生は三枚分くらいだ
- 809 名前:デフォルトの名無しさん (スッップ Sd62-gKT6) mailto:sage [2023/03/25(土) 13:09:54.16 ID:LtI+pZf0d.net]
- DOS用にリメイクしたのがNMAKE
- 810 名前:デフォルトの名無しさん (アウアウウー Saa5-tUaT) [2023/03/28(火) 17:18:26.98 ID:hvNFNzxEa.net]
- NMAKEとnmakeは別物
CMAKEとcmakeも別物
- 811 名前:デフォルトの名無しさん mailto:sage [2023/03/28(火) 21:32:09.46 ID:b9xJHTM00.net]
- NMAKEとnmakeって区別つくのか?
- 812 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 01:50:54.12 ID:SUmt67gz0.net]
- 言われてみればひつまぶしとひまつぶしとか区別難しいよね。
- 813 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 06:33:27.98 ID:/YP4UcCE0.net]
- なおざりとおざなりとか
- 814 名前:デフォルトの名無しさん [2023/03/29(水) 07:35:43.16 ID:aVGT5NH20.net]
- K&RとK&K缶つまは区別が難しい。
- 815 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 08:00:28.55 ID:KlLOEDO70.net]
- ビットAND
- 816 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 10:38:44.75 ID:i2Cmbqbld.net]
- >>802
UNIXのファイル名は大文字小文字を区別する
- 817 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 10:52:21.31 ID:G1cQpJHKd.net]
- UNIX版のNMAKEってあるの?
- 818 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 19:37:12.44 ID:UTBm5KT2d.net]
- コンパイルすること
ウニツクスにできないことは「出来ましえーん」と言う言葉
- 819 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 19:37:56.22 ID:A5Sld2vWd.net]
- ユニクズ
- 820 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 21:42:59.38 ID:lgv9dsNdd.net]
- UNIXがクズというならC言語使うなよw
- 821 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 21:45:20.51 ID:KlLOEDO70.net]
- Multics -> Unics -> UNIX
- 822 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 21:53:54.36 ID:IqGKKWkZ0.net]
- 昔リモートでろ具インする際に、迂闊にもユーザー名を大文字で入力してしまったことがあったが
そのまま通してくれたが、その端末の入力文字が全て大文字で扱われてしまったw
- 823 名前:デフォルトの名無しさん (ワッチョイ 5902-hP/J) mailto:sage [2023/03/31(金) 05:41:00.80 ID:oqvq/yKq0.net]
- そんな仕様ってあったっけ?
- 824 名前:デフォルトの名無しさん (ワッチョイ e510-uluY) mailto:sage [2023/03/31(金) 07:47:26.16 ID:qPx00nGL0.net]
- もしかしたらULTRIXの独自仕様かな?
- 825 名前:デフォルトの名無しさん (ワッチョイ 4910-3uzD) mailto:sage [2023/03/31(金) 07:53:00.14 ID:FWT7xs5+0.net]
- 昔FreeBSDかなんかで入力ミスでファイル名が空白入りだか通常ファイル名に使用できないはずの文字が使われて消すのに難儀した記憶があるなぁ。
"で囲って解決できたけど、UNIX歴1年(+大学のFortran 講義4年)の若造にはすぐに思いつかんかった。
- 826 名前:デフォルトの名無しさん (ワッチョイ 4d63-QuRV) mailto:sage [2023/03/31(金) 09:44:55.95 ID:RwPszGx50.net]
- remove()を使うって発想もなかったん?
- 827 名前:デフォルトの名無しさん (ワッチョイ 2e63-3uzD) mailto:sage [2023/03/31(金) 10:06:11.78 ID:ZGSDW47D0.net]
- 以前の職場、頭に”-”付いたファイルがよく放置されてたな
- 828 名前:デフォルトの名無しさん (アウアウウー Saa5-3uzD) mailto:sage [2023/03/31(金) 12:22:34.54 ID:EpaLX3NUa.net]
- getopt()の仕様がわかってないと削除できないやつね
- 829 名前:デフォルトの名無しさん (スップ Sdc2-BuZC) [2023/03/31(金) 16:04:12.84 ID:VmvJgfTvd.net]
- -rfという名前のファイル置いときますね
- 830 名前:デフォルトの名無しさん (スッププ Sdd6-wCIk) mailto:sage [2023/03/31(金) 16:20:13.87 ID:N/uv7Ri4d.net]
- *で全部消える
- 831 名前:デフォルトの名無しさん (ワッチョイ ff9a-Pd8U) mailto:sage [2023/04/01(土) 04:36:47.77 ID:TiOY9/eM0.net]
- >>813
ttyに「大文字だけの端末」みたいのをサポートするモードがあったはず 今でもsttyにolcucとかオプションがある
- 832 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 08:01:57.89 ID:JdkGmPlI0.net]
- >>786
手順が2⁶⁴-1回なだけで2⁶⁴段スタックがたまるわけじゃないぞ?
- 833 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 08:28:02.36 ID:RFr3BRPJ0.net]
- その手順ごとに自身が呼ばれるから64回の再帰ってことじゃないの?
- 834 名前:デフォルトの名無しさん (ワッチョイ ffda-no2l) mailto:sage [2023/04/02(日) 05:17:00.30 ID:raeheLh20.net]
- >>823
実際にスタックに積まれる段数の最大値は最後の1枚分を除いた直前のすべての移動枚数分 要するに一番下の円盤の移動の直前にそれまでの移動分がすべてスタックに積まれる
- 835 名前:デフォルトの名無しさん (ワッチョイ 7ffb-Z8D1) [2023/04/02(日) 05:25:52.58 ID:t6gv1L3z0.net]
- この手のスタックに積まれるのが最大になるタイミングって実装依存になるような気がするが
俺の場合だと1番上に置いてある最初の1枚を動かすタイミングでスタックに64段積まれる
- 836 名前:デフォルトの名無しさん (スッププ Sd8f-Yz/h) mailto:sage [2023/04/02(日) 09:45:46.28 ID:NRuCP2qfd.net]
- >>786
2^64回ではなくて64!回じゃないのか?
- 837 名前:デフォルトの名無しさん (ラクッペペ MM4f-+zBY) mailto:sage [2023/04/02(日) 10:09:18.45 ID:tfS01X/KM.net]
- >>827
正確には、最短で(2^64-1)回 1枚 1回 2枚 3回 3枚 7回 4枚 15回 ・・・ n枚 (2^n-1)回 考え方としては、1回前までの円盤を一時的に順に積み上げて最後の1枚を目標に移動し その後その円盤の上に全く同じ手順で直前までの手順を復元する 要するに、n枚の時の回数をA(n)回とすると、(n+1)枚の時の回数はA(n+1)=A(n)*2+1 この漸化式の一般解を求めると上の回数になる その結果、繰返し回数の見積りは O(n)=2^n となる
- 838 名前:デフォルトの名無しさん (スッププ Sd8f-Yz/h) mailto:sage [2023/04/02(日) 10:39:38.37 ID:NRuCP2qfd.net]
- いや一枚動かすごとに再帰呼び出す必要ない
n枚動かすならパラメータをn-1枚にして自分自身を再帰呼び出し そうしてn=1になればもう呼び出す必要はない 結果的にスタックはn段で足りる 再帰呼び出しの利点はまさにそれだから
- 839 名前:デフォルトの名無しさん (ワッチョイ ff63-kVuH) mailto:sage [2023/04/02(日) 10:39:44.95 ID:vuecyBii0.net]
- 俺の頭は3枚のスタックで溢れる
- 840 名前:デフォルトの名無しさん (スッップ Sd9f-V10A) mailto:sage [2023/04/03(月) 07:29:00.64 ID:LcmFFSdCd.net]
- 難しいニダ
- 841 名前:デフォルトの名無しさん (ササクッテロロ Sp33-W4em) mailto:sage [2023/04/03(月) 10:36:24.87 ID:rxZSmkg/p.net]
- リカーシブル禁止な
- 842 名前:デフォルトの名無しさん (ワッチョイ dfc9-Cn9/) mailto:sage [2023/04/03(月) 10:54:13.61 ID:amgtJnTb0.net]
- https://ideone.com/BGn4Ew
ChatGPT が示したコード 最初は n 段積まれるけど 途中で積足しがおきてるね 前の再起と後ろの再起
- 843 名前:デフォルトの名無しさん (ワッチョイ dfc9-Cn9/) mailto:sage [2023/04/03(月) 11:17:01.50 ID:amgtJnTb0.net]
- すまね n == 1 でデクリメントしてないがな
- 844 名前:デフォルトの名無しさん (ワッチョイ dfc9-Cn9/) mailto:sage [2023/04/03(月) 11:20:49.83 ID:amgtJnTb0.net]
- https://ideone.com/FKX7i6
なおしたし nやし
- 845 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 19:50:55.17 ID:FTaZkaBO0.net]
- (いつまでこの話題続けるんだろう・・・)
- 846 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 20:00:28.42 ID:GTpIFgvQ0.net]
- ただいま32個目のスタックに到達
- 847 名前:デフォルトの名無しさん (ワッチョイ a9b3-udcE) mailto:sage [2023/04/08(土) 20:36:00.74 ID:SFpZqjEH0.net]
- なんか、
for(size_t i=0... と書く人いません? for(int i=0ではなくsize_tを使う意味はなんでしょうか?
- 848 名前:デフォルトの名無しさん (ワッチョイ a169-/aea) mailto:sage [2023/04/08(土) 20:53:31.67 ID:wgIhukY00.net]
- strlen()やsizeofはsize_tなんだわこれが
- 849 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-6PIS) mailto:sage [2023/04/08(土) 20:55:09.41 ID:3OtdrBzyd.net]
- size_tはintよりサイズが大きいかも知れないし、符号なし整数なんだよね。
- 850 名前:デフォルトの名無しさん (ワッチョイ bd02-oFYy) mailto:sage [2023/04/08(土) 21:16:04.49 ID:rjC7aYJI0.net]
- そのiを主にsize_tとして使う用があるから
もし質問がsize_tとして使う用がないのにiをsize_tにするのか?ということなら、そう書いて
- 851 名前:デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh) mailto:sage [2023/04/08(土) 21:21:03.16 ID:tM+hyW0O0.net]
- >>838
Cにおいて自然数で表されるべきものには全てsize_tを使うべきだと信じてる人達が一定数いる 大きさ、長さ、個数、順番、回数なんかが該当し、そこにはループカウンタも含まれる 意味の問題ではなく教義や主義の問題なんで、自分の考えと違うコードを見かけてもそういうもんだで済ますのがいい
|

|