• 締切済み

プログラミングの問題なのですが

学校の課題でプログラムを作らなければならないのですが、いまいちよくわからないので教えてください>< 1、インチ単位の数を引数として何cmかを出力する関数を作成しなさい。 2、f(x)=ax^2+bx+cのa,b,cを順に引数として、f(x)=0の実数解の個数を出力する関数を作成しなさい。 よろしくお願いします。

みんなの回答

  • honor
  • ベストアンサー率35% (25/71)
回答No.8

#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++です。

回答No.7

ひとつ訂正 > yPol = a * xPol * xPol + b + xPol + c; は、 yPol = a * xPol * xPol + b * xPol + c; が正解ですな。

回答No.6

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; } }

noname#240995
noname#240995
回答No.5

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)
回答No.4

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個と出すか

回答No.3

>1、インチ単位の数を引数として何cmかを出力する関数を作成しなさい。 インチが何かわからないのか 引数がわからないのか cmがわからないのか 出力とは何かわからないのか 関数がわからないのか どれ? それとも、宿題するの嫌だから誰かに作って欲しいということ? >2、f(x)=ax^2+bx+cのa,b,cを順に引数として、f(x)=0の実数解の個数を出力する関数を作成しなさい。   1 と同様。

aa4545sd
質問者

お礼

コンパイルして通る問題のプログラムを作ってくださいということです。 御託はいらないので^^;

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

数学としてなら解けますか?

回答No.1

なにがわからんのか示してくれんと答えようがないんだけども。

関連するQ&A