四則演算、ポインタ利用の問題点がわかりません
Posted: 2015年12月07日(月) 18:55
四則演算のポインタを利用したプログラムです。
けれど、このファイルのコンパイルはできるのですがexeが開けません。
間違い等ご指摘お願いします。
code
#include<stdio.h>
typedef struct complex {
double re;
double im;
} COMPLEX;
COMPLEX *padd_c(COMPLEX *px , COMPLEX *py );
COMPLEX *psub_c(COMPLEX *px , COMPLEX *py );
COMPLEX *pmul_c(COMPLEX *px , COMPLEX *py );
COMPLEX *pdiv_c(COMPLEX *px , COMPLEX *py );
int main(void)
{
COMPLEX x = {2.0,2.5};
COMPLEX y = {-1.5,4.5};
COMPLEX *px,*py,*pz;
px = &x;
py = &y;
pz = padd_c(px,py);
printf("((%f)+(%f)i)+((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = psub_c(px,py);
printf("((%f)+(%f)i)-((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = pmul_c(px,py);
printf("((%f)+(%f)i)*((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = pdiv_c(px,py);
printf("((%f)+(%f)i)/((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
}
COMPLEX *pz;
COMPLEX *padd_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re + py->re;
pz->im = px->im + py->im;
return pz;
}
COMPLEX *psub_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re - py->re;
pz->im = px->im - py->im;
return pz;
}
COMPLEX *pmul_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re * py->re - px->im * py->im;
pz->im = px->re * py->im + px->im * py->im;
return pz;
}
COMPLEX *pdiv_c(COMPLEX *px , COMPLEX *py ){
double temp;
temp = py->re * py->re + py->im * py->im;
pz->re = (px->re * py->re + px->im * py->im)/temp;
pz->im = (-1 * px->re * py->im + px->im * py->re)/temp;
return pz;
}
/code
けれど、このファイルのコンパイルはできるのですがexeが開けません。
間違い等ご指摘お願いします。
code
#include<stdio.h>
typedef struct complex {
double re;
double im;
} COMPLEX;
COMPLEX *padd_c(COMPLEX *px , COMPLEX *py );
COMPLEX *psub_c(COMPLEX *px , COMPLEX *py );
COMPLEX *pmul_c(COMPLEX *px , COMPLEX *py );
COMPLEX *pdiv_c(COMPLEX *px , COMPLEX *py );
int main(void)
{
COMPLEX x = {2.0,2.5};
COMPLEX y = {-1.5,4.5};
COMPLEX *px,*py,*pz;
px = &x;
py = &y;
pz = padd_c(px,py);
printf("((%f)+(%f)i)+((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = psub_c(px,py);
printf("((%f)+(%f)i)-((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = pmul_c(px,py);
printf("((%f)+(%f)i)*((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
pz = pdiv_c(px,py);
printf("((%f)+(%f)i)/((%f)+(%f)i)=((%f)+(%f)i)\n",
px->re,px->im,py->re,py->im,pz->re,pz->im);
}
COMPLEX *pz;
COMPLEX *padd_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re + py->re;
pz->im = px->im + py->im;
return pz;
}
COMPLEX *psub_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re - py->re;
pz->im = px->im - py->im;
return pz;
}
COMPLEX *pmul_c(COMPLEX *px , COMPLEX *py ){
pz->re = px->re * py->re - px->im * py->im;
pz->im = px->re * py->im + px->im * py->im;
return pz;
}
COMPLEX *pdiv_c(COMPLEX *px , COMPLEX *py ){
double temp;
temp = py->re * py->re + py->im * py->im;
pz->re = (px->re * py->re + px->im * py->im)/temp;
pz->im = (-1 * px->re * py->im + px->im * py->re)/temp;
return pz;
}
/code