配列の作成

[戻る]
テルテル [E-Mail] 2001/10/22(月) 21:36:39
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 2001/10/23(火) 23:09:16
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])();
です。

ザンギェ 2001/10/24(水) 12:54:19
//---------------------------------------------------------------------------
#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;
}
//---------------------------------------------------------------------------

古いスレッドには追加発言できません。