2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

ぼく、C言語プログラミング学習ぼく、なぜかコンパイルエラーが出る

1 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:09:12.434 ID:Ie54pdjf0.net
/*0から100までを入力して最大値と最小値を取得するプログラム
-1が入力されたら終了ってのなんだけどなぜかコンパイルエラーが出る、なんでだ?*/
#include <stdio.h>

void maxmin(int data[],int *max, int *min); /*プロトタイプ宣言 ポイント変数を使います*/

int main(void)
{
int i =0, data[10],max,min;

printf("1~100を入力してください\n終了するには-1\n");
do {
printf("%d回目-->", i + 1);
scanf("%d", &data[i]);
i++;
} while (data[i -1] != -1);

maxmin(data[], &max, &min); /*配列とmax、minのアドレスを渡す*/

printf("最大値は-->%d\n",max);
printf("最小値は-->%d\n",min);
}

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
int *max = 0; /*通常変数モード*/
int *min = 100;

while (data[i] != -1) {
if (data[i] > max) {
max = data[i];
}
if (data[i] < min) {
min = data[i];
}
i++;
return 0;
}
}

2 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:10:30.876 ID:Ie54pdjf0.net
なんでだよ

3 :以下、\(^o^)/でVIPがお送りします:2020/12/30(水) 20:10:54.510 ID:MPwtq6Yx0.net
見てないけど全角ブランクが入ってる

4 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:12:21.179 ID:Ie54pdjf0.net
なんでだよ

5 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:13:38.283 ID:Ie54pdjf0.net
プログラミング先生きて

6 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:14:25.876 ID:EfI90vDe0.net
maxminで同じ変数名宣言されてない?
C特有のやつで久しぶりに見たらこれ行けるっけ感

7 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:16:03.536 ID:Ie54pdjf0.net
>>6
いや、最初のはプロトタイプ宣言ですけど…

8 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:17:01.169 ID:xqGac7Ee0.net
関数の引数と同じ変数名使えるんけ?

9 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:17:09.044 ID:EfI90vDe0.net
maxminのループの中にリターン入っていて変なことなってない?voidだからエラーは吐かなさそうだけど

10 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:18:05.980 ID:AMXN+H0p0.net
C言語知らんけどreturnの位置ってそこで大丈夫なの

11 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:20:03.483 ID:EfI90vDe0.net
>>7

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/

ここの int maxと

{
int i = 0;
int *max = 0; /*通常変数モード*/

ここで int max
の同じ名前の参照変数作ってない?

12 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:20:08.523 ID:+xu1YfIi0.net
コンパイルエラーってコンソール出力ないの?

13 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:20:14.741 ID:R9MLw72V0.net
長い
三行で頼む🙏

14 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:20:23.216 ID:AjyRSR3v0.net
まずエラー文見せろよ

15 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:21:03.867 ID:eAZoHQvT0.net
void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
int *max = 0; /*通常変数モード*/
int *min = 100;

maxとminが二重定義じゃないの?

16 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:21:27.857 ID:Ie54pdjf0.net
>>11
あーそういうこと
じゃあポインタ型じゃなきゃいいんだ?

17 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:22:14.453 ID:Ie54pdjf0.net
>>11
いや違うわ
これ通常変数モードに切り替えてるから同じ変数でいいんだよタコ

18 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:22:45.607 ID:Ie54pdjf0.net
>>15
実引数って宣言の必要ないの?

19 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:23:17.836 ID:HxmY753M0.net
ツンデレプログラミング先生ニキかっこよくて好き

20 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:24:22.332 ID:Ie54pdjf0.net
はい
*min = 100;
*max = 100;
に直しましたけどエラーでましたね

「16行目」で記述エラーを発見しました。
「identifier」を付け忘れています。

maxmin(data[], &max, &min); /*配列とmax、minのアドレスを渡す*/

ここの部分ね

21 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:24:40.716 ID:FVRiqSHc0.net
return

22 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:25:48.162 ID:a/Z/0JLZa.net
エラーメッセージ見ろよ
なんで無視するんだよ可愛そうだろ

23 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:26:14.801 ID:WcFjR8uo0.net
うちの新人もよくエラーがでるエラーでる言うけど
どんなエラーメッセージなのか言わないんだよな

24 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:26:58.167 ID:Ie54pdjf0.net
>>22-23

>>20みろよタコ

25 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:28:18.411 ID:a/Z/0JLZa.net
data[] → data

26 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:29:10.405 ID:EfI90vDe0.net
>>16
最強決定戦するだけの一時的なスペースだったらもっとそれっぽい名前のがいいし
結果そのものに反映させたいなら宣言自体が要らない

別件だけど
たぶん配列の中身が実際の数字データだからその数字をポインタ変数にぶっこもうとしてる?
今のコンパイラならストップしてくれてるかもしれん

27 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:29:36.105 ID:KekA94sVd.net
なんでそんな偉そうなの?
センスないから辞めたほうがいいよw

28 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:30:08.770 ID:WqR54exI0.net
void maxmin(int data[], int *max, int *min)

void maxmin(int *data, int *max, int *min)

maxmin(data[], &max, &min);

maxmin(data, &max, &min);

returnを削る

29 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:31:23.667 ID:Ie54pdjf0.net
>>25
dataでもdata[]でも*dataでも変わらないっすよ先生w

30 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:32:15.258 ID:oulJy7hG0.net
;が変な奴になってるとか

31 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:33:23.971 ID:Ie54pdjf0.net
>>28
うーん
data[]も*dataも配列の一番最初のアドレス渡してるから変わらんけどね

32 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:33:41.479 ID:Ie54pdjf0.net
>>30
なわけねえだろ…
よく見ろよ無知タコ

33 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:37:42.668 ID:Ie54pdjf0.net
>>26
いや、そんなことしてないんだけど…

34 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:38:26.426 ID:xqGac7Ee0.net
16
maxmin(data[], &max, &min); /*配列とmax、minのアドレスを渡す*/

maxmin(data, &max, &min); /*配列とmax、minのアドレスを渡す*/

25,26
int *max = 0; /*通常変数モード*/

int *min = 100;

*max = 0; /*通常変数モード*/

*min = 100;

このサイトでコンパイルしたら警告だけになったから後は自力でやれ
https://www.tutorialspoint.com/compile_c_online.php

35 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:38:53.769 ID:zgXVZA1mM.net
あと1時間くらい待て

36 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:41:01.516 ID:O2YeKjE2M.net
void型関数でreturnすんな

37 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:41:08.119 ID:RSWPVNnXr.net
C言語知らんけど11回ループしたら死ぬのでは?

38 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:42:58.822 ID:X8nC+iWA0.net
エラーメッセージも貼らない無能って

39 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:43:56.160 ID:Ie54pdjf0.net
>>36
なんで?
0返してるからいいだろ

40 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:45:06.673 ID:Ie54pdjf0.net
>>34
いやいやいやいや
data[]もdataも同じじゃね?
どちらにせよ配列型の引数は配列の最初のポインタを渡しているんだからさ!
なんとかいえよ先生

41 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:47:51.650 ID:Ie54pdjf0.net
>>34
はい
data[]からdataを渡すようにしたら
maxmin関数ないで使われている配列はなに?ってエラー出ましたけど?????

42 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:51:17.798 ID:O2YeKjE2M.net
>>39
void型関数はreturnがない時に使え

あとmainにreturnがない

43 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:52:45.604 ID:Ie54pdjf0.net
はい
変えましたよ
君たちのいうとおりにね
ただエラーでたけどね

「29行目」で記述エラーを発見しました。
警告
comparison between pointer and integer
「30行目」で記述エラーを発見しました。
警告
assignment makes pointer from integer without a cast
「32行目」で記述エラーを発見しました。
警告
comparison between pointer and integer
「33行目」で記述エラーを発見しました。
警告
assignment makes pointer from integer without a cast



#include <stdio.h>

void maxmin(int data[],int *max, int *min); /*プロトタイプ宣言 ポイント変数を使います*/

int main(void)
{
int i =0, data[10],max,min;

printf("1~100を入力してください\n終了するには-1\n");
do {
printf("%d回目-->", i + 1);
scanf("%d", &data[i]);
i++;
} while (data[i -1] != -1);

maxmin(data, &max, &min); /*配列とmax、minのアドレスを渡す*/

printf("最大値は-->%d\n",max);
printf("最小値は-->%d\n",min);
}

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
*max = 0; /*通常変数モード*/
*min = 100;

while (data[i] != -1) {
if (data[i] > max) {
max = data[i];
}
if (data[i] < min) {
min = data[i];
}
i++;
return 0;
}
}

