Standart Polinom kökünü bulan program... (C)

Kurtbeyi

Misafir Editör
Katılım
5 Şub 2022
Mesajlar
1,980
Tepkime puanı
0
Puanları
36
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
Kod:
#include<stdio.h>
#include<math.h>
#define BOYUT 16
float hesapla(float katsayi[],float x);
float turev(float katsayi[],float x);
float fmutlak(float sayi);      
int main()
{
char yanit='e';
float katsayi[BOYUT]={0},a,x1,x2;
int k,derece,i,kontrol,j;
printf("ax**n+....= biçiminde");
printf("\nMax. 15. dereceden bir polinom giriniz\n");

/*okutma sorunu çözülmedi!*/
for(i=0;;i++)
  {  
  k=scanf("%fx**%d",&a,&derece);
  if((k==0)||(i>15))break;
  katsayi[derece]+=a;  
  }

/*polinomun yanyana yaz&yacute;lmas&yacute;:*/
printf("Girilen polinom:\n");
for(i=BOYUT-1;i>=0;i--)
 {
  if(katsayi[i])          
  {
  printf("%fx**%d",katsayi[i],i);
  for(j=i-1;j>=0;j--)/*bir sonraki terimi bulmak için*/
      if(katsayi[j])break;
  if((katsayi[j]>0)&&(j!=-1))printf("+");  
  }
 }        
while(yanit=='e')
{ 
 printf("\nHangi nokta etraf&yacute;nda çözüm yap&yacute;ls&yacute;n?\n");
 getchar();
 scanf("%f",&x1);
 kontrol=1;
   for(i=0;;i++)
   {       
     x2=x1-(hesapla(katsayi,x1)/turev(katsayi,x1));     
     if(fmutlak(x2-x1)<=0.01)break;
     x1=x2; 
     if(i==1000)  
     {               
        printf("Bu nokta etraf&yacute;nda yak&yacute;nsama tamamlanmad&yacute;!\n");
        kontrol=0;
       break;
      }  
   }
  if(kontrol==1) printf("kök=%f",x2);
  printf("\nBa&thorn;ka bir nokta etraf&yacute;nda çözüm aramak ister misiniz?\n");
  getchar();
  scanf("%c",&yanit);
}        
return 0;
}
/*fonksiyonlar:*/
float hesapla(float katsayi[],float x)
{
int i;
float toplam=0;
for(i=0;i<BOYUT;i++)
  toplam+=katsayi[i]*pow(x,i);
return toplam;
}
float turev(float katsayi[],float x)
{
float turev=0;
int i;
for(i=0;i<BOYUT;i++)
  turev+=i*katsayi[i]*pow(x,i-1);
return turev;  
}
float fmutlak(float sayi)
{
if(sayi<0)return sayi*-1;
else return sayi;
}
 
metal işleme
Üst