X



C言語なら俺に聞け 148
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
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/

※前スレ
C言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0901デフォルトの名無しさん (スプッッ Sd9b-UHBe)
垢版 |
2018/10/26(金) 17:21:54.90ID:JLzES5S7d
>>899
それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
0905デフォルトの名無しさん (ワッチョイ eb72-UHBe)
垢版 |
2018/10/26(金) 18:25:03.95ID:HaLyiKNA0
>>902
なるほどです
理解しました
>>904
これではよくないんですか?
0906デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
垢版 |
2018/10/26(金) 18:25:43.74ID:8JGFizbaa
>>901
引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
0907デフォルトの名無しさん (ワッチョイ eb72-UHBe)
垢版 |
2018/10/26(金) 18:28:06.65ID:HaLyiKNA0
>>906
詳しい説明ありがとうございます
0909デフォルトの名無しさん (ワッチョイ eb72-UHBe)
垢版 |
2018/10/26(金) 19:42:46.18ID:HaLyiKNA0
>>908
すみません間違いました
3以外が入ってるときです
0912デフォルトの名無しさん (ワッチョイ 9764-g60c)
垢版 |
2018/10/26(金) 21:08:53.88ID:ScQN6FWl0
みんな知ってるかもしれないが
[--foo]で--fooオプションが省略可能だということはかなり広範な決まりで,
POSIXに始まりGNUプロジェクトやPythonのインターフェース規格でも取り入れられてる。
0913デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
垢版 |
2018/10/26(金) 22:48:54.99ID:dAefMjKVa
>>910
そりゃいるだろうよ、と思って確認してみた
ubuntuだと環境変数の近くにいるね
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *c = getenv("PATH");
while (--c != NULL)
if (!strcmp(c, "hoge")) {
printf("%s\n", c);
while (++c != NULL)
if (!strcmp(c, "foo")) {
printf("%s\n", c);
return 0;
}
return 0;
}
return 0;
}

$ ./a.out hoge foo
hoge
foo
0921デフォルトの名無しさん (ワッチョイ eb72-UHBe)
垢版 |
2018/10/27(土) 01:29:30.14ID:x+9raBkh0
>>911
そういう意味があるんですね
ありがとうございます
0922デフォルトの名無しさん (ワッチョイ 614f-SUE8)
垢版 |
2018/10/27(土) 13:15:19.86ID:8fc2vBvs0
>>892
違うぞ。

その世代(ベーマガ世代)で変数が理解出来なかったのは、数学的素養がなかったからだ。
数学で「変数」が導入されるのは「方程式」からで、それ以前の小学校の算数は全部「定数」で出来ているから、
その世代の『小学生』はそこに戸惑っただけ。
機械語/BASICとかは関係ない。

高一で物理を始めると、三角関数が出てきて戸惑うようなもの。
学校によっては高二から始めるらしいが、その場合は戸惑うことはないだろ。

或いはアフィン変換も同じ。
あれも数学で回転行列を習った後なら容易いが、
『小学生プログラマ』にやらせようと思ったら、まず座標を教えて、その後に…と色々必要だろ。

数学的素養がないと、プログラミングは理解出来ないんだよ。
小学校教育に取り入れた馬鹿共は、プログラミングが出来ないから、それが分からないだけ。

○○が分からない、と言う奴は大概、数学の素養がないか、そもそも全てを『暗記』で済ませてきたタイプだ。
(世の中大概それでどうとでもなるのも事実ではあるが、)それではどうあがいてもプログラミングは上達しない。
頭を切り換えて、全てを『理解』する癖を付けることだね。そしてまず数学を勉強すべきだ。
そうしないとただのコピペ(写経)マンになってしまう。
(はっきり言って昔のベーマガ世代も実際やっていたのは写経でしかないし)

色々理解したら、なるほどCは文法的にも構造的にも美しく出来ているし、
色々無駄がないからこそ、いまだに現役で使われ続けていることが理解出来るようになる。
ただし、分かりやすいわけではないので、俺は初心者はCから始めるべきではないと思うがな。
0923デフォルトの名無しさん (ワッチョイ 7312-SUE8)
垢版 |
2018/10/27(土) 15:37:40.83ID:BkFfYRiz0
>>922
中学の授業では便宜上は今まで変数を習ったことの無い中学なりたてホヤホヤのガキに変数を教えるんだよな?
なのになんでそれで新中学一年生は変数を理解出来るんだ?
素養が無いのにも関わらず変数を授業で教えると理解できるんだぞ?
不思議じゃないか?
0924デフォルトの名無しさん (ワッチョイ 5761-JHIh)
垢版 |
2018/10/27(土) 15:55:34.30ID:IeSn2Jid0
ベーマガのゲーム入力して
兄「ここの数字増やすと自機数が増えるんだよ」
自分「へぇ」

兄「ここの P=P-1を消すと死んでも自機数減らないんだよ」
自分「へぇ」

当時小学3年ごろ。
これで変数と言うのを理解したわ。
0927デフォルトの名無しさん (ガックシ 06af-UHBe)
垢版 |
2018/10/27(土) 17:08:17.28ID:pWQGtgcn6
線形代数とプログラミングってなんの関係があるん?
最近、プログラミング始めたからよくわからんのよな
0929デフォルトの名無しさん (ブーイモ MMf3-JP9K)
垢版 |
2018/10/27(土) 17:36:20.97ID:DmauAY/3M
>>923
変数にしろ関数にしろ教え方がアホすぎて全然理解できてなかったわ
単に計算できるだけだった

後にプログラミングやるようになって何で学校の数学ではあんな馬鹿な教え方をされたんだろうかと思ったわ
0930デフォルトの名無しさん (ワッチョイ 5b30-7TBo)
垢版 |
2018/10/27(土) 17:38:52.04ID:Ttfv0KRj0
やねうらおとか小学生の時にはもう大学の数学をやっていたというが・・・冗談なのか本当なのかわからんがとんでもねぇプログラマなのは確かだからな・・・
0933デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/27(土) 17:59:56.52ID:p3Z91K38a
P=P-1みたいなのが解らない人は関数型言語に行けば良いんじゃ無いかな。
代数学に比較的近い。
0934デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/27(土) 18:06:00.09ID:p3Z91K38a
>>930
プログラミングに必ずしも数学が得意で有る必要は無いとは言われてるけど、数学得意な人がプログラミング出来るようになる事が多い気はする。
どちらも例外はあるけれども。

少なくともプログラミング関係の専門書って大学数学前提が多い。
前提じゃ無いのはわざわざ高校数学で出来るとか書いてるし。
0936デフォルトの名無しさん (ガックシ 06d9-e7ji)
垢版 |
2018/10/27(土) 18:24:00.38ID:HWNtkJs26
1〜12月を入力し、入力した月の日数を表示する。
これを論理演算子で表示しろという。
else if( month == 3)
{ printf("3月は31日です\n")}
というのを作ったが不可。
論理演算子を使っていないからという。
論理演算子をどう使えばいいんですか。
0943デフォルトの名無しさん (ワッチョイ 614f-SUE8)
垢版 |
2018/10/27(土) 19:54:11.57ID:8fc2vBvs0
>>942
まあ普通はな。
ただそれ以前に、if文11個連ねて書くよりは…のはずだから、
普通は正しく動けばまずはよしで、それより断然いい書き方があるよね、となる。
いずれにしても先生に聞け、でしかないが。
0944デフォルトの名無しさん (ワッチョイ 3f9f-JHIh)
垢版 |
2018/10/27(土) 20:31:12.68ID:FFMC2/bw0
第三回バーチャルYouTuber人気投票リベンジ募集中(全287名、2018年10月27日〜)

あなたの好きなVtuberは?(一人十票)
https://script.google.com/macros/s/AKfycbzW_Er5wP6kI0ZNcmcZVA4UdlXPiernQqL4xG1dVv146T8LwGKZ/exec

・前回(2018/8/22)は不正投票が行われた為、投票を途中で中止させていただきました。大変申し訳ありませんでした。
・Googleフォームは標準仕様では不正投票が可能な為、改造して対策を行いました。
・2018/10/27時点でチャンネル登録数10,000人以上のVtuberを対象としています。
・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。
・一人十票です。(全287名の中からお好きなVtuber10名を選んでください。)
・このフォームに投票するにはグーグルアカウントでログインする必要はありません。
・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。
・今回も1,000人の方が投票するまで継続します。

