• ベストアンサー

for文を用いて

みなさん、こんにちわ。C言語についてわからないことがありましたので、質問させていただきます。 C言語の本でfor文を用いて1~10までの和を求める例題は数多くありますが、(i=0,i<=10,i++) 1+2+1+2+1+2+… のように二種類のパターンがでてきたときはどのようにfor文で組めばよいのでしょうか?合計とその途中の計算も結果出力したいのですが、わからず困っています。ご教授よろしくお願いします。

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

  • ベストアンサー
回答No.3

>これで、合計の値はでますが、 出ないと思いますが・・・ やりたいことが完全に理解できてませんが、文章を読む限りこういうことでしょうか? sum=0; printf("%d\n",sum); for(i=1;i<=N;i++){   sum=sum+x;   printf(%d\n",sum);   sum=sum+y;   printf(%d\n",sum); }

dai92_1981
質問者

お礼

ありがとうございました。 大変勉強になりました。

その他の回答 (2)

  • ency
  • ベストアンサー率39% (93/238)
回答No.2

質問とは直接関係ありませんが、ループカウンタベースで 1~N まで足すのであれば、 for ( i = 1; i <= N; i++ ) で良いのでは? ループカウンタ処理は、ループが何回まわるのかに注意して行うようにすると良いですよ。 …というわけで、私の場合は↓こんな感じ↓にします。 for ( i = 1, i <= 10, i++ ) { for ( j = 1, j <= 2, j++ ) { sum += j; } }

dai92_1981
質問者

補足

回答ありがとうございます。 一番目のfor文でi=1からスタート     二番目のfor文はj=1からスタート     計算は合計=前の合計+j(初期の合計=0として)     つまり一回目は1          次にj=2のとき     前の合計=1であるので     今回の合計=1+2=3 となります。これを応用して 各値を求めたいのですが、いまいちわかっておりません。(二重for文ですべての値をprintfを用いて出力させたい) (1)0 (2)0+x (3)0+x+y (4)2x+y (5)2X+2y (6)3x+2y  ……… for(i=0;i<=N;i+x){    for(j=0;j<=M ;j+y)    sum=sum+j } N,Mは互いに連成するとします。 これで、合計の値はでますが、printf関数はどこで入力すればよいのでしょうか? たびたび、すいませんがご教授お願いします。

回答No.1

まぁ、普通にやるとしたら for(i=0,i<=10,i++){ for(j=0,j<=2,j++){ sum=sum+j; }}

dai92_1981
質問者

補足

回答ありがとうございます。

関連するQ&A

  • for文

    C言語の本を読んでいて、for文の(i=0;i<count;--i)とあるのですが for(i=0;i<count;i--)とどう違うのでしょうか?それぞれコンパイルした のですが、同じように実行できましたので、余計にわからなくなりました。

  • 至急で、c言語の問題の解答解説をお願いします。

    1 元金(g)と年利率(r %)、年数(n)を読み込みn年後の元利合計(total)を単利と複利で計算し、2つの金額を表示するプログラムをc言語で答えてください。ただし、for文は用いないこと。 2 for文を用いて下記のようになるような九九の表を表示するプログラムをc言語で答えてください。   1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 .4・・・・・・・・・・・・・・・・・・・・・・ 5・・・・・・・・・・・・・・・・・・・・・・ 6・・・・・・・・・・・・・・・・・・・・・・ 7・・・・・・・・・・・・・・・・・・・・・・ 8・・・・・・・・・・・・・・・・・・・・・・ 9 9 18 27・・・・・・・・・・・72 81 3 整数kを入力しiを0から1ずつ増やしてkになるまで繰り返し以下のパターンを出力するプログラムをc言語で答えてください。ただし、iが奇数なら# i%4=3ならば&  i%7=4ならば*を  他%を出力すること 例 %#%&*#%&%#%*%・・・・・・・

  • for文学び

    for文がいまいち理解できずに困っています。 いくつかのfor文の解説HPを見たのですが、例えば下記の or (i=1; 100>=i; i++) { trace(i); } の様なかたちに書けば、iは変数で、100になるまで計算が繰り替えされる、などのような説明があるだけで、どの様に使うのかが上手く理解できずにいます。 最初は 上記のASのtraceの部分でMC._x = i; と書けば100の位置まで移動するムービーという感じなのかなと思ったりしたのですが、大間違いでした。 for文初心者がfor文を覚えるのによい練習問題がありましたら、書き込みをいただきたく思います。またよい例題になる記載があるHPなどでもいいです。 ご存じありましたら、書き込みをいただきたく思います。よろしくお願いします。

    • ベストアンサー
    • Flash
  • C/C++ for文

    ふと疑問に思ったことなんですが、検索して調べても簡単に出てこなかったので 質問させていただきます。 C / C++ の文法に for 文がありますが基本的な for 文の書き方と言えば以下のようになりますよね。 for (int i = 0; i < 10; i++); この中の式に注目してほしいのですが、i = 0, i < 10; i++ のようにいずれも 1 つの文を書くことはできますよね。2 つの文を書きたい場合でも i++,i++ のようにカンマを使えば、2 つどころか 3 つ以上の文を書くことができます。 ここで、その式の部分に for 文を入れてみたらエラーが返ってきました。普通はこの部分に for 文を入れるなんてことはしないのでよくわからないのですが、なぜエラーが返ってくるのでしょうか。printfのような出力文でもいけるのに、for 文などではダメな理由がよくわかりません。

  • C言語でfor文を用いたプログラミングについてです。

    C言語のプログラミングの課題で以下のような表をfor文を用いて作るというものが出ました。 商品名 単価(円)個数(円) 計  A  50   20   ***  B  90   30   ***  C  30   80   ***        合計金額   *** A,B,C及びそれぞれの単価、個数の値はキーボードからの入力で、***は演算によりその結果を出力するようにします。つまり、商品名(1文字)と単価、そしてその個数をキーボードから入力すると、単価と個数をかけた値と、それら全ての合計が出力されるようなプログラムを作るということです。 私は以下のようなプログラムを作りました #include<stdio.h> int main(void) { int a,b,c,sum,allsum,i; printf("商品名 単価 個数 計\n"); for(i=1;i<=3;i++) { a=getchar(); scanf("%d %d",&b,&c);  sum=b*c; allsum +=sum; putchar(a); printf(" %d %d %d \n",b,c,sum); } printf("合計金額 %d\n",allsum); return 0; } しかしこれでは合計金額がちゃんと表示されなかったりしてうまくいきません。おそらくfor文の中身に問題があると思うんですが…。どうか正しいプログラムと、なぜこのプログラムではうまくいかないのかを教えていただきたいです。なにぶん初心者なもんで、よろしくお願いします。

  • プログラミング for文

    プログラミング for文 プログラミングの問題です。 「自然数nを入力し、以下のようなパターンが出力されるようなプログラムをfor文を使って作成せよ。」 (例:n=3のとき) % ./a.out n: 3 * ** *** *__* **_** ****** *__*__* **_**_** ********* (例:n=4のとき) % ./a.out n: 4 * ** *** **** *___* **__** ***_*** ******** *___*___* **__**__** ***_***_*** ************ *___*___*___* **__**__**__** ***_***_***_*** **************** (_で空白を表しましたが、上手く見られないかもしれません…。小さい直角三角形が下に行くにつれ1個ずつ増え、全体的にみると大きい直角三角形が見えるイメージです。) つまり、n=3なら、 * ** *** を単位として、1~3行目にはこれが1つ、4~6行目にはこれが2つ、7~9行目にはこれが3つあります。 一般に、 * ** *** … ********(←n個) を単位とし、n^2-2~n^2行目にこれがn個あるようなパターンです。 私はまず、単位パターンをプログラムしました。 #include <stdio.h> main() { ___int n, i, j; ___printf("n: "); ___scanf("%d", &n); ___for (i=1; i<=n; i++) { ______for (j=1; j<=i; j++) { _________printf("*"); ______} ______printf("\n"); ___} } (_は空白です) しかし、単位パターンを横に2個、3個と並べるプログラムが分かりません。 さらにfor文を使い、3重、4重にするのですか?どなたか教えてください。

  • コマンドプロンプトのfor文の処理について

    以下のようなスクリプトを書き,拡張子を除いた文字列を抽出できているようなのですが, for文の中の ”echo”で出力することができません. 具体的には,入力として,「hoge01.txt」 を与え 「hoge01」 を抽出したいです. 出力結果として 「echoはONです」 とでます. for文の後のechoでは,「hoge01」と問題なく出力されます. これは何故なのかご教授していただけませんでしょうか? ------------------------------------------- for %%i in (*.txt) do (set/p c=%%~ni & echo %c%) echo %c% ------------------------------------------- for文の中だと,変数の指定方法等が異なるのでしょうか? 勉強不足で大変恐縮ですが,どうぞよろしくお願いいたします.

  • C言語のfor文について質問です。

    C言語の課題がわかりません‼︎ for文を使って初項a、公差dの等差数列を初項からn項までを加える計算を行うプログラムを作りなさい。その時、a.d.nはscanfを用いて入力できるようする。 また、等差数列の和の公式は使えないものとする。 どなたか回答よろしくお願いします。

  • 簡単なfor文

    #include <stdio.h> int main(void) { int n; int i; for(n=0 ;n<10;n++){ for(i=0; i<=n ;i++){ printf("*"); } printf("\n"); } return(0); } こういったプログラムを実行すると、以下のように表示されるのですがなんででしょうか? * ** *** 以下略 自分の考えですと、*は毎回一つしか表示されずに改行されると思うのですが・・・ * * * * 以下略 i個分の*を表示するなどという指示をプログラムはなされていないと思うのですがなぜなんでしょうか? 一つ目のfor文では10回ループが繰り返され改行 二つ目のfor文で*を永遠に表示 といった僕の解釈ではおかしいですよね。 当方C言語初心者で、周りに聞く人がいないため教えていただけると非常に助かりますm(__)m

  • C言語のforとwhileについて・・・

    C言語で「While 文を使って、1から100までの和を求めて表示するプログラムを作る」ことをやってみました。↓ ですが、forではできたのですが、whileでは動きませんでした。 whileで作る時は、forのどの部分を変えれば出来るんでしょうか? 解説できましたら、お願いします。。 #include <stdio.h> int main(void) { int i,wa; wa=0; for(i=1; i<=100; i++) { wa=wa+i; } printf("和=%d\n",wa); }

専門家に質問してみよう