Hatalar, hatalar, sorular - sayfa 3150

 
Nikolai Semko # :

yine de, üçlü operatör daha özlü görünüyor (IMHO)

 int limit = prev_calculated== 0 ? 0 : prev_calculated- 1 ;

daha da özlü bir yol:

 int limit = prev_calculated- bool (prev_calculated);

:))

 
Nikolai Semko # :

Bu yapıyla, arabellek dizinine Rate_total numarasıyla eriştiğinizi zaten yazdım ( prev_calculated == 0 olduğunda).
Ve bu bir taşmadır, çünkü Rate_total , son elemanı Rate_total -1 olan tamponun boyutudur.

Evet, taşmanın neden şimdi olduğunu anlıyorum!

Bu tasarım neden daha önce çalışıyordu da şimdi çalışmıyor?

 int limit = rates_total-prev_calculated;

for ( int i=limit; i>= 0 ; i--)

Tampon tam olarak rate_total'a tahsis edildiğinden
oranlar_toplam +1 değil

Artyom'un ne diyeceğini bekliyorum, konunun özünü anlıyor.
 
Roman # :

Evet, taşmanın neden şimdi olduğunu anlıyorum!

Bu tasarım neden daha önce çalışıyordu da şimdi çalışmıyor?

Tampon tam olarak rate_total'a tahsis edildiğinden
oranlar_toplam +1 değil

mucizeler gerçekleşmez.
Önceden, işe yaradıysa, o zaman farklı bir koddu

 
Roman # :

Böyle bir tasarımla


gösterge arabelleği sınırların dışında.

Lütfen i>=0 döngülü keneler için bir örnek gösterin
belki bir şey unuttum ve doğru yapmıyorum.

Emin olmak için indeksi maksimum kenarda kabaca 2 veya 3 azaltıyorum.)

 
Nikolai Semko # :

mucizeler gerçekleşmez.
Önceden, işe yaradıysa, o zaman farklı bir koddu

Daha önce, limitin doğru hesaplanması

 int limit = rates_total- 1 -prev_calculated;

ve i>=0 döngüsüne girdi

 for ( int i=limit; i>= 0 ; i--)

Ve şimdi girmiyor çünkü limit -1

 
Bu tartışma burada konu dışı, bazı yeni başlayanlar dizisine ait
 
Roman # :

Daha önce, limitin doğru hesaplanması

ve i>=0 döngüsüne girdi

Ve şimdi girmiyor çünkü limit -1

Daha önce de aynı kodla giriş yapamadım.
beste yapma

Khatimlyansky'den eski yapıyı indirin ve bana inanmıyor musunuz kontrol edin.

 
TheXpert # :
Bu tartışma burada konu dışı, bazı yeni başlayanlar dizisine ait

Bu tasarımı daha önce kullanmadıysanız, offtopikinizden kaçının.

 
Nikolai Semko # :

Daha önce de aynı kodla giriş yapamadım.
beste yapma

Khatimlyansky'den eski yapıyı indirin ve bana inanmıyor musunuz kontrol edin.

Artyom da bu tasarımı kullanmıştır.
Yukarıda açıkladığı gibi, buradaki sorunu sadece o anlar.

 
Roman # :

Daha önce, limitin doğru hesaplanması

ve i>=0 döngüsüne girdi

Ve şimdi girmiyor çünkü limit -1 çıkıyor

Her zaman bir kontrol vardı: if(limit>1) limit=rates_total-1. Bu, hesaplamalarda i + some_to'nun olmadığı durumlar içindir. Varsa, bu "bir şeyler" yapıya dahil edilmelidir: limit=rates_total-1-ne kadar_bu.

Onsuz, her zaman sınırların dışında bir dizi vardı. Sonuçta, Rates_total, Bars()'tan başka bir şey değildir. Buna göre, eğer 5000 çubuk varsa ve biz 5000 indeksine atıfta bulunuyorsak, o zaman dizinin ötesine geçiyoruz (çubukların sayımı sıfırdan başlar).

Örneğinizde limit hesaplaması doğru değil:

 int limit = rates_total- 1 -prev_calculated;

Bunun gibi olmalı:

 int limit = rates_total-prev_calculated;

Ve sonra limiti kontrol edin> 1

ve limit hala birden büyükse, limit = rate_total-1