ページ 11

プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 04:00
by takeru
下記のプログラムをちゃんと動作し正しい値を出力するようにしたいのですがどうしてらいいのか分かりません。
どなたか教えてください。

コード:

 
#include<stdio.h>
#include <math.h>
void shoriA(double a,double b,double c) 
{
    double x,y,d,i;
    if(a==0 && b==0){
    	printf("不能\n");
    }
    if(a==0 && b!=0){
    	i=-c/b;
	printf("一次式:%f\n",i);
    }
    d=b*b-4*a*c;
    x=(-b)/(2*a);
    y=sqrt(abs(d))/(2*a);
    if(d>0){
    	printf("実数解:%f,%f\n",x+y,x-y);
    }
    if(d==0){
    	printf("重解:%f\n",x);
    }
    else{
    	printf("虚数解:%f,%f\n",x,y);
    }
}
int main(void)
{
	double a,b,c;
	while (1){ 
	printf("整数a:");  scanf("%d", &a);
	printf("整数b:");  scanf("%d", &b);
	printf("整数c:");  scanf("%d", &c);
	if(a==0 && b==0 && c==0){
		break;
	}
	shoriA(a,b,c);
	}
	return(0);
}
ちなみに2次方程式を解くプログラムです。

Re: プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 05:02
by h2so5
どのような出力を期待していて、そして
どのように上手くいかないのかをきちんと明記してください。

とりあえず、scanfのフォーマット指定子を復習してみるといいことがあるかもしれません。

Re: プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 10:39
by asd
既にh2so5さんの指摘もありますが、何を与えたときに、どういう結果が出るはずなのに、実際にはこんな結果になる
というのを明記してください。

あと、以下のスレッドにてどういうプログラムを完成させたのか報告した上で解決したのであれば解決マークをつけていただけないでしょうか。
同じような問題で困っている人の助けになりますので。

http://dixq.net/forum/viewtopic.php?f=3&t=9574

(追記)
完成したプログラムは次のページに記載されていたのを見落としていたので撤回します。
解決したのであれば解決のチェックをお願いします。

Re: プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 10:46
by asd
二重投稿となったもう一つの記事です。回答がついているので参考になれば。
http://dixq.net/forum/viewtopic.php?f=3&t=9609

Re: プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 12:04
by naohiro19
オフトピック
前のトピックはSoftyaさんにより閉鎖されました。

Re: プログラムを正しい値を出力するように・・・

Posted: 2011年11月22日(火) 20:28
by LAY
というか
doubleの場合でscanfだと書式は%lfが正解
printfなどの出力関数は%fが正解だけど。ただprintfでlfが使えるのはC99以降