Merhaba, kodumdaki mantığımı bir eleman bir sonraki elemandan küçük olmaya devam ettikçe, ilk elemanı silmeye odaklı oluşturdum. Fakat bu şekilde olduğunda a(i+1) elemanı, girilen vektörde bulunamayacağı için hata veriyor. Bunu düzeltmeye yönelik ya da direkt bambaşka bir mantık tavsiyeniz var mı?
function Sonuc=maks(a)
for i=1:length(a)
if a(i)<a(i+1)
a(i)=a(i+1);
i=i+1;
elseif a(i)>a(i+1)
a(i)=a(i+1);
b=a(i);
i=i+1;
end
end
fprintf('Max değer ve index: (%g,%g) \n', a(i),i)
end
Öncelikle kodda bazı mantık hataları var:
i=i+1; demişsiniz. bunun bir anlamı yok. for dongusu zaten i değerini kendi değiştiriyor,
a(i) küçükse de büyükse de a(i)=a(i+1); yazmışsınız,
b=a(i); yazmışsınız ama b değişkeni hiç bir yerde kullanılmamış.
ek olarak,
"bir eleman bir sonraki elemandan kucuk olmaya devam ettikce, sil" mantıgı tam olarak max()'ı taklit etmeyecektir.
[3 5 7 5 7] vektorunu [7 7] yapacaktır. [3 5 4] vektorunu [5 4 ] yapacaktır.
sizin mantıgınıza en yakın calısabilir algoritma "elemanları karsilastir, buyuk olan degeri tut" olabilir.