Probleme de informatică
  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

   HomePOO in C# Bacalaureat 2016   |   Variante bacalaureat 2009   |   Atestat  |   Olimpiada       
Noutăţi
Subiecte admitere la Facultatea de informatica UBB Cluj-Napoca
Subiecte bacalaureat 2010-2017
Bacalaureat 2017 - competenţe digitale
C# - Windows Form Application - exemple
Modele de proiecte de atestat
Bacalaureat 2017
Subiecte si rezolvări 2010-2017
Rezolvari variante bacalaureat 2009
Competenţe digitale
Examen atestat
Rezumat documentatie
Teme proiect
php.doc
css.doc
exemple_php_si_css.rar
Modele de proiecte de atestat
Subiecte atestat 2014 CNLR
Olimpiada
Clasele V-VI
Clasele VII-VIII
Clasa a IX-a
Clasa a X-a
Clasele XI-XII
Noţiuni teoretice
Metode de sortare
Metoda backtracking


´╗┐Operatii cu numere mari.


´╗┐using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace nrmari
{
    class numarmare
    {
        private int n;
        private int[] a;
        private int semn;

        public int N
        {
            get
            {
                return n;
            }
        }

        public numarmare()
        {
            n = 1;
            a = new int[10000];
            a[0] = 0;
            semn = 1;
        }

        public numarmare(string s)
        {
            a = new int[10000];
            if (s[0] == '-')
            {
                semn = -1;
                n = s.Length - 1;
                for (int i = 1; i < s.Length; i++)
                    a[n - i] = s[i]-48;
            }
            else
            {
                semn = 1;
                n = s.Length;
                for (int i = 0; i < n; i++)
                    a[n - 1 - i] = s[i]-48;
            }
        }

        public numarmare(numarmare x)
        {
            n = x.n;
            semn = x.semn;
            a = new int[10000];
            for (int i = 0; i < n; i++)
                a[i] = x.a[i];
        }

        public override string ToString()
        {
            string s;
            if (semn == -1) s = "-";
            else s = "";
            for (int i = n - 1; i >= 0; i--)
                s = s + a[i];
            return s;
        }

        public static  numarmare modul(numarmare x)
        {
            numarmare s = new numarmare(x);
            s.semn = 1;
            return s;
        }
         
        public static bool operator ==(numarmare x, numarmare y)
        {
            if (x.semn != y.semn) return false;
            if (x.n != y.n) return false;
            for (int i = 0; i < x.n; i++)
                if (x.a[i] != y.a[i]) return false;
            return true;
        }

        public static bool operator !=(numarmare x, numarmare y)
        {
            return !(x == y);
        }

        public static bool operator <(numarmare x, numarmare y)
        {
            if (x.semn > y.semn) return false;
            else if (x.semn<y.semn) return true;
            if (x.semn > 0)
            {
                if (x.n > y.n) return false;
                else if (x.n < y.n) return true;
                for (int i = x.n - 1; i >= 0; i--)
                    if (x.a[i] > y.a[i]) return false;
                    else if (x.a[i] < y.a[i]) return true;
                return false;
            }
            else
            {
                if (x.n < y.n) return false;
                else if (x.n > y.n) return true;
                for (int i = x.n - 1; i >= 0; i--)
                    if (x.a[i] < y.a[i]) return false;
                    else if (x.a[i] > y.a[i]) return true;
                return false;
            }

        }
        public static bool operator >(numarmare x, numarmare y)
        {
            return !(x < y || x == y);
        }

        public static bool operator >=(numarmare x, numarmare y)
        {
            return !(x < y);
        }
        
        public static bool operator <=(numarmare x, numarmare y)
        {
            return !(x > y);
        }

        public static numarmare operator +(numarmare x, numarmare y)
        {
            numarmare s=new numarmare();
            if (x.semn * y.semn > 0)
            {
                if (x.n >= y.n)
                {
                    s = new numarmare(x);
                    int t = 0, i;
                    for (i = 0; i < y.n; i++)
                    {
                        int c = s.a[i] + y.a[i] + t;
                        s.a[i] = c % 10; t = c / 10;
                    }
                    while (t > 0 && i < s.n)
                    {
                        int c = s.a[i] + t;
                        s.a[i] = c % 10; t = c / 10;
                        i++;
                    }
                    if (t > 0)
                    {
                        s.n++; s.a[s.n - 1] = 1;
                    }
                }
                else
                {
                    s = new numarmare(y);
                    int t = 0, i;
                    for (i = 0; i < x.n; i++)
                    {
                        int c = s.a[i] + x.a[i] + t;
                        s.a[i] = c % 10; t = c / 10;
                    }
                    while (t > 0 && i < s.n)
                    {
                        int c = s.a[i] + t;
                        s.a[i] = c % 10; t = c / 10;
                        i++;
                    }
                    if (t > 0)
                    {
                        s.n++; s.a[s.n - 1] = 1;
                    }
                }
                            
            }
            else
            {
                if (x.semn>0) s = x - modul(y);
                else s = y - modul(x);
                while (s.a[s.n - 1] == 0 && s.n>1) s.n--;
            }
            
            return s;
        }

        public static numarmare operator -(numarmare x, numarmare y)
        {
            numarmare zero = new numarmare();
            if (x == zero)
            {
                numarmare r = new numarmare(y);
                if (r.semn == 1) r.semn = -1;
                else r.semn = 1;
                return r;
            }
            
            numarmare d = new numarmare();
            if (x.semn * y.semn > 0)
            {
                if (x.semn > 0)
                    if (x > y)
                    {
                        d = new numarmare(x);
                        int i;
                        for (i = 0; i < y.n; i++)
                            if (d.a[i] >= y.a[i]) d.a[i] = d.a[i] - y.a[i];
                            else
                            {
                                d.a[i] = 10 + d.a[i] - y.a[i];
                                int j = i + 1;
                                while (d.a[j] == 0)
                                {
                                    d.a[j] = 9;
                                    j++;
                                }
                                d.a[j]--;
                            }
                    }
                    else
                    {
                        d = new numarmare(y);
                        int i;
                        for (i = 0; i < x.n; i++)
                            if (d.a[i] >= x.a[i]) d.a[i] = d.a[i] - x.a[i];
                            else
                            {
                                d.a[i] = 10 + d.a[i] - x.a[i];
                                int j = i + 1;
                                while (d.a[j] == 0)
                                {
                                    d.a[j] = 9;
                                    j++;
                                }
                                d.a[j]--;
                            }
                        d.semn = -1;
                    }
                else
                    if (x < y)
                    {
                        d = new numarmare(x);
                        int i;
                        for (i = 0; i < y.n; i++)
                            if (d.a[i] >= y.a[i]) d.a[i] = d.a[i] - y.a[i];
                            else
                            {
                                d.a[i] = 10 + d.a[i] - y.a[i];
                                int j = i + 1;
                                while (d.a[j] == 0)
                                {
                                    d.a[j] = 9;
                                    j++;
                                }
                                d.a[j]--;
                            }

                    }
                    else
                    {
                        d = new numarmare(y);
                        int i;
                        for (i = 0; i < x.n; i++)
                            if (d.a[i] >= x.a[i]) d.a[i] = d.a[i] - x.a[i];
                            else
                            {
                                d.a[i] = 10 + d.a[i] - x.a[i];
                                int j = i + 1;
                                while (d.a[j] == 0)
                                {
                                    d.a[j] = 9;
                                    j++;
                                }
                                d.a[j]--;
                            }
                        d.semn = 1;
                    }
            }
            else
            {
                if (x.semn > 0) d = x + modul(y);
                else
                {
                    d = modul(x) + y;
                    d.semn = -1;
                }
            }
            while (d.a[d.n - 1] == 0 && d.n>1) d.n--;
            return d;
        }

        private static numarmare inmultirec(numarmare x, int c)
        {
            numarmare p = new numarmare(x);
            int t = 0, y,i;
            for (i = 0; i < p.n; i++)
            {
                y = c * p.a[i] + t;
                p.a[i] = y % 10;
                t = y / 10;
            }
            if (t > 0)
            {
                p.n++;
                p.a[p.n - 1] = t;
            }
            return p;
        }

        private static numarmare inmultire10(numarmare x)
        {
            numarmare p = new numarmare(x);
            p.n++;
            for (int i = p.n - 1; i >= 1; i--)
                p.a[i] = p.a[i - 1];
            p.a[0] = 0;
            return p;
        }

        public static numarmare operator *(numarmare x, numarmare y)
        {
            numarmare a = new numarmare();
            numarmare b = new numarmare();
            a = modul(x);
            b = modul(y);
            numarmare p = new numarmare();
            numarmare s = new numarmare();
            for (int i = 0; i < b.n; i++)
            {
                p = inmultirec(a, b.a[i]);
                for (int j = 1; j <= i; j++)
                    p = inmultire10(p);
                s = s + p;
            }
            if (x.semn * y.semn < 0)
                s.semn = -1;
            return s;
        }

        public static numarmare operator /(numarmare a, numarmare b)
        {
            numarmare c = new numarmare();
            numarmare unu=new numarmare("1");
            numarmare x = new numarmare();
            numarmare y = new numarmare(a);
            x = modul(a);
            y = modul(b);
            while (x >= y)
            {
                c = c + unu;
                x = x - y;
            }
            if (a.semn * b.semn < 0)
                c.semn = -1;
            return c;
        }

        public static numarmare operator %(numarmare a, numarmare b)
        {
            numarmare x = new numarmare();
            numarmare y = new numarmare(a);
            x = modul(a);
            y = modul(b);
            while (x >= y)
            {
                x = x - y;
            }
            numarmare r = new numarmare(x);
            if (a.semn * b.semn < 0)
                r.semn = -1;
            return r;
        }

        public static numarmare operator ++(numarmare x)
        {
            numarmare a = new numarmare(x);
            numarmare unu = new numarmare("1");
            numarmare zero = new numarmare();
            zero.semn = -1;
            a = a + unu;
            if (a == zero) a.semn = 1;
            return a;
        }
        public static numarmare operator --(numarmare x)
        {
            numarmare a = new numarmare(x);
            numarmare unu = new numarmare("1");
            numarmare zero = new numarmare();
            a = a - unu;
            if (a == zero) a.semn = -1;
            return a;
        }
    }
}


  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

Calculatoare si accesorii second hand
Copyright ę 2009-2017 Muresan Vasile Ciprian - mcip.ro