using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AlgorytmyKolos2
{
class Program
{
static void Main(string[] args)
{
/*
//ZADANIE 1.
//Za pomocą algorytmu rekurencyjnego i iteracyjnego oblicz:
//a) sumę licz od k do n dla k < n
//b) silnię n
int k = 2, n = 5, wynik = 0;
for (int i = k; i <= n; i++)
{
wynik = wynik + i;
}
Console.WriteLine("Wynik: {0}", wynik);
Console.WriteLine("Wynik: {0}", Suma(k, n));
int silnia = 1;
for(int i = 2; i <= n; i++)
{
silnia = silnia * i;
}
Console.WriteLine("Wynik: {0}", silnia);
Console.WriteLine("Wynik: {0}", Silnia(n));
*/
/*
//ZADANIE 2.
//Znajdź a8 gdzie: an=(-1)^n dla n<4; an=an-1+2(bn-3) dla n>=4;
//bn=1 dla n<5; bn=bn-1+bn-2 dla n>=5 za pomocą algorytmu
//iteracyjnego i rekurencyjnego
double n = 8;
double[] a = new double[20];
double[] b = new double[20];
for(int i = 0; i <= n; i++)
{
if(i<4) a[i] = Math.Pow(-1, i);
else
{
for(int j = 0; j <= (n + 3); j++)
{
if (j < 5) b[j] = 1;
else b[j] = b[j - 1] + b[j - 2];
}
a[i] = a[i - 1] + 2 * b[i + 3];
}
}
Console.WriteLine("Wynik: {0}", a[8]);
Console.WriteLine("Wynik: {0}", CiagA(8));
*/
//ZADANIE 3.
//Dla dowolnego folderu znaleźć podkatalog z największą
//liczbą plików utworzonych w 2018 roku
int i = 0, ile = 0;
int[] ilosc = new int[1000];
string[] nazwa = new string[1000];
DirectoryInfo dir = new DirectoryInfo(@"D:\Music");
DirectoryInfo[] specDir = dir.GetDirectories();
foreach (var directory in specDir)
{
foreach (var fi in directory.GetFiles())
{
if(fi.CreationTime.Year == 2018) ile++;
}
nazwa[i] = directory.ToString();
ilosc[i] = ile;
ile = 0;
i++;
}
Console.WriteLine("{0}: {1}", nazwa[ilosc.ToList().IndexOf(ilosc.Max())], ilosc.Max());
//ZADANIE 4.
//Znaleźć 2 największe pliki i podać ich nazwę
Console.ReadLine();
}
static int Silnia(int n)
{
if (n == 0) return 1;
else return n * Silnia(n - 1);
}
static int Suma(int k, int n)
{
if (n == k) return k;
else return Suma(k, n - 1) + n;
}
static double CiagA(double n)
{
if (n < 4) return Math.Pow(-1, n);
else return CiagA(n - 1) + 2 * CiagB(n + 3);
}
static double CiagB(double n)
{
if (n < 5) return 1;
else return CiagB(n - 1) + CiagB(n - 2);
}
}
}