Диссертация (Методы и программные средства поиска информации на основе прецедентов в интеллектуальных поисковых системах), страница 21

PDF-файл Диссертация (Методы и программные средства поиска информации на основе прецедентов в интеллектуальных поисковых системах), страница 21 Технические науки (27498): Диссертация - Аспирантура и докторантураДиссертация (Методы и программные средства поиска информации на основе прецедентов в интеллектуальных поисковых системах) - PDF, страница 21 (27498) -2019-03-12СтудИзба

Описание файла

Файл "Диссертация" внутри архива находится в папке "Методы и программные средства поиска информации на основе прецедентов в интеллектуальных поисковых системах". PDF-файл из архива "Методы и программные средства поиска информации на основе прецедентов в интеллектуальных поисковых системах", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. , а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.

Просмотр PDF-файла онлайн

Текст 21 страницы из PDF

Зеленков,Т.А. Ковалева // Вестник НИИ СУВПТ № 14: Сб. науных трудов // Под общейред. профессора Н.В. Василенко. – Красноярск: НИИ СУВПТ. – 2004. – Вып.14. – С. 95-103.41.Л.А. Трофимова, В.В. Трофимов. Управленческие решения (методы принятияи реализации): учебное пособие Л.А. Трофимова, В.В. Трофимов. – СПб.: Издво СПбГУЭФ, – 2011. – 190 с.42.ФедотовВ.Б.Построениераспределеннойсистемыдоступакинформационным ресурсам на основе многоагентной архитектуры / VIIМеждународная конференция по электронным публикациям "EL-Pub2002", –г.

Новосибирск. – 2002. – с. 23-27.43.Поспелов Д.А. Многоагентные системы – настоящее и будущее //Информационные технологии и вычислительные системы, № 1, 1998, с. 14-21.15044.Варшавский П.Р., Еремеев А.П. Моделирование рассуждений на основепрецедентов в интеллектуальных системах поддержки принятия решений //Искусственный интеллект и принятие решений. 2009. №2. с. 45-47.45.Aamodt A., Plaza E. Case-Based Reasoning: Foundational Issues, MethodologicalVariations, and System Approaches// Artificial Intelligence Communications. IOSPress. – 1994. – Vol.7, №1. – p.

39-59.46.Варшавский П.Р. Механизмы правдоподобных рассуждений на основепрецедентов (накопленного опыта) для систем экспертной диагностики//Труды 11-й национальной конференции по искусственному интеллекту смеждународным участием (Дубна, 28 сентября – 3 октября 2008 г.). – М:URSS, 2008. – Т.2. – c.106-113.47.Варшавский П.Р., Алехин Р.В., Зо Лин Кхаинг Применение онтологическогоподхода для реализации поиска решения на основе прецедентов винтеллектуальных системах поддержки принятия решений // Труды XIIIнациональной конференции по искусственному интеллекту с международнымучастием КИИ-2012. Т.3. – Белгород: Изд-во БГТУ, 2012.

С. 72-79.48.Тарасов В.Б. От многоагентных систем к интеллектуальным организациям:философия, психология, информатика. М.: Эдиториал УРСС, 2002.49.T. Kohonen, Self-Organizing Maps (Third Extended Edition), New York, 2001, p.37-46.50.Chris Burges, Tal Shaked. Learning to rank using gradient descent // ICML '05Proceedings of the 22nd international conference on Machine learning.

2005. p. 8996.51.Зо Лин Кхаинг. Реализация поиска на основе прецедентов в мультиагентныхинтеллектуальных информационно-поисковых системах // Радиоэлектроника,электротехника и энергетика: Девятнадцатая Международная научно-151техническая конференция студентов и аспирантов: Тезисы докладов в 4 томах,Т. 2. – М.: Издательский дом МЭИ, – 2013. – c. 34-35.52.Бредихин К.Н., Варшавский П.Р.

Архитектура системы распределенноговывода на основе прецедентов для интеллектуальных систем // Программныепродукты и системы. 2011. № 1. С. 50-53.53.Варшавский П.Р., Зо Лин Кхаинг, Аркар Мьо. Применение методов поискарешения на основе прецедентов в информационных поисковых системах«Программные продукты и системы», № 3(103), 2013, с. 114-119.54.Варшавский П.Р., Алехин Р.В., Ар Кар Мьо, Зо Лин Кхаинг.

Реализацияпрецедентногомодулядляинтеллектуальныхсистем«Программныепродукты и системы», № 2 (110), 2015, с. 26-31.55.Официальный сайт стеммера Портера – [Электронный ресурс]. URL:http://tartarus.org/~martin/PorterStemmer/ – Режим доступа: (дата обращения:27.09.2014).56.Стеммер Портера для русского языка. Официальный сайт. – [Электронныйресурс].

URL: http://snowball.tartarus.org/algorithms/russian/stemmer.html –Режим доступа: (дата обращения: 27.09.2014).57.Белоногов Г.Г., Калинин Ю.П., Хорошилов А.А. Компьютерная лингвистикаи перспективные информационные технологии. М.: Русский мир, 2004. 246 с.58.Варшавский П.Р., Алехин Р.В., Зо Лин Кхаинг Применение онтологическогоподхода для реализации поиска решения на основе прецедентов винтеллектуальных системах поддержки принятия решений // Труды XIIIнациональной конференции по искусственному интеллекту с международнымучастием КИИ-2012. Т.3.

– Белгород: Изд-во БГТУ, – 2012. – c. 72-79.59.Adam Freeman. Pro ASP.NET MVC 3 Framework. Apress, 3rd Edition. –2011, –852 p.60.Scott Millett. Professional ASP.NET Design Patterns. Wrox. – 2010, – 720 p.15261.Julia Lerman. Programming Entity Framework: Building Data Centric Apps withthe ADO.NET Entity Framework. O'Reilly Media, 2nd Edition. – 2010, – 920 p.62.Nishith Pathak. Pro WCF 4: Practical Microsoft SOA Implementation. Apress; 2ndEdition. – 2011, – 472 p.63.Mike Liu. Pro WCF 4: WCF 4.0 Multi-tier Services Development with LINQ toEntities. Packt Publishing. – 2010, – 348 p.64.Douglas Barry. Web Services, Service-Oriented Architectures, and CloudComputing. Morgan Kaufmann, 2nd Edition.

– 2003, – 245 p.65.Eric A. Marks. Service-Oriented Architecture (SOA) Governance for the ServicesDriven Enterprise. Wiley, 1st Edition. – 2008, – 320 p.66.Terry Halpin. Information Modeling and Relational Databases. Morgan Kaufmann,2nd Edition. – 2008, – 976 p.67.Richard W. Scamell, Narayan S. Umanath. Data Modeling and Database Design.Course Technology, 1st Edition. – 2007, – 720 p.68.ЗоЛинКхаинг.Исследованиеианализподходовкпостроениюинформационно-поисковых систем // Радиоэлектроника, электротехника иэнергетика: Семнадцатая Международная научно-техническая конференциястудентов и аспирантов: Тезисы докладов в 4 томах, Т. 2.

– М.: Издательскийдом МЭИ, 2011. C. 368-369.153ПРИЛОЖЕНИЕ 1. ЛИСТИНГ ПРОГРАММНОГО КОДА1) SiteDTO.csusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Web;namespace StrayMan.Models{public class SiteDTO{// идентификация страницыpublic string SiteID { get; set; }// адрес страницы в сети Интернетpublic string Url { get; set; }// Название документаpublic string Title { get; set; }// Описание документаpublic string Description { get; set; }// Тип документаpublic string Type { get; set; }// Ссылка Кэш документаpublic string CacheLink { get; set; }// SES документаpublic float SES { get; set; }}}2) AccountModels.csusingusingusingusingusingusingSystem;System.Collections.Generic;System.ComponentModel.DataAnnotations;System.Globalization;System.Web.Mvc;System.Web.Security;namespace StrayMan.Models{//изменение пароляpublic class ChangePasswordModel{//текущий пароль[Required][DataType(DataType.Password)][Display(Name = "Current password")]public string OldPassword { get; set; }//новый пароль[Required][StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.",MinimumLength = 6)][DataType(DataType.Password)][Display(Name = "New password")]154public string NewPassword { get; set; }// Подтверждения нового пароля[DataType(DataType.Password)][Display(Name = "Confirm new password")][Compare("NewPassword", ErrorMessage = "The new password and confirmation passworddo not match.")]public string ConfirmPassword { get; set; }}// для авторизацииpublic class LogOnModel{// имя пользователя[Required][Display(Name = "User name")]public string UserName { get; set; }// пароль пользователя[Required][DataType(DataType.Password)][Display(Name = "Password")]public string Password { get; set; }// запоминание имя и пароля[Display(Name = "Remember me?")]public bool RememberMe { get; set; }}// для регистрацииpublic class RegisterModel{// имя пользователя[Required][Display(Name = "User name")]public string UserName { get; set; }// Email пользователя[Required][DataType(DataType.EmailAddress)][Display(Name = "Email address")]public string Email { get; set; }// пароль пользователя[Required][StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.",MinimumLength = 6)][DataType(DataType.Password)][Display(Name = "Password")]public string Password { get; set; }// Подтверждения пароля[DataType(DataType.Password)][Display(Name = "Confirm password")][Compare("Password", ErrorMessage = "The password and confirmation password do notmatch.")]public string ConfirmPassword { get; set; }}}3) HomeController.csusing System;using System.Collections.Generic;155usingusingusingusingusingSystem.Linq;System.Web;System.Web.Mvc;StrayMan.Models;StrayMan.DAL;namespace StrayMan.Controllers{public class HomeController : Controller{// для доступа к даннымDataAccess _db = new DataAccess();//для списка результатовList<SiteDTO> results = new List<SiteDTO>();public ActionResult Index(){return View();}//поиск результатовpublic ActionResult Search(string query, int? page){// проверка существования пользователяif (User.Identity.IsAuthenticated){//для получения результатов из прецедентовresults = _db.getResult(query, "htm");ViewBag.query = query;// для добавления прецедента (сохранение)LocalPrecedentEntities _local = new LocalPrecedentEntities();Precedent__case_ Pc = new Precedent__case_{CaseId = _local.Precedent__case_.Count() + 1,Query = query,Username = User.Identity.Name};_local.Precedent__case_.AddObject(Pc);_local.SaveChanges();}else{// для получения результатов из индекса ИПСresults = _db.getResults(query, "htm");ViewBag.query = query;}return View("Search", results);}public ActionResult About(){return View();156}}}4) DataAccess.csusingusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Web;StrayMan.Models;namespace StrayMan.DAL{public class DataAccess{ServerPrecedentManager.PrecedentManagerClient pmanager = newServerPrecedentManager.PrecedentManagerClient();ServerAgentManager.IndexManagerClient imanager = newServerAgentManager.IndexManagerClient();public List<SiteDTO> getResult(string query, string queryType){// Получение результатов из прецедентовvar sResults = pmanager.getResult(query, queryType);List<SiteDTO> results = new List<SiteDTO>();results = (from r in sResultsselect new SiteDTO{CacheLink = r.CacheLink,Description = r.Description,SiteID = r.SiteID,Title = r.Title,Type = r.Type,Url = r.Url,SES = r.SES}).ToList();return results;}public List<SiteDTO> getResults(string query, string queryType){// Получение результатов из индекса ИПСvar sResults = imanager.getResult(query, queryType);List<SiteDTO> results = new List<SiteDTO>();results = (from r in sResultsselect new SiteDTO{CacheLink = r.CacheLink,157Description = r.Description,SiteID = r.SiteID,Title = r.Title,Type = r.Type,Url = r.Url,SES = r.SES}).ToList();return results;}}}5) IFromIndexDB.csusingusingusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;namespace FromIndexDB{// интерфейс работы с шаблоном[ServiceContract]public interface IFromIndexDB{// для получения доступа к странице (сайту) по id[OperationContract]idbSite[] getSitesByIds(string[] sitesIds, string query);// для поиска сайтов[OperationContract]idbSite[] SearSites(string query, string queryType);}// добавление составных типов[DataContract]public class idbSite{[DataMember]public string SiteID { get; set; } // Идентификатор страницы[DataMember]public string Url { get; set; } // Адрес страницы в сети Интернет[DataMember]public string Title { get; set; } // Название документа[DataMember]public string Description { get; set; } // Описание документа[DataMember]public string Type { get; set; } // Тип документа[DataMember]public string CacheLink { get; set; } // Ссылка Кэш документа[DataMember]158public float SES { get; set; } // SES документа[DataMember]public string Keywords { get; set; } // Ключевые слова}}6) FromIndexDB.csusingusingusingusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;SESHelper;namespace FromIndexDB{public class FromIndexDB : IFromIndexDB{StraySearchDBEntities _index = new StraySearchDBEntities();SES ses = new SES();public idbSite[] getSitesByIds(string[] sitesIds, string query){List<idbSite> sites = new List<idbSite>();// проверить все id из идентификатора документовforeach (var id in sitesIds){var site = (from s in _index.Sitewhere s.SiteId == idjoin c in _index.CachePageon s.SiteId equals c.SiteIdselect new idbSite{CacheLink = c.FileName,SiteID = s.SiteId,Title = s.Title,Description = s.Abstract,Url = s.Url,Type = c.Filetype,Keywords = s.Keywords,}).FirstOrDefault();if (site != null) // страница не загружена{// найти SES для полученных результатов и сохранитьdouble D = ses.FindSES(query, site.Keywords.Split(' '));site.SES = (float)D;sites.Add(site);}}return sites.OrderByDescending(x => x.SES).ToArray();}159// Поиск по ключевым словамprivate bool FindByWord(string q, string[] words){bool isContain = false;foreach (string s in words){if (q.ToLower().Contains(s.ToLower())){isContain = true;}}return isContain;}// для поиска сайтовpublic idbSite[] SearSites(string query, string queryType){var _word = query.Split(' ');// слово найти в Заголовок, Аннотация, ключевые слова и получить сайтыvar site = (from s in _index.Site.AsEnumerable()join c in _index.CachePage.AsEnumerable()on s.SiteId equals c.SiteIdwhere c.Filetype.Equals(queryType.ToLower()) && (FindByWord(s.Title,_word) || FindByWord(s.Abstract, _word) || FindByWord(s.Keywords, _word))select new idbSite{CacheLink = c.FileName,SiteID = s.SiteId,Title = s.Title,Description =s.Abstract,Url =s.Url,Keywords = s.Keywords,Type = c.Filetype});var SESsites = new List<idbSite>();// рассчитать SES для Заголовков, Аннотаций, Ключевых словforeach (var s in site){double[] allses = new double[3];double D;allses[0] = ses.FindSES(query, s.Keywords.Split(','));allses[1] = ses.FindSES(query, s.Title.Split(' '));allses[2] = ses.FindSES(query, s.Description.Split(' '));D = 0.2 * allses[2] + 0.4 * allses[0] + 0.4 * allses[1];s.SES = (float)D;SESsites.Add(s);}return SESsites.OrderByDescending(x => x.SES).ToArray();}}}1607) SESHelper.csusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Text;namespace SESHelper{public class SES{public double FindSES(string w, string[] words){// параметры для SESdouble SES = 0;bool f = false;int max, k = 0;// определение массива словstring[] q = w.Split(' ');// сравнить длину запроса с длиной словif (q.Length > words.Length)max = q.Length;elsemax = words.Length;foreach (string s in q){f = false;// для получения SESforeach (string s1 in words){if (((s.ToLower().Contains(s1.ToLower())) ||(s1.ToLower().Contains(s.ToLower()))) && (s.ToLower() != "") && (s1.ToLower() != "")){f = true;break;}}if (f){k = k + 1;}}SES = 100 * ((double)k / max);return Math.Round(SES, 2);}}}8) IFromPrecedentDB.csusing System;using System.Collections.Generic;161usingusingusingusingSystem.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;namespace FromPrecedentDB{// интерфейс работы с шаблоном[ServiceContract]public interface IFromPrecedentDB{// для получения результатов из прецедентов[OperationContract]pdbSite[] returnLocalResult(string query, string queryType);// для добавления нового прецедентаint insertNewPrecedent(string query, pdbSite[] results);}// добавление составных типов[DataContract]public class pdbSite{[DataMember]public string SiteID { get; set; } // Идентификация страницы[DataMember]public string Url { get; set; } // Адрес страницы в сети Интернет[DataMember]public string Title { get; set; } // Название документа[DataMember]public string Description { get; set; } // Описание документа[DataMember]public string Type { get; set; } // Тип документа[DataMember]public string CacheLink { get; set; } // Ссылка Кэш документа[DataMember]public float SES { get; set; } // SES документа[DataMember]public string Keywords { get; set; } // Ключевые слова}}9) FromPrecedentDB.csusingusingusingusingusingusingusingusingSystem;System.Collections.Generic;System.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;SES1Helper;System.Security.Principal;162namespace FromPrecedentDB{public class FromPrecedentDB : IFromPrecedentDB{FromIndexDB.FromIndexDBClient indexDB = new FromIndexDB.FromIndexDBClient();public pdbSite[] returnLocalResult(string query, string queryType){LocalPrecedentEntities _local = new LocalPrecedentEntities();SES1 ses1 = new SES1();//объявление для прецедентаvar precedent = from p in _local.Precedent__case_.AsEnumerable()where ses1.FindSES1(query.ToLower(), p.Query.ToLower()) > 80select p;// проверить, есть ли прецеденты или нетif (precedent.Count() <= 0){var iSites=this.getSitesFromDB(query, queryType); // найти в индексеif (iSites.Count() > 0){// переходим к добавлению нового прецедентаint res = insertNewPrecedent(query, getSitesFromDB(query, queryType));};return iSites;}else{var sites = new List<string>();var pSES = new List<float>();// проверить документы в найденных прецедентахforeach (var p in precedent){var pSite = from r in _local.Resultswhere r.CaseId == p.CaseIdselect r.SiteId;sites.AddRange(pSite);var pS = from s in _local.Resultswhere s.CaseId == p.CaseIdselect s.SES;pSES.AddRange(pS);}int i = _local.Results.Count();int j = 0;foreach (var si in sites){i = i + 1;// для добавления прецедента и сохранения результатовResult pR = new Result{ResultId = i,163SiteId = si,CaseId = _local.Precedent__case_.Count() + 1,SES = pSES.ElementAt(j)};j = j + 1;_local.Results.AddObject(pR);}_local.SaveChanges();var SitesFromIndex = indexDB.getSitesByIds(sites.ToArray(), query);// для форматирования получить страницы (сайты) из индексаvar FormatedSitesFromIndex = (from s in SitesFromIndexselect new pdbSite{CacheLink = s.CacheLink,Description = s.Description,SiteID = s.SiteID,Title = s.Title,Type = s.Type,Url = s.Url,SES = s.SES}).ToArray();return FormatedSitesFromIndex;}}pdbSite[] getSitesFromDB(string query, string siteType){var resultlist = (from s in indexDB.SearSites(query, siteType)select new pdbSite{CacheLink = s.CacheLink,Description = s.Description,SiteID = s.SiteID,Title = s.Title,Type = s.Type,Url = s.Url,SES = s.SES}).ToArray();return resultlist;}public int insertNewPrecedent(string query, pdbSite[] results){LocalPrecedentEntities _pre = new LocalPrecedentEntities();int i = _pre.Results.Count();// для добавления прецедента и сохранения результатовforeach (var si in results){i = i + 1;Result res = new Result{ResultId = i,SiteId = si.SiteID,164CaseId = _pre.Precedent__case_.Count() + 1,SES = si.SES};_pre.Results.AddObject(res);}try{_pre.SaveChanges();return 1;}catch{return 0;}}}}10)usingusingusingusingSES1HelperSystem;System.Collections.Generic;System.Linq;System.Text;namespace SES1Helper{public class SES1{public double FindSES1(string w, string words){double SES = 0;bool f = false;int max, k = 0;string[] q1 = w.Split(' ');string[] q = words.Split(' ');if (q1.Length > q.Length)max = q1.Length;elsemax = q.Length;foreach (string s in q1){f = false;foreach (string s1 in q){if (((s.ToLower().Contains(s1.ToLower())) ||(s1.ToLower().Contains(s.ToLower()))) && (s.ToLower() != "") && (s1.ToLower() != "")){f = true;break;}}if (f)165{k = k + 1;}}SES = 100 * ((double)k / max);return Math.Round(SES, 2);}}}166ПРИЛОЖЕНИЕ 2.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее