質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1591閲覧

C言語:配列の累計の計算が上手くいきません

aluminium

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/06/15 16:54

編集2020/06/15 16:56

初心者の学生です。どうぞ宜しくお願いいたします。

ユーザ入力から配列(最低、最高)を呼び出し累計を計算する課題を解いているのですが、
1日半 格闘し、検索も沢山したのですが... どうしても上手くいかず困っています...

まず日別の合計を計算してから累計を求めようとしました。

  • 配列0+1
  • 配列0+1+2
  • 配列0+1+2+3
  • 配列0+1+2+3+4 というように足し算していきたかったのですが、

私の書き方だと最後の配列2つしか足し算できていないようなのです。

累計の正解は

  • 日付1入力時:4
  • 日付2入力時:12
  • 日付3入力時:16
  • 日付4入力時:15
  • 日付5入力時:12  です(エクセル表ご参照)

お知恵をお借りできれば幸いです。お時間ありがとうございます。

発生している問題

イメージ説明
最後の配列2つしか足し算できていない模様

該当のソースコード

C

1#include <stdio.h> 2#define NUM_DAYS 5 3int main(void) { 4 int i, days, total = 0; 5 int daytotal[NUM_DAYS] = {0}; 6 int high[NUM_DAYS] = {6, 9, 7, 8, 5}; 7 int low[NUM_DAYS] = {-2, -1, -3, -9, -8}; 8 9 do { 10 printf("1~5までの日付を入力してください(負の値で終了): "); 11 scanf("%d", &days); 12 13 for (i = 0; i < days; i++){ 14 daytotal[i] = high[i] + low[i]; 15 printf("(配列%d) 日付: %d, 最高: %d, 最低: %d 日別合計 = %d\n", i, days, high[i], low[i], daytotal[i]); 16 total = daytotal[i-1] + daytotal[i]; 17 } 18 19 printf("%d日までの累計: %d\n\n", days, total); 20 21 } while(days > 0); 22 23 return 0; 24}

ご参照

イメージ説明

試したこと

  • total += daytotal[i]; 累計の計算が合いませんでした
  • total = daytotal[i] + daytotal[n + i]; 累計の計算が合いませんでした

補足情報

このサイトでコンパイルしました。
https://www.onlinegdb.com/online_c_compiler

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

total = daytotal[i] + daytotal[n + i]; 累計の計算が合いませんでした

forの最後のiとその一つ前を加算しているので当然の結果です。

total += daytotal[i]; 累計の計算が合いませんでした

forの前でtotal0にしてください。

C

1 total = 0; 2 for (i = 0; i < days; i++) { 3 daytotal[i] = high[i] + low[i]; 4 printf("(配列%d) 日付: %d, 最高: %d, 最低: %d 日別合計 = %d\n", i, days, high[i], low[i], daytotal[i]); 5 total += daytotal[i]; 6 }

投稿2020/06/15 17:15

編集2020/06/15 17:17
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aluminium

2020/06/15 17:53

totalを0に... 思いつきませんでした...! 基本が理解できていない証拠ですね、精進します! 前半にユーザ入力と後半に平均値の計算があったのですが、 解決していただいた部分を組み込んでみて問題なく全て動きました! 本当に助かりました。ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問