Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58

Чтение выборочной строки

23.04.2018, 20:01. Показов 1253. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пишу курсовую работу и мне нужно прочитать с файла выборочно строки, передать их через List<>, в метод класса LCD, в котором находится массив для этих строк(массив принимает по одной строке).

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                //Метод
                StreamReader file = new StreamReader("Katalog.txt");
                List<LCD> Katalog_LCD = new List<LCD>();
                string line_LCD;
                //line_LCD.Substring(0, line_LCD.IndexOf("Sensor"));
                while ((line_LCD = file.ReadLine()) != null)
                {
                    Katalog_LCD.Add(new LCD(line_LCD));
                }
                foreach (LCD a in Katalog_LCD)
                {
                    
                    Console.WriteLine(a);
                }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2018, 20:01
Ответы с готовыми решениями:

Чтение выборочной информации из txt файла Java
Здравствуйте!Прошу помощи экспертов!Я новичок в Java и пытаюсь решить задачку: Создать текстовый файл Экзамен, в нем поля Фамилия, n1, n2,...

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, &quot;ing&quot;) в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...

Рассчитать характеристики генеральной и выборочной совокупности
Рассчитать характеристики генеральной и выборочной совокупности. Выборка 40%. Дано Х (икс итое) = 1, 2, 3, 4, 5, 6, 7, 8, 9 (стаж работы) и...

7
29 / 31 / 27
Регистрация: 15.11.2017
Сообщений: 121
23.04.2018, 22:41
l_Nort_l, возможно вы имели в виду нечто такое:
C#
1
2
3
4
5
6
7
8
9
10
11
sealed class LCD
{
  private List<string> lines;
 
  public LCD() => lines = new List<string>();
  public LCD(List<string> lines) => this.lines = new List<string>(lines);
  public void InitializeLines(List<string> lines) => this.lines = new List<string>(lines);
 
  public static List<string> ReadSomeLinesFromFile(string path)
    => new List<string>(); // example
}
1
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
24.04.2018, 01:05
Цитата Сообщение от l_Nort_l Посмотреть сообщение
мне нужно прочитать с файла выборочно строки
критерий?
З.Ы. Читать все равно нужно все
0
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
24.04.2018, 11:36  [ТС]
Цитата Сообщение от VIAZNIKOVGM Посмотреть сообщение
l_Nort_l, возможно вы имели в виду нечто такое:
C#
1
2
3
4
5
6
7
8
9
10
11
sealed class LCD
{
  private List<string> lines;
 
  public LCD() => lines = new List<string>();
  public LCD(List<string> lines) => this.lines = new List<string>(lines);
  public void InitializeLines(List<string> lines) => this.lines = new List<string>(lines);
 
  public static List<string> ReadSomeLinesFromFile(string path)
    => new List<string>(); // example
}
Честно сказать не сильно понял Ваш код, но мне кажется, что вы меня не правильно поняли. У меня в принципе готов код, мне просто нужно сделать определенное чтение строки. Ну вот например
C#
1
while ((line_LCD = file.ReadLine()) != null)
Цикл читает все строки до нуля, а мне нужно остановить его в определенный момент или чтобы чтение строк остановилось на определенной строке, символе, слове. Я думал такой код поможет, но он не работает в моей программе.
C#
1
line_LCD.Substring(0, line_LCD.IndexOf("Sensor"));
Так же, ничего не получилось сделать с методом ReadToEnd(). Вчера потратил на поиски очень много времени и так не нашел. Вот надеюсь Вы мне поможете или придется импровизировать.
Задание
Кликните здесь для просмотра всего текста

В консольной версии создать две коллекции List <> для хранения данных о мониторах и заполнить коллекции из файла.
Для того, чтобы при чтении из файла в коллекции различать типы мониторов, можно добавить в файл признак.


Добавлено через 6 минут
Цитата Сообщение от Diamante Посмотреть сообщение
критерий?
З.Ы. Читать все равно нужно все
Да, читать нужно всё, но по порядку. "В консольной версии создать две коллекции List <> для хранения данных о мониторах и заполнить коллекции из файла." Мне нужно в начале прочитать для первого монитора и информацию передать в класс, а потом со вторым монитором проделать тоже самое, только читать уже другую информацию с файла и передавать в другой класс.
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
24.04.2018, 14:42
l_Nort_l, а в чём ваша проблема?
Вы не знаете, как из одного файла парсить объекты двух разных типов?
У вас же в условии написано:
Цитата Сообщение от l_Nort_l Посмотреть сообщение
Для того, чтобы при чтении из файла в коллекции различать типы мониторов, можно добавить в файл признак.
Вот на этот признак и надо ориентироваться при классификации.
0
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
24.04.2018, 14:46  [ТС]
Цитата Сообщение от Fleder Посмотреть сообщение
l_Nort_l, а в чём ваша проблема?
Вы не знаете, как из одного файла парсить объекты двух разных типов?
У вас же в условии написано:
Вот на этот признак и надо ориентироваться при классификации.
Если я написал на форум, значит у меня не получается это сделать и если Вы поняли как это сделать, я был бы признателен, если вы мне объяснили бы. Сейчас я пытаюсь решить свою проблему данным кодом:
C#
1
2
3
4
5
6
7
                while ((line_LCD = file.ReadLine()) != null)
                {
                    if (line_LCD.EndsWith("*"))
                    { Katalog_LCD.Add(new LCD(line_LCD)); }
                    else
                    { Console.WriteLine(); }
                }
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
24.04.2018, 14:53
Цитата Сообщение от l_Nort_l Посмотреть сообщение
я был бы признателен, если вы мне объяснили бы
Вообще, это не сложная задача сама по себе.
Но усложняют её следующие моменты:
  1. Я не вижу весь ваш код. И это похоже на игру "сломанный телефон".
  2. Я не вижу содержимое файла, который вы пытаетесь парсить.
Можете прикрепить свои наработки в прицеп. И файл тоже.
Так будет проще вам помочь.
0
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
24.04.2018, 18:46  [ТС]
Цитата Сообщение от Fleder Посмотреть сообщение
Вообще, это не сложная задача сама по себе.
Но усложняют её следующие моменты:
  1. Я не вижу весь ваш код. И это похоже на игру "сломанный телефон".
  2. Я не вижу содержимое файла, который вы пытаетесь парсить.
Можете прикрепить свои наработки в прицеп. И файл тоже.
Так будет проще вам помочь.
Файл:
Кликните здесь для просмотра всего текста
24MP68VQ-P; * LG; * 24"; * 299 * 1920 x 1080; * IPS; * 4999 *
222; * LG; * 24"; * 299 * 1920 x 1080; * IPS; * 4999 *
VT168N; * ASUS; * 15,6"; * 1366x768; * Резистивный; * 2Gb/no; * 5339
222; * ASUS; * 15,6"; * 1366x768; * Резистивный; * 2Gb/no; * 5339

Код:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using help3;
 
namespace help3
{
    
    public class Katalog
    {
        public string Type { get; set; }
        public string Model { get; set; }
        public string Firm { get; set; }
        public string Diagonal { get; set; }
        public int Tv_tuner { get; set; }
        public string Resolution { get; set; }
        public string Type_matrix { get; set; }
        public string Type_sensor { get; set; } //Sensor
        public string Amount_hdd { get; set; } //Sensor
 
        public virtual int Price()
        {
            int value = 0;
            return value;
        }
    }
        public class LCD : Katalog
        {
            public int value{ get; set; }
 
            public LCD(string l)
            {
                string[] split = l.Split(new Char[] { '*' });
                Model = split[0].Trim();
                Firm = split[1].Trim();
                Diagonal = split[2].Trim();
                Tv_tuner = int.Parse(split[3].Trim());
                Resolution = split[4].Trim();
                Type_matrix = split[5].Trim();
                value = int.Parse(split[6].Trim());
        }
            public override string ToString()
            {
                return String.Format("Модель {0}\nФирма {1}\nДиагональ {2}\nРазрешение {3}\nТип матрицы {4}\nСтоимость {5} гривны\n", Model, Firm, Diagonal, Resolution, Type_matrix, value);
            }
            public override int Price()
            {
                    value = (value + Tv_tuner) - (value * 5 / 100);
                    return value;
            }
    }
        public class Sensor : Katalog
        {
 
        public int value { get; set; }
 
