こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Cのソースコードについて

#include<stdio.h>

int main(void) {
long a[6000],sum[6000],max=0;
int i,j=0,n,m;
for (m = 0; m <= 6000; m++)
sum[m] = 0;

for (i = 0;; i++) {
scanf_s("%ld", &a[i]);
if (a[i] > 0)
sum[j] += a[i];
else if (a[i] < 0) {
j++; sum[j] = -1; j++;
}
else break;
}
for (n = 0; sum[n] == 0; n++) {
if (max < sum[n])
max = sum[n];
}
printf("%ld",max);
while(1){}
return 0;
}

こんなコードを書いたのですが
答えが常に0になってしまいます。
原因がはっきりしないので教えてください
使用言語はCです

投稿日時 - 2015-08-31 22:36:02

QNo.9039965

すぐに回答ほしいです

質問者が選んだベストアンサー

ここでは?

for (n = 0; sum[n] == 0; n++) {

これで動いてるのが不思議ですが、第2パラメタで比較ではなく0を代入しちゃってますよね。最初のfor文も変ですけども。

ここ(↓)あたりのfor文の解説でも読んでみてください。
http://www9.plala.or.jp/sgwr-t/c/sec06-2.html

投稿日時 - 2015-08-31 22:44:53

お礼

とんでもないミスをしてました・・・・ありがとうございます

投稿日時 - 2015-08-31 23:06:40

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

少し長いので
#include<stdio.h>

int main(void) {
long a[6000],sum[6000],max=0;
int i,j=0,n,m;
for (m = 0; m <= 6000; m++)
sum[m] = 0;

for (i = 0;; i++) {
scanf_s("%ld", &a[i]);
if (a[i] > 0)
sum[j] += a[i];
else if (a[i] < 0) {
j++; sum[j] = -1; j++;
}
else break;
}

※ここでsum[0]を表示。

for (n = 0; sum[n] == 0; n++) {
if (max < sum[n])
max = sum[n];
}
printf("%ld",max);
while(1){}
return 0;
}

※ここでsum[0]を表示。をやってみてください。

投稿日時 - 2015-08-31 22:42:23

あなたにオススメの質問