C言語で電気料金を計算するプログラムの作成方法
この記事では、ユーザーが消費した電力量(単位数)をもとに電気料金を自動計算するC言語プログラムを紹介します。採用されているのは段階料金制で、消費電力量が増えるほど1単位あたりの単価も引き上げられる仕組みです。
段階別の料金計算ロジック
使用量が50未満の場合
最低使用量帯では、基本料金25円に加えて、1単位あたり3.50円で計算します。
if (units < 50){
amt = units * 3.50;
unitcharg = 25;
}使用量が50〜100の場合
最初の50単位分は130円として固定し、超過分には1単位あたり4.25円を適用します。基本料金は35円です。
else if (units <= 100){
amt = 130 + ((units - 50) * 4.25);
unitcharg = 35;
}使用量が100〜200の場合
ここまでは130円+162.50円を固定額とし、100単位を超えた分に対して1単位あたり5.26円を加算します。基本料金は45円です。
else if (units <= 200){
amt = 130 + 162.50 + ((units - 100) * 5.26);
unitcharg = 45;
}使用量が200を超える場合
最も高い段階では、固定額130円+162.50円+526円に加え、200単位を超えた分に1単位あたり7.75円を課します。基本料金は55円です。
amt = 130 + 162.50 + 526 + ((units - 200) * 7.75); unitcharg = 55;
合計金額の算出
最終的な請求額は、電力量に応じた金額(amt)と基本料金(unitcharg)を足し合わせて求めます。
total = amt + unitcharg;
サンプルプログラム
以下が、電気料金を生成する完全なCプログラムです。
#include <stdio.h>
int main(){
int units;
float amt, unitcharg, total;
printf(" Enter no of units consumed : ");
scanf("%d", &units);
if (units < 50){
amt = units * 3.50;
unitcharg = 25;
}else if (units <= 100){
amt = 130 + ((units - 50) * 4.25);
unitcharg = 35;
}else if (units <= 200){
amt = 130 + 162.50 + ((units - 100) * 5.26);
unitcharg = 45;
}else{
amt = 130 + 162.50 + 526 + ((units - 200) * 7.75);
unitcharg = 55;
}
total = amt + unitcharg;
printf("electricity bill = %.2f", total);
return 0;
}実行結果
上記のプログラムを実行すると、次のような出力が得られます。ここでは280単位を入力した場合の例を示します。
Enter no of units consumed: 280 electricity bill = 1493.50
このように、if-else文による条件分岐を使うことで、消費電力量に応じて適切な段階の単価と基本料金を自動的に選択し、正確な電気料金を算出できます。料金体系が変わった場合でも、各条件ブロック内の数値を修正するだけで柔軟に対応できる点が、このプログラムの大きなメリットです。
-
再帰を使ってグレイコードを生成するPythonプログラムの書き方
グレイコード(Gray Code)とは、隣り合う数値同士でビットが必ず1つだけしか変化しない特別な二進数表記のことです。デジタル回路設計やエラー検出、位置センサーなど、さまざまな分野で活用されています。Pythonで再帰的な考え方を利用してグレイコードを生成するには、まず空のリストを作成し、初期値として「0」と「1」を追加するメソッドを定義します。その後、関数内で複数の「for」ループを組み合わせることで、指定した桁数分のグレイコードを効率よく生成できます。サンプルコードimport math as mt def generate_gray_list(my_val): if (my_v
-
Pythonで辞書式順序の最初のn個の数を生成するプログラム
はじめに数値 n が与えられたとき、「辞書式順序(lexicographic order)」に従って並べ替えられた最初の n 個の数を求めることを考えます。辞書式順序とは、数値を文字列として扱い、左から1文字ずつ比較して並べる方式のことです。例えば、入力が n = 15 の場合、出力は次のようになります。[1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]これは通常の数値の大小順(1, 2, 3, …)ではなく、「1」の次に「10」「11」「12」と続く、文字列として比較したときの順序になっている点に注目してください。解決アプローチこの問題は、