学校の課題で困っていることがあるのですが、助けてください
問題文
• 値を返さない関数と引数を受け取らない関数
➢ 読み込んだ信号の色の適切な行動を出力するプログラムを作成する
➢ プログラムの構成
◆値を返さない関数traffic_light – 仮引数は信号の色
– switch文を使って、信号の色に適切な行動を出力する
◆引数を受けとらない関数get_input
– 読み込みループ:信号の色(赤:0、黄色:1、青:2)が入力されるまでに入力を求める – ユーザーが止めたい場合に返却値を-1にする
– 返却値は入力された信号の色
◆main関数
– ユーザーが止めることを選択するまでにget_inputとtraffic_lightの関数呼出しを繰り返す
出力例
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 2
信号は青です。進め!
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 5
この色はありません。もう一度入力して下さい。
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 1
信号は黄色です。注意!
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 17
この色はありません。もう一度入力して下さい。
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 28
この色はありません。もう一度入力して下さい。
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): 0
信号は赤です。止まれ!
信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1): -1
ありがとうございました!
私の回答
#include <stdio.h>
#define red 0
#define yellow 1
#define blue 2
void traffic_light(int ls) {//値を返さない関数
//仮引数は信号の色
//switch分を使って信号の色に適切な行動を入力する
switch(ls ) {
case red : puts("信号は赤です。止まれ!"); break;
case yellow: puts("信号は黄色です。注意!");break;
case blue: puts ("信号は青です。進め!");break;
}
}
int get_input(void) { //引数を受け取らない関数
//読み込みループ 信号の色(赤 0 黄色1 青2)が入力されるまでに入力を求める
// ユーザが止めたいときに返却値を-1にする
//返却値は入力された信号の色
while (1) { int a; //ユーザーの信号の色 printf("信号の状況を入力して下さい(赤=0、黄=1、青=2、止める=-1):"); scanf("%d",&a); //読み込みループ 信号の色(赤 0 黄色1 青2)が入力されるまでに入力を求める // ユーザが止めたいときに返却値を-1にする if (a == red || a == yellow || a == blue) {// 信号の入力値の場合traffic_light関数を呼び出す(実引数:入力されたジャンケンの //選択) return a; //traffic_light(a); } else if (a == -1) {//入力値がやめるの場合 printf("ありがとうございました"); break; } else { //信号の入力でない場合 printf("この色はありません。もう一度入力して下さい。"); } }
}
int main(){
//ユーザーが止めることを選択するまでにget_inputとtraffic_lightの関数呼び出しを繰り返す
while (0) {
get_input();
traffic_light(2);
}
}
これをコンパイルすると、以下のような画面が出ます。
warning: non-void function does not return a value in all control paths [-Wreturn-type]
}
^
1 warning generated.
これはどういう意味なのでしょうか。また、どこをどのように直せばいいでしょうか。
回答2件
あなたの回答
tips
プレビュー