このプログラムできまっか?

1仕様書無しさん
垢版 |
2021/07/10(土) 00:06:32.93
C言語
2仕様書無しさん
垢版 |
2021/07/10(土) 00:08:38.14
1 入力した文字列を逆順
2 入力した文字列と逆順させた文字列を連結
2021/07/10(土) 00:17:24.65
>>2
できる
4仕様書無しさん
垢版 |
2021/07/10(土) 00:25:11.01
逆順させた文字列と入力した文字列が連結できないです
2021/07/10(土) 00:25:52.31
なんで?貼ってみそ
6仕様書無しさん
垢版 |
2021/07/10(土) 00:30:04.21
char moji[100];
char b;


printf("入力\n");
scanf("%s",moji);


b=0;
while(moji[b] != 0)
b++;



for(b--;b>=0;b--)
printf("%c",moji[b]);
printf("\n");
7仕様書無しさん
垢版 |
2021/07/10(土) 00:31:55.53
printf("逆順%c",moji[b]);
にすると入力分だけ逆順が表示されます。。
2021/07/10(土) 11:20:27.47
クソスレたてるな
質問するなら相手に分かる文章を書け
インデントをちゃんとしろ
while文for文の繰り返し対象が文1つでもブロックで囲め
配列添字の型はcharではなくintにしろ
2021/07/19(月) 13:28:34.74
ひでえコード
10仕様書無しさん
垢版 |
2021/08/04(水) 17:26:05.71
せめてwandboxのpermalink貼ってくれ悟空ー!!
2021/08/04(水) 17:35:44.38
配列の添字にintは勿体ない
charで十分
12仕様書無しさん
垢版 |
2021/08/04(水) 19:15:13.11
>>11
何が勿体ないだよ?
まだ8bitCPU使ってるのか?
2021/08/04(水) 21:38:00.25
配列の定義は100バイト
つまり添字は100以上は使わない
charで十分
14仕様書無しさん
垢版 |
2021/08/04(水) 23:22:04.33
仕事でそんな厨房のような設計する奴が来たら直ぐチェンジだわ

8bit 環境じゃ無いなら int をケチって char にしてもリソースの節約にもパフォーマンスの高速化にもならんし
100文字までの仕様がちょっと増えただけでインデックスが折り返してしまう潜在不具合を仕込むし

メンテナンス性を全く考えずに無意味な最適化で喜んでる
2021/08/05(木) 04:06:04.31
バウンダリでアライメントがいくつつこうが
cの言語仕様としてのcharは1バイト
intをcharにすることで省力化に成功している

また、for(b--;b>=0;b--)で
\0を出力しないようさりげなく考慮している部分も良いと思う

>>6は無駄を排除した洗練されたコードと言えよう
16仕様書無しさん
垢版 |
2021/08/06(金) 18:46:40.05
コンパイラが最適化するようなところに可読性落としてまで中途半端な最適化入れるやつ困るわ

若い頃の自分がそうだったが
2021/08/06(金) 19:14:25.83
別にチューニングするのはかまわんと思うが
環境依存になってしまっているコードでドヤ顔されても
「それはあなたの環境ですよね」としか言いようがない
2021/08/06(金) 20:33:08.74
すげえオナニーコードだな。
forの初期化式にデクリメントなんかあったら普通に「は?」だわ。
そりゃ数秒で動くのはすぐわかるけど、この程度の内容で可読性無視して変数ケチるくらいパフォーマンス気にするか?
まあ間違いなく大規模開発したことない素人だな。
リーダブルコードおかずにセンズリこいてろ。
2021/08/06(金) 21:48:40.99
char moji[100];
int b;

scanf("%s%n",moji,&b);
while(b>-1){
printf("%c",*(moji+b));
b--;
}
2021/08/06(金) 21:59:58.54
char moji[100];
int b;

scanf("%s%n",moji,&b);
while(printf("%c",*(moji+(b--))) && b >-1);
2021/08/06(金) 22:21:14.28
>>19 >>20
落書きなら便所の壁にお願いします
22仕様書無しさん
垢版 |
2021/08/07(土) 00:43:05.85
配列をポインタであると見抜ける人でないと難しい
2021/08/07(土) 15:15:46.67
見抜くってw当たり前の知識だろ
2021/08/07(土) 17:18:39.38
>>23
お前何者?
25仕様書無しさん
垢版 |
2021/08/07(土) 23:25:24.78
>>23を知らないなんてもぐりだろ
2021/08/08(日) 00:32:23.24
配列とポインタは別の概念
実装レベルで同じだからといってシンタックスシュガーなんて言い出すのは正しくない
2021/08/08(日) 11:37:46.89
>>17がひろゆきの名言のパロディを書いたから、
>>22もひろゆきをパロったんだよ

「それはあなたの環境ですよね」
  ↓
「それはあなたの感想ですよね」


「配列をポインタであると〜」
  ↓
