ぽまいらC言語教えてくれない?

1 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:14:59.527 ID:O2A04fpq0.net
数列使う練習してるんだが、出力が大変なことになってる

/*3つの階級に点数を分ける*/
#include<stdio.h>

int main()
{
int i, a[15] = { 32,48,45,64,98,78,95,43,21,56,75,43,55,68,85 }, b[3];

for (i = 0; i <= 14; i++) {

if (0 < a[i] < 60) b[0]++;
else if (a[i] >= 60 && a[i] < 80) b[1]++;
else b[2]++;

}

printf(“%d %d %d ¥n”, b[0],b[1],b[2]);

return 0;
}

実行結果
-855993445 -858993460 -858993460

29 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:30:54.650 ID:8mnYDwipM.net

この評価式だと負の値の時b[2]がインクリメントされるアホアホロジックだからunsigned intで宣言すべき

55 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:11:12.914 ID:BH4UrWSCM.net

>>52
ておもうじゃん?
でもC言語使う現場って、メモリカツカツ時代の頃のすげー昔からずーーっと引き継いでるソースめっちゃあるんよ
もうかれこれ10年以上某日本車メーカーの制御システム作ってっけど、int型なんてほぼ見ない

52 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:01:47.767 ID:ostPxRqnd.net

>>51
1つ目はまぁわかるけど2つ目と3つ目はif文の制御ちゃんとしてればどっちでもよくない?
メモリカツカツな時代でもあるまいし

56 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:16:31.591 ID:BH4UrWSCM.net

>>53
int とかcharとかが、そもそも一体なんなのか?何が違うのか?
主にメモリ周りのことだけどこのあたりの基礎だけでも勉強すると、一気に理解すると個人的には思ってるよ
たぶんこれからポインタとか勉強するだろうから必ずぶつかるだろうけど頑張って

2 :ちんちんなえなえ丸:2018/07/16(月) 08:16:42.545 ID:bCKYXXSf0.net

bを初期化してないから

36 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:35:28.770 ID:O2A04fpq0.net

<<30
指摘ありがとう

54 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:04:38.331 ID:v+z02wcMa.net

>>52
まったく同意

39 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:38:51.338 ID:O2A04fpq0.net

安価もろくにできなくなってるもうダメだわ

14 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:22:14.893 ID:EEgtd4/c0.net

C って「0 < a[i] < 60」こういう評価できるの?

33 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:32:43.446 ID:25az0Gse0.net

>>24
言われないことやるとかクソすぎじゃんw

6 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:17:42.564 ID:U7ouhZ/u0.net

def b

12 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:20:43.912 ID:GVZNJT1Aa.net

Bを初期化せんかいや!!
C言語なめてんのか?

7 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:18:11.043 ID:bVqnd+8y0.net

怒涛のB連打

17 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:23:17.422 ID:GVZNJT1Aa.net

IFの条件式をわけんかいや!!
C言語なめとんのか!

3 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:16:46.435 ID:5Pmtpt4Lp.net

bの中身が未定義やないかい

63 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:28:31.897 ID:v8OR025/M.net

>>60
最初に>>56が書いてあればその言い分もわかるけど
>>51はそんな取捨選択してねって書き方じゃないじゃん。
こんな難しいこと知ってるよ!日本車メーカーで仕事してるよ!
って言いたいだけに見えるわ

15 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:22:29.398 ID:PMZRFHMca.net

if (0 < a[i] && a[i] < 60 )

53 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:03:49.846 ID:O2A04fpq0.net

>>51
へぇー、charで数字の変数定義するんだ
unsigned使えって前のレスでも言われたな今後のためにも積極的に使うわ

51 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:57:15.136 ID:BH4UrWSCM.net

>>45
じゃ、このコードをもう1ステップ改良する話

直値はdefine定数に変えて、極力直値を使わないようにしよう
符号付整数を使う予定がないなら、unsigned で宣言した変数を使おう
変数の範囲がMAX255以内ならchar型変数を使おう

31 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:32:33.458 ID:D83grt0x0.net

>>27
includeの位置おかしくなってんぞ

49 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:49:16.876 ID:FRFQLgmn0.net

b[(a[i]>=60) + (a[i]>=80)]++;

5 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:17:29.444 ID:DLtFJTtv0.net

b定義

47 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:46:40.336 ID:dQ0c+xMA0.net

命令文のお作法もそうだけどアルゴリズムとしてのお作法も学んだほうがいいかもね
初期化とかCに限った話ではないし

9 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:18:43.036 ID:8mnYDwipM.net

b[3]={0};

