解説クラスSupport続(3)
解説クラスSupport続(3)
2024年2月20続講(初稿)!!
(3-4-124)関数「double MinMaxLine(
float*line,int size,double& maxData);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
double Support::MinMaxLine(
float* line, // データPtr
int size, // サイズ
double& maxData // 返値:最大値
){
float minD; // データ:最小値
float maxD; // データ:最大値
float temp; // データ:比較用
minD = *line; // 初期値をセットし
maxD = minD; //
while( --size >= 0 ){ // サイズ分を繰返し
temp = *line++; // 比較値を取り出し
if( minD > temp ){ // 小さいい方を
minD = temp; // 新しい最大値にする
} //
if( maxD < temp ){ // 大きい方を
maxD = temp; // 新しい最大値にする
} //
} //
maxData = (double)maxD; // 最大値を返す
return( (double)minD ); // 最小値を返す
}
(3-4-124-A)関数名「MinMaxLine」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「float*line」で仮引数でポインタが示す実引数の
データの最小値と最大値を両方とも算出する関数です!
「line」は、一つながりの連続するデータを意味します!
(3-4-124-B)関数「MinMaxLine()」の
【仮引数】説明
double Support::MinMaxLine(
float* line, // データPtr
int size, // サイズ
double& maxData // 返値:最大値
){
「float*line,」は、連続するメモリ上データをポインタで
示す実引数のデータ列を示すポインタです!
勿論、「float型」単精度浮動小数点型4バイト単位です!
「int size」は、計算するデータのサイズです!
「double& maxData」は、最大値を「double&」で仮引数に
対応する実引数に対して結果を返す為の仮引数です!
(3-4-124-C)関数「MinMaxLine()」の
【ローカル変数】説明
){
float minD; // データ:最小値
float maxD; // データ:最大値
float temp; // データ:比較用
「float minD;」は、結果の最小値です!
「float maxD;」は、結果の最大値です!
「float temp;」は、比較用データとして
仮引数「float*line」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
(3-4-124-D)関数「MinMaxLine()」の
【アルゴリズム】説明
minD = *line; // 初期値をセットし
maxD = minD; //
while( --size >= 0 ){ // サイズ分を繰返し
temp = *line++; // 比較値を取り出し
if( minD > temp ){ // 小さいい方を
minD = temp; // 新しい最大値にする
} //
if( maxD < temp ){ // 大きい方を
maxD = temp; // 新しい最大値にする
} //
} //
maxData = (double)maxD; // 最大値を返す
return( (double)minD ); // 最小値を返す
}
「minD = *line;」は、最初のデータを仮の最小値として
初期化!
「maxD = minD;」は、最初のデータを仮の最大値として
初期化!
「while(--size>=0) {・・ループ中身・・}」は、
ループ条件「(--size>=0)」で仮引数「int size」分ループ
中身を実行
ループ中身「temp=*line++;if(minD>temp){minD=temp;}
if(minD<temp){minD=temp;}」と
「temp=*line++;」で一時的にCPU内部高速レジスターに
取り出し、
「if(minD>temp){minD=temp;}」で最小値の依り小さい
方を「minD」に
「if(maxD<temp){maxD=temp;}」で最大値の依り大きい
方を「maxD」にセット!
「maxData=(double)maxD;」は、
仮引数「double& maxData」にキャスト演算で「double型」
に変換後、ポインタ経由で対応する実引数に値を返します!
最後に関数の値として「return((double)minD);」と
キャスト演算で「double型」に変換するのは、ループの中身
で「float型」同士の操作を行う事で無駄なキャスト
演算(型変換)が起こらない様に考慮した為です!
(3-4-125)関数「double MinMaxLine(
double*line,int size,double& maxData);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
double Support::MinMaxLine(
double* line, // データPtr
int size, // サイズ
double& maxData // 返値:最大値
){
double minD; // データ:最小値
double maxD; // データ:最大値
double temp; // データ:比較用
minD = *line; // 初期値をセットし
maxD = minD; //
while( --size >= 0 ){ // サイズ分を繰返し
temp = *line++; // 比較値を取り出し
if( minD > temp ){ // 小さいい方を
minD = temp; // 新しい最大値にする
} //
if( maxD < temp ){ // 大きい方を
maxD = temp; // 新しい最大値にする
} //
} //
maxData = maxD; // 最大値を返す
return( minD ); // 最小値を返す
}
(3-4-125-A)関数名「MinMaxLine」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「double*line」で仮引数でポインタが示す実引数の
データの最小値と最大値を両方とも算出する関数です!
「line」は、一つながりの連続するデータを意味します!
(3-4-125-B)関数「MinMaxLine()」の【仮引数】説明
double Support::MinMaxLine(
double* line, // データPtr
int size, // サイズ
double& maxData // 返値:最大値
){
「double*line,」は、連続するメモリ上データをポインタで
示す実引数のデータ列を示すポインタです!
勿論、「double型」倍精度浮動小数点型8バイト単位です!
「int size」は、計算するデータのサイズです!
「double& maxData」は、最大値を「double&」で仮引数に
対応する実引数に対して結果を返す為の仮引数です!
(3-4-125-C)関数「MinMaxLine()」の
【ローカル変数】説明
){
double minD; // データ:最小値
double maxD; // データ:最大値
double temp; // データ:比較用
「double minD;」は、結果の最小値です!
「double maxD;」は、結果の最大値です!
「double temp;」は、比較用データとして
仮引数「double*line」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
(3-4-125-D)関数「MinMaxLine()」の
【アルゴリズム】説明
minD = *line; // 初期値をセットし
maxD = minD; //
while( --size >= 0 ){ // サイズ分を繰返し
temp = *line++; // 比較値を取り出し
if( minD > temp ){ // 小さいい方を
minD = temp; // 新しい最大値にする
} //
if( maxD < temp ){ // 大きい方を
maxD = temp; // 新しい最大値にする
} //
} //
maxData = maxD; // 最大値を返す
return( minD ); // 最小値を返す
}
「minD = *line;」は、最初のデータを仮の最小値として
初期化!
「maxD = minD;」は、最初のデータを仮の最大値として
初期化!
「while(--size>=0) {・・ループ中身・・}」は、
ループ条件「(--size>=0)」で仮引数「int size」分ループ
中身を実行
ループ中身「temp=*line++;if(minD>temp){minD=temp;}
if(minD<temp){minD=temp;}」と
「temp=*line++;」で一時的にCPU内部高速レジスターに
取り出し、
「if(minD>temp){minD=temp;}」で最小値の依り小さい
方を「minD」に
「if(maxD<temp){maxD=temp;}」で最大値の依り大きい
方を「maxD」にセット!
「maxData=maxD;」は、仮引数「double& maxData」に結果
として返し最後に関数の値として「return(minD);」と
関数の結果を返します!
★注意★ファイル「Support.cpp」に記載して有る関数本文
の上部のコメントが、「整数型ラインバッファーの」と
浮動小数点型を扱う関数に関わらず誤記載しています!
勿論、コピペした時に修正忘れです?!元々作者(私)用の
覚書程度の事で公開を前提に記載して無かったが、
動作しているソースコードの状態を弄る事は止めた為に
変な記載が残って居る部分です!
ソースコード(中身)の方が正しいので注意して下さい!
★☆備考☆★
今回までで解説した「MinLine()・MaxLine()・
MinMaxLine()」に「C++」からの言語として進化した
特徴で有る多重定義(オーバーローディング)を使用して
居ますが、「C++以降」の進化した文法を御存知の人は、
「同じ様な処理」を行って居るので纏めて
「テンプレート」記述を使用したら、一発で短く記載出来
たのに何故?と訝しがる人も居ると思いますが、
解説『高速大容量の代表的処理が、画像処理』で説明した
高速化を計る為に細かいチューニングを行って居ると思っ
て頂きたい?!
恐らく、最新の高速CPUでは「テンプレート化」しても
遜色無く動く可能性が有りますが、
私は、保証いたしかねます!
(3-4-126)関数「int MaxLineIndex(
BYTE line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
BYTE line[], // データPtr
int size // サイズ
){
BYTE data; // データ
BYTE temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-126-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「BYTE line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「BYTE line[]」の
添え字の値と言う事に注意して下さい!
(3-4-126-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
BYTE line[], // データPtr
int size // サイズ
){
「BYTE line[],」は、配列の形の連続するメモリ上データを
ポインタで示す実引数のデータ列を示すポインタです!
データの単位は「unsigned char」と1バイト符号なし整数
です!
「int size」は、計算するデータのサイズです!
(3-4-126-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
BYTE data; // データ
BYTE temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「BYTE data;」は、結果の最大値レジスターへ一時的な
置き場所!
「BYTE temp;」は、比較用データとして
仮引数「BYTE line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!
「int i;」は、配列「BYTE line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-126-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と
「temp=line[i];」で一時的にCPU内部高速レジスターに
取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-127)関数「int MaxLineIndex(
short line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
short line[], // データPtr
int size // サイズ
){
short data; // データ
short temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-127-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「short line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、
仮引数「short line[]」の添え字の値と言う事に注意して
下さい!
(3-4-127-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
short line[], // データPtr
int size // サイズ
){
「short line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「short型」と2バイト符号あり整数です!
「int size」は、計算するデータのサイズです!
(3-4-127-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
short data; // データ
short temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「short data;」は、結果の最大値レジスターへ一時的な
置き場所!
「short temp;」は、比較用データとして
仮引数「short line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!「int i;」は、
配列「short line[]」のアクセス添え字とサイズ分探索
するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-127-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と
「temp=line[i];」で一時的にCPU内部高速レジスター
に取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-128)関数「int MaxLineIndex(
int line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
int line[], // データPtr
int size // サイズ
){
int data; // データ
int temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-128-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「int line[]」で仮引数を配列の形の実引数のデータの
最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「int line[]」の
添え字の値と言う事に注意して下さい!
(3-4-128-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
int line[], // データPtr
int size // サイズ
){
「int line[],」は、配列の形の連続するメモリ上データを
ポインタで示す実引数のデータ列を示すポインタです!
データの単位は「int型」と4バイト符号あり整数です!
「int size」は、計算するデータのサイズです!
(3-4-128-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
int data; // データ
int temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「int data;」は、結果の最大値レジスターへ一時的な
置き場所!
「int temp;」は、比較用データとして
仮引数「int line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!「int i;」は、配列「int line[]」の
アクセス添え字とサイズ分探索するカウンター値を
示します!「カウンタ」若しくは「添字」と呼称!
(3-4-128-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexを
更新します!
最後に関数の値として「return( ix );」と
最大時Indexを関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-129)関数「int MaxLineIndex(
UWORD line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に
格納されて居て次の様に
int Support::MaxLineIndex(
UWORD line[], // データPtr
int size // サイズ
){
UWORD data; // データ
UWORD temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-129-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「UWORD line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「UWORD line[]」の
添え字の値と言う事に注意して下さい!
(3-4-129-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
UWORD line[], // データPtr
int size // サイズ
){
「UWORD line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「UWORD型」と2バイト符号無し整数です!
「int size」は、計算するデータのサイズです!
(3-4-129-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
UWORD data; // データ
UWORD temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「UWORD data;」は、結果の最大値レジスターへ一時的な
置き場所!
「UWORD temp;」は、比較用データとして
仮引数「UWORD line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!
「int i;」は、配列「UWORD line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-129-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-130)関数「int MaxLineIndex(
DWORD line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
DWORD line[], // データPtr
int size // サイズ
){
DWORD data; // データ
DWORD temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-130-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「DWORD line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「DWORD line[]」の
添え字の値と言う事に注意して下さい!
(3-4-130-B)関数「MaxLineIndex()」の【仮引数】説明
int Support::MaxLineIndex(
DWORD line[], // データPtr
int size // サイズ
){
「DWORD line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「DWORD型」と2バイト符号無し整数です!
「int size」は、計算するデータのサイズです!
(3-4-130-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
DWORD data; // データ
DWORD temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「DWORD data;」は、結果の最大値レジスターへ一時的な
置き場所!
「DWORD temp;」は、比較用データとして
仮引数「DWORD line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!
「int i;」は、配列「DWORD line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-130-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-131)関数「int MaxLineIndex(
float line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
float line[], // データPtr
int size // サイズ
){
float data; // データ
float temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-131-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「float line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「float line[]」の
添え字の値と言う事に注意して下さい!
(3-4-131-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
float line[], // データPtr
int size // サイズ
){
「float line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「float型」と単精度浮動小数点4バイト
実数です!
「int size」は、計算するデータのサイズです!
(3-4-131-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
float data; // データ
float temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「float data;」は、結果の最大値レジスターへ一時的な
置き場所!
「float temp;」は、比較用データとして
仮引数「float line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!
「int i;」は、配列「float line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-131-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-132)関数「int MaxLineIndex(
double line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MaxLineIndex(
double line[], // データPtr
int size // サイズ
){
double data; // データ
double temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
(3-4-132-A)関数名「MaxLineIndex」の説明
「Max」は、英単語「maximum」の略≪最大≫を意味する
英単語です!
詰り「double line[]」で仮引数を配列の形の実引数の
データの最大値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MaxLine()」での
最大値と言う数値では無く、仮引数「double line[]」の
添え字の値と言う事に注意して下さい!
(3-4-132-B)関数「MaxLineIndex()」の
【仮引数】説明
int Support::MaxLineIndex(
double line[], // データPtr
int size // サイズ
){
「double line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「double型」と倍精度浮動小数点8バイト
実数です!
「int size」は、計算するデータのサイズです!
(3-4-132-C)関数「MaxLineIndex()」の
【ローカル変数】説明
){
double data; // データ
double temp; // データ:比較用
int ix; // 最大時Index
int i; // カウンタ:添字
「double data;」は、結果の最大値レジスターへ一時的な
置き場所!
「double temp;」は、比較用データとして
仮引数「double line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最大値の時の添え字の値です!
最大時Indexと呼称!
「int i;」は、配列「double line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-132-D)関数「MaxLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最大時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data < temp ){ // 最大値を
data = temp; // 更新し
ix = i; // 最大時Index更新
} //
} //
return( ix ); // 最大時Indexを返す
}
「ix=0;」は、最大時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最大値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最大値の依り
大きい方を「data」にセットし、その時の最大時Indexも
更新します!
最後に関数の値として「return( ix );」と最大時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-133)関数「int MinLineIndex(
BYTE line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
BYTE line[], // データPtr
int size // サイズ
){
BYTE data; // データ
BYTE temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-133-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「BYTE line[]」で仮引数を配列の形の実引数のデータ
の最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「BYTE line[]」の
添え字の値と言う事に注意して下さい!
(3-4-133-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
BYTE line[], // データPtr
int size // サイズ
){
「BYTE line[],」は、配列の形の連続するメモリ上データを
ポインタで示す実引数のデータ列を示すポインタです!
データの単位は「unsigned char」と1バイト符号なし整数
です!
「int size」は、計算するデータのサイズです!
(3-4-133-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
BYTE data; // データ
BYTE temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「BYTE data;」は、結果の最小値レジスターへ一時的な
置き場所!
「BYTE temp;」は、比較用データとして
仮引数「BYTE line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「BYTE line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-133-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexも
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-134)関数「int MinLineIndex(
short line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
short line[], // データPtr
int size // サイズ
){
short data; // データ
short temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-134-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「short line[]」で仮引数を配列の形の実引数のデータ
の最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「short line[]」の
添え字の値と言う事に注意して下さい!
(3-4-134-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
short line[], // データPtr
int size // サイズ
){
「short line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「short型」と2バイト符号あり整数です!
「int size」は、計算するデータのサイズです!
(3-4-134-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
short data; // データ
short temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「short data;」は、結果の最小値レジスターへ一時的な
置き場所!
「short temp;」は、比較用データとして
仮引数「short line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所「int ix;」は、最小値の
時の添え字の値です!最小時Indexと呼称!
「int i;」は、配列「short line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!「カウンタ」
若しくは「添字」と呼称!
(3-4-134-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexも
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-135)関数「int MinLineIndex(
int line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
int line[], // データPtr
int size // サイズ
){
int data; // データ
int temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-135-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「int line[]」で仮引数を配列の形の実引数のデータの
最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「int line[]」の
添え字の値と言う事に注意して下さい!
(3-4-135-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
int line[], // データPtr
int size // サイズ
){
「int line[],」は、配列の形の連続するメモリ上データを
ポインタで示す実引数のデータ列を示すポインタです!
データの単位は「int型」と4バイト符号あり整数です!
「int size」は、計算するデータのサイズです!
(3-4-135-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
int data; // データ
int temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「int data;」は、結果の最小値レジスターへ一時的な
置き場所!
「int temp;」は、比較用データとして
仮引数「int line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「int line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-135-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexも
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-136)関数「int MinLineIndex(
UWORD line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
UWORD line[], // データPtr
int size // サイズ
){
UWORD data; // データ
UWORD temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-136-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「UWORD line[]」で仮引数を配列の形の実引数の
データの最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「UWORD line[]」の
添え字の値と言う事に注意して下さい!
(3-4-136-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
UWORD line[], // データPtr
int size // サイズ
){
「UWORD line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「UWORD型」と2バイト符号無し整数です!
「int size」は、計算するデータのサイズです!
(3-4-136-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
UWORD data; // データ
UWORD temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「UWORD data;」は、結果の最小値レジスターへ一時的な
置き場所!
「UWORD temp;」は、比較用データとして
仮引数「UWORD line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「UWORD line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-136-D)関数「MinLineIndex()」の
【アルゴリズム】説明
){
UWORD data; // データ
UWORD temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexを
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-137)関数「int MinLineIndex(
DWORD line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
DWORD line[], // データPtr
int size // サイズ
){
DWORD data; // データ
DWORD temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-137-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「DWORD line[]」で仮引数を配列の形の実引数の
データの最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「DWORD line[]」の
添え字の値と言う事に注意して下さい!
(3-4-137-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
DWORD line[], // データPtr
int size // サイズ
){
「DWORD line[],」は、配列の形の連続するメモリ上データ
をポインタで示す実引数のデータ列を示すポインタです!
データの単位は「DWORD型」と2バイト符号無し整数です!
「int size」は、計算するデータのサイズです!
(3-4-137-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
DWORD data; // データ
DWORD temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「DWORD data;」は、結果の最小値レジスターへ一時的な
置き場所!
「DWORD temp;」は、比較用データとして
仮引数「DWORD line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「DWORD line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-137-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexも
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-138)関数「int MinLineIndex(
float line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
float line[], // データPtr
int size // サイズ
){
float data; // データ
float temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-138-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「float line[]」で仮引数を配列の形の実引数の
データの最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「float line[]」の
添え字の値と言う事に注意して下さい!
(3-4-138-B)関数「MinLineIndex()」の【仮引数】説明
int Support::MinLineIndex(
float line[], // データPtr
int size // サイズ
){
「float line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「float型」と単精度浮動小数点4バイト
実数です!
「int size」は、計算するデータのサイズです!
(3-4-138-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
float data; // データ
float temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「float data;」は、結果の最小値レジスターへ一時的な
置き場所!
「float temp;」は、比較用データとして
仮引数「float line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「float line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-138-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行!
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と「temp=line[i];」で
一時的にCPU内部高速レジスターに取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexを
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
(3-4-139)関数「int MinLineIndex(
double line[],int size);」の説明
この関数の本体は、ファイル「Support.cpp」に格納
されて居て次の様に
int Support::MinLineIndex(
double line[], // データPtr
int size // サイズ
){
double data; // データ
double temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
(3-4-139-A)関数名「MinLineIndex」の説明
「Min」は、英単語「minimum」の略≪最小≫を意味する
英単語です!
詰り「double line[]」で仮引数を配列の形の実引数の
データの最小値を示す添え字を算出する関数です!
「line」は、一つながりの連続するデータを意味します!
「Index」は、インデックス⇒C言語的には、日本語で
「添え字」と書くデータ列の(0から始まる配列)添字を
意味します!
この関数の返し値(Return)は、関数「MinLine()」での
最小値と言う数値では無く、仮引数「double line[]」の
添え字の値と言う事に注意して下さい!
(3-4-139-B)関数「MinLineIndex()」の
【仮引数】説明
int Support::MinLineIndex(
double line[], // データPtr
int size // サイズ
){
「double line[],」は、配列の形の連続するメモリ上
データをポインタで示す実引数のデータ列を示すポインタ
です!
データの単位は「double型」と倍精度浮動小数点8バイト
実数です!
「int size」は、計算するデータのサイズです!
(3-4-139-C)関数「MinLineIndex()」の
【ローカル変数】説明
){
double data; // データ
double temp; // データ:比較用
int ix; // 最小時Index
int i; // カウンタ:添字
「double data;」は、結果の最小値レジスターへ一時的な
置き場所!
「double temp;」は、比較用データとして
仮引数「double line[]」から一旦、CPU内部の高速
レジスターへ一時的な置き場所!
「int ix;」は、最小値の時の添え字の値です!
最小時Indexと呼称!
「int i;」は、配列「double line[]」のアクセス添え字と
サイズ分探索するカウンター値を示します!
「カウンタ」若しくは「添字」と呼称!
(3-4-139-D)関数「MinLineIndex()」の
【アルゴリズム】説明
ix = 0; // 最小時Index初期化
data = line[0]; // 初期値をセットし
for( i = 1; i < size; i++ ){ // サイズ分を繰返し
temp = line[i]; // 比較値を取り出し
if( data > temp ){ // 最小値を
data = temp; // 更新し
ix = i; // 最小時Index更新
} //
} //
return( ix ); // 最小時Indexを返す
}
「ix=0;」は、最小時Indexの初期化です!
「data=line[0];」は、最初のデータを仮の最小値として
初期化!
「for(i=1;i<size;i++) {・・ループ中身・・}」は、
教科書的forループ構文「(i=1;i<size;i++)」で
「1からカウンタ」を始め仮引数「int size」未満ループ
中身を繰り返し実行
ループ中身「temp=line[i];
if(data<temp){data=temp;ix=i;}」と
「temp=line[i];」で一時的にCPU内部高速レジスターに
取り出し、
「if(data<temp){data=temp;ix=i;}」で最小値の依り
小さい方を「data」にセットし、その時の最小時Indexも
更新します!
最後に関数の値として「return( ix );」と最小時Indexを
関数の値として返します!
★注意★そこまで高速性が要求されない所で極教科書的な
記述で分かり易く記述した関数です!
★注意★ファイル「Support.cpp」に記載して有る関数本文
の上部のコメントが、「整数型ラインバッファーの」と
浮動小数点型を扱う関数に関わらず誤記載しています!
勿論、コピペした時に修正忘れです?!
元々作者(私)用の覚書程度の事で公開を前提に記載して
無かったが、動作しているソースコードの状態を弄る事は
止めた為に変な記載が残って居る部分です!
ソースコード(中身)の方が正しいので注意して下さい!
★☆備考☆★
今回までで解説した「MinLineIndex()・
MaxLineIndex())」に「C++」からの言語として進化
した特徴で有る多重定義(オーバーローディング)を使用
して居ますが、「C++以降」の進化した文法を御存知の
人は、「同じ様な処理」を行って居るので纏めて
「テンプレート」記述を使用したら、一発で短く記載出来
たのに何故?と訝しがる人も居ると思いますが、
前に説明した「MinLine()・MaxLine()・
MinMaxLine()」は、高速化チューニングの為との理屈を
付けましたが、今回の「○○Index()系」は
「テンプレート」の使用方法・作成方法に長けている人に
は、容易に中身の速度的パフォーマンスを落とすことなく
テンプレート化する事は容易でしょう!
ここでは、テンプレート記述を採用シナカッタ、
言い訳≪まず、存在を知った時に私が理解して無かった?!
そして「<型名>」と「<>」を括弧として使用する記法が、
表示した時の見掛けが気に入ら無かったからとツマラナイ
理由です!
未だに「<>」記法は馴染め無いのが正直な所です!≫、
尚、ファイル「Support.cpp」は、文字コードの
ソースコードで提供していますので読者様が、自由に変更
する事は可能です!
ただし、ソースコードを変更したモノは、私が公開した
モノとは、異なりますので!
私としては、保証はできません!!
★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい
上記まででファイル「Support.cpp」の解説は、
終わりました!
引き続きファイル「Support.h」の終わりの方に記載して
有る!
「inline関数群」に付いて解説して
「クラスSupport」の解説を完了します!
(3-4-140)インライン関数の説明
この関数の本体は、ファイル「Support.h」に格納
されて居て次の様に
/********************************************************************************************/
/***** inline関数群 *****/
/********************************************************************************************/
public: // inline関数
inline int MaxLine( // 最大値:ライン:long
long* line, // ライン情報Ptr
int size // ライン長
){
return( MaxLine( (int*)line, size ) ); // 左記で実行
}
inline int MinLine( // 最小値:ライン:long
long* line, // ライン情報Ptr
int size // ライン長
){
return( MinLine( (int*)line, size ) ); // 左記で実行
}
inline int MinMaxLine( // 最小値最大値:ライン:long
long* line, // ライン情報Ptr
int size, // ライン長
int& maxData // 返値:最大値
){
return( MinMaxLine( (int*)line, size, maxData ) ); // 左記で実行
}
int MaxLineIndex( // 最大値時Index:ライン:long
long line[], // ライン情報Ptr
int size // ライン長
){
return( MaxLineIndex( (int*)line, size ) ); // 左記で実行
}
int MinLineIndex( // 最小値時Index:ライン:long
long line[], // ライン情報Ptr
int size // ライン長
){
return( MinLineIndex( (int*)line, size ) ); // 左記で実行
}
};
(3-4-140-1)関数「inline int MaxLine(
long* line,int size){・・中身・・}」
中身「return( MaxLine( (int*)line, size ) );」
と仮引数をキャストしただけ!
(3-4-140-2)関数「inline int MinLine(
long* line,int size){・・中身・・}」
中身「return( MinLine( (int*)line, size ) );」
と仮引数をキャストしただけ!
(3-4-140-3)関数「inline int MinMaxLine(long*line,int size,int&maxData){・・中身・・}」
中身「return( MinMaxLine((int*)line, size, int&maxData ) );」
と仮引数をキャストしただけ!
(3-4-140-4)関数「int MaxLineIndex(
long line[],int size){・・中身・・}」
中身「return( MaxLineIndex( (int*)line, size ) );」
と仮引数をキャストしただけ!
(3-4-140-5)関数「int MinLineIndex(
long line[],int size){・・中身・・}」
中身「return( MinLineIndex( (int*)line, size ) );」
と仮引数をキャストしただけ!
★注意★ここで、「MaxLineIndex()」・「MinLineIndex()」
には、解説していて気付いたのだが、「inline」を付けて
無い⇒WindowsのVCでは翻訳は正常に動作した!
モウ忘れたが、実験的に「inline」を外して見た気がする
⇒処理系(コンパイラシステム)に依っては、
「inline」を付けないと駄目かも知れ無いので
ご自身のお使いに成る処理系に合わせて下さい!
★★☆備考☆★★
ココまでで画像処理ライブラリ内のサポート的クラス【class Support{}】の
解説を解説『解説クラスSupport』
解説『解説クラスSupport続き』
解説『解説クラスSupport続(2)』
解説『解説クラスSupport続(3)』
4つの解説文章で解説しました!これで完結です!