s18_number_sequence.cpp
4 years ago in C
#include <stdio.h>
main() {
// HEDEF:
// Kuralları verilen "a" sayı dizisinin n'inci elemanını bulmak.
int n;
printf("Enter n: ");
scanf("%d", &n);
// Soruya göre n'nin 0'dan büyük olduğunu varsayıyoruz.
// Gerçek bir programda kullanıcının gerçekten uygun bir veri girip girmediğini
// mutlaka kontrol etmeliyiz. Olumsuz durumda programı çalıştırmak
// yerine kullanıcıyı uyarıp tekrar girdi istemeliyiz.
// idx => a_n'nin arr'deki indeksi, yani hesaplamamız gereken sayının arraydeki indeksi
// Arraylerin indeksleri 0'dan başladığı için mesela 1. elemanı indeks 0'a atayacağız
// n. elemanı da indeks (n-1)'e atayacağız
int idx = n - 1;
// Programımız diziyi 100. elemanına kadar hesaplayabilecek (soruda geçmiyor, kendi tercihim)
int arr[100];
// Sorudaki kurala göre ilk 3 elemanın değerleri
// (sonraki değerleri oluşturabilmek için bunlara ihtiyacımız var)
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
// Eğer kullanıcı ilk 3 elemandan birini istemişse bu döngü hiç çalışmayacak,
// çünkü bu durumda idx < 3 oluyor ve döngü başlamadan bitiyor
for (int i=3; i <= idx; i++)
{
arr[i] = arr[i-2] + 2 * arr[i-3];
}
// Gereken sonucu hesaplayıp "arr" isimli arraye yerleştirdik, artık sonucu yazdırabiliriz
printf("a_%d is %d", n, arr[idx]);
}