なお投票結果はスプレッドシートにリアルタイムで表示されるようにしました。
また【概要】と【詳細】でシートを分けております。
https://docs.google.com/spreadsheets/d/1qvhqRdbbOFGQ2veqrnQmaAXIA79xTAANKUKa3HEUUC0

▽過去の投票結果はこちら

第二回バーチャルYouTuber人気投票結果(2018年6月5日〜8月6日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1HqVp41DzLXPSuarWKkqNFZRyL20-nkMF5O5kkeEmqnA

第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1uaKoB3pJQHgC9VEkvg74v9OaSNW3Zvccr91mPN1lt5k


tyjty
0947デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
垢版 |
2018/10/27(土) 23:26:48.51ID:tUxhH/wza
>>936
2月は何日で出すんだ?
0951デフォルトの名無しさん (ワッチョイ 5b9f-7TBo)
垢版 |
2018/10/28(日) 00:11:48.31ID:D9Gt7gmT0
>>936
m を月の数として
printf("%d月は%d日です。\n", m, m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))));
なんてのはどうかな。年がわからないので2月は28日固定だが。

バグの温床になりそうなので普通はこんな複雑なの書かないが。
0953デフォルトの名無しさん (ワッチョイ 5b9f-7TBo)
垢版 |
2018/10/28(日) 00:23:07.12ID:D9Gt7gmT0
>>952
あー。まあそういうことでもあるか。
0954デフォルトの名無しさん (ワッチョイ 614f-SUE8)
垢版 |
2018/10/28(日) 00:55:30.03ID:0+vzkOx80
>>951
お前ら初心者にも分かる言い方を思いついた。

・コードからお題に戻せるコードを書け

なんだよ。
初心者は「お題○○を実現するコードは?」ばかりやってるから、「お題→コード」の変換ばかり考えるけど、
実際に重要なのは逆で、「コード→お題」の変換なんだよ。
今回の例で言うと、お題は

・月を与えて日数を得る関数

だが、これが重要なのではなくて、

・この関数は、月を与えたら日数が得られる

とコードからお題に『逆変換』出来ることが重要なのであって。
0955デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 04:41:04.83ID:vBzuIBdia
それで行くとクイックソートとか最早ムリぽ。

コメント使わ無いのかな。。。
他にも命名規則とか、そう言うので推測し易くしてるもんでしょ。
理想だけじゃ何も書けなくなる。
0957デフォルトの名無しさん (ワッチョイ 614f-SUE8)
垢版 |
2018/10/28(日) 08:48:10.56ID:0+vzkOx80
>>955
コメント自体が既に次善策なんだよ。
可能であれば、コード見たら分かることを目指すべき。

クイックソートが意味不明なコードだとも思わないけど、
あの手の「末端の」関数は適切な名前を付ければそれで問題なくなる。
つまり、sort()なら、「ソートする」と分かり、使う分に支障はないだろ。
数学関数の sin() とかも、実際の中身なんて気にしてないだろ。これと同じ。
問題は、

int d0 = (15657907 >> (m - 1) * 2) & 3 | 28; // 940

int d1 = m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))); // 951

では、ぱっと見意味不明だろ。
だから最低限、「関数として切り出して適切な名前を付ける」か、「コメントを付ける」かが必要になる。
これが上記みたいにベタでコメント無しで書かれてたら、殺すぞテメー、になるって話さ。
0960デフォルトの名無しさん (ワッチョイ 614f-SUE8)
垢版 |
2018/10/28(日) 12:53:44.56ID:0+vzkOx80
>>958
それはいつぞやのコードだろ。
末端の関数だから、適切な名前を付けた関数にすれば問題ない。
俺なら count_1_bits か get_nof_1_bits とかにする。
勿論そのコードがベタでコメント無しで書かれてたらアウトだ。

あと、戻り値は int にしておけ。
0963デフォルトの名無しさん (スプッッ Sd9b-UHBe)
垢版 |
2018/10/28(日) 13:45:43.40ID:Bm6vOY0Hd
>>954
かけるようになるのも大事だけど、それよりもまず読めるようになれってこと?
0970デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 18:05:27.14ID:vBzuIBdia
逆にちょっと高度になるとみんなダンマリ。
最近久しぶりに来たけど、昔のCスレはこんなんじゃなかった。。。
0972デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 18:50:49.19ID:vBzuIBdia
もっと悪くなってるわw

正直、ここの住民がどの程度まで作れるのか分からん。
以前のお題は無視されたから、それ以下だとは思うが。。。
私もたいして書けるわけでもないのに。
(むしろ以前の方が書き込み難かった)
0976デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 19:12:09.42ID:vBzuIBdia
>>975
そっちもチェックはしてる。(ほとんど更新されないが)
こっちでも入門書程度のコードは割と出てたと思うんだが、最近全然出ない。
0978デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 19:20:12.29ID:vBzuIBdia
>>974
高度過ぎもしないが。。。
>>707
0979デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/28(日) 19:25:59.68ID:vBzuIBdia
>>977
それもチェックしてたわ。
済まんかったね。
うーん。。。
なんて言うのかな。。。
こう言うの作ってて、ここが上手くいかないみたいな質問自体が来ないのかな。
最近だとpythonスレとかが来てる方か。

うん分かった。
もうロムるわ。
0980デフォルトの名無しさん (ワッチョイ e33f-7TBo)
垢版 |
2018/10/28(日) 19:44:14.25ID:lBJoUXxI0
>>970
高度な話がしたければすればいいだろう
みんなダンマリなんて嘘こいてないで

てめーがコード1つ示さない低劣野郎なくせに
スッパマンみたいな威張り方してんじゃねえよbogus
0984デフォルトの名無しさん (ワッチョイ 23f9-DNnX)
垢版 |
2018/10/28(日) 23:07:01.51ID:o1iiiQzo0
>>978
>>707本人か?
あれは質問スレでお題なんてそもそもスレ違いであること、お題としても興味をそそられないつまらない内容であること、1日レスが付かなかった程度でその後の痛々しい反応など、スルーされる要素てんこ盛りで当然の結果だろう。
0985 ◆QZaw55cn4c (ワッチョイ 9360-278X)
垢版 |
2018/10/28(日) 23:49:52.62ID:0CAv0Ngu0
>>984
>1日レスが付かなかった程度でその後の痛々しい反応
こういうのは、何度となくやって、手ひどく罵倒されでもしないと、なかなか身につきませんね
スルー力も大事だし、スルーされることに耐える能力も必要です…
0987デフォルトの名無しさん (ワッチョイ 0781-HyCk)
垢版 |
2018/10/29(月) 00:28:01.98ID:OYdZGMPI0
あとちょっとで終わるから、埋め草
設問が今一分からないんだよね
合計を求める←これは問題の範囲にはないよね
1から順に足していって140まで、
その答えを順に表示しろって事かな?まさかね
合計値を文字列に変換する←何進数か分からない
最後に4桁ってあるから多分10進数でいいんだろうけど
16進数なのかもしれない
(4〜7行目は意味が不明なので読み飛ばした)
保存場所の間違いって何?

客からこんな依頼きたら、頭が変になりそうw
0988デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
垢版 |
2018/10/29(月) 01:57:31.15ID:X3/iEvqW0
除算とその余りで桁を分離できる大発見をしたので、それを解説するためのお題を出しただけでしょ。
情報処理勉強してる学生かな。
プログラム的に役に立つ発見ができて良かったじゃない。
おれも中学生くらいのときにじゃんけんの勝ち負け判定は剰余を使うとシンプルに書ける大発見をして心踊ったもんだ。
0991デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/30(火) 16:13:05.26ID:m+t0SJNKa
>>984
本人よ〜。
だから直ぐ下でロムるって書いた。
じゃあの。
0993デフォルトの名無しさん (アウアウカー Sad3-jr42)
垢版 |
2018/10/30(火) 17:20:26.15ID:m+t0SJNKa
>>992
自分でもそう思ってるのにコードが出てこなくて失望した。
スレ違いにしても誰かしら書くと思ったのに。
まあいいよ。
もうこのスレに期待しない。
バイバイ。
レス数が1000を超えています。これ以上書き込みはできません。

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