電子書籍の厳選無料作品が豊富!

C言語で多項式の割り算のプログラムを作っているんですができません
以下プログラム
#include <stdio.h>
int main(void)
{
int m,m2,i,i2,j,k;
int a[1000],b[1000],c[1000],d[1000];

puts("何次の多項式ですか?");
printf("1つめ:"); scanf("%d",&m);
printf("2つめ:"); scanf("%d",&m2);

puts("1つめの多項式の係数を入力してください。");
for(i=m;i>=0;i--){
scanf("%d",&a[i]);
}
puts("2つめの多項式の係数を入力してください。");
for(i=m2;i>=0;i--){
scanf("%d",&b[i]);
}

k=m-m2;
c[k]=a[m]/b[m2];
printf("商の次数は%dです。\n",k);

j=m2-1;
for(k=m-m2;k>=0;k--){
for(i=m-1;i>=0;i--){
d[i]=a[i]-c[k]*b[j];
a[i]=d[i];
c[k-1]=a[i]/b[m2];
j=j-1;
}
printf("%d ",c[k]);
}
return(0);
}
原因は
 for(k=m-m2;k>=0;k--){
for(i=m-1;i>=0;i--){
d[i]=a[i]-c[k]*b[j];
a[i]=d[i];
c[k-1]=a[i]/b[m2];
j=j-1;
}
printf("%d ",c[k]);
}
で、iのfor文が終わった後kのfor文が更新され、またiのfor文が始まったときにa[i]が最初に入力された値に変わってしまうからだと思うんですが直せません
誰か教えてくださいm(_ _)m

A 回答 (2件)

すまん、質問者さんのソースコードから弄ってたら


どんどん,わけが判らなくなってごみっぽいプログラムになっていったorz
============投げ捨てて最初から書きなおしたもの========
#include <stdio.h>
int main(void)
{
int m,m2,i,i2,j,k;
int a[1000],b[1000],c[1000],d[1000];

puts("何次の多項式ですか?");
printf("1つめ:"); scanf("%d",&m);
printf("2つめ:"); scanf("%d",&m2);

puts("1つめの多項式の係数を入力してください。");
for(i=m;i>=0;i--){
scanf("%d",&a[i]);
}
puts("2つめの多項式の係数を入力してください。");
for(i=m2;i>=0;i--){
scanf("%d",&b[i]);
}

if (b[m2] != 0){
for (i=0;i <= m-m2;i++){
c[m - m2 - i] = a[m - i] / b[m2];
for (j = 0;j <= m2 ; j++){
a[m - i - j] = a[m - i- j] - c[m - m2 - i] * b[m2 - j];
}
printf("%d次の項%d,%d,%d\n",m - m2 - i,a[m - i],b[m2],c[m - m2 - i]);

}
}
return(0);
}
==================できるだけ質問者様のコードに近づけたごみ================
#include <stdio.h>
int main(void)
{
int m,m2,i,i2,j,k;
int a[1000],b[1000],c[1000],d[1000];

puts("何次の多項式ですか?");
printf("1つめ:"); scanf("%d",&m);
printf("2つめ:"); scanf("%d",&m2);

puts("1つめの多項式の係数を入力してください。");
for(i=m;i>=0;i--){
scanf("%d",&a[i]);
}
puts("2つめの多項式の係数を入力してください。");
for(i=m2;i>=0;i--){
scanf("%d",&b[i]);
}

k=m-m2;
c[k]=a[m]/b[m2];
printf("%d ",c[k]);
printf("商の次数は%dです。\n",k);

for(k=m-m2;k>=0;k--){
c[k]=a[m - (m - m2 - k)]/b[m2];
printf("%d ",c[k]);
j = m2;
for(i = m - (m - m2 - k);i>= m - (m - m2 - k) - m2 ;i--){
d[i]=a[i]-c[k]*b[j];
a[i]=d[i];
j=j-1;
}
}
return(0);
}
    • good
    • 0
この回答へのお礼

ありがとうございます!!
わざわざ2つもわかりやすく作ってくれてホント感謝です!
非常に助かりました^^;

お礼日時:2007/11/16 02:01

>多項式の割り算


だけでは、情報不足な気がします。
どういう場合に、こういう結果にしたいというような例が
あったほうがわかりやすいと思います。
    • good
    • 0
この回答へのお礼

そうですね、、、ちょっとテンパってたもので^^;
以後気をつけます!!

お礼日時:2007/11/16 01:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!