ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°. 
БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ Ρ‚ΡƒΡ€Π°

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π›Π°Ρ€ΠΈΡ‡Π΅Π² О. И., ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΡΠΊΠΈΠΉ А. Π’. БистСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ состояниС ΠΈ ΠΏΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ия. // Π˜Ρ‚ΠΎΠ³ΠΈ Π½Π°ΡƒΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. Π‘Π΅Ρ€. ВСхничСская ΠΊΠΈΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈΠΊΠ°. — Π’.21. М.: Π’Π˜ΠΠ˜Π’Π˜, 1987. БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… систСмах управлСния. Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ управлСния РАН ΠΈΠΌ. Π’. А. Π’Ρ€Π°ΠΏΠ΅Π·Π½ΠΈΠΊΠΎΠ²Π°. Π’ΠΎΠΌ VIII. М.: ИПУРАН, 2000 Π³. Π’ΠΈΡˆΠ½Π΅ΠΊΠΎΠ² А. Π’., ΠšΡƒΡ€ΠΈΠ»ΠΎΠ²Π° Н. Π‘… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°. БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ Ρ‚ΡƒΡ€Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • 1. Π›Π°Ρ€ΠΈΡ‡Π΅Π² О. И., ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΡΠΊΠΈΠΉ А. Π’. БистСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ состояниС ΠΈ ΠΏΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ия. // Π˜Ρ‚ΠΎΠ³ΠΈ Π½Π°ΡƒΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. Π‘Π΅Ρ€. ВСхничСская ΠΊΠΈΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈΠΊΠ°. — Π’.21. М.: Π’Π˜ΠΠ˜Π’Π˜, 1987
  • 2. Π’ΠΈΡˆΠ½Π΅ΠΊΠΎΠ² А. Π’., ΠšΡƒΡ€ΠΈΠ»ΠΎΠ²Π° Н. Π‘., Π‘Π°Ρ„ΠΎΠ½ΠΎΠ²Π° И. Π•., Π¨Ρ‚Π΅ΠΉΠ½Π±Π΅Ρ€Π³ Π’. И. ΠœΠ½ΠΎΠ³ΠΎΡ†Π΅Π»Π΅Π²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ принятия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС. — ΠœΠ“Π˜Π­Πœ. — Πœ., 2002.
  • 3. Π’Ρ€Π°Ρ…Ρ‚Π΅Π½Π³Π΅Ρ€Ρ† Π­. А. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. М., Π‘ΠΈΠ½Ρ‚Π΅Π³. 2000.
  • 4. ΠœΡΡ‚ΡŒΡŽ А. БтэкСр, Π‘Ρ‚ΠΈΠ²Π΅Π½ Π”ΠΆ. Бтэйн, Π’ΠΎΠ½ΠΈ Нортроп. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° клиСнтских Windows-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Microsoft .Net Framework. ΠΏΠΈΡ‚Π΅Ρ€ 2008
  • 5. Π”Π΅ΠΉΡ‚ К.

    Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

    Π² ΡΠΈΡΡ‚Π΅ΠΌΡ‹ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… //6-ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. — ΠšΠΈΠ΅Π²: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 1998

  • 6. Π‘ΠΎΠ½Π΄Π°Ρ€Π΅Π² Π’. М., Π ΡƒΠ±Π»ΠΈΠ½Π΅Ρ†ΠΊΠΈΠΉ Π’. И., ΠšΠ°Ρ‡ΠΊΠΎ Π•. Π“. ΠžΡΠ½ΠΎΠ²Ρ‹ программирования. — Π₯Π°Ρ€ΡŒΠΊΠΎΠ²: Π€ΠΎΠ»ΠΈΠΎ, Ростов Π½/Π”: ЀСникс, 1997.
  • 7. ΠšΠ°Ρ€Π»ΠΈ Ватсон — Π‘#, Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π›ΠΎΡ€ΠΈ», Москва, 2005.
  • 8. БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… систСмах управлСния. Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ управлСния РАН ΠΈΠΌ. Π’. А. Π’Ρ€Π°ΠΏΠ΅Π·Π½ΠΈΠΊΠΎΠ²Π°. Π’ΠΎΠΌ VIII. М.: ИПУРАН, 2000 Π³.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