        public Sensor(string l)
        {
            
            string[] split = l.Split(new Char[] { '*' });
            Model = split[0].Trim();
            Firm = split[1].Trim();
            Diagonal = split[2].Trim();
            Resolution = split[3].Trim();
            Type_sensor = split[4].Trim();
            Amount_hdd = split[5].Trim();
            value = int.Parse(split[6].Trim());
        }
        public override string ToString()
        {
            
            return String.Format("Модель {0}\nФирма {1}\nДиагональ {2}\nРазрешение {3}\nOбъем HDD {4}\nТип сенсора {5}\nСтоимость {6} гривны\n", Model, Firm, Diagonal, Resolution, Amount_hdd, Type_sensor, value);
        }
        public override int Price() // 
        {
                value = ((value * 3 / 100) * 12 + value) / 12;
                return value;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            void CreateList()
            {
                //Метод
                StreamReader file = new StreamReader("Katalog.txt");
                List<LCD> Katalog_LCD = new List<LCD>();
                string line_LCD;
                //line_LCD.Substring(0, line_LCD.IndexOf("Sensor"));
                while ((line_LCD = file.ReadLine()) != null)
                {
                    if (line_LCD.EndsWith("*"))
                    { Katalog_LCD.Add(new LCD(line_LCD)); }
                    else
                    { Console.WriteLine(); }
                }
                Katalog_LCD.Add(new LCD(line_LCD));
                foreach (LCD a in Katalog_LCD)
                {
                    
                    Console.WriteLine(a);
                }
                //List<Sensor> Katalog_Sensor = new List<Sensor>();
                ////string line_Sensor = file.ReadToEnd();
 
                //line_LCD.Substring(line_LCD.IndexOf("Sensor"));
                //Katalog_Sensor.Add(new Sensor(line_LCD));
 
                //foreach (Sensor b in Katalog_Sensor)
                //{
                //    //Console.WriteLine(b);
                //}
 
 
 
                //Программа
                LCD L = new LCD(line_LCD);
                Sensor S = new Sensor(line_LCD);
                Console.WriteLine("Какой монитор вы желаете приобрести 1.LCD или 2.Сенсорный?");
                string buy;
                while (true)//Цикл для правильного ввода названия мониторов
                {
                    buy = Console.ReadLine();
                    if (buy == "1" || buy == "2") break;
                    else Console.WriteLine("Пожалуйста введите правильное название");
                }
                switch (buy)
                {
                    case "1":
                        Console.WriteLine("Желаете приопрести ТВ-тюнер всего за 299 гривен и получить скидку 5% на всю сумму покупки?");
                        string tv_tuner = Console.ReadLine();
                        if (tv_tuner == "+")
                        {
                            L.Price();
                            Console.WriteLine("Вы купили LCD монитор и ТВ-тюнер.\nСумма к оплате сo скидкой 5% {0} гривен.", L.value);
 
                        }
                        else if (tv_tuner == "-")
                        {
                            Console.WriteLine("Вы купили LCD монитор.\nСумма к оплате {0} гривен.", L.value);
                        }
                        break;
 
                    case "2":
                        Console.WriteLine("Желаете взять кредит на 12 месяцев?");
                        string kredit = Console.ReadLine();
                        if (kredit == "+")
                        {
                            Console.WriteLine("Вы взяли кредит, суммой {0} гривен, на 12 месяцев, под 3%.", S.value);
                            S.Price();
                            Console.WriteLine("Ежемесячная сумма погашения кредита, составляет {0} гривен.", S.value);
                        }
                        else if (kredit == "-")
                        {
                            Console.WriteLine("Вы купили сенсорный монитор. Сумма к оплате {0} гривен.", S.value);
                        }
                        break;
                }
            }
            CreateList();
 
            Console.ReadLine();
        }
    }
}


Добавлено через 2 часа 48 минут
Проблему решил таким кодом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void CreateList()
            {
                string line;
                StreamReader file = new StreamReader("Katalog.txt");
                List<LCD> Katalog_LCD = new List<LCD>();
                List<Sensor> Katalog_Sensor = new List<Sensor>();
 
                while ((line = file.ReadLine()) != null)
                {
                    if (line.EndsWith("*"))
                    { Katalog_LCD.Add(new LCD(line)); }
                    else
                    { Katalog_Sensor.Add(new Sensor(line)); }
                }
 
                foreach (LCD a in Katalog_LCD)
                {
                    Console.WriteLine(a);
                }
                foreach (Sensor b in Katalog_Sensor)
                {
                    Console.WriteLine(b);
                }
            }
            CreateList();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2018, 18:46
Помогаю со студенческими работами здесь

При выборочной установке, не могу найти C#
Хотел попробовать написать что-нибудь на C#(win7-64) скачал какой то пакет, начал устанавливать, но не могу найти в нём C#, где надо...

Определить квантиль по выборочной функции распределения
Добрый день. Прошу помощи в следующем: Есть выборочная функция распределения Fr для объема выборки n. Распределение нормальное. Как...

Как определить количество перестановок и сравнений в выборочной сортировке
void choicesSort(int* Array, int length_array) { for (int repeat_counter(0); repeat_counter &lt; length_array; repeat_counter++) ...

Как из ячейки автоматически сделать перенос выборочной информации в другую ячейку?
Помогите логисту! При выгрузке файла excel из 1с в одной ячейке размещаются и наименование и артикул и много другой информации....

Как вычислите среднюю цену костюма в выборочной совокупности способом моментов по формуле
нужно вычислите среднюю цену костюма в выборочной сукумпности способом моментов по формуле


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru