キーボードからある整数の値を入力して、2次方程式を解くというプログラムを作ったのですが、解の方程式のところでどこかが足りないらしいのですが教えてください。
#include<math.h>
#include<stdio.h>
int quadraticEquation(double a, double b, double c){
int x,y,l,k,j;
double z;
x=b*b;
y=4*a*c;
z=x-y;
if(z>=0){
l=sqrt((double)z);
}
else
printf("ERROR!!\n");
k=(-b)+l;
j=k/2*a;
return j;
}
int main(void){
int n1,n2,n3;
printf("input three integer!\n");
printf("intger1:"); scanf("%d",&n1);
printf("intger2:"); scanf("%d",&n2);
printf("intger3:"); scanf("%d",&n3);
printf("kotaeha %d %d desu\n",quadraticEquation(n1, n2, n3),quadraticEquation(n1, n2, n3));
return 0;
}
が自分が作ったプログラムです。
後、解が2つある場合の出力方法がこれであっているかどうかも教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
a,b,c,zがdoubleであることの意味が不明(mainから)
x,y,l,k,jがintである意味が不明
sqrtが返すのはdouble
zはdouble宣言なのでキャストの意味なし
elseでreturnしないと後が怖い
キ・キケン
k/2 の前にkが0でないか確認
もしくは k*0.5
j=(sqrt(b*b-4*a*c)-b)*0.5*a; ?
intで処理しようとするのは無謀では?
kが奇数の場合の仕様は?
quadraticEquationは1つの整数しか返してないのに
あってるわけない・・・
何を求めたいか・どこまで習っているのかわからないが・・・
int quadraticEquation(int n1, int n2, int n3, double *kai1, double *kai2){
if(計算できない場合)return -1;
*kai1=(解からない)
*kai2=(解からない)
return 0;
}
int main(void){
(略)
if ( quadraticEquation(n1,n2,n3,&kai1,&kai2) == 0 )
printf(略)
else
printf("ERROR!!\n");
return 0;
}
回答ありがとうございます。指摘されたところを中心にもう一度考えてみます。私が求めたいのは2次方程式を解くというプログラムを作りたかったのですが、関数の引数は指定されているので、自分の乗せたプログラムの関数の場合のヒントを頂けたら嬉しいです。
No.2
- 回答日時:
2次方程式とは"ax^2+bx+c=0"のことでしょうか?
解の求め方など大昔に忘れてしまったので
それについては触れたくありません。
2次方程式が"ax^2+bx+c=0"とは限らないので
"a+b+c"と"a-b-c"が求めたいとかでないと
解からないです。自分は。
引数が指定されているならば、mainで入力する
3つの数値は引数と同じdouble型にするべきかと。
戻り値もintに指定されているのでしょうか?
それならば出力をmainで行うのは無理です。
戻り値が指定されていないなら求めた2つの数値を
返す方法はありますが、課題である以上
習っていないであろうヒントは出しづらいです。
出力はquadraticEquationで行うほうが無難でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
float型とdouble型の変数の違い...
-
C言語で関数を使う課題でわかり...
-
doubleは常に%lfとするべきなのか
-
c言語で、繰り返し文の中で、0....
-
C言語で内積、、、わかりません。
-
C言語の複素数についてです。
-
「割り算」 と 「分数の掛け算」
-
指数の表示
-
-1.#IND00と出てしまうのですが...
-
C言語でdouble型の小数点の引き...
-
doubleの変数にintとintの割り...
-
型指定子についての教えてくだ...
-
C言語 関数プロトタイプ宣言の...
-
平均を求めるプログラムを作っ...
-
long doubleの表示方法
-
再帰呼出しによる自然対数を求...
-
漸化式のプログラム
-
-1.#IND00 をデバッグしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
至急です! マクロ定義で #defi...
-
c言語で、繰り返し文の中で、0....
-
関数におけるif文とreturn文に...
-
C言語 関数プロトタイプ宣言の...
-
C言語初心者 構造体 課題について
-
C言語の型による処理速度の違い
-
Cで3乗根を求める方法
-
C言語で-23乗を取り扱うには
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
c言語のコンパイルエラー canno...
-
C言語で直角三角形の斜辺を求め...
-
C言語のプログラムで#include<m...
-
int とdoubleの比較
-
C++で外積
おすすめ情報