🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

8回答

1840閲覧

数列An={1,2,3,…}において、第X項から第Y項までの和を計算するプログラムを作成せよ。

fujioka_kei

総合スコア9

C

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

1グッド

2クリップ

投稿2019/12/06 15:57

タイトルのような問題ですが、指定があり、while文を用いて記述せよとのことです。

例.第25項から第34項までの和の計算(X=25,Y=34)は
25+26+…+34=295
などです。

DrqYuto👍を押しています

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

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

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

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

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

jimbe

2019/12/07 06:33

単に「整数Xから整数Yまでの整数の和を計算せよ」で済むのに, 何故数列Anがあるのでしょう. 何が裏があるのでしょうか.
guest

回答8

0

これは大喜利ですか?

c

1#include <stdio.h> 2 3int main() { 4 int X = 25; 5 int Y = 34; 6 7 while(0); 8 printf("%d", (X + Y) * (Y - X + 1) / 2); 9 return 0; 10}

投稿2019/12/06 23:48

2KOH

総合スコア999

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

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

KazuSaka

2019/12/07 00:03

その考え方がありましたね! while(0)で問題文をクリアしてて、面白い(笑) X+Yが偶数の時に正しくないような…
episteme

2019/12/07 23:55

↑なんで? X + Y が偶数なら それに何掛けても偶数。だから (X + Y) * (Y - X + 1) は偶数。 だったら2で割り切れる。
KazuSaka

2019/12/10 11:34

本当でした???? 勘違いしてました.ご指摘ありがとうございます。
guest

0

int main()
{
int x = 10;
int y = 90;
int sum = 0;
while(x <= y)sum += x++;
printf("%d",sum);
return 0;
}

投稿2019/12/06 19:36

yokuda

総合スコア138

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

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

0

C

1int main() 2{ 3 int x, y; 4 while(scanf("%d %d", &x, &y)==2){ 5 printf("%d\n", (x+y)*(y-x+1)/2); 6 } 7}

Ctrl+Cで終了します。

投稿2019/12/06 23:49

編集2019/12/07 02:59
majiponi

総合スコア1722

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

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

0

こんな感じでどうでしょうか!?
while文を使って、書いています。
C#あまり書いたことないので、構文間違ってたら、すいません。
ロジックはいいと思います。

C#

1 2int total; 3total = Sum(25,34) ; //第25項目から34項目までの総和 4 5//第X項目から第Y項目までの総和を計算する関数 6private int Sum(integer X, integer Y){ 7 int sum = 0; 8 while(true){ 9 sum += X; 10 If(X=Y){ 11 break; 12 } 13 X += 1; 14 } 15 return sum; 16} 17

以上です。

投稿2019/12/06 18:25

KazuSaka

総合スコア640

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

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

papinianus

2019/12/10 11:24

マイナスされている理由を知りたい。X==Yのタイポのせい?
majiponi

2019/12/10 14:26

C言語の質問だからでは?
KazuSaka

2019/12/10 15:18

X==Yが正しいですね。 構文間違えてた... ご指摘ありがとうございます!
guest

0

c

1#include <stdio.h> 2 3int summation(const int start, const int end) { 4 int sum = 0; 5 int i = start; 6 while(i <= end) { 7 sum += i++; 8 } 9 return sum; 10} 11 12int main(void) { 13 printf("sum(%d, %d) = %d\n", 25, 34, summation(25, 34)); 14 for (int i = 1; i <= 10; i++) { 15 printf("sum(%d, %d) = %d\n", 1, i, summation(1, i)); 16 } 17 return 0; 18}

投稿2019/12/08 12:31

katoy

総合スコア22324

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

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

0

問題に忠実な回答を試みた。

C

1#include <stdio.h> 2 3/* 数列A[]の第X項から第Y項までの和 */ 4int range_sum(int A[], int X, int Y) { 5 int result = 0; 6 while ( X <= Y ) { 7 result += A[X]; 8 ++X; 9 } 10 return result; 11} 12 13int main() { 14 int A[100]; 15 16 /* 数列 0, 1, 2, ... を用意する(第0項は使わない) */ 17 int i; 18 for ( i = 0; i < 100; ++i ) { 19 A[i] = i; 20 } 21 22 /* 第25項から第34項までの和 */ 23 printf("%d\n", range_sum(A, 25, 34)); 24 return 0; 25}

投稿2019/12/08 00:05

episteme

総合スコア16612

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

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

0

A(1)=1, A(2)=2, A(3)=3,
A(25)=25, A(26)=26, A(34)=34
A(25)からA(34)の合計が295になる数列のA(X)からA(Y)までの和ですね

C

1#include <stdio.h> 2#include <stdint.h> 3#include <inttypes.h> 4 5 6uint64_t sumAn(int first, int last){ 7 uint64_t x = 9395617169022084000ul; 8 uint64_t d = 1; 9 10 11 uint64_t sum = 0; 12 13 for(int i = 0; i < last; i++){ 14 15 while(x % d != 0){ 16 d++; 17 if(d > x) 18 return sum; 19 } 20 21 //printf("%d, %"PRIu64"\n",i+1, d); 22 23 if(i+1 >= first){ 24 sum += d; 25 } 26 d++; 27 } 28 return sum; 29} 30 31uint64_t An(int n){ 32 return sumAn(n, n); 33} 34 35int main(void){ 36 printf(" %"PRIu64"\n",An(1)); // 1 37 printf(" %"PRIu64"\n",An(2)); // 2 38 printf(" %"PRIu64"\n",An(3)); // 3 39 printf(" %"PRIu64"\n",An(25)); // 25 40 printf(" %"PRIu64"\n",An(26)); // 26 41 printf(" %"PRIu64"\n",An(34)); // 34 42 printf(" %"PRIu64"\n",sumAn(25,34)); // 295 43 44} 45

投稿2019/12/11 00:56

ozwk

総合スコア13551

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

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

0

素朴に考えると1からYまでの和から1からXまでの和を引いてあげるといいと思います。

c

1#include <stdio.h> 2 3int main(void) 4{ 5 int X = 25; 6 int Y = 34; 7 int sum = 0; 8 int i; 9 do { 10 for ( i = 1; i <= Y; i++ ) { 11 sum += i; 12 } 13 for ( i = 1; i < X; i++ ) { 14 sum -= i; 15 } 16 } while(0); 17 18 printf("sum = %d\n", sum); 19 return 0; 20}

投稿2019/12/07 18:19

TaroToyotomi

総合スコア1448

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問