今更席替えとか微妙すぎる

なんだか、「席替えしろ」とクラスのDQNたちがうるさかったせいで席替えが実施されました。
で、周りにいた親しい友人とは1人とは近くになりましたが、残りは見事に遠い場所に。
それはともかく、後ろにそのDQNたちがいるんですよねぇ。
くじ引きで決めたのに、何だか勝手に席を移動したみたいです。
授業中もずっとうるさかったので非常に迷惑しています。
授業中に携帯電話を弄っているとか、ゲームやっているのは別に人に迷惑かけていないのでいいのですが、ずっとうるさいのは授業聞きたい人からすれば迷惑極まりないので自粛していただきたいな、と思っています。
まぁ、それを素直に聞き入れて静かにしてくれれば、ここでDQNとか書かなくても良いんですけどね。
どうでもいい愚痴でした。

2次方程式の解を求めるプログラム

内容自体は昨日やったことですけど、記事書いたのがネット時間*1外だったので、今日の記事にします。


なんだか、制御科の学生がわずか2時間のC++の講義の後に、そんなプログラムを作れ、という課題が出たらしいです。
2時間の講義でできることなんて、そんなに無いと思うんですけどねぇ。変数使って四則演算ぐらい?
解説もかなりテキトー*2だったらしいです。
で、こんな地味に難しい課題をプログラミング経験殆ど無しの人に出したと。なんという鬼畜。
簡単と思いきや意外と難しいと思うんですよね。平方根出すには関数必要だし。
そもそもC言語における関数がなんなのかイマイチ理解していない状態(ソース:友人)でそんなの無理だろ、と。


というわけで、暇なので(暇では無いが)そのプログラムを作ってみることにしました。
で、40分ほどで完成・・・したのかな?
折角なので人間様が手計算でやった時みたいにルートの記号使ってやりたかったのですが、素因数分解なんて高度なことC言語の基礎勉強中な私にはできないので断念しました。
とりあえず、2つの実数解(判別式D>0)、重解(D=0)のときの解を出すのは非常に簡単でした。
まぁ、単純に解の公式に当てはめてやればいいわけですからね。
問題は2つの虚数解(D<0)のとき。
最初は1つの変数の中に全部入れたかった*3んですが、やり方がわかならいので諦めました。
仕方がないので実数部分と虚数部分を分けて出力して、printfの間に+やらiやら混ぜて無理矢理再現しました。
ちょっと無理矢理過ぎるのでもうちょっと何とかしたい。
折角なので微妙すぎるソースも追記欄で晒しておきますね。
物凄い勢いで「こうしろ!」ってのがあったら是非コメント欄にお願いします。

*1:寮のネットは23:00までしか使えない。調べ物したい時にすぐに調べられないって不便。

*2:適当ってちょうど良いとかそういう意味なイメージ。テキトーなど投げやりとか、日常会話で使うような"てきとう"のイメージ。どうでもいいけど。

*3:char型の変数を用意して実数部分、+or-、虚数部分、iを順番に+=で入れようとしましたが、案の定エラーが帰ってきました。どうやればできるんだろう。

続きを読む