
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
No.1ベストアンサー
- 回答日時:
すまん、質問者さんのソースコードから弄ってたら
どんどん,わけが判らなくなってごみっぽいプログラムになっていった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);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラーについて
-
scanfに文字が入力されたときに...
-
入力したお金の金額からお札の...
-
台形の面積を求めるプログラム
-
C言語についてです学籍番号、名...
-
なぜgccはstdio.hをインクルー...
-
printfでSegmentation fault
-
switch文とscanfについて
-
cshの文字列操作(0埋め)
-
printf で二進表示を行いたい。
-
printf( " %2d", p * q );
-
Cプログラミングのアルゴリズム...
-
現在時刻の表示について
-
空白表示
-
c言語で2000年以降カレンダーを...
-
c言語 プログラム ピラミッド
-
C言語に関する質問です
-
次のプログラムは、n個の中から...
-
C言語の勉強しています。すみま...
-
(C言語)西暦年月日を入力して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語でAからZまでを表示する...
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
コンパイルエラーについて
-
コマンドプロンプトがすぐ消える
-
勝率をプログラムに
-
テキストカーソル位置の取得
-
三角形の判別
-
【C言語教えてください】sin波...
-
4の倍数を論理演算で表す。。
-
C言語で、「自然数nを入力し、n...
-
入力したお金の金額からお札の...
-
cshの文字列操作(0埋め)
-
switch分のケースを範囲数?に...
-
scanfに文字が入力されたときに...
-
プログラミングについての質問です
-
unsigned int型について
-
ダブルポインタで2次元配列を作成
-
円の面積を求めるプログラミン...
おすすめ情報