using System;

using System.Collections.Generic;

using System. Linq;

using System.Windows.Forms;

using System. IO;

using System. Xml;

using System.Data.OleDb;

using System. Data;

namespace DiplomProject.

{.

public class AlternativeComparer: IComparer.

{.

public int Compare (Altarnative x, Altarnative y).

{.

return x.Weight.CompareTo (y.Weight);

}.

}.

static class Program.

{.

static List _criterias;

static OleDbConnection _connection = null;

static List _alternatives = null;

[STAThread].

static void Main (string[] args).

{.

ReadAlternatives ();

// Π§ΠΈΡ‚Π°Π΅ΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

ReadCriteria ();

// Π’Π²ΠΎΠ΄ΠΈΠΌ прСдпочтСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

InputClientValues ();

// РассчитываСм вСса для ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

CalculateCriteriaWeights ();

// РассчитываСм вСса для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

foreach (Criteria criteria in _criterias).

{.

CalculateValueWeights (criteria);

Console.WriteLine (string.Format («Π’Сс критСрия {0}: {1}», criteria.Name, criteria.Weight.ToString () + Environment. NewLine));

foreach (CriteriaValue cvalue in criteria. Values).

{.

Console.WriteLine (string.Format («Π’Сс значСния {0}: {1}», cvalue.Name, cvalue.Weight.ToString () + Environment. NewLine));

}.

}.

_alternatives.Sort (new AlternativeComparer ());

Console.WriteLine («____________________________________________________» + Environment. NewLine);

for (int i = _alternatives.Count-1; i >= 0; i—).

{.

Altarnative alt = _alternatives[i];

CalculateAlternativeWeight (alt);

Console.WriteLine (string.Format («ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° {0} | ВСс {1}», alt.Name, alt.Weight.ToString () + Environment. NewLine));

}.

Console.WriteLine («ΠΠ°ΠΆΠΌΠΈΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹»);

Console.ReadLine ();

}.

/// ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ вСс Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹.

/// ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°.

static void CalculateAlternativeWeight (Altarnative alt).

{.

for (int i = 0; i < alt.Values.Count; i++).

{.

Criteria criteria = _criterias[i];

decimal v = FindValue (alt.Values[i], criteria);

alt.Weight += (criteria.Weight * v);

}.

}.

static decimal FindValue (string alternativeValue, Criteria criteria).

{.

foreach (CriteriaValue cv in criteria. Values).

{.

if (cv.Name.ToUpper () == alternativeValue. ToUpper ()).

{.

return cv. Weight;

}.

}.

return -1;

}.

static string GetNameByValueForCoastAlternative (int val).

{.

if (val > 0 && val <= 5000) return «Π΄ΠΎ 5 Ρ‚ыс. Ρ€ΡƒΠ±.» ;

if (val > 5000 && val <= 10 000) return «Π΄ΠΎ 10 Ρ‚ыс. Ρ€ΡƒΠ±.» ;

if (val > 10 000 && val <= 20 000) return «Π΄ΠΎ 20 Ρ‚ыс. Ρ€ΡƒΠ±.» ;

if (val > 20 000 && val <= 30 000) return «Π΄ΠΎ 30 Ρ‚ыс. Ρ€ΡƒΠ±.» ;

if (val > 30 000) return «Π±ΠΎΠ»Π΅Π΅ 30 Ρ‚ыс. Ρ€ΡƒΠ±.» ;

return val. ToString ();

}.

static string GetNameByValueForDurationAlternative (double val).

{.

if (val > 0 && val < 1) return «ΠΌΠ΅Π½Π΅Π΅ суток» ;

if (val > 1 && val <= 4) return «1−4 Π΄Π½Π΅ΠΉ» ;

if (val > 4 && val <= 10) return «5−10 Π΄Π½Π΅ΠΉ» ;

if (val > 10) return «ΠΎΡ‚ 10 Π΄Π½Π΅ΠΉ» ;

return val. ToString ();

}.

static string GetNameByValueForTripDurationAlternative (int val).

{.

if (val > 0 && val <= 3) return «0−3 часа» ;

if (val > 3 && val <= 6) return «3−6 часов» ;

if (val > 6 && val <= 12) return «6−12 часов» ;

if (val > 12 && val <= 24) return «12−24 часа» ;

if (val > 24) return «Π‘ΠΎΠ»Π΅Π΅ суток» ;

return val. ToString ();

}.

/// Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΈΠ· Π‘Π”.

static void ReadAlternatives ().

{.

_alternatives = new List ();

SetConnection ();

if (_connection.State == ConnectionState. Open).

{.

OleDbCommand com = new OleDbCommand («SELECT * FROM Π’Π°Π±Π»ΠΈΡ†Π°1», _connection);

OleDbDataReader reader = com. ExecuteReader ();

while (reader.Read ()).

{.

Altarnative alt = new Altarnative ();

alt.Name = reader[1]. ToString ();

alt.Values.Add (reader[2]. ToString ());

alt.Values.Add (GetNameByValueForCoastAlternative (Int32.Parse (reader[3]. ToString ())));

alt.Values.Add (reader[4]. ToString ());

alt.Values.Add (reader[5]. ToString ());

alt.Values.Add (GetNameByValueForDurationAlternative (Double.Parse (reader[6]. ToString ())));

alt.Values.Add (GetNameByValueForTripDurationAlternative (Int32.Parse (reader[7]. ToString ())));

alt.Values.Add (reader[8]. ToString ());

alt.Values.Add (reader[9]. ToString ());

alt.Values.Add (reader[10]. ToString ());

alt.Values.Add (reader[11]. ToString ());

_alternatives.Add (alt);

}.

}.

}.

/// Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС с Π‘Π”.

static void SetConnection ().

{.

_connection = new OleDbConnection (@" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹.accdb");

_connection.Open ();

}.

/// Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° список ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

static void ReadCriteria ().

{.

_criterias = new List ();

FileStream stream = new FileStream («Criterias.xml», FileMode. Open);

XmlDocument doc = new XmlDocument ();

doc.Load (stream);

XmlElement root = doc. DocumentElement;

foreach (XmlNode node in root. ChildNodes).

{.

Criteria criteria = new Criteria ();

criteria.Name = node. Attributes[0]. Value;

foreach (XmlNode childNode in node. ChildNodes).

{.

foreach (XmlAttribute attr in childNode. Attributes).

{.

CriteriaValue criteriaValue = new CriteriaValue ();

criteriaValue.Name = attr. Value;

criteria.Values.Add (criteriaValue);

}.

}.

_criterias.Add (criteria);

}.

}.

/// ВвСсти прСдпочтСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎ ΠΊΡ€ΠΈΡ‚Сриям ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ.

static void InputClientValues ().

{.

foreach (Criteria criteria in _criterias).

{.

Console.WriteLine (string.Format («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΏΠΎ Π΄Π΅ΡΡΡ‚ΠΈΠ±Π°Π»Π»ΡŒΠ½ΠΎΠΉ шкалС для критСрия {0}», criteria.Name));

bool isCorrectInput = false;

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ критСрия.

while (!isCorrectInput).

{.

isCorrectInput = Int32. TryParse (Console.ReadLine (), out criteria. ClientValue) && criteria. ClientValue >= 1 && criteria. ClientValue <= 10;

if (!isCorrectInput).

Console.WriteLine («ΠΠ΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄!»);

}.

foreach (CriteriaValue val in criteria. Values).

{.

Console.WriteLine (string.Format («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΏΠΎ Π΄Π΅ΡΡΡ‚ΠΈΠ±Π°Π»Π»ΡŒΠ½ΠΎΠΉ шкалС для значСния {0}», val.Name));

isCorrectInput = false;

while (!isCorrectInput).

{.

isCorrectInput = Int32. TryParse (Console.ReadLine (), out val. ClientValue) && val. ClientValue >= 1 && val. ClientValue <= 10;

if (!isCorrectInput).

Console.WriteLine («ΠΠ΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄!»);

}.

}.

}.

}.

/// ΠŸΡ€ΠΎΠΈΠ·Π²Π΅ΡΡ‚ΠΈ расчСт вСсов ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

static void CalculateCriteriaWeights ().

{.

foreach (Criteria criteria in _criterias).

{.

PreCulculateCriteriaWeight (criteria);

}.

decimal criteriaSumm = CulculateCriteriaSumm ();

if (criteriaSumm > 0).

{.

foreach (Criteria criteria in _criterias).

{.

criteria.Weight = criteria. TempCriteriaWeight / criteriaSumm;

}.

}.

}.

static void CalculateValueWeights (Criteria criteria).

{.

foreach (CriteriaValue val in criteria. Values).

{.

PreCulculateValueWeight (criteria, val);

}.

decimal valueSumm = CulculateValueSumm (criteria);

if (valueSumm > 0).

{.

foreach (CriteriaValue val in criteria. Values).

{.

val.Weight = val. TempValueWeight / valueSumm;

}.

}.

}.

/// ΠŸΡ€ΠΎΠΈΠ·Π²Π΅ΡΡ‚ΠΈ расчСт вСса.

static void PreCulculateCriteriaWeight (Criteria criteria).

{.

decimal summ = 0;

foreach (Criteria c in _criterias).

{.

summ += GetValueFromInterval (criteria.ClientValue, c. ClientValue);

}.

criteria.TempCriteriaWeight = (decimal)Math.Pow ((double)summ, (double)1 / _criterias.Count);

}.

static void PreCulculateValueWeight (Criteria criteria, CriteriaValue val).

{.

decimal summ = 0;

foreach (CriteriaValue v in criteria. Values).

{.

summ += GetValueFromInterval (val.ClientValue, v. ClientValue);

}.

val.TempValueWeight = (decimal)Math.Pow ((double)summ, (double)1 / criteria.Values.Count);

}.

static decimal CulculateCriteriaSumm ().

{.

decimal summ = 0;

foreach (Criteria criteria in _criterias).

summ += criteria. TempCriteriaWeight;

return summ;

}.

static decimal CulculateValueSumm (Criteria criteria).

{.

decimal summ = 0;

foreach (CriteriaValue val in criteria. Values).

summ += val. TempValueWeight;

return summ;

}.

static decimal GetValueFromInterval (int k1, int k2).

{.

double res = k1 / k2;

if (res >= 0 && res < 0.25) return 1 / 9;

if (res >= 0.25 && res < 0.45) return 1 / 7;

if (res >= 0.45 && res < 0.65) return 1 / 5;

if (res >= 0.65 && res < 0.85) return 1 / 3;

if (res >= 0.85 && res < 1.5) return 1;

if (res >= 1.5 && res < 3.5) return 3;

if (res >= 3.5 && res < 5.5) return 5;

if (res >= 5.5 && res < 7.5) return 7;

if (res >= 7.5 && res < 10) return 9;

return -1;

}.

}.

}.

// ———————————————————————————————————;

// TODO: Update copyright text.

// ———————————————————————————————————;

namespace DiplomProject.

{.

using System;

using System.Collections.Generic;

using System. Linq;

using System. Text;

/// TODO: Update summary.

public class Criteria.

{.

public string Name;

public List Values = new List ();

public int ClientValue;

public decimal TempCriteriaWeight;

public decimal Weight;

}.

}.

// ———————————————————————————————————;

// TODO: Update copyright text.

// ———————————————————————————————————;

namespace DiplomProject.

{.

using System;

using System.Collections.Generic;

using System. Linq;

using System. Text;

/// TODO: Update summary.

public class CriteriaValue.

{.

public string Name;

public int ClientValue;

public decimal TempValueWeight;

public decimal Weight;

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