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();
}
}
}