連立一次方程式
ax+by=c
dx+ey=f
をコマンドライン引数を用いてプログラミングしたのですがコンパイルに成功するものの答えが合いません。
どこが間違っているのか教えていただけないでしょうか?
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char*argv[]){
int a,b,c,d,e,f,o,q,x,y,tmpA,tmpB,x1,x2,s,t,y1,y2,p1,p2,r1,r2;
argc=6;
a=atoi(argv[0]);
b=atoi(argv[1]);
c=atoi(argv[2]);
d=atoi(argv[3]);
e=atoi(argv[4]);
f=atoi(argv[5]);
o=ce-bf;
p1=ae-bd;
q=af-dc;
r1=ae-db;
if(o==0)printf("x=0");
if(q==0)printf("y=0");
if(p1==0||r1==0)printf("解なし");
p2=p1;
if(o<p2){tmpA=o;
o=p2;
p2=tmpA;}
s=o%p2;
while(s!=0){
o=p2;
p2=s;
s=o%p2;}
x1=o/p2;
x2=p1/p2;
r2=r1; if(q<r2){tmpB=o; q=r2; r2=tmpB;} t=q%r2; while(t!=0){ q=r2; r2=t; t=q%r2;} y1=q/r2; y2=r1/r2; if(x1<0&&x2<0){ x1=-1*(o/p2); x2=-1*(p1/p2);} if(y1<0&&y2<0){ y1=-1*(q/r2); y2=-1*(r1/r2);} if(x1>0&&x2<0){ x1=-1*(o/p2); x2=-1*(p1/p2);} if(y1>0&&y2<0){ y1=-1*(q/r2); y2=-1*(r1/r2);} if(x1==x2)printf("x=1"); if(y1==y2)printf("y=1"); else printf("x=%d/%d,y=%d/%d",x1,x2,y1,y2); return 0;
}
回答5件
あなたの回答
tips
プレビュー