#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{

int y= 1.0;
int x= pow ((145-(4*pow(y,2.0)))/3, 1/3.0) ;

printf("x=%d /n y=%d",x,y);

while(1);
return 0;
}


kodunu run ettiğimde x.i 3 çıkartıyor. ki "int" ile tanımladığım için beklenen bir şey zira değer 3 ile 4 arasında bir yerde olmalı.

lakin "int"leri double veya float yaptığımda hem x hem y değeri sapıtıyor ve ikisini de 10 haneli sayılar olarak yazdırıyor.

Problem nedir? Formülde hata olduğunu düşündüm ama y değerini de saçmalatmasının sebebi formül olamaz -ki int ile mantıklı sonuçlar veriyor.-

 

x ve y'yi float yaptığında printf'i değiştiriyor musun? printf içine %d değil, %f yazman gerekecek float için.

long live rock n roll

kodun doğrusu böyle...

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
float x=0;
float y=1;

x= pow ((145-(4*pow(y,2.0)))/3, 1/3.0);

printf("x=%f\ny=%f",x,y);

while(1);
return 0;
}

printf'de long live rock n roll'un dediği gibi %f yazman gerekiyor float ve double değerleri için.
ayrıca, new line komutunda ters slash kullanman gerekli ("\").

dogs
1

mobil görünümden çık