hold=の式はなんで必要なんですか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まねきねこ
記事: 1
登録日時: 4ヶ月前

hold=の式はなんで必要なんですか?

#1

投稿記事 by まねきねこ » 4ヶ月前

[1] 文の働きを確かめるためにholdの部分をなくして見たんですけど望んだ結果を表示してくれませんでした。

 [1.1] 自分が今行いたい事は何か
   西暦年を入力するとオリンピックが開かれるか表示するプログラムを作りたいです。
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
   

コード:

#include <stdio.h>

int olympic(int year);

int main(void){
	int year,hold;
	//ここ↑のholdも書きません
	
	printf("西暦を入力してください。\n");
	scanf("%d", &year);
	hold = olympic(year);
	//↑ここの文を書かない

	switch (hold){	//ここの()内をholdからyearに
	case 1:
			printf("夏季オリンピックが開催されました。\n");
		break;
	case 2:
		printf("冬季オリンピックが開催されました。\n");
		break;
	case 3:
		printf("オリンピックは開催されていません。\n");
		break;
	}

	return 0;
}
int olympic(int year){


	if (year % 2 == 0) {
		if (year % 4 == 0) {
			return 1;
		}else {
			return 2;
		}
	}else {
		return 0;
	}

}
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
    hold文は何をするためのものですか?
 [1.4] 今何がわからないのか、知りたいのか
  上に書いた通りです。
[2] 環境  
 [2.1] OS : Windows, Linux等々
   windows
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
   コンパイラ名は分からないですが、Visual Stadioを使っています。
[3] その他
 ・どの程度C言語を理解しているか
  基本的な関数の説明を一通り読んだくらいです。理解してないものの方が多いです。

yoko
記事: 23
登録日時: 10年前

Re: hold=の式はなんで必要なんですか?

#2

投稿記事 by yoko » 4ヶ月前

再度関数について勉強したほうがいいかと。

関数Olympicは引数の年(year)に対してオリンピックが開催されるかどうかを判定するものになっています。

hold = olympic(year);

にてolympic関数の結果をholdに格納していて、
switch文にてholdの値をもとに何を表示するかを決めています。

つまりholdはオリンピック開催を判定する計算結果を格納するための変数となっています。

変数holdを使用しないのであれば、
switch (hold)

switch (olympic(year))
に変更すればいいです。

※ここの()内をholdからyearにとの記載があったので、Switch文の理解も怪しいのでは?

返信

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