初心者なので宜しくお願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
カン

初心者なので宜しくお願いします。

#1

投稿記事 by カン » 16年前

・問題
1+2+3+4+・・・と数字を加算していき、加算結果が300を超えたら処理を終えるプログラムを作成しなさい。

上記の問題なのですが、よくわかりません。よろしくお願いします。

初級者

Re:初心者なので宜しくお願いします。

#2

投稿記事 by 初級者 » 16年前

何がわからないのでしょうか。

1)問題の意味がわからない
2)問題の意味はわかるが、手で計算できない
3)問題の意味はわかり、手で計算できるが、どうプログラミングするかがわからない
4)問題の意味はわかり、手で計算でき、どうプログラミングするかもわかるが、C言語のソースが書けない


よろしくお願いします、とは、答えをくださいという意味でしょうか。

通りすがり

Re:初心者なので宜しくお願いします。

#3

投稿記事 by 通りすがり » 16年前

とりあえず規約くらい読みましょう。
質問の仕方がわからないならテンプレを使いましょう。

conio

Re:初心者なので宜しくお願いします。

#4

投稿記事 by conio » 16年前

まず、プログラムがどのようになるのか考えてみましょう。

・1,2,3,4と、加算する値は1ずつ増加。
・加算結果を格納する変数が必要。
・合計が300を超えない間、加算する値を1ずつ増やし、合計に足す。(ループ)
0  + 1 =  1
1  + 2 =  3
3  + 3 =  6
6  + 4 = 10
10 + 5 = 15 

プログラムにすると大体こんな感じです。(一例)
日本語で書いてある部分をプログラムにすれば完成です。
------------------------------------------------
#include<stdio.h>

int main(void){

int x = 0,sum = 0; 

while(/*条件:加算結果が300以下*/){

/*sumにxを足す。(例:sum += x)*/
/*xの値を1増やす。*/

}
printf("x = %d,sum =%d\n",x,sum);

return(0);
} 
---------------------------------------------------

ついでに、1~10までの値を足すプログラムは下記の通りです。(一例)
参考にでもしてみて下さい。

-------------------------------------------------------
int main(void){
	
	int i,sum=0;

	for(i = 0; i <= 10; i++){
       printf("sum(%2d) +  i(%2d) =%d\n",sum,i,i + sum);
       sum += i;
	}
	printf("0から%dまでの合計は%dです\n",i,sum);

	return(0);
}
-----------------------------------------------------------

組木紙織

Re:初心者なので宜しくお願いします。

#5

投稿記事 by 組木紙織 » 16年前

質問が良く分かりませんが、
詳細は勝手に解釈して作ってみました。
int i;
int main(void)
{
	++i;
	return i*(i+1)/2<300?main():0;
}

non

Re:初心者なので宜しくお願いします。

#6

投稿記事 by non » 16年前

組木紙織さん
これってあってます?mainの戻り値ってどうやって出力するんでしたっけ?
やり方教えてください。(DOSで)
return i*(i+1)/2<300?main()+i:0;
にしたいとこだけど、グローバルだからまずいんじゃないでしょうか?
一度、autoに代入しないと。

組木紙織

Re:初心者なので宜しくお願いします。

#7

投稿記事 by 組木紙織 » 16年前

main()の戻り値は0ですよ。
だって何を返すのか条件はないんですから。

iはグローバルなので初期値は必ず0になります。
よって初期化は必要ないです。

main()の戻り値の出力の仕方は忘れました。
たしか、バッチファイルを作ってあげればよかったような、よくなかったような、、、、。

non

Re:初心者なので宜しくお願いします。

#8

投稿記事 by non » 16年前

>だって何を返すのか条件はないんですから。
なるほどですね。でも、合計を出してあげれるようにしました。
int i=0;
int main(void)
{
	int n=++i;
	return i*(i+1)/2<=300?main1()+n:0;
}

non

Re:初心者なので宜しくお願いします。

#9

投稿記事 by non » 16年前

このバッチで動きました。
echo %errorlevel%

組木紙織

Re:初心者なので宜しくお願いします。

#10

投稿記事 by 組木紙織 » 16年前

nonさんに習って合計を返すようにしてみました。
引数渡したら正しく動きませんが、引数は意識的にしないと渡さないと思うので、
これでもいけるかと。
int main(int argc, char * argv[/url])
{
	return argc*(argc+1)/2<=300?main(argc+1,argv)+argc:0;
}


Dixq (管理人)

Re:初心者なので宜しくお願いします。

#12

投稿記事 by Dixq (管理人) » 16年前

このままコピペで出したら絶対先生に自分でやってないことばれると思います。
もし自力で解けたなら、そのコードを提示してもらえませんか?
これでは他の方の参考になりませんので・・。

また、もしよくわからないけど解った事にしたということなら、
わからない事を伝え、頑張って解決してみましょう。

閉鎖

“C言語何でも質問掲示板” へ戻る