Yine mi ![]() 11 0.490000 0.490000 Yani 19 değil. Yine yanlış bir printf denemesi. printf("%d\n",i); //olursa 19 printf("%f\n",(float)i); // olursa 19.000000 printf("%f\n",i); // olursa 0.490000 -> Direk böyle kullanırsan diğerlerini print etmezsen başka bi değer çıkacaktır. Koddaki ilk iki printf silinir ise printf("%f\n",i); // 2.168831 In function 'int main()': Line 10: warning: converting to 'int' from 'float' Line 14: warning: converting to 'int' from 'float' |
beyler burda ++ i ve j nin sonundalar
Burda da önündeler. Şimdi ++ önce olunca sayıları artırıp öyle işleme girmesi gerekmiyor mu? Ben ikisini de yazdırdım ikisi de aynı şeyi yazıyor |
For için farketmez. Bu assignment işlemleri sırasında önem taşır. Birde performans farkını unutmamak lazım tabi. ++i daha performanslıdır diyebiliriz doğru kullanırsan. #include <stdio.h>
|
Hoca bugün sınavda sordu da , ilk olarak bilinemez yazdım , bilinemezi nasıl gösteriyim diye sorunca orada öyle bir şey yok dedi bu sefer de 19.000000 yazdım , o da olmadı anlaşılan. 0.490000 yazmak hiç aklıma gelmezdi, nedenini de çözebilmiş değilim. |
Çok açıklayıcı bir örnek teşekkürler ![]() |
Merak etme senin cevabın doğru görünüyor. Yani hocanın istediği cevap 19.000000 olarak görünüyor. Ama o bir kodun içine koyulur compile edilirse daha önceden gösterdeiğimiz gibi abuk subuk şeyler çıkıcak. Hocan bu konudaki hatasının farkında değil. Böyle şeyler çıktığını farketse sormazdı gibime geliyor. Şimdi int i; float b=8.1,c=0.7; i=b/c; printf("%d\n",i); c=c*c; printf("%f\n",b); // Burada c yerine b bastırıyoruz. i=i+b; printf("%f\n",i); //Şimdi sonuç 8.099998 çıktı compile sonrası. Bunu ezberlemenizi bekliyor olduğunu düşünmüyorum. Sadece explicit casting kullanması gerektiğini bilmiyor veya bufferda float sonrası integer değeri basarsanız bir önceki floatun buffer değeri ekrana basılır gibi bir kural var benim haberim yok. (Kod çıktısı böyle bir sonuç veriyorda :) ) Benim düşüncem, o kodun printf("%f\n",(float)i); //şeklinde olması lazım veya printf("%d\n",i); Ayrıca, iyi bunu sormamış :) Gerçi ödev gibi sormuştu. int i = 2.1f/0.3f; printf("%d\n",i); //6 i = 2.1/0.3; printf("%d\n",i); //7 float a=2.1,b=0.3; i=a/b; printf("%d\n",i); //6 Bu farkdan da haberi yok. |
Teşekkürler hocam , bakalım ne diyecek merak ediyorum. ![]() |
Rica ederim ![]() |
Ortama biraz heyecan katıp, biraz da biz soralım mı? Belki arkadaşlar da merak edip çözme gayreti içerisine düşerler ![]() Çözüm verilmediği takdirde, bir gün sonra ben veririm. Daha çok örnek olmuş olur arayanlar için. Soru : Kesir sadeleştirme. Kullanıcının gireceği x/y değerini eğer sadeleşebiliyorsa sadeleştirilmiş haliyle ekrana yazan, sadeleşmiyorsa "Girdiğiniz oran en sade halidir." yazan program yazınız. Ek: x,y tamsayı olsun. |
Beyler burda nerde yanlış var? #include<stdio.h> |
printf("x üzeri y = %d",pow(x.y)); x.y değil x,y olacak. |
Yardımcı olabilirim. Siz bir yazmaya başlayın, takıldığınız noktada yardım ederiz. |
Matematik temelinizi geliştirmeniz lazım, esasında matematik temeline dayanan bir soru da değil. Şöyle yardımcı olayım. y=x^2-2x demiş 0<=x<2 için bunu işleme şöyle dökebiliriz if(x>=0 && x<2) y=x*x-2*x; Matematik sorusunu okumaktan farkı yok. Eğer x 0'a eşit büyük veya 2'den küçükse ---> y=x^2-2x Bu şekilde diğer kısımları da yapmaya çalışın. |
Arkadaşlar bir dataGrid'in 0'ıncı stününun sürekli olarak son satırını nasıl bir label a okutabilirim? aslında projemde bulunan "silme" ve "düzenleme" seçenekleri accsess Db'imde birincil anahtar olarak kullandığım kayıt numarası sutununu sabit olarak alıyor. yapmak istediğim "ekle" seçeneğimden kayıt numarasını kaldırmak. her kayıda ootomatık olarak kendısının numara vermesini istiyorum. girişi biraz daha hızlandıracagı ve kolaylastıracagını düşünüyorum. fakat işin içinden çıkmadım. 1) kayıt yapıldıgı zaman son numrayı okuyup + 1 eklemesı gerekıyor 2) kullanıcı aradan bir kayıt sildiği zaman bunu program nasıl farkedip silinen numarayı dolduracak? örneğin 1 2 3 ile devam eden kayıt numaralarından 2 numara silindi. program silinen 2'inci kayıdın yerine yine bir kayıt oluşturmalı. işte benimde kitlendiğim nokta bu :) dileyene projemin bir örneğini verebilirim kendisine örnek olması amacı ile. Projemin mantığı bir kayıt defteri oluşturmak ilginize şimdiden teşekkür ederim < Resime gitmek için tıklayın > |
Teşekkürler hoca notlarında hepsine nokta koymuş. denedim şimdi de hep 0 basıyor. Bi de tan(45) 1 pi ile yazmak gerekiyorsa nasıl yazıcaz onu? |
http://www.cplusplus.com/reference/clibrary/cmath/pow/ double pow ( double base, double exponent ); long double pow ( long double base, long double exponent ); float pow ( float base, float exponent ); double pow ( double base, int exponent ); long double pow ( long double base, int exponent ); Yani fonksiyon int deger donmuyor. Ama iceri int gonderirsen pek sorun cikarmaz. printf("x üzeri y = %d",(int) pow(x,y)); seklinde yazarsan duzgun basacaktir. Tan icin ornek asagida. http://www.cplusplus.com/reference/clibrary/cmath/tan/ Ornekte %lf var belki sende cailsmaz %f deneyebilirsin. |
Veri yapıları sınavına girdim boş kağıt verdim. Beyler beni bu dersten geçirmeniz lazım ![]() |
Rica ederim. Ekleme yapiim pow ile int kullanimi duruma gore degisebiliyor. C compiler izin verirken C++ compiler izin vermiyebiliyor. Alttaki kod c ile sorun cikartmazken c++ ile sorun verdi.
alttaki kod ikisinden de gecti
|
int i;
float b=8.1,c=0.7;
i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",c);
i=i+b;
printf("%f\n",i);
Bu mesaja 2 cevap geldi. Cevapları Gizle