みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語で多項式の割り算のプログラム

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

投稿日時 - 2007-11-13 15:40:46

QNo.3514558

すぐに回答ほしいです

質問者が選んだベストアンサー

すまん、質問者さんのソースコードから弄ってたら
どんどん,わけが判らなくなってごみっぽいプログラムになっていった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);
}

投稿日時 - 2007-11-13 23:44:32

お礼

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

投稿日時 - 2007-11-16 02:01:36

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>多項式の割り算
だけでは、情報不足な気がします。
どういう場合に、こういう結果にしたいというような例が
あったほうがわかりやすいと思います。

投稿日時 - 2007-11-14 17:15:03

お礼

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

投稿日時 - 2007-11-16 01:59:36

あなたにオススメの質問