「ウソをウソであると〜」
2021/08/08(日) 12:27:03.58
そもそも容量を節約したいなら他に方法あるでしょ
2021/08/08(日) 12:52:44.41
>>28
たとえば?
2021/08/08(日) 13:38:26.66
>>29
構造体 アライメント
2021/08/08(日) 18:43:42.34
ビットフィールドとか懐かしいな
しばらく使ってない
2021/08/08(日) 23:42:46.85
charで手軽に節約する前にまずビット演算だろう
2021/08/08(日) 23:43:33.76
そもそもintは何bitかの保証がない
仮にintが4bitであるならば、charにすると2倍になってしまう
2021/08/09(月) 08:15:44.92
>>31
どこにビットフィールドがでてくるんだよ

>>32
ビット演算なんて使う局面ないだろ
2021/08/09(月) 13:57:51.82
>>1の仕様によると使用する値は0〜100。つまり101〜255までは空いてるんだよ
まだまだ詰められるじゃないか
2021/08/09(月) 14:03:24.58
>>35
どうやって詰めるの?
メモリってバイト単位でとられるんじゃないの?
37仕様書無しさん
垢版 |
2021/08/10(火) 00:37:13.33
大学の課題だか研修の課題だか知らんけどこんなんにパフォーマンス求める前にまず誰か動くコード出してみろよ
https://wandbox.org/
2021/08/10(火) 10:40:26.05
ほらよ
https://wandbox.org/permlink/JQc6ZwNrcNThSfkY
39仕様書無しさん
垢版 |
2021/08/10(火) 13:58:31.52
やりなおし

intはつかうな
shortかlongをつかえ
2021/08/10(火) 15:15:38.09
キモいコード
41仕様書無しさん
垢版 |
2021/08/10(火) 16:12:25.47
クーラー涼しい
2021/08/11(水) 06:45:49.05
出来たンゴねー:⊂二二二( ^ω^)二⊃ブーン
日本語にも対応してるンゴ
>>1の仕様も満たしてるぞ
https://wandbox.org/permlink/JZq9MSZF8XJXWqiG
43仕様書無しさん
垢版 |
2021/08/11(水) 13:25:23.59
>>11
> 配列の添字にintは勿体ない
> charで十分

まじワロタw
組込みやってんのかな?笑
2021/08/11(水) 13:42:59.46
>>39
short, int, longのどれを使っても処理系の特性に依存する点で同罪だよ
添え字はsize_tなんてぬかすやつがいるが、これもおかしい
配列の先頭と末尾のポインタを算術減算して導かれる型はptrdiff_tだ
45仕様書無しさん
垢版 |
2021/08/11(水) 16:05:44.68
https://ideone.com/DfxhbY
2021/08/12(木) 06:16:32.85
こんなので良いの?
https://paiza.io/projects/2nFhbeys3KrtgOtyzQCGkQ
2021/08/12(木) 06:24:25.50
いやーしかし、このスレって scanf() で %s 使う人結構居るのかな?もしやここ初心者だらけ?
プログラムに関する質問ならプログラマー板ではなくプログラム板に行った方が良いと思うぞ。
48仕様書無しさん
垢版 |
2021/08/12(木) 09:02:09.06
>>47
プロの本気見せてやれよ
49仕様書無しさん
垢版 |
2021/08/12(木) 12:29:32.89
そもそも scanf 使うのが間違い
2021/08/12(木) 12:45:53.07
プロは sscanf 使う
さらに文字数制限をかける
そして改行を読み飛ばす
sscanf(buff, "%" #N "s%*[^\n]", s);
https://marycore.jp/prog/c-lang/scanf-string-safely/
51仕様書無しさん
垢版 |
2021/08/12(木) 12:47:40.72
scanf 使ってるプロなんて見たことない
2021/08/12(木) 14:41:58.93
それ昔から言われているけど
じゃあ代わりに何を使うの?
2021/08/12(木) 15:08:39.28
fgets
54仕様書無しさん
垢版 |
2021/08/12(木) 17:43:09.84
>>48
本気ってほどではないがとりあえず何も考えずに無念無想で書いたのが>>46
55仕様書無しさん
垢版 |
2021/08/12(木) 18:10:26.52
>>50
俺はsscanf()も文字列一つ切り出すだけなら使わないな。strchr()とかで自分で抜き出す範囲探してstrncpy()とか使っちゃう。
もっとこう、1行に複数の値が並んでいてsscanf()使って値を抜き出した方が効率良さそうとか見易くなりそうと思えるような時に使う。

しかし、そんなテキスト処理は sed, awk, perl 等のテキスト処理について細かく考える必要のない言語使ってしまう事の方が多いな。
2021/08/12(木) 18:14:09.30
scanfなんて競プロでしか使わないでしょ
プログラムで使ってる奴いたらやばい人
2021/08/12(木) 18:59:54.48
客先提供や長期に渡ってつかうアプリでscanfは使ったらいけないだろうけど、
一時的な動作確認や、机上テスト用ソースにまで使うなってのは度が過ぎると思う。
2024/03/29(金) 15:59:11.06
夜勤もあったの?
どっちも見ないよ
仕返しならアンチOKになった
↑親米系とカルトはマジで言うと?」と再び聞く
https://i.imgur.com/nvDNOc2.jpg
https://i.imgur.com/YE6rtAy.mp4
2024/03/29(金) 16:28:29.12
なので
2024/03/31(日) 05:47:58.22
>>58
グロ
レスを投稿する