Exemple #1
0
        private static int _num;    // per attribuire il numero alla nuova task

        public Task CreaTask(string descrizione, DateTime dataDiscadenza, Priorita importanza)
        {
            Task task = new Task(descrizione, dataDiscadenza, importanza, ++_num);

            _tasks.Add(task.Numero, task);

            return(task);
        }
Exemple #2
0
 public EventoSismico(string tag, Priorita priorita, string message, long timestamp, IStazione stazione)
 {
     Tag       = tag;
     Priorita  = priorita;
     Messaggio = message;
     Timestamp = timestamp;
     Stazione  = stazione;
 }
Exemple #3
0
        public string FiltraDati(Priorita importanza, Formato formato)
        {
            string s = "";

            foreach (Task t in _tasks.Values)
            {
                if (t.Importanza == importanza)
                {
                    s += t.OttieniDati(formato) + '\n';
                }
            }
            return(s);
        }
Exemple #4
0
        public Task(string descrizione, DateTime dataDiscadenza, Priorita importanza, int numero)
        {
            Descrizione = descrizione;
            Importanza  = importanza;
            Numero      = numero;

            if (dataDiscadenza < DateTime.Today)
            {
                throw new ArgumentOutOfRangeException();
            }
            else
            {
                DataDiScadenza = dataDiscadenza;
            }
        }
Exemple #5
0
        // hlavní funkce vyhodnocení výrazu při dosazení x
        private double Vyhodnoceni(string vyr)
        {
            int nej_poz = 0;
            int rodic   = 0;
            //odstranění mezer
            string vyraz = vyr.Replace(" ", "");
            int    delka = vyraz.Length;

            if (delka == 0)
            {
                return(0);
            }

            bool je_unarni = true;

            Priorita nej_prior = Priorita.None;

            //procházení všech pozic a určení priorit jednotlivých znamének
            for (int poz = 0; poz < delka; poz++)
            {
                string ch = vyraz.Substring(poz, 1);

                bool dalsi_unarni = false;

                if (ch == "(")
                {
                    rodic       += 1;
                    dalsi_unarni = true;
                }
                else if (ch == ")")
                {
                    rodic       -= 1;
                    dalsi_unarni = false;
                }

                else if (rodic == 0)
                {
                    if ((ch == "^") || (ch == "*") ||
                        (ch == "/") || (ch == "+") ||
                        (ch == "-"))
                    {
                        dalsi_unarni = true;

                        switch (ch)
                        {
                        case "^":
                            if (nej_prior >= Priorita.Exp)
                            {
                                nej_prior = Priorita.Exp;
                                nej_poz   = poz;
                            }
                            break;

                        case "*":
                        case "/":
                            if (nej_prior >= Priorita.Nasob)
                            {
                                nej_prior = Priorita.Nasob;
                                nej_poz   = poz;
                            }
                            break;

                        case "+":
                        case "-":
                            if ((!je_unarni) &&
                                nej_prior >= Priorita.Scitat)
                            {
                                nej_prior = Priorita.Scitat;
                                nej_poz   = poz;
                            }
                            break;
                        }
                    }
                }
                je_unarni = dalsi_unarni;
            }
            //Rekurzivní vyhodnocení výrazů podle znamének
            if (nej_prior < Priorita.None)
            {
                string leva  = vyraz.Substring(0, nej_poz);
                string prava = vyraz.Substring(nej_poz + 1);
                switch (vyraz.Substring(nej_poz, 1))
                {
                case "^":
                    if (Vyhodnoceni(prava) < 1 && Vyhodnoceni(prava) > 0 && Vyhodnoceni(leva) < 0)
                    {
                        return(-999);
                    }
                    else
                    {
                        return(Math.Pow(
                                   Vyhodnoceni(leva),
                                   Vyhodnoceni(prava)));
                    }

                case "*":
                    return
                        (Vyhodnoceni(leva) *
                         Vyhodnoceni(prava));

                case "/":
                    return
                        (Vyhodnoceni(leva) /
                         Vyhodnoceni(prava));

                case "%":
                    return
                        (Vyhodnoceni(leva) %
                         Vyhodnoceni(prava));

                case "+":
                    return
                        (Vyhodnoceni(leva) +
                         Vyhodnoceni(prava));

                case "-":
                    return
                        (Vyhodnoceni(leva) -
                         Vyhodnoceni(prava));
                }
            }
            if (vyraz.StartsWith("(") && vyraz.EndsWith(")"))
            {
                return(Vyhodnoceni(vyraz.Substring(1, delka - 2)));
            }

            if (vyraz.StartsWith("-"))
            {
                return(-Vyhodnoceni(vyraz.Substring(1)));
            }
            if (vyraz.StartsWith("+"))
            {
                return(Vyhodnoceni(vyraz.Substring(1)));
            }
            if (delka > 5 && vyraz.EndsWith(")"))
            {
                // nalezení první závorky
                int paren_pos = vyraz.IndexOf("(");
                if (paren_pos > 0)
                {
                    // Typ funkce
                    string leva  = vyraz.Substring(0, paren_pos);
                    string prava = vyraz.Substring(paren_pos + 1, delka - paren_pos - 2);
                    switch (leva.ToLower())
                    {
                    case "sin":
                        return(Math.Sin(Vyhodnoceni(prava)));

                    case "cos":
                        return(Math.Cos(Vyhodnoceni(prava)));

                    case "tg":
                    case "tan":
                        return(Math.Tan(Vyhodnoceni(prava)));

                    case "sqrt":
                    {
                        if (Vyhodnoceni(prava) >= 0)
                        {
                            return(Math.Sqrt(Vyhodnoceni(prava)));
                        }
                        else
                        {
                            return(-999);
                        }
                    }

                    case "cotan":
                    case "cot":
                    case "cotg":
                        return(1 / Math.Tan(Vyhodnoceni(prava)));

                    case "asin":
                    {
                        if (Vyhodnoceni(prava) >= -1 && Vyhodnoceni(prava) <= 1)
                        {
                            return(Math.Asin(Vyhodnoceni(prava)));
                        }
                        else
                        {
                            return(-999);
                        }
                    }

                    case "acos":
                    {
                        if (Vyhodnoceni(prava) >= -1 && Vyhodnoceni(prava) <= 1)
                        {
                            return(Math.Acos(Vyhodnoceni(prava)));
                        }
                        else
                        {
                            return(-999);
                        }
                    }

                    case "atg":
                    case "atan":
                    {
                        return(Math.Atan(Vyhodnoceni(prava)));
                    }

                    case "abs":
                        return(Math.Abs(Vyhodnoceni(prava)));

                    case "ln":
                    case "log":
                    {
                        if (Vyhodnoceni(prava) > 0)
                        {
                            return(Math.Log(Vyhodnoceni(prava)));
                        }
                        else
                        {
                            return(-999);
                        }
                    }

                    case "sign":
                        return(Math.Sign(Vyhodnoceni(prava)));
                    }
                }
            }
            //nalezení proměnné x a zkouška výpočtu
            if (Promenne.ContainsKey(vyraz))
            {
                try
                {
                    return(double.Parse(Promenne[vyraz]));
                }
                catch
                {}
            }
            //Pokud není překlep, vyhodnotí výraz
            try
            {
                return(double.Parse(vyraz));
            }
            catch
            {
                return(chyb = 2);
            }
        }
Exemple #6
0
 public FiltroPriorita(Priorita priorita)
 {
     _priorita = priorita;
 }