TÜBİTAK – 2023 Bilim Olimpiyatları – Bilgisayar – A Kitapçığı – Soru 48

C Programlama Tübitak - Bilim Olimpiyat Soruları Yazılım

Soru : Aşağıdaki kod çalıştırıldığında index değişkeninin değeri ne olur ve while döngüsü kaç
defa döner?

#include<stdio.h>
#include <limits.h>
int metot(int arr[], int n) 
{
	int a = 0;
	int b = n - 1;
	while (a < b) 
	{
		int m = (a + b) / 2;
		int lv = m > 0 ? arr[m - 1] : INT_MIN;
		int rv = m < n-1 ? arr[m + 1] : INT_MIN;
		int mv = arr[m];
		if (mv > lv && mv > rv) 
			return m;
			if (lv > rv)
				b = m;
			else
				a = m;
	}
	return a;
}

main()
{
	const int n = 11;
	int arr[] = {1, 1, 3, 4, 8, 11, 19, 23, 16, 7, 2};
	int index = metot(arr, n);
	printf("Sonuc = %d",index);
}

Cevap : Yöntem en yüksek değeri dizide 7 numaralı indekste 2 döngü çevrimine bulur.

index = 7, döngü adedi = 2

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir