アドバイス求む

Perl - livedoor Blog用ソースコード装飾プログラム

C言語のソースコードをブログに載せる時に色をつけてソースコードを読みやすくしているのですが、それをPerlにやらせるプログラムです。
続きを読む

C言語-覆面算を解くプログラム

以前私が書いた覆面算を計算するプログラムを掲載しました。本当はこのプログラを掲載したくなかったのですが、こういうコードをこのサイトを訪れた人に叩いてもらい、そこから失敗を学ぶ。それこそがブログをやり始めた目的ですので載せることにしました。(更新が滞っていたから以前書いたコードを載せたということは内緒ですw)

なにはともあれまずはコードを見て下さい。そして批評していただけたら幸いです。続きを読む

任意の二次方程式の実数解を求める

とりあえず中学生でも知っている二次方程式の解の公式を使ったプログラムを書いてみた。

C


まずは一番プログラム歴(約半年)の長いC言語から。



// 任意の二次方程式の実数解を求めるプログラム
#include <stdio.h> #include <math.h> int main(void) { double a, b, c; double x1, x2; puts("ax^2 + bx + c = 0 /a,b,cを実数で入力して下さい。"); printf("a = "); scanf("%lf", &a); printf("b = "); scanf("%lf", &b); printf("c = "); scanf("%lf", &c); if (!a) { if (!b) { if (!c) printf("解は不定。¥n"); else printf("解なし。¥n"); } else printf("x1 = %.2f¥n", -c / b); // 0.0*(-1) が-0.0になる。 } else { double d = b*b - 4*a*c; if (d < 0) printf("実数解は存在しない。¥n"); else { x1 = (-b + sqrt(d)) / 2*a; x2 = (-b - sqrt(d)) / 2*a; printf("x1 = %.2f¥n", x1); if (d > 0) printf("x2 = %.2f¥n", x2); } } return (0); }

a = 0, b = 5, c = 0のとき x1 = -0.00 と出力されてしまう。これではみっともない。どうやったらこの問題を解決できるだろう。問題というほどの問題ではないけど、見た目にはこだわりたい。

もしこの解決方法を知っていたり、このコードの重大な欠点を見つけた人は
Please comment on my code.

Perl


お次はPerlで書いてみた。プログラム歴はだいたい2,3週間。まだまだ勉強中です。

#!perl
use strict;
use warnings;

my($a, $b, $c, $d, $x1, $x2);

print "ax^2 + bx + c = 0のa, b, cを入力して下さい。¥n";
print "a = ";  chomp($a = <STDIN>);
print "b = ";  chomp($b = <STDIN>);
print "c = ";  chomp($c = <STDIN>);

if ($a == 0) {
  if ($b == 0) {
    if ($c == 0) {
      print "解は不定。¥n";
    } else {
      print "解なし。¥n";
    }
  } else {
    my $k = -$c / $b;
    print "x1 = $k¥n";
  }
} else {
  $d = $b**2 - 4*$a*$c;
	
  if ($d < 0) {
    print "実数解は存在しない。¥n";
  } else {
    $x1 = (-$b + sqrt $d) / 2*$a;
    $x2 = (-$b - sqrt $d) / 2*$a;
		
    print "x1 = $x1¥n";
    if ($d > 0) {
      print "x2 = $x2¥n";
    }
  }
}

JavaScript


最後はJavaScript!(プログラム歴:計20日ほど)しばらくはこれら3言語でプログラムを書いていくつもりです。

function kai (a, b, c) {
  var x1, x2;
	
  if (a == 0) {
    if (b == 0) {
      if (c == 0)
        return("解は不定。");
      else
        return("解なし。");
    } else {
      x1 = -c / b;
      return("x1 =¥n"+ x1);
    }
  } else {
    var d = Math.pow(b, 2) - 4*a*c;
		
    if (d < 0)
      return("実数解は存在しない。");
    else {
      x1 = (-b + Math.sqrt(d)) / 2*a;
      x2 = (-b - Math.sqrt(d)) / 2*a;
			
      if (d == 0)
        return("x1 =¥n"+ x1);
      else
        return("x1 = "+ x1 + "¥nx2 = "+ x2);
    }
  }
}

これらのコードについて何かアドバイスや批評があれば
Please comment on my code.

プロフィール

add20

ブクログ
RSSを購読
記事検索
最新コメント
スポンサードリンク
QRコード
QRコード
  • ライブドアブログ