duminică, 25 octombrie 2015

C# lecția 7 - tipul enum, instructiunea foreach, tablouri neregulate




Tipul enum
[atribute][modificatori]enum NumeEnumerare [: Tip]
{
  lista
}
  în mod implicit, valoarea primului membru al enumerării este 0, iar fiecare variabilă care urmează are valoarea (implicită) mai mare cu o unitate decât precedenta.
  valorile folosite pentru iniţializări trebuie să facă parte din domeniul de valori al tipului enum
  nu se admit referinţe circulare
{class Program
{ enum lunaAnului
{ Ianuarie = 1,
Februarie,
Martie,
Aprilie,
Mai,
Iunie,
Iulie,
August,
Septembrie,
Octombrie,
Noiembrie,
Decembrie
}
static void Main(string[] args)
{
Console.WriteLine("Luna Mai este a {0}",(int)lunaAnului.Mai + "
luna din an.");
Console.ReadLine();
}
}
Instrucţiunea foreach
Această instrucţiune  enumeră elementele dintr-o colecţie, executând o instrucţiune pentru fiecare element. Elementul care se extrage este de tip read-only, neputând fi transmis ca parametru şi nici aplicat un operator care să-i schimbe valoarea.

Să se împartă un şir de caractere în cuvinte. Se va afişa numărul de cuvinte şi
fiecare cuvânt în parte
using System;
namespace Exemplul_foreach
{
    class Program
    {
        static void Main()
        {
            string sir = "Acesta este un sir";
            char[] delimitator = { ' ', ',', '.', ':' };// spatiu, virgula, punct, doua puncte
            Console.WriteLine("Sirul care va fi impartit in cuvinte\n{0}", sir);
     string[] cuvant = sir.Split(delimitator); //cuvant = tablou de string-uri returnat de                        //sir.Split
            Console.WriteLine("Sunt {0} cuvinte in text:", cuvant.Length);
            foreach (string s in cuvant) //pentru fiecare element s din tabloul cuvant
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }
    }
}

jagged array = tablou liniar de tablouri rectangulare uni – sau  n- dimensionale
int[][] mat = new int[][]
{
new int[3] {1,2,3},
new int[2] {4,5},
new int[4] {7,8,9,1}
};

int[][] mat = {
new int[3] { 1, 2, 3 },
new int[2] { 4, 5 },
new int[4] { 7, 8, 9, 1 }
};

Descompunerea unui număr în sumă de numere naturale consecutive. Se citeşte un număr natural n. Să se memoreze toate posibilităţile de descompunere a numărului n în sumă de numere consecutive. Dacă numărul n se scrie ca sumă de numere naturale consecutive, atunci rezultă că există i,k naturale  astfel încât
i+(i+1)+(i+2)+(i+3)+……+(k)=n
↔ (1+2+...+k)-(1+2+...+i-1)=n↔k*(k+1)/2-i*(i-1)/2=n
↔k2+k-i2+i-2n=0
↔k=(-1+Radical(1+8n-4i+4i*i))/2
Vom memora descompunerile în matricea neregulată a (descompunerile au dimensiuni variabile).

using System;
namespace TablouriNeregularte
{
    class Program
    {
        static void Main()
        {
            Console.Write("Introduceti un numar natural ");
            int n = Convert.ToInt32(Console.ReadLine());
            int[][] a = new int[n / 2][];
            int l = 0, i, j;
            for (i = 1; i <= n / 2; i++)
            {
                double k = (Math.Sqrt(1 + 8 * n - 4 * i + 4 * i * i) - 1) / 2;
                if (k == (int)k)
                {
                    a[l] = new int[(int)k - i + 1];
                    for (j = i; j <= k; j++) a[l][j - i] = j;
                    l++;
                }
            }
            Console.WriteLine("Descompunerea lui {0} in suma de numere naturale consecutive", n);
            for (i = 0; i < l; i++)
            {
                for (j = 0; j < a[i].Length; j++)
                    Console.Write(a[i][j] + " ");
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

Niciun comentariu:

Trimiteți un comentariu