■ このスレッドは過去ログ倉庫に格納されています
ぼく、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