C/C++言語 char型を用いて演算

C/C++言語でchar型を用いた演算


チップ抵抗を求める際に使える.
例えば
E-96系列で66Aは475Ωで, 51Bは3.32kΩ, 45Cは28.7kΩとなる.
これを求めるプログラムにおいて, char型による四則演算を利用すれば処理も楽になる.

サンプルプログラム1

#include <iostream>		//標準入出力関数を使うときに必要なヘッダー
#include <cmath>			//数学関数を使うときに必要なヘッダー

using namespace std;

double round(double x, double n);

int main(void){
    int num;
    double ans;
    char cNum[3];
    
    cout << "抵抗表記を入力してください :";
    cin >> cNum;	//例 66A
    
    num = ((int)(cNum[0] - '0') * 10 + (int)(cNum[1] - '0'));	//数値に変換
    
    cout << num << endl;
    
    ans = round(pow(pow(10.0, num-1), 1.0/96.0), 3) * 100 * pow(10.0, (int)(cNum[2] - 'A'));	//抵抗値の計算
    
    cout << ans << "\n"; 
    
    return 0;
}

double round(double x, double n){
	int temp = x * pow(10.0, n);	//入力した値を10^n倍する

	if((temp%10) >= 5){		//1の位の余りが5以上の場合
		temp = temp + (10 - temp%10);	//10から1の位の余りを引いて、値に足す
		return (double)temp * pow(10.0, -n);	//計算結果を返す
	}else{					//1の位の余りが5未満の場合
		temp = temp - temp%10;	//1の位の余りを引く
		return (double)temp * pow(10.0, -n);	//計算結果を返す
	}
}

char型は1文字分のデータを格納できる.
例えばAは10進数アスキーコードで65.
つまり, 変数cNum[2]にAを代入して, 数値として'A'を引く計算を行うと0となる.
また, cNum[2]='D'とした場合, cNum[2] - 'A' = 3 となる.

参考

なし

※間違ってたらすみません。
わかった時点で修正します。

コメント

このブログの人気の投稿

ダイソー テープライト リモコン付 分解

C++ round関数を使わずに小数第n位の四捨五入をする

C++ cout関数とcin関数を用いた基本的な入出力