44 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:52:55.851 ID:xqGac7Ee0.net
どう書き直したか具体的に書かんしエラー文の内容も貼り付けられないのならもうめんどくせーわ

45 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:53:49.474 ID:Ie54pdjf0.net
>>42
はい、直しましたけど
エラーは変わっていないですね・・・・・・・・・・・・・・

46 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:55:29.912 ID:Ie54pdjf0.net
>>44
引数をdata[]→dataに変えた
main関数にreturn 0;を
maxmin関数にreturnを外した
maxmin関数内の
int max = 0;
inr min =100;

*max = 0;
*min = 100;
に変えた
以上

47 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:55:41.480 ID:mvRCg9r6r.net
通常変数モードって宣言すると永続的に切り替わるわけじゃないのよ
data[i]>max
これ変数とポインタを比較してるからダメね

48 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:57:22.990 ID:xqGac7Ee0.net
警告だけになったんなら走りはするだろ
>>47の言うとおりまともに動かんと思うが

49 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 20:58:45.077 ID:Ie54pdjf0.net
>>47
void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
*max = 0; /*通常変数モード*/
*min = 100;

while (data[i] != -1) {
if (data[i] > max) {
max = data[i];
}
if (data[i] < min) {
min = data[i];
}
i++;
}
}

おいおい
*maxとか*minで変数に切り替えしているだろう・・・
それとも配列がポインタになっているの?

50 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:01:01.092 ID:mvRCg9r6r.net
>>49
*maxって言ったからってその後も通常変数扱いになるわけじゃねーのよ
data[i] > *max
みたいに通常変数として扱いたいならその都度*付けて

51 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:01:01.368 ID:vhM96wr+M.net
切替www

52 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:02:05.923 ID:X8nC+iWA0.net
ちょっと見たけど、ポインタと配列をそもそも理解してないだろ
コードの修正というより、お前に理解させた上で
正しい書き方を教える羽目になりそう

53 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:04:16.203 ID:Ie54pdjf0.net
ほんとだ
動いたわ
変数モードって永続的じゃないんだね
ではここで質問
maxmin関数にアドレスを渡して
ほれをポインタ変数に受けとりました
通常変数モードに切り替えて0と100を代入
通常変数モードに切り替えて配列と比較

こんなか流れ?

54 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:04:33.986 ID:WS4QOAIhM.net
それもいいけど-1だけ入力したらバグるよ

55 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:05:05.418 ID:k35fJLus0.net
void foo(int *x) { // 2)仮引数はint型ポインタ変数x
*x=10; //3) ポインタ変数はこう使う(覚えるだけ
}

void main(void) {
int n = 5;
printf("1st=%d\n",n);
foo(&n); // 1) ここで変数nのアドレスを渡す
printf("2nd=%d\n",n);
}

56 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:08:21.903 ID:Ie54pdjf0.net
>>54
最初に-1入力して終了させてるガイジはいないだろ

57 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:10:15.041 ID:k35fJLus0.net
>>56
自分しか使わないならそれでいい
他人が使う可能性があるならガイジが使う想定をして作る

58 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:10:30.476 ID:PSw6useV0.net
切り替えって考えをやめた方がいい
ポインタ変数はそもそもアドレスを入れるもので、そのアドレスの位置にある値を見たい時にキャスト的に*を付けるんだよ

59 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:10:32.044 ID:MXDfDzRCM.net
>>56
11個以上入力するとバグるぞ

60 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:10:41.629 ID:mvRCg9r6r.net
>>56
まぁこういう勉強段階ではいいけど何か作る際はガイジがいる前提で何されてもいいように作るんやで

61 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:12:28.346 ID:JpNnlfSz0.net
>>59
それ俺も思った

62 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:15:43.505 ID:KekA94sVd.net
仕事出来なそう

63 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:18:52.130 ID:Ie54pdjf0.net
とりあえず
-1問題は解決っと
11回問題はどうする?

64 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:19:28.401 ID:Ie54pdjf0.net
参考までにmain関数内に以下を記述した。

if (data[0] = -1) {
printf("プログラムを終了します\n");
return;
}

65 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:22:00.567 ID:Ie54pdjf0.net
この場合は
do while分の中にif分を書いて[i]がi >= 10になったらbreakすればいいのか?

66 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:22:55.417 ID:JpNnlfSz0.net
for(i=0;i<10;i++){
中略
if(data[i]==_1){
break;
}
}
じゃあかんのか?

67 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:25:54.030 ID:Ie54pdjf0.net
あれ、break分書いたらプログラムが終了する・・・・・・・・・・・・
10回目入力終わったら終了する・・・・・・・・・・

68 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:28:37.762 ID:+xu1YfIi0.net
エラー貼らない理由はなんかムカつくから?

69 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:29:09.421 ID:k35fJLus0.net
可読性を高めるなら
繰り返しの終了条件は先に書いたほうが良いぞ

70 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:29:53.873 ID:NR8Qlh4Y0.net
配列にするからめんどくさいんだよ初期値入れといて値の入力ごとにmaxminと比較しろ

71 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:36:24.707 ID:Ie54pdjf0.net
>>69
どゆこと?

72 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:41:16.364 ID:Ie54pdjf0.net
最大値と最小値が意味不明な数字になる・・・

#include <stdio.h>

void maxmin(int data[],int *max, int *min); /*プロトタイプ宣言 ポイント変数を使います*/

int main(void)
{
int i =0, data[10],max,min;

printf("1~100を入力してください\n終了するには-1\n");
do {
printf("%d回目-->", i + 1);
scanf("%d", &data[i]);
i++;
if (i >= 10) {
break;
}
} while (data[i -1] != -1);

if (data[0] == -1) {
printf("プログラムを終了します\n");
return;
}
maxmin(data, &max, &min); /*配列とmax、minのアドレスを渡す*/

printf("最大値は-->%d\n",max);
printf("最小値は-->%d\n",min);
return 0;
}

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
*max = 0; /*通常変数モード*/
*min = 100;

while (data[i] != -1) {
if (data[i] > *max) {
*max = data[i];
}
if (data[i] < *min) {
*min = data[i];
}
i++;
}
}

73 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:43:08.585 ID:k35fJLus0.net
maxmin関数、データが10件入力される前提になってね?

74 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:43:48.837 ID:7QXt3YAP0.net
エラーメッセージ読めないでこれから先どうやってプログラムを書くのか

75 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:45:48.914 ID:UkFbV+Vq0.net
data[]の-1初期化ってどこでやってんの

76 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:48:25.737 ID:+xu1YfIi0.net
もうわざとだろエラーメッセージ頑なに貼らないの
お前らイライラさせてそれを見て笑ってるだけだよこいつ

77 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:48:51.922 ID:Ie54pdjf0.net
>>76
エラー出ないからな?

78 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:50:08.705 ID:keB2VvScM.net
>>72
入力と出力教えろ

79 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:50:09.476 ID:+xu1YfIi0.net
>>77
スレタイにコンパイルエラーが出るって書いてあるぞ
嘘かよ

80 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:51:36.331 ID:keB2VvScM.net
>>79
>>49

81 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:52:01.516 ID:Ie54pdjf0.net
はい

1~100を入力してください
終了するには-1
1回目--111
2回目--11
3回目--11
4回目--11
5回目--11
6回目--11
7回目--11
8回目--1
9回目--1
10回目--1
最大値は--2000204080
最小値は--0

82 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:52:28.763 ID:keB2VvScM.net
>>80
みすった>>43

83 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:53:16.546 ID:k35fJLus0.net
>>75
確かに

あと
基本的に[i-1]みたいな書き方は避けたほうが良い
例えば今回の場合は、最大データ件数が10件なんだから

i=0;
while(i<10) {
//data[i]に入力
if(data[i]==-1) {
break;
} else {
i++;
}
} //while
としたほうが「データは10件まで」と読みやすくなる
と思うぞ

84 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 21:59:08.222 ID:keB2VvScM.net
&(配列名)[i]って書いた時ってiに関わらず先頭のアドレスを指した気がする。

85 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:00:15.893 ID:+xu1YfIi0.net
>>82
貼ってあったんだなすまんかった

86 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:01:20.145 ID:P7jVU+sy0.net
scanf警察だ!👮

87 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:02:20.184 ID:Tgl+KiSXd.net
VIPPERザコすぎ
プログラミングのプの字も理解せずに、見よう見まねでPythonとか書いてんだろうな

88 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:04:34.357 ID:+9N4igdcd.net
ポインタも理解してないのかよ
お前にゃプログラミングは無理だからそのPC捨てろ

