Hatalar, hatalar, sorular - sayfa 1554

 
-Aleks- :

Başka bir başlıkta cevap alamadığım için soruyu burada tekrar edeceğim belki burada yardımcı olurlar

"

Lütfen bana hatamın ne olduğunu söyle.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

OpenSellTime dizisindeki tarih yazdırılmaz ve ifadenin ikinci kısmı olan PriceOpenSell yazdırılmaz.

Ve %G ve %d gibi printf komutları hakkında hiçbir şey bulamıyorum.

"

Bununla birlikte, C ile ilgili herhangi bir ders kitabı da size uyacaktır.
 
Alexey Kozitsyn :
Bununla birlikte, C ile ilgili herhangi bir ders kitabı da size uyacaktır.

Cevabınız için teşekkürler, ancak bağlantı bulanık diyor... Hemen çözemiyorum - Foruma yazmaya başlamadan önce bu metni yardımda gördüm.

Doğru anladıysam, %d varsa sıfırları yok sayıyor ve %G sıfırları kesmeden bir değer mi gösteriyor? Görünüşe göre aptal değilim ama yardımı anlayamıyorum ve anlamadan hattımın neden düzgün çalışmadığını anlamak imkansız ...

 
-Aleks- :

Cevabınız için teşekkürler, ancak bağlantı bulanık diyor... Hemen çözemiyorum - Foruma yazmaya başlamadan önce bu metni yardımda gördüm.

Eğer doğru anladıysam, %d varsa sıfırları yok sayıyor ve %G sıfırları kesmeden bir değer mi gösteriyor? Görünüşe göre aptal değilim ama yardımı anlayamıyorum ve anlamadan hattımın neden düzgün çalışmadığını anlamak imkansız ...

Ben bu fonksiyonu işimde kullanmıyorum ama basit deneyleri kendiniz kurmanızın zor olmayacağını düşünüyorum.
 
-Aleks- :

Cevabınız için teşekkürler, ancak bağlantı bulanık diyor... Hemen çözemiyorum - Foruma yazmaya başlamadan önce bu metni yardımda gördüm.

Doğru anladıysam, %d varsa sıfırları yok sayıyor ve %G sıfırları kesmeden bir değer mi gösteriyor? Görünüşe göre aptal değilim ama yardımı anlayamıyorum ve anlamadan hattımın neden düzgün çalışmadığını anlamak imkansız ...

Burayı okuyun.
 
Alexey Kozitsyn :
Ben bu fonksiyonu işimde kullanmıyorum ama basit deneyleri kendiniz kurmanızın zor olmayacağını düşünüyorum.

Ama kullanıyorum - Gözetledim ve kullandım, ancak spesifikasyona uymadığı için tam olarak sözdizimini çözemiyorum

%[flags][width][.precision][{h | ben | ll | I32 | I64}]tür

yardım, tüm parametrelerin kullanılamayacağını göstermez. Ve en önemlisi, sözdiziminde nerede hatam olduğu belli değil, belki bana işaret etseler, o zaman konunun özünü daha iyi anlarım.

 
Artyom Trishkin :
Burayı okuyun.

Teşekkür ederim. Gerekli bilgileri aramak için kısaca okudum - ilk bölümün bir şablon olduğu ve yanlış derlediğim ortaya çıktı ... değil mi?

Mesela, değişkenlerin olacağı yerleri belirtmeniz gerekiyor, benim durumumda bu dizi indeksi, double tipinin zamanı ve sayısı ve ardından değişkenlerin kendisi. Makalenin mantığına göre şöyle görünmeli

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

Yoksa yine mi yanlış?

 
-Aleks- :

Teşekkür ederim. Gerekli bilgileri aramak için kısaca okudum - ilk bölümün bir şablon olduğu ve yanlış derlediğim ortaya çıktı ... değil mi?

Mesela, değişkenlerin olacağı yerleri belirtmeniz gerekiyor, benim durumumda bu dizi indeksi, double tipinin zamanı ve sayısı ve ardından değişkenlerin kendisi. Makalenin mantığına göre şöyle görünmeli

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

Yoksa yine mi yanlış?

Sonuçta, orada şablon hakkında çok net bir şekilde yazılmıştır - değişken ekleme yerleri şablondaki % işareti ile gösterilir. Şablonun tamamı tırnak işaretleri içine alınmıştır. Ayrıca, şablonun kendisinden sonra, şablonda belirtilen değişkenler virgülle listelenir. Şablonda yazıldığı sıraya göre soldan sağa sırayla.

Ve çeşitli değişken türleri ve bunların biçimlendirmesi için tüm özellikler vardır. " Dizeleri bir desenle biçimlendirme " başlığıyla başlayarak okumaya göz atmayın.

 
Artyom Trishkin :

Sonuçta, orada şablon hakkında çok net bir şekilde yazılmıştır - değişken ekleme yerleri şablondaki % işareti ile gösterilir. Şablonun tamamı tırnak işaretleri içine alınmıştır. Ayrıca, şablonun kendisinden sonra, şablonda belirtilen değişkenler virgülle listelenir. Şablonda yazıldığı sıraya göre soldan sağa sırayla.

Ve çeşitli değişken türleri ve bunların biçimlendirmesi için tüm özellikler vardır. " Dizeleri bir desenle biçimlendirme " başlığıyla başlayarak okumaya göz atmayın.

Ben de böyle yazdım - şablonu alıntılayın ve ardından değişkenleri sırayla, sorun ne?
 
-Aleks- :
Ben de böyle yazdım - şablonu alıntılayın ve ardından değişkenleri sırayla, sorun ne?

"OpenSellTime[% indeks burada] = burada % zaman, PriceOpenSell[% indeks] = % fiyat" - böyle bir model mi?

Evet ise, o zaman şöyle olmalıdır:

 "OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f"

Ardından, değerlerin kendileri virgülle ayrılmış olarak listelenmelidir:

 ,i,OpenSellTime[i],i,PriceOpenSell[i]

Toplam:

 printf ( "OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f" ,i,OpenSellTime[i],i,PriceOpenSell[i]);

...peki ... eğer bir şey kaçırmadıysam..

 

MQL4, DoubleToStr() ve DoubleToString() . DoubleToStr() içinde, 2. bağımsız değişken için "Varsayılan 8" ekleyin.

kod:

 #property strict
void OnStart ()
  {
   Print ( "1) DoubleToStr(0.123456789) = " , DoubleToStr ( 0.123456789 ));
   Print ( "2) DoubleToString(0.123456789) = " , DoubleToString ( 0.123456789 ));
  }

Günlüklerde, onlar için sonuç = 0.1234567 9 olacaktır, yani. işlev, yardımda yazılmayan değeri yuvarlar. Bunun hakkında eklemeye ya da en azından şuna benzer örnekler koymaya değer olduğunu düşünüyorum:

 string value1= DoubleToStr ( 1.28473418 , 5 );
// содержимое строки value1 - "1.28473"

string value2= DoubleToStr ( 1.28473418 , 3 );
// содержимое строки value2 - "1.285"

, yuvarlama görünür olacak.