
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ランキング
-
cshの文字列操作(0埋め)
-
C言語のソースをC++言語に変換...
-
一番大きい奇数を表示する
-
C言語での数字の花形表示
-
switch分のケースを範囲数?に...
-
コンパイルエラーについて
-
コマンドラインに出力した文字...
-
C言語です このプログラミング...
-
strcmp
-
現在時刻の表示について
-
C言語のプログラミングについて...
-
文字と数字の判定について
-
%P と %X の違い
-
srand(time(NULL))の使い方
-
int型 00 を表示するのに0とな...
-
値を変数に代入してprintfで表...
-
文字を動かしたい
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
20'(角度)の計算がわかりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
コマンドプロンプトがすぐ消える
-
C言語の勉強しています。すみま...
-
テキストカーソル位置の取得
-
【C言語教えてください】sin波...
-
コマンドラインに出力した文字...
-
三角形の判別
-
(C言語)めちゃくちゃな値にな...
-
cshの文字列操作(0埋め)
-
scanfに文字が入力されたときに...
-
入力したお金の金額からお札の...
-
unsigned int型について
-
8人分のテストの点数を入力し、...
-
プログラミングについて質問で...
-
LU分解法のピボット選択機能実...
-
勝率をプログラムに
-
CTRL+Dでループを抜けるには
-
C言語
おすすめ情報