ahmetesr
İlk kod parçacığında, 10 - 1 ifadesi, dizi üzerindeki geçerli eleman sayısını temsil eder. Bu durumda, 10 - 1 9'a eşittir çünkü dizi dizisinin boyutu 10'dur ve döngünün son elemana kadar dönmesi gerekmektedir.
İkinci kod parçacığında ise, sizeof(dizi) / sizeof(int) ifadesi kullanılmıştır. sizeof operatörü, bellekteki bir değişkenin ya da veri tipinin boyutunu döndürür. Ancak, sizeof(dizi) ifadesi, dizinin tüm bellek boyutunu döndürür, yani dizi elemanlarının boyutunu değil.
Bu nedenle, sizeof(dizi) / sizeof(int) ifadesi gerçek boyutu temsil etmez ve yanlış sonuçlara yol açabilir. Döngülerin geçerli eleman sayısına (10 - 1 ya da doğrudan 9) göre ayarlanması gerekmektedir.
İkinci kod parçacığını düzeltmek için, döngülerin başlangıç koşullarında doğru eleman sayısını kullanmanız gerekir:
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
if (dizi[j] > dizi[j + 1])
{
temp = dizi[j];
dizi[j] = dizi[j + 1];
dizi[j + 1] = temp;
}
}
Bu şekilde, sizeof operatörünü kullanmadan doğru sonuçları alabilirsiniz. Döngüler, dizinin geçerli eleman sayısına (9) göre çalışacaktır.
işte kodun tamamen düzeltilmiş hali:
`#include <iostream>
int main() {
int temp;
int dizi[] = {5, 10, 15, 13, 15, 22, 42, 21, 99, 4};
int n = sizeof(dizi) / sizeof(int); // Dizi boyutunu al
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1; j++) {
if (dizi[j] > dizi[j + 1]) {
temp = dizi[j];
dizi[j] = dizi[j + 1];
dizi[j + 1] = temp;
}
}
}
std::cout << "Sıralanmış dizi: ";
for (int i = 0; i < n; i++) {
std::cout << dizi[i] << " ";
}
std::cout << std::endl;
return 0;
}
`
Bu kod, Bubble Sort algoritmasını kullanarak dizi dizisini küçükten büyüğe sıralar. sizeof operatörü doğru şekilde kullanılarak dizi boyutu (n) belirlenir ve döngüler buna göre ayarlanır. Ardından, sıralanmış diziyi ekrana yazdırır.
Çıktı şu şekilde olacaktır:
**Sıralanmış dizi: 4 5 10 13 15 15 21 22 42 99
**
Bu şekilde, dizi elemanlarının doğru bir şekilde sıralandığını göreceksiniz.