配列の作成 – プログラミング – Home

通知
すべてクリア

配列の作成


テルテル
 テルテル
(@テルテル)
ゲスト
結合: 23年前
投稿: 1
Topic starter  

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);

}


引用解決済
トピックタグ
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 23年前
投稿: 217
 

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])();
です。


返信引用
ザンギェ
 ザンギェ
(@ザンギェ)
ゲスト
結合: 23年前
投稿: 4
 

//---------------------------------------------------------------------------
#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;
}
//---------------------------------------------------------------------------


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました