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行より少ない場合に対応させています.
どなたかアドバイスをいただけますでしょうか?
よろしくお願いいたします!
お礼
有り難うございました。出来ました。 同じ要領で今度はunsigned intとunsigned longの範囲を表示させようとしたのですが、どちらも最小値0、最大値が-1になってしまいます。 unsigned int unsgmin, unsgmax; unsgmin = unsgmax = 0; while(++unsgmin > unsgmax) { unsgmax = unsgmin; } printf("unsigned int min is:\t\t%d\n", unsgmin); printf("unsigned int max is:\t\t%d\n", unsgmax); printfの%dを何かに変えないといけないのでしょうか?