joi, 22 octombrie 2015

C# 5 directiva de compilare #define




#define nstatic
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PatratePerfecte
{
    class Program
    {
        /* citeste n numere intregi intr-un tablou
        afiseaza patratele perfecte
        citeste un numar k
        afiseaza indicele tabloului al carui element este egal cu k
        */
        static int  k;
#if nstatic
static int n;  //daca simbolul nstatic este definit, se va complila aceasta //instrutiune cuprinsa intre #if si #endif
#endif
        string s;
        static void Main(string[] args)
        {
            Console.Write("numarul de elemente=");
            n =int.Parse(Console.ReadLine());

            int[] vec = new int[n];
            for(int i=0;i< n;i++)
            {
                Console.Write("vec[{0}]=", i);
                vec[i]=int.Parse(Console.ReadLine());
            }
            foreach (int x in vec) Console.Write("{0} ", x);
            Console.WriteLine("Patratele perfecte:");
            foreach (int x in vec)
                if (perfect(x)) Console.WriteLine("{0}", x);
            Console.Write("numarul k=");
            k = int.Parse(Console.ReadLine());
            for(int i=0;i< n;i++)
            {
                if (vec[i] == k) Console.WriteLine("valoarea {0} se afla pe pozitia {1} din tablou", k, i+1);
            }
            Console.ReadKey();
        }
        static bool perfect(int n)
        {
            for(int i=2;i<=n/2;i++)
            {
                if (n == i * i) return true;
            }
            return false;
        }
    }
}

C# lecția 4




Aplicație la tablouri bidimensionale
Tabla înmulțirii
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TablaInmultirii
{
    class Program
    {
        public static void Main()
        {
            int[,] tabInm = new int[10, 10];
            for (int i = 0; i < tabInm.GetLength(0); i++)
            {
                for (int j = 0; j < tabInm.GetLength(1); j++)
                {
                    tabInm[i, j] = i * j;
                }
            }
            for (int i = 0; i < tabInm.GetLength(0); i++)
            {
                for (int j = 0; j < tabInm.GetLength(1); j++)
                {
                    Console.WriteLine("{0}*{1}={2}", i, j, tabInm[i, j]);
        }
    }
    Console.WriteLine("tabInm.Length={0}", tabInm.Length);
    Console.ReadKey();
   }
  }
}
proprietatea Length dă numărul total de elemente aflat în tablou (pe toate dimensiunile).
GetLength(d) returnează numărul de elemente aflate pe dimensiunea numărul d (numărarea  dimensiunilor începe cu 0).
Determinarea numărului de dimensiuni pentru un tablou rectangular la run–time se face folosind proprietatea Rank a clasei de bază System.Array.
Exemplu:
using System;
class Dimensiuni
{
public static void Main()
{
int[] t1 = new int[2];
int[,] t2 = new int[3,4];
int[,,] t3 = new int[5,6,7];
Console.WriteLine(‘‘t1.Rank={0}\nt2.Rank={1}\nt3.Rank={2}’’, t1.Rank, t2.Rank, t3.Rank);
}
}
Pe ecran va apărea:
t1.Rank=1
t2.Rank=2
t3.Rank=3