89 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:09:02.153 ID:Ie54pdjf0.net
ポインタ理解してるけど

90 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:12:09.734 ID:xqGac7Ee0.net
入力データに-1が無いのにmaxmin内のループの条件が!=-1だとループが止まらんのではないのか

91 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:16:08.709 ID:70Nj50C10.net
高校生?数学とか苦手だったか?
結構センスないと思う

92 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:22:55.379 ID:Ie54pdjf0.net
>>91
33歳社内se

93 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:24:58.683 ID:MxApltqHM.net
つかなんでdo~whileなんて使ってんだ?
forでいいだろ読みにくい

94 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:34:04.120 ID:+XGwUnJgM.net
C言語は大変シンプルで美しい文法だけど複雑な事をするには大量のコードが要る
その点Pythonなら>>1がやろうとしていることは数行で書ける

ls=[]
while True:
  n=int(input())
  if n==-1: break
  ls.append(n)
if ls: print('max: ',max(ls),', min: ',min(ls))

95 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:36:25.647 ID:uDTm91SD0.net
>>81
意味不明な数字はmaxminのところで10以上処理してるからそうなる
whileの条件分にi > 10 を追加すればいけるはず

96 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:36:43.511 ID:DuTOm/e4M.net
Cを学習って言ってるのに他言語持ち出してくる馬鹿が出現して荒れるまでがプログラミングスレの伝統

97 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:38:01.329 ID:NR8Qlh4Y0.net
111入力しててワロタ

98 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 22:45:18.420 ID:lDndrAKDM.net
>>96
出た
スレが荒れる一番の元凶

99 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:04:58.951 ID:IqC4V1Zs0.net
今北産業

100 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:07:50.129 ID:4Ry9+2yS0.net
>>99
ポインタ
Python奴
面倒2兄弟

101 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:09:07.362 ID:EnOlwJqd0.net
おまえには無理

102 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:21:36.600 ID:X8nC+iWA0.net
>>94
脳みそ腐ってるよお前

103 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:23:18.206 ID:X8nC+iWA0.net
>>89
ポインタ理解してたらこんなコード書かないだろ

104 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:38:26.530 ID:EPUDxF+L0.net
4を入力したら-1して6を入力したら+1するCコード教えて

105 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:47:08.439 ID:Ie54pdjf0.net
もう限界だ
直せねえ
修正しまくったから
どこを直したわかりやすく修正するように

#include <stdio.h>

void maxmin(int data[],int *max, int *min); /*プロトタイプ宣言 ポイント変数を使います*/

int main(void)
{
int i =0, data[10],max,min;

printf("1~100を入力してください\n終了するには-1\n");
do {
printf("%d回目-->", i + 1);
scanf("%d", &data[i]);
i++;
if (i >= 10) {
break;
}
if (data[i] == -1 ) {
break;
}
} while (i < 10);

if (data[0] == -1) {
printf("プログラムを終了します\n");
return;
}
maxmin(data, &max, &min); /*配列とmax、minのアドレスを渡す*/

printf("最大値は-->%d\n",max);
printf("最小値は-->%d\n",min);
return 0;
}

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
*max = 0; /*通常変数モード*/
*min = 100;

while (data[i] != -1) {
if (data[i] > *max) {
*max = data[i];
}
if (data[i] < *min) {
*min = data[i];
}
i++;
}
}

106 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:50:58.297 ID:70Nj50C10.net
どこをどう直したいの?
ここの部分は明らかに想定通り動かなそうだけどなに考えてるの?
if (data[0] == -1) {
printf("プログラムを終了します\n");
return;
}

107 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:52:24.124 ID:Ie54pdjf0.net
>>106
いや、動きますけど
アホか?

108 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:53:50.087 ID:EPUDxF+L0.net
>>106
若干滑ったな

109 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:54:16.754 ID:Ie54pdjf0.net
ソースコードみてどういう動作しているのか理解しろ
1~100までを入力して
-1が入力されたら終わりとなる
でもこのコードだと最初に-1が入力されたら終わりだからそうしているんだよ
というか修正箇所はそこじゃねえだろ
自分の環境で実行してからものを言えよタコ

110 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:56:24.113 ID:70Nj50C10.net
>>107
動かないじゃん
2回目以降に-1入れた時以外は終了しないよそれ

そんでなにを直したいの?同い年ぐらいだし教えてあげるよ

111 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:57:34.068 ID:70Nj50C10.net
え、終了の-1は最初限定にしてんの?
なんでそんなよくわからん仕様にしてんの

112 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:57:50.356 ID:UkFbV+Vq0.net
なんで最大10回までしか入力できないのに>>81で一回も-1を入力しなかったの?
maxmin()はdata[0〜9]の間に-1を見つけられなくて突き進むけど?

113 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:58:04.574 ID:EfI90vDe0.net
最初のscanfの格納フェイズで-1が配列に格納される前にループ終わってるから
マックス判定フェイズのループ終了ひっかからないぞ

114 :以下、?ちゃんねるからVIPがお送りします:2020/12/30(水) 23:58:29.274 ID:Ie54pdjf0.net
だーーーーくぁーーーーらーーーーー
自分の環境で実行してみて課題を見つけろ
なんのためにソースコード書いてんだよ

115 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:00:13.395 ID:6nb0KlHM0.net
>>114
勉強してるんじゃないのかよwwww

116 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:00:33.192 ID:5rC2rJab0.net
whileの条件でi < 10にしてんのに
while文の中でi >= 10でbreakしてるのもわからん
ちゃんと理解してる?

117 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:01:56.341 ID:/l8eujgD0.net
はい
書き直した

#include <stdio.h>

void maxmin(int data[],int *max, int *min); /*プロトタイプ宣言 ポイント変数を使います*/

int main(void)
{
int i =0, data[10],max,min;

printf("1~100を入力してください\n終了するには-1\n");
do {
printf("%d回目-->", i + 1);
scanf("%d", &data[i]);
if (i >= 10) {
break;
}
if (data[i] == -1 ) {
break;
}
i++;
} while (i < 10);

if (data[0] == -1) {
printf("プログラムを終了します\n");
return;
}
maxmin(data, &max, &min); /*配列とmax、minのアドレスを渡す*/

printf("最大値は-->%d\n",max);
printf("最小値は-->%d\n",min);
return 0;
}

void maxmin(int data[], int *max, int *min) /*配列&アドレスを受け取る*/
{
int i = 0;
*max = 0; /*通常変数モード*/
*min = 100;

while (data[i] != -1) {
if (data[i] > *max) {
*max = data[i];
}
if (data[i] < *min) {
*min = data[i];
}
i++;
}
}

118 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:03:04.644 ID:XEdOeuaL0.net
番兵、ってテクニックがあるの
データの終端を示す値を決めてそれをあらかじめ代入しておく、ってやつ
例えば今回の場合、最大データ件数は10件、データの終わりは-1って決まってるから
それを「11件目」にセットしておく
そうすると、データ入力が10件されたとしても必ず11件目にデータの終端があるから、
最大値、最小値を探すときは、データ件数を基準にループするのではなく、番兵が見つかるまで繰り返せばOKになる
あと、maxmin関数で*maxと*minの初期化をする場合
何も考えずにdata[0]を代入しておけばいいよ
入力される最大値、最小値のことを決めずに、「入力された値」の中から最大値、最小値を探せる

119 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:03:13.009 ID:/l8eujgD0.net
Do Whileっているか?
for+ifでよくね?
なんで存在しているの?

120 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:03:39.758 ID:Dma0xGvV0.net
このSE雇ってる会社大丈夫か

121 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:04:26.607 ID:RggKP1/00.net
・maxmini()の引数にdataの長さを追加してwhileで長さチェックする
・data[11]にしてdata[10]=-1;してケツwp保証する
のどちらか

122 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:04:36.980 ID:VvylekgQa.net
普段c言語使って仕事してる訳じゃないのかもしかして

123 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:05:59.528 ID:AhM051m/0.net
>>119
まぁそればっかりはCの教本の大体が「1回は確実に通らせたい処理にはこれ使おうね!」みたいな誘導してるからしゃーない
本がくそなんよ

124 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:07:24.512 ID:5rC2rJab0.net
maxに0、minに100最初に入れてんのはそういうことか
わかりにくいソースコード書かないように気をつけろや

125 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:09:48.475 ID:/l8eujgD0.net
>>124
頭いいだろう?

126 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:10:03.670 ID:5rC2rJab0.net
>>119
条件式がbooleanならwhileの方がわかりやすいじゃん

127 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:10:30.371 ID:/l8eujgD0.net
>>118
意味不明
説明下手だね

128 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:11:09.792 ID:XEdOeuaL0.net
int data[11]; //番兵分も含めて11件
int max,min;
i=0;
do {
scan("%d", &data[i]);
if(data[i]==-1) {
break;
}
i++;
} while(i<=10);
if(i==0) {
printf("no data");
} else {
data[i]=-1; //番兵セット
maxmin(data,&max,&min);
printf("min=%d\nmax=%d\n",min,max);
}

void maxmin(int data[],int *max,int *min) {
int i=0;
*max=data[0];
*min=data[0];
while(data[i]!=-1) {
//minとmaxを探す
i++;
}
}

129 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:12:09.522 ID:XEdOeuaL0.net
>>127
すまんね
がんばるわ

130 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:12:48.673 ID:/l8eujgD0.net
>>128
ばんへいってなに?

131 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:13:46.817 ID:Tmjbq3Gwa.net
>>130
何歳?

132 :高岡由佳 :2020/12/31(木) 00:14:22.301 ID:8WEmbpQj0.net
こんな簡単なのもできないのかよ

133 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:14:59.135 ID:XEdOeuaL0.net
>>130
下手な説明を聞かせるのも申し訳ないから
google先生に聞いてきてくれればいいよ

134 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:15:01.900 ID:/l8eujgD0.net
>>128
なんで配列の最大値に-1を入れてるの?アホ?

135 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:15:32.756 ID:/l8eujgD0.net
>>133
キレてるwww

136 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:17:49.497 ID:Tmjbq3Gwa.net
実際仕事でも全然プログラミングの素養がない人間いるからビックリするわ
上から処理ってことを理解することすらできないんだよな
頭の回路が違う気がする

137 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:18:21.737 ID:/l8eujgD0.net
えっとこのプログラムだと番兵とやらはiが10の時に代入猿ますね?
てことは入力したものが上書きされるんですがねぇ

138 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:19:23.153 ID:+rEmVIl5M.net
ウキッ!

139 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:20:05.590 ID:/l8eujgD0.net
もう意味わからねえわ
こいつら親の首とったみたいに我が物顔でものを言いやがる
ほんと自分のことしか考えていないオナ猿

140 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:20:38.184 ID:Tmjbq3Gwa.net
IQが20違うと会話にならないらしいから、会話は諦めた方がいいとは思うよ

141 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:21:13.525 ID:AhM051m/0.net
もう煽って遊ぶモード入ってるけど
そもそも>>117の結果はどうなの?

142 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:21:14.795 ID:YvfwK1FR0.net
これを参考にがんばれ
https://ideone.com/04ruKa

143 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:23:01.035 ID:+rEmVIl5M.net
iが10ときは入力したデータはdata[0]〜data[9]にはいるってのが理解できてないのか

144 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:23:30.245 ID:XEdOeuaL0.net
>>136
初学者の場合だと「代入する」とか言われるとそれだけで理解できない人もいるよね
代入記号が=だったりすると「え?右と左が同じ値ってことじゃないの?え?」って混乱したりするし
「コピーします」とか言い換えて教えたりするけど、そもそも「代入とはこう言う意味です」って説明を理解してもらえなかったりすると辛い

145 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:23:48.920 ID:Dma0xGvV0.net
maxminで何回ループしてるか確認せい

146 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:24:28.671 ID:Du/A3bSwr.net
>>141
if (i >= 10)
このif文要らんけど他は問題ないんじゃない?

147 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:25:04.459 ID:yJgX9AXL0.net
ポインタ分かってるつもりで指摘されても「俺はポインタ理解してるから間違ってない」って相当ヤベー奴だなwww

148 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:25:10.762 ID:XEdOeuaL0.net
>>137
iの値をしっかりトレースしてみてよ
>>143の言う通りだからね

149 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:26:09.501 ID:XEdOeuaL0.net
>>147
理解してる、って本人が言うんだから、本人なりには理解してるんだよ

150 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:27:41.747 ID:58qmrmx/0.net
>>128
なるほどこんな考え方もあるんだな
勉強になったわ

151 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:28:09.878 ID:Du/A3bSwr.net
>>148
do-whileの条件i<=10じゃなくてi<10にしないと11回ループすんぞ

152 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:29:16.245 ID:aqjt465kd.net
性根が腐っててわろた

153 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:30:23.115 ID:+rEmVIl5M.net
>>151
10回だぞ

154 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:30:25.504 ID:XEdOeuaL0.net
>>143
c言語の場合は特に「添え字が0から9までの10件のデータ」ってのが慣れるまでは間違えるよね

155 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:31:48.918 ID:/l8eujgD0.net
でもプログラミングって面白いな!
いつか電卓作るようになってみせろや!

156 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:32:43.638 ID:YvfwK1FR0.net
maxmin関数という設計が悪いと思う
引数で結果をやり取りするというのもあまり美しくない
maxとminで独立させて結果は戻り値で受けるのがいい

157 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:33:07.918 ID:XEdOeuaL0.net
>>151
インクリメントしてからの判定

158 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:33:46.377 ID:XEdOeuaL0.net
>>156
まぁまぁ
そこはほらクライアント様の言うことだから頑張って対応しましょうや

159 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:34:05.769 ID:/l8eujgD0.net
>>156

> maxmin関数という設計が悪いと思う
> 引数で結果をやり取りするというのもあまり美しくない
> maxとminで独立させて結果は戻り値で受けるのがいい

参考貼ってから言えねえの?

160 :高岡由佳 :2020/12/31(木) 00:35:10.435 ID:8WEmbpQj0.net
答え作ってあげようか?

161 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:35:27.126 ID:/l8eujgD0.net
>>158
この荒らしキッショいなぁ…
会社でも隅っこに座ってるぼっちなんだろうな
一人飯でボソボソ喋って
会話は全部スカイプチャット…
容易に想像できるメガネデブパソコンオタク
私服はチェックシャツに謎のジーパン

162 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:35:47.551 ID:Du/A3bSwr.net
インクリメントしてi=10でもdoが実行されてi=11になるやん
ダメやん

163 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:36:32.106 ID:YvfwK1FR0.net
>>158
まぁ基本は動けばいいけどな
>>159
>>142を見ろ

164 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:38:33.173 ID:5rC2rJab0.net
>>156
気持ちはわかるんだがc++でもないcならエラー処理を戻り値に任せるのが定石だから
引数で結果をやり取りする感じになっちゃうんだよな
Javaとかならexception投げれば良いだけなんだが

165 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:39:27.214 ID:nbIzQiuZ0.net
ゴミカスが宿題聞いてるのかよ

166 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:40:52.144 ID:AhM051m/0.net
10回正しい数字が入力されるとか
intを越えた数字を入れられるとか
粗を探せばいくらでも見つかる気がするし
全部101以上の数字しか無ければミニが100になるのはテスト環境だから許すとして
正常に動けばそれで良し!精神よ
間違った運用しなけりゃ不具合は無い運用カバー

167 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:41:45.338 ID:XEdOeuaL0.net
>>161
会社は3人だから隅っこと言うほど広くないよ
お昼ご飯は常に3人で食べてるよ
会話は普通に聞こえる発声してて、記録に残すことは基本的にLINEでしてる
メガネは老眼鏡かけてる
デブなのは、、、最近お腹が出てきて気にしてるから言わないで><
パソコンオタクなのは否定しないけど、今時自作したりするのも普通じゃないかい?
残念ながらチェックのシャツは持ってないし、ジーンズも何年もはいてないわ

>>162
あ、ほんとだ
これはお恥ずかしい

168 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:42:03.036 ID:YvfwK1FR0.net
>>164
それは往々にしてあるな
Cのフレームワーク見てもそういう関数は多い
ただmaxやminは流石にいいだろうと思うよ
>>1は自作してるけど標準関数に絶対あるだろうし

169 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:42:40.908 ID:6nb0KlHM0.net
重箱の隅を突くよりも、重箱の中の御節を喰わせた方が上達するもんだよ。初心者は。

170 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:47:49.262 ID:ERFmqw5e0.net
今はmaxminでよくても平均を求めたいと思ったときにどうするか
maxminとavgという関数を作ると粒度がおかしくなるからmaxminavgにするかmax, min, avgで分けるか
リファクタリングすればいいだけ

171 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 00:58:19.831 .net
来たら終わってた

172 :以下、?ちゃんねるからVIPがお送りします:2020/12/31(木) 01:05:44.710 ID:8WEmbpQj0.net
>>1
できたぞ
https://paiza.io/projects/W-gdzDc3DttKvU9MAiaB-A

総レス数 172
48 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200