fkoui の回答履歴
- 平方根の計算について教えてください。
平方根の計算について教えてください。 平方根の計算を行うときに 1=√1=√((-1)^2)=-1 となってしまい 1=-1 という矛盾した計算結果になってしまいます。 なぜこのようになるのか教えてください。 よろしくお願いします。
- ベストアンサー
- 数学・算数
- nottisan012
- 回答数3
- C言語で連立一次方程式
C言語で連立一次方程式 /* 連立一次方程式 a*x + b*y = e c*x + d*y = f の解を求めるプログラムを作成したい。 a,b,c,d,e,f をキーボード入力させる ことで、 行列 [a b c d] の逆行列、及び、連立方程式の解( x= , y= )を求めたい。 なお、a b c d の値によっては、逆行列を求めることが 出来ません。その時は、 【解を求めることはできません】 と表示してプログラムを終了するようにして下さい。 (注) [a,b,c,d,e,f]を 2次元配列 ma[2][3]とする. [逆行列[a,b,c,d]と解x,y]を 2次元配列 mb[2][3]とする. ma[][] の値をmain関数内でキーボード入力する mb[][] の値は,mat_keisan関数内で計算 mb[][] の値をmain関数内で表示 関数 mat_keisan の戻り値として,「解」が求まる方程式か どうかを知らせる「int 型のフラグ(旗)」として用いるとよい. */ #include<stdio.h> int mat_keisan(int ma , int mb); int main(void) { int inverse; double ma[2][3]; double mb[2][3]={0}; printf("連立一次方程式の計算\n"); printf("a * x + b * y= e\n"); printf("c * x + d * y= f\n"); printf("Input a :"); scanf("%lf",&ma[1][1]); printf("Input b :"); scanf("%lf",&ma[1][2]); printf("Input c :"); scanf("%lf",&ma[1][3]); printf("Input d :"); scanf("%lf",&ma[2][1]); printf("Input e :"); scanf("%lf",&ma[2][2]); printf("Input f :"); scanf("%lf",&ma[2][3]); printf("%4.2f* x + %4.2f * y = %4.2f\n", ma[1][1],ma[1][2],ma[1][3]); printf("%4.2f* x + %4.2f * y = %4.2f\n", ma[2][1],ma[2][2],ma[2][3]); inverse=mat_keisan(ma,mb); if(inverse==1) printf("計算できません\n"); else{ printf("逆行列\n"); printf("%4.2f %4.2f\n", mb[1][1],mb[1][2]); printf("%4.2f %4.2f\n", mb[2][1],mb[2][2]); printf("解\n"); printf("x=%4.2f\n",mb[1][3]); printf("y=%4.2f\n",mb[3][3]); } return (0); } /* 配列の足し算 */ int mat_keisan(int ma ,int mb ) { int x,y,z;// 1/ma[1][1]*mb[2][2]-ma[1][2]*mb[2][2]; //逆行列と解を求めるプログラムを作成する。 //そしてその値をmb[][] に入力する。 return(#######); } 関数内が手も足もでません; 他のサイトを調べてみたのですが逆行列を求めるプログラムがよくわかりません; >int mat_keisan(int ma ,int mb ) は、あってないかもです; それとinverseの意味がわかりません; ヒントや、解説を よろしくお願いします;。
- C言語初心者のため if文の構造が理解できません
C言語初心者のため if文の構造が理解できません 実行結果に 5で割った結果を表示します。 値を入力してください:150 150 ÷ 5 = 30 5で割った結果を表示します。 値を入力してください:151 151 ÷ 5 = 30 余り 1 を表示したいのです。 割り切れる場合は入力した値を含んだ計算式と答のみを表示で、 割り切れない場合は入力した値を含んだ計算式と答+余り○○と表示したいのですが 自分なりに試行錯誤したのですが分かりません。 お願いいたします。
- ベストアンサー
- C・C++・C#
- dRaGoNbAlA
- 回答数5
- あなたのC言語コーディング規約
勤務先・学校・趣味でC言語を使用してプログラムをしている方の多くは組織内で決めているコーディング規約に沿ってプログラムをしていると思います。 しかし、全てに関して規約化されていることは少なく、ある程度プログラマの裁量に任せていることがあると思います。 そこで、質問です。 「あなたの中で決めているコーディング規約は何ですか?」 「また、その理由は何ですか?」 私が決めているコーディング規約を一例挙げると以下の通りです。 (基本は他人が見ても直ぐに理解できるように心がけてます。) ------ □変数名の前には必ず型を現す文字を書く 理由:観ただけで型が分かるから。 例 :int型は、iData char配列は、stData ポインタは、pData □関数の復帰値は、一旦必ず変数に代入する。 理由:代入しないとデバックがしにくい。 例 :iRetCode=func(); switch(iRetCode){ case文 } の、ように色んな値を試すときに不便。 □if文には、極力「!」(NOT)は使用しない。 理由:複数の論理和・積などが入った場合ややこしいので elseで代用する。(真の時の処理はわざと書かない) □if文の判定には必ず定数値を左辺に持ってくる。 理由:if(iData=0)とかの"=="を"="にしてしまうミスを防ぐため。 (コンパイラによっては、警告が出るものもありますが…) 例 :if(0=iData)など □while(1)は、基本的に使用しない。 理由:無限ループに陥らないようにするため。 ------
- C言語で、「自然数nを入力し、nの約数をすべて求めて出力後、その個数と
C言語で、「自然数nを入力し、nの約数をすべて求めて出力後、その個数と合計を出力をする。尚、nとして0(ゼロ)以下が入力されるまで、何度も繰り返す」という問題をやっています。 出力例は、(3を入力したとして) 「3の約数は 1 3 約数の個数は2個 約数の和は4」というものです。 そこで、コーディングをしたのですが、先生が開発したコンパイラで運用したところ、フリーズが起きて強制終了してしまいました。先生は、「そんなことはない。フリーズが起きるときはそのプログラムにバグがあるときだ」と言ってました。 そこでコーディングしたプログラムは以下の通りです。 #include <stdio.h> main() {int i,j,n,cnt,sum; printf("自然数=");scanf("%d",&n); while(n>=0){ printf("%dの約数は",n); for(i=1;i<=n;i++){ if(n/i>=0){ j=n/i; printf(" %d",j); sum=sum+j; cnt++; j=0;} } printf("\n"); printf("約数の個数は%d個",cnt); printf("約数の和は%d",sum); }} どこかに間違いがありますか? IF文の中でいちいちめんどくさいことをしていますが、気にしないでください。
- 任意軸ベクトル周りの3次元座標回転
任意軸ベクトル周りの3次元座標回転 任意軸周りの回転について 実はプログラムのバグがどうしてもわからず、相談させていただきます。 結果は期待とおりの結果になりません。 図々しいお願いですが、ぜひ間違いをご指摘願います。 3次元座標上に数個の点があり、それを線分で結びます。 ある点をPiとするとしたとき線分(Pi-1,Pi)と(Pi,Pi+1)のなす 角度を180度にしたいのです。そしてPiをデータの並びから 外します。つまりPiでの曲げをキャンセルというイメージです。 任意の軸に対する回転の座標を変換の公式を使用しています。 以下のurlにソースがあります。 http://1st.geocities.jp/kanna_sakura_hana/rotation/header.cpp http://1st.geocities.jp/kanna_sakura_hana/rotation/draw.cpp 実行したい変換のイメージは http://1st.geocities.jp/kanna_sakura_hana/rotation/sample.jpg に図示してあります。 FormCreateのイベント関数に座標変換部分のソースが書かれて います。 ぜひご教授願います。 なお、任意軸周りの回転行列は「ゲーム3D数学」を参考にしました。
- 締切済み
- C・C++・C#
- forest_walker
- 回答数1