s18_number_sequence.cpp
4 months 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]);

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42