プログラミングに自信ニキおる?

1 : 2021/05/21(金) 06:00:01.45 ID:A6gkiMCRd
おったら質問したいんやが
2 : 2021/05/21(金) 06:00:13.92 ID:dfegXl1yd
なんや
3 : 2021/05/21(金) 06:00:29.07 ID:uxwf8NvIM
簡潔に頼むよ
5 : 2021/05/21(金) 06:00:37.35 ID:7D3OxykEM
かんや
6 : 2021/05/21(金) 06:00:47.04 ID:0qUYOF+h0
で無事に
7 : 2021/05/21(金) 06:01:19.49 ID:nt409E5U0
てんや
8 : 2021/05/21(金) 06:01:22.49 ID:A6gkiMCRd
void up( char *stone ) {
if ( !strcmp( stone, "") ) {
} else {
up ( stone + 1 );
printf ( stone );
printf ( "\n");
}
}
int main(void) {
up( "*****");
return 0;
}
これがこう↓なるのがわからんのや
*
**
***
****
*****
9 : 2021/05/21(金) 06:02:20.57 ID:RHmSkr7r0
再帰だな
10 : 2021/05/21(金) 06:02:33.63 ID:A6gkiMCRd
ンゴ
11 : 2021/05/21(金) 06:03:30.48 ID:uxwf8NvIM
ポインタ一個ずつ進めてるから
最後に呼び出した関数から先に表示されるから
12 : 2021/05/21(金) 06:04:10.90 ID:A6gkiMCRd
void down( char *stone ) {
if ( !strcmp( stone, "") ) {
} else {
printf ( stone );
printf ( "\n");
down( stone + 1 );
}
}

int main(void) {
down( "*****");
return 0;
}
これがこう↓なるのはわかるんやけど
*****
****
***
**
*

13 : 2021/05/21(金) 06:04:53.09 ID:A6gkiMCRd
これはポインタってやつなんか
授業では今のところそんなのやってないんやが
14 : 2021/05/21(金) 06:05:00.50 ID:Z1po2FdH0
C言語マスターのワイが来たからもう安心や
15 : 2021/05/21(金) 06:05:47.71 ID:nt409E5U0
stoneが",,,,,"のときにstone +1は",,,,"になって、これをupに渡す
20 : 2021/05/21(金) 06:07:24.10 ID:A6gkiMCRd
>>15
最終的に””がupに渡されて stone=“”やから何もせずに終わるじゃないんか?
22 : 2021/05/21(金) 06:08:32.21 ID:nt409E5U0
>>20
""のときは何もしないけど、それか終わって一つ外に出たらさんしょうしてるのは","になるから一個出力されるやん
38 : 2021/05/21(金) 06:18:32.36 ID:A6gkiMCRd
>>22,>>27
先にupがあるからupの中にどんどん入っていって空文字列になって何もせずに終わるんじゃないんか?
39 : 2021/05/21(金) 06:19:35.43 ID:nt409E5U0
>>38
up1の中でup2にはいったら、up2の処理が終わったあとに残りのup1の処理をする
そういう動作
40 : 2021/05/21(金) 06:19:59.70 ID:iKx9ASY10
>>38
再帰のイメージがついてへんのか?
17 : 2021/05/21(金) 06:06:36.96 ID:ZyAF6xyur
帰りがけに表示してるから
18 : 2021/05/21(金) 06:07:06.99 ID:NI6C6kRDp
頭の中でステップ実行しろ
19 : 2021/05/21(金) 06:07:17.00 ID:RHmSkr7r0
なんでdownが理解できてupが理解できんねん
ほとんど一緒やないか

それはそれとしてstrcmp(stone,"")は気持ち悪いな。strlen(stone)==0の方が自然だろ

21 : 2021/05/21(金) 06:08:29.72 ID:A6gkiMCRd
>>19
すまンゴ、この書き方しか習ってないんや
学校の課題なんや
23 : 2021/05/21(金) 06:08:33.00 ID:3uM3Q+Zwr
>>19
それよりも*stone=='\0'やろ
24 : 2021/05/21(金) 06:08:34.04 ID:NI6C6kRDp
>>19
なんとなく処理遅くなりそう
35 : 2021/05/21(金) 06:15:53.61 ID:YqKjVuJvM
>>19
わかる
25 : 2021/05/21(金) 06:09:17.24 ID:vSulGX+u0
プログラマー多すぎやろ
26 : 2021/05/21(金) 06:09:56.46 ID:Is9f6zG30
普通strcmpそこで使うか?
31 : 2021/05/21(金) 06:14:06.77 ID:iKx9ASY10
ifの空ブロックが気になる…
32 : 2021/05/21(金) 06:14:15.01 ID:mEJege88a
プログラマーって頭ええんやな
33 : 2021/05/21(金) 06:15:12.06 ID:A6gkiMCRd
わからんンゴ…
34 : 2021/05/21(金) 06:15:29.20 ID:Z1po2FdH0
実行順としては
up(*****)の中でup(****)の中でup(****)の中でup(***)の中でup(**)の中でup(*)の中で
( !strcmp( stone, "") ) かtrueになって処理が返って来て、初めてprintfが実行されるわけや
36 : 2021/05/21(金) 06:16:08.82 ID:lVQtLnJ50
これ応用して以前ぷよぷよの判定アルゴリズム作ったわ
再帰知らんかったから自分のこと天才だと思ってた
37 : 2021/05/21(金) 06:16:24.13 ID:Is9f6zG30
ポインタが分かってないならこんな課題出んやろ
C言語の文字列について調べてみろ
41 : 2021/05/21(金) 06:20:34.37 ID:hBAPFr7Rd
なんで+1すると文字が一個減るのかわからん
アドレスに+1したんだよね?
42 : 2021/05/21(金) 06:20:36.69 ID:yVnV1jFN0
ワイプログラマー、わからない
43 : 2021/05/21(金) 06:20:44.25 ID:YqKjVuJvM
再起APIとかがすこすこすぎて全然使う機会ないわ
高次関数もあんまりない

コメント

タイトルとURLをコピーしました