C言語の質問です!
#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
double arrayMin(double array[][], int n){
double Min=9999999999999999999999.999999;
for(int N=0;N<n;N++){
if(array[N][0]!=NULL&&array[N][0]<Min){
Min=array[N][0];
}
}
return Min;
}
double arrayMax(double array[][], int n){
double Max=-9999999999999999999999.999999;
for(int N=0;N<n;N++){
if(array[N][0]!=NULL&&array[N][0]<Max){
Max=array[N][0];
}
}
return Max;
}
int main(){
double data[3][10] = {{2.0, 1.0, 5.0, 3.0, 2.0, 21.0, 4.0, 5.0, 4.0, 28.0}, {1.0, 1.0, 5.0, 3.0, 2.0, 21.0, 4.0, 5.0, 4.0, 28.0}, {3.0, 1.0, 5.0, 3.0, 2.0, 21.0, 4.0, 5.0, 4.0, 28.0}};
double min, max;
min=arrayMin(data, 3);
max=arrayMax(data, 3);
printf("min = %lf, max = %lf\n", min, max);
return 0;
}
二次元配列の1行目の配列の最大値と最小値を求めることを考え,上のようなプログラムを書いたのですが,
1>.\maxmin.cpp(12) : error C2087: 'array' : 添字がありません。
1>.\maxmin.cpp(21) : error C2087: 'array' : 添字がありません。
1>.\maxmin.cpp(34) : error C2059: 構文エラー : ']'
1>.\maxmin.cpp(35) : error C2664: 'arrayMax' : 1 番目の引数を 'double [3][10]' から 'double [][1]' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
というようなエラーが出てしまいます.
途中のarray[N][0]!=NULLは二次元配列dataが3行より少ない場合に対応させています.
どなたかアドバイスをいただけますでしょうか?
よろしくお願いいたします!
お礼
サンプルコードありがとうございます。該当部分を抜き出してみました。 static uint8_t count_consecutive_ones_recursive_sub(uint64_t in, uint8_t acc) { if (in == 0) return acc; return count_consecutive_ones_recursive_sub((in & (in << 1)), acc + 1); } 再帰だと簡潔に書けますね。自分を呼び出した時、計算結果を引数で伝えていく感じでしょうか。 参考になりました。