Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 11:29   #51
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-первых, почему в "4-м элементе"?
вы про эту структуру?

Вы, наверное имели в виду 3-й элемент (то, что в таблице озаглавлено "Jam ID") ?

во-вторых, ну да, там есть 3-хзначные коды (все меньше 100, но, как видно из цитаты, некоторые коды повторяются).
Так в чём состоит задача? Что Вы хотите получить?



p.s. я бы лично всю вашу таблицу затащил в БД (любую) и потом SQL запросами получал любую необходимую статистику.
но, впрочем, думаю, что LINQ запросами это тоже можно сделать...
Ну так же сколько ошибок например 043 сколько 035 и т.п........, ну какие там встречаются ,да он получается 3им элементом Jam ID
Сергей просто хочу посмотреть на примере LINQ запросов

Последний раз редактировалось Fil_1990; 05.10.2015 в 14:22.
Fil_1990 вне форума Ответить с цитированием
Старый 05.10.2015, 14:26   #52
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

после основного цикла напишите что-то вроде:


Код:
            // подсчитать количество ошибок
            var result = (from s in readText
                             let elements = s.Split(',')
                             where elements.Count()>3
                             select elements[2])
            	.Where(dd => !dd.Contains("Jam") && !dd.Contains("Rt"))
            	.GroupBy(el => el)
            	.Select(one => new { CodeValue = one.Key, Count = one.Count() });
 
            foreach (var val in result) {
                Console.WriteLine("код ошибки {0}\t число ошибок: {1}", val.CodeValue, val.Count);
            }
Вот только не спрашивайте меня, как это работает. я с LINQ на "Вы"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2015, 14:36   #53
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Сергей спасибо, а если пробывать алгоритм , о котором вы говорили он намного сложнее?
Fil_1990 вне форума Ответить с цитированием
Старый 05.10.2015, 14:46   #54
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сергей спасибо, а если пробывать алгоритм , о котором вы говорили он намного сложнее?
нет, не сложнее.
а чем Вас решение с LINQ не устроило?! Оно же вроде работает.
И даже, насколько я могу судить - работает корректно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2015, 15:11   #55
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Конечно Сергей я не спорю оно работает корректно, но оно сложнее для меня, чем представление вашего алгоритма, хотелось бы спросить, можно ли вывести информацию ,какие ошибки были на том или ином узле? т.к на одном узле могут возникать разные ошибки. И всё равно извините хотелось бы чтоб растолковали пример с LINQ пожалуйста, примного благодарен!!!
Fil_1990 вне форума Ответить с цитированием
Старый 05.10.2015, 15:34   #56
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
хотелось бы спросить, можно ли вывести информацию ,какие ошибки были на том или ином узле?
можно. всё можно. если есть информация, её можно анализировать, обрабатывать и выводить результаты анализа в нужном виде.
что для Вас означает фраза - какие ошибки были на узле?
(чем дальше в лес, тем больше я рекомендую Вам перейти к тому, чтобы грузить данные в таблицу и выбирать нужное через SQL запросы!!)


Цитата:
но оно сложнее для меня, чем представление вашего алгоритма,
вот пример решения через класс Dictionary<>

Код:
using System.Collections.Generic; // для Dictionary<,> 

namespace Console1
{
	class Program
	{
	public static void Main(string[] args)
	{
            string[] Codes = new string[6] { "015", "017", "022", "015", "017", "035"} ;
            
            Dictionary<string, int> dic = new Dictionary<string, int>();
            
            foreach(var s in Codes) {
            	if(dic.ContainsKey(s)) {
            		dic[s] = dic[s]+1;
            	}
            	else {
            		dic.Add(s, 1);
            	}
            }


           Console.WriteLine("Словать со счётчиками теперь содержит: ");
           foreach(string ss in dic.Keys) {
                    Console.WriteLine("ID -> {0}  Name -> {1}",ss,dic[ss]);
            } 			

           Console.Write("Press any key to continue . . . ");
           Console.ReadKey(true);
		}
	}
}
Цитата:
И всё равно извините хотелось бы чтоб растолковали пример с LINQ пожалуйста
если кратно то:
выбираем строчки из readText, разбиваем из по наличию запятой, берём те строки, где количество элементов после разбиения больше трёх, потом отбрасываем строки, которые содержат текст "Jam" или "Rt",
оставшиеся строки группируем, для сгруппированных строк запоминаем значение и количество, сколько раз эти значения встретились.
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2015, 15:39   #57
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

(1) 05.10.2015 15:39 от Fil_1990

В этом файле во 2 элементе хранится узел машины 0т 01 до 06, а в третьем возникшая на нём ошибка, хочется посмотреть сколько на узле возникло таких ошибок, сколько таких ,сколько таких???

(2) 05.10.2015 15:41 от Fil_1990
К моему примеру подойдёт dictionary?

потом отбрасываем строки, которые содержат текст "Jam" или "Rt"?

Прокомментируйте построчно пожалуйста
Код:
 var result = (from s in readText
                          let elements = s.Split(',')
                          where elements.Count() > 3
                          select elements[2])
                .Where(dd => !dd.Contains("Jam") && !dd.Contains("Rt"))
                .GroupBy(el => el)
                .Select(one => new { CodeValue = one.Key, Count = one.Count() });

Последний раз редактировалось Serge_Bliznykov; 05.10.2015 в 15:52.
Fil_1990 вне форума Ответить с цитированием
Старый 05.10.2015, 15:55   #58
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
К моему примеру подойдёт dictionary?
можно и через него сделать.

Цитата:
Прокомментируйте построчно пожалуйста
я уже написал!

Код:
 var result = (from s in readText выбираем строчки из readText,
                          let elements = s.Split(',')   разбиваем из по наличию запятой 
                          where elements.Count() > 3 , берём те строки, где количество элементов после разбиения больше трёх
                          select elements[2]) выбираем из разбитой строчки 3-й элемент 
                .Where(dd => !dd.Contains("Jam") && !dd.Contains("Rt")) отбрасываем строки, которые содержат текст "Jam" или "Rt",
                .GroupBy(el => el)  группируем
                .Select(one => new { CodeValue = one.Key, Count = one.Count() }); для сгруппированных строк запоминаем значение и количество, сколько раз эти значения встретились.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2015, 16:09   #59
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Первую часть запроса можно заменить на
Код:
readText.Select(s => s.Split(','))
                .Where(elements => elements.Length > 3)
                .Select(elements => elements[2])
для однообразия.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2015, 16:14   #60
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alex11223, да, конечно!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает вывод результат проверки теста. Utyf Помощь студентам 0 05.05.2013 14:55
C++ при написание слова вывод строчки. olegass Помощь студентам 0 12.02.2013 01:22
3 условия проверки. Оптимизация. artemavd Общие вопросы Delphi 15 22.12.2011 13:40
вывод в файл Dimarik Общие вопросы C/C++ 20 21.03.2011 19:40