61 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:23:48.585 ID:ibB2E0qp0.net

intとcharはビット数が違うかもしれない

27 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:29:03.556 ID:O2A04fpq0.net

/*賢い人教えてくれてありがとう*/
int main()
{
#include<stdio.h>

int i, a[15] = { 32,48,45,64,98,78,95,43,21,56,75,43,55,68,85 }, b[3] = {0,0,0};

for (i = 0; i <= 14; i++) {

if (0 < a[i] and a[i] < 60) b[0]++;
else if (a[i] >= 60 && a[i] < 80) b[1]++;
else b[2]++;

}

printf(“%d %d %d ¥n”, b[0], b[1], b[2]);

return 0;
}

出力
8 4 3

58 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:17:50.416 ID:U7ouhZ/u0.net

intとcharって何が違うんだ?

50 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:54:22.900 ID:D83grt0x0.net

>>49
面白い

16 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:23:10.315 ID:O2A04fpq0.net

>>12
すまんC言語勉強したてで初期化知らなっかたんだわ

37 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:36:33.608 ID:O2A04fpq0.net

<<29
今のままだと俺があほあほなんでググって勉強します

62 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:27:05.235 ID:gVQ34Xjw0.net

>>58
charは1バイト整数
intはCPU次第だけど普通の整数

41 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:39:36.174 ID:jSnycLzU0.net

プログラミング分からなくなったら5ちゃんで聞けば教えてくれるのか

46 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:45:04.653 ID:gxq5HBOH0.net

>>42
来てないぞ

57 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:16:36.639 ID:v8OR025/M.net

>>55
その日本車メーカー様のローカルな化石ルールをif文の条件式も怪しい感じのレベルの人に伝授する必要ある?

59 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 09:17:54.329 ID:dQ0c+xMA0.net

個人で作るならパフォーマンスなんて置いておいてもいいけど業務用になっちまうとほんのコンマ数秒が命取りだからね

8 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:18:36.730 ID:8RIZ90cB0.net

HelloWorldからやり直せ

43 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:42:38.476 ID:O2A04fpq0.net

>>40
ほー、そうなのかまた一つ学が増えたわありがとう

26 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:28:48.773 ID:v+z02wcMa.net

>>22
わからんなら黙っといてくれる?

19 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:23:23.829 ID:D83grt0x0.net

0 < a[i] < 60
こんな条件式は使えない

48 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:46:45.740 ID:Dso6h5EO0.net

安価ミスの仕方に笑った

20 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:24:09.490 ID:U7ouhZ/u0.net

あ、Cだとand→&&か

10 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:19:38.211 ID:PMZRFHMca.net

初期化しろよ

35 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:34:45.661 ID:UkTWbPjf0.net

Javascriptでしょ

11 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:20:30.582 ID:O2A04fpq0.net

b変えてみたけどやっぱおかしい?

int main()
{
#include<stdio.h>

int i, a[15] = { 32,48,45,64,98,78,95,43,21,56,75,43,55,68,85 }, b[3] = {0,0,0};

for (i = 0; i <= 14; i++) {

if (0 < a[i] < 60) b[0]++;
else if (a[i] >= 60 && a[i] < 80) b[1]++;
else b[2]++;

}

printf(“%d %d %d ¥n”, b[0], b[1], b[2]);

return 0;
}

出力
15 0 0

22 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:24:57.961 ID:1xKR0oWY0.net

俺プログラミングはよく分からないけどなんか最近&&じゃなくてもよくなったとか聞いたぞ

44 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:42:54.911 ID:D83grt0x0.net

>>41
こういう風に具体的な話なら教えてくれる人いっぱいいると思う
「プログラムしたいけどどんな言語がいいの」とかざっくりだと荒れる

32 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:32:42.712 ID:Yqx+FrKx0.net

elseifも最初の条件で60以上しかこないから〈80だけでもいいんじゃ

25 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:28:13.685 ID:0KQom2Xj0.net

言われたこともできないC++に比べたらCちゃんは素直な子だろうが

40 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:39:19.911 ID:ostPxRqnd.net

>>37
>>29はマイナスの点数が配列に紛れ込んだとして、80点以上ってカウントされちゃうよってことよ

24 :以下、?ちゃんねるからVIPがお送りします:2018/07/16(月) 08:25:54.206 ID:pnUGGIKI0.net

C言語不便すぎない?
言われたことしかできないのかよ

参考になったらSNSでシェアお願いします!

レスを投稿する(名前省略可)

この記事を読んだ方へのおすすめ

Sponsored Link

最近のコメント

コメントはまだありません
ページTOPへ↑