- 締切済み
プログラミングの問題なのですが
学校の課題でプログラムを作らなければならないのですが、いまいちよくわからないので教えてください>< 1、インチ単位の数を引数として何cmかを出力する関数を作成しなさい。 2、f(x)=ax^2+bx+cのa,b,cを順に引数として、f(x)=0の実数解の個数を出力する関数を作成しなさい。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- honor
- ベストアンサー率35% (25/71)
#include <iostream> #include <limits> using namespace std; void print_cm_to_inch(double inch){ cout << inch << "inch=" << inch*2.54 << "cm" << endl; } void print_num_of_real_solution(double a, double b, double c){ double d=b*b-4*a*c; cout << "f(x) = " << a << "x^2 " << showpos << b << "x " << c << endl; cout << "The number of solutions is "; cout << noshowpos << (a?d>0?2:d?0:1:b?1:c?0:numeric_limits<double>::infinity()) << endl; } int main(){ double a, b, c, inch; cout << "Input inch : "; cin >> inch; print_cm_to_inch(inch); cout << "\nInput a, b, c :\n"; cin >> a >> b >> c; print_num_of_real_solution(a, b, c); return 0; } c++です。
- 麻野 なぎ(@asano_nagi)
- ベストアンサー率35% (42/120)
ひとつ訂正 > yPol = a * xPol * xPol + b + xPol + c; は、 yPol = a * xPol * xPol + b * xPol + c; が正解ですな。
- 麻野 なぎ(@asano_nagi)
- ベストアンサー率35% (42/120)
2) は、こんなんかなぁ? コンパイルは通った。 // 2) #include <stdio.h> #define isKoutoushiki -1 #define isError -2 int CountRealNum2nd(double a, double b, double c) { double xPol; double yPol; if (a == 0 && b == 0 && c != 0) return 0; if (a == 0 && b == 0 && c == 0) return isKoutoushiki; // この場合は恒等式 if (a == 0 && b != 0) return 1; xPol = - b / 2 / a; yPol = a * xPol * xPol + b + xPol + c; if (yPol == 0) return 1; if (a < 0) return (yPol > 0) ? 2 : 0; if (a > 0) return (yPol < 0) ? 2 : 0; return isError; // ここに来たらエラー } void CountRealNum(double a, double b, double c) { int result; switch(result = CountRealNum2nd(a, b, c)) { case isKoutoushiki: printf("恒等式です:解は無数"); break; case isError: printf("エラーが発生しました"); break; default : printf("解の個数は%d個です", result); break; } }
1. void printCM( double dInch ) { printf( "%lfinch = %lfcm\n", dInch, dInch * 2.54 ); } 2. void CountRealNum( int iA, int iB, int iC ) { int iCnt = 0; if( iA == 0 ) { iCnt = 1; } else { double d = pow( ( double )iB, 2.0 ) - ( 4.0 * ( double )iA * ( double )iC ); if( d > 0 ) iCnt = 2; else if( d == 0 ) iCnt = 1; } printf( "f(x) = %dx^2+%dx+%d\n", iA, iB, iC ); printf( "Count : %d\n", iCnt ); } 未検証。 多分純粋なCコンパイラならコンパイルエラーが出るけど原因は自分で調べてね。 includeもないと動かない部分があるから自分で調べてね。
- maiko0318
- ベストアンサー率21% (1483/6969)
1.換算レート2.54を掛けるだけ。(1インチ=2.54センチ) 2.判別式を使います。 http://manapedia.jp/text/index?text_id=2523 aが0でない時というのをどこかに工夫して入れてください。 aが0だったら2次方程式でなくなりますので 入力をエラーにするか 再入力にするか f(x)=bx+cと見て1個と出すか
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
>1、インチ単位の数を引数として何cmかを出力する関数を作成しなさい。 インチが何かわからないのか 引数がわからないのか cmがわからないのか 出力とは何かわからないのか 関数がわからないのか どれ? それとも、宿題するの嫌だから誰かに作って欲しいということ? >2、f(x)=ax^2+bx+cのa,b,cを順に引数として、f(x)=0の実数解の個数を出力する関数を作成しなさい。 1 と同様。
- wormhole
- ベストアンサー率28% (1626/5665)
数学としてなら解けますか?
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
なにがわからんのか示してくれんと答えようがないんだけども。
お礼
コンパイルして通る問題のプログラムを作ってくださいということです。 御託はいらないので^^;