3つありマース.(Javeは分かりません.)
1個目
配列みたいなもので int型,float(double)型が入り混じった数字の列を作ることは出来ますか?
作れる方は教えてください.
イメージ的のなのもの
void *p[6];
条件式
p[0] = (int *) malloc(2);
条件式
p[1] = (float *) malloc(4);
・
・
・
これではできなかったっす.
2つ目
float,double の16進数での表し方を教えてください.
3つ目
クラス内での関数ポインタの使い方が分かりません.
class go {
int i,a[3],b[3];
public:
go();
void out1(void);
void out2(void);
void out3(void);
void (go::*func[3])(void);
void get_and_set(void);
};
go::go()
{
for (i=0;i<3;i++){
a[i]=0;
b[i]=i;
}
cout <<Strat!! \n
}
void go::out1(void)
{
cout << b[i] <<No1\n;
}
void go::out2(void)
{
cout << b[i] <<No2\n;
}
void go::out3(void)
{
cout << b[i] <<No3\n;
}
void go::get_and_set(void);
{
int k;
do{
cout<<Enter \n
cin >> a[0] >> a[1] >> a[2];
k=a[0]+a[1]+a[2];
}while(k!=6);
if (i=0;i<3;i++){
if (a[i]==1) func[0]=out1; //
if (a[i]==2) func[1]=out2; // ここがコンパイルできません.
if (a[i]==3) func[2]=out3; //
}
for (i=0;i<3;i++) (*func[i])(void);
}
1つ目
struct NUMBER {
int type;
union {
float a;
int b;
};
};
とかですかね。こいつの配列にして、type の値で判別します。
2つ目
16 進で表示ということなら printf で %x を使えばできるでしょう。
3つ目
通らないのは、
> for (i=0;i<3;i++) (*func[i])(void);
のほうでは?
(this->*func[i])();
です。
//---------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//---------------------------------------------------------------------------
// 問題3
class go {
int i,a[3],b[3];
public:
go();
void out1(void);
void out2(void);
void out3(void);
void (go::*func[3])(void);
void get_and_set(void);
};
go::go()
{
for (i=0;i<3;i++){
a[i]=0;
b[i]=i;
}
printf(Strat!! \n);
}
void go::out1(void)
{
}
void go::out2(void)
{
}
void go::out3(void)
{
}
void go::get_and_set(void)
{
int k, i;
do{
printf(Enter \n);
k=a[0]+a[1]+a[2];
}while(k!=6);
for (i=0;i<3;i++){
if (a[i]==1) func[0]=&go::out1; //
if (a[i]==2) func[1]=&go::out2; // ここがコンパイルできません.
if (a[i]==3) func[2]=&go::out3; //
}
for (i=0;i<3;i++) (this->*func[i])();
}
int main(int argc, char* argv[])
{
//---------------------------------------------------------------------------
// 問題1
void *p[2];
p[0] = (float *)malloc(sizeof(float));
*(float *)p[0] = 10.5;
p[1] = (int *)malloc(sizeof(int));
*(int *)p[1] = 10;
printf(%f %d\n, *(float *)p[0], *(int *)p[1]);
//---------------------------------------------------------------------------
// 問題2
printf(%X\n, (int)*(float *)p[0]);
//---------------------------------------------------------------------------
free(p[0]);
free(p[1]);
getch();
return 0;
}
//---------------------------------------------------------------------------