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); }
public EventoSismico(string tag, Priorita priorita, string message, long timestamp, IStazione stazione) { Tag = tag; Priorita = priorita; Messaggio = message; Timestamp = timestamp; Stazione = stazione; }
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); }
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; } }
// 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); } }
public FiltroPriorita(Priorita priorita) { _priorita = priorita; }