emre509
09/03/2008, 13:07
Arkadaşlar sizi meşgul ettiğim özür dilerim yine, hocamın verdiği bir ödev için çalışıyorum.İkinci dereceden tek bilinmeyenli bir denklemin köklerini döngü ile bulan C dilinde yazılmış bir programcık istedi bizden ben ise şöyle bir şeyler yaptım:
#include<stdio.h>
#include<math.h>//bunu bulunsun diye koydum, aslında gerek yok.
main()
{
float y,a,b,c,xmin,xmax,x,delta,step;
printf("Welcome to my Iterative Root Finding Program...\n");
printf("This program iteratively finds real roots of the polynomial\na*x^2 + b*x + c within a specified range\nEnter a: ");
scanf(" %f",&a);
printf("Enter b: ");
scanf(" %f",&b);
printf("Enter c: ");
scanf(" %f",&c);
printf("Enter x_min: ");
scanf(" %f",&xmin);
printf("Enter x_max: ");
scanf(" %f",&xmax);
printf("Enter stepsize: ");
scanf(" %f",&step);
delta=(b*b)-(4*a*c);
if(delta==0)
{
x=xmin;
while(x<xmax)
{
x=x+step;
y=(a*x*x)+(b*x)+c;
if(y==0)
{
printf("Here's the result\nRoot1: %f y:%f\n",x,y);
}}}
printf("Sorry, there is no root between your x_min and x_max values\n");
printf("Goodbye\n");
return 0;
}
1)Şimdi programa tüm değerleri biz giriyoruz, stepsize olarak 1, 2 -3 vb gibi ondalıksız şeyler yazınca çalışıyor ancak herhangi bir ondalık sayı yazınca(mesela 0.003 gibi) çalışmıyor, "Sorry, there is no root between your x_min and x_max values" mesajına atlıyor, hatta bazen öyle donup kalıyor.
2)Bir de delta>0 olunca yani iki kök bulması gerekince iki farklı döngü yaratmam gerekli mi yoksa program ilk kökü bulunca denemeyi bırakıyor.
Şimdiden teşekkürler
Not: Yanlış anlamayın, ödev çözümü istemiyorum sadece nerede yanlış yapıyorum onu bulamadım.
#include<stdio.h>
#include<math.h>//bunu bulunsun diye koydum, aslında gerek yok.
main()
{
float y,a,b,c,xmin,xmax,x,delta,step;
printf("Welcome to my Iterative Root Finding Program...\n");
printf("This program iteratively finds real roots of the polynomial\na*x^2 + b*x + c within a specified range\nEnter a: ");
scanf(" %f",&a);
printf("Enter b: ");
scanf(" %f",&b);
printf("Enter c: ");
scanf(" %f",&c);
printf("Enter x_min: ");
scanf(" %f",&xmin);
printf("Enter x_max: ");
scanf(" %f",&xmax);
printf("Enter stepsize: ");
scanf(" %f",&step);
delta=(b*b)-(4*a*c);
if(delta==0)
{
x=xmin;
while(x<xmax)
{
x=x+step;
y=(a*x*x)+(b*x)+c;
if(y==0)
{
printf("Here's the result\nRoot1: %f y:%f\n",x,y);
}}}
printf("Sorry, there is no root between your x_min and x_max values\n");
printf("Goodbye\n");
return 0;
}
1)Şimdi programa tüm değerleri biz giriyoruz, stepsize olarak 1, 2 -3 vb gibi ondalıksız şeyler yazınca çalışıyor ancak herhangi bir ondalık sayı yazınca(mesela 0.003 gibi) çalışmıyor, "Sorry, there is no root between your x_min and x_max values" mesajına atlıyor, hatta bazen öyle donup kalıyor.
2)Bir de delta>0 olunca yani iki kök bulması gerekince iki farklı döngü yaratmam gerekli mi yoksa program ilk kökü bulunca denemeyi bırakıyor.
Şimdiden teşekkürler
Not: Yanlış anlamayın, ödev çözümü istemiyorum sadece nerede yanlış yapıyorum onu bulamadım.