練習問題⒮

練習問題(プロジェクト3個追加、mainに全部書いてもいいよ)
①入力された2つの文字列を連結して返す関数を作りなさい!
プロトタイプ宣言、定義を書いて、mainで実際に使てみて動作確認!

戻り値は? concatenate(文字列1、文字列2)
{
	処理内容;
	return(なにかえす?);
}

②底辺と高さを入力して、三角形の面積を返す関数
上と同じだけど、全部考えてみて!

③金額を引数にとり、金種表を出力する関数
例)denominations(1353);

10000円 札:0
 5000円 札:0
 1000円 札:1
  500円硬貨:0
 100円硬貨:3
   50円硬貨:1
   10円硬貨:0
    5円硬貨:0
    1円硬貨:3

①模範解答

//theMain.cpp
#include <iostream>
#include <string>
 
using std::string;
using std::cout;
using std::cin;
using std::endl;
 
// concatenate関数 引数の2つの文字列を連結して返す関数
//引数
// string str1:1個目の文字列
// string str2:2個目の文字列
//戻り値
// str1とstr2を連結した結果の文字列
string concatenate(string str1, string str2);
 
int main()
{
	string dat1, dat2;
	cout << "文字列を2つスペース区切りで入力:";
	cin >> dat1 >> dat2;
 
	string res = concatenate(dat1, dat2);
	cout << dat1 << " + " << dat2 << " = " << res << endl;
 
	return 0;
}
 
string concatenate(string str1, string str2)
{
	return(str1 + str2);
}

②模範解答

//theMain.cpp
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
//triangleArea関数 底辺と高さから三角形の面積を返す関数
//引数
// double _base:底辺の長さ(実数)
// double _height:三角形の高さ(実数)
//戻り値
// 三角形の面積(実数)
double triangleArea(double _base, double _height);
 
int main()
{
	double base, height;
	cout << "底辺と高さをスペース区切りで入力:";
	cin >> base >> height;
 
	cout << "(底辺, 高さ)=(" << base << ", " << height << ")の三角形の面積は" 
		 << triangleArea(base, height) << endl;
 
	return 0;
}
 
double triangleArea(double _base, double _height)
{
	return(_base * _height / 2.0);
}

③模範解答

#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
 
//denominations関数 金額を引数に金種表を表示する関数
//引数
// int _price:入力する金額(整数)
//戻り値
// なし
void denominations(int _price); //引き算でやるバージョン
void denominations_by_division(int _price);//割り算とあまりでやるバージョン
 
 
//定義
void denominations(int _price)
{
	int kinds[9] = { 10000,5000,1000,500,100,50,10,5,1 };
	int amount[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int i = 0;
 
	while (_price > 0)
	{
		if (_price >= kinds[i])
		{
			_price = _price - kinds[i];
			amount[i]++;
		}
		else
		{
			i++;
		}
	}
	for (int j = 0; j < 9; j++)
	{
		if (j < 3)
			cout << kinds[j] << "円 札:" << amount[j] << endl;
		else
			cout << kinds[j] << "円硬貨:" << amount[j] << endl;
	}
}
 
 
void denominations_by_division(int _price)
{
	int kinds[9] = { 10000,5000,1000,500,100,50,10,5,1 };
	int amount[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int i = 0;
 
	while (_price > 0)
	{
		if (_price >= kinds[i])
		{
			amount[i] = _price / kinds[i];
			_price = _price % kinds[i];
		}
		else
		{
			i++;
		}
	}
	for (int j = 0; j < 9; j++)
	{
		if (j < 3)
			cout << kinds[j] << "円 札:" << amount[j] << endl;
		else
			cout << kinds[j] << "円硬貨:" << amount[j] << endl;
	}
}
 
int main()
{
	int myprice;
	cout << "金額を入力:";
	cin >> myprice;
 
	denominations_by_division(myprice);
	return 0;
}