0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52

Чтение данных из структурированного файла

10.01.2013, 10:34. Показов 2633. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть программа которая находит периметр и площадь круга, треугольника, писал все через классы. Но я не могу написать код для того чтобы можно было прочитать информацию из файла вида
krug
7
treyg
4
4
6
pram
5
3

Всё это нужно написать с стандартном классе Program помогите пожалуйста. Заранее спасибо.
Вложения
Тип файла: rar ConsoleApplication1.rar (16.2 Кб, 10 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2013, 10:34
Ответы с готовыми решениями:

Чтение структурированного файла
Здравствуйте, подскажите как лучше прочитать структурированный файл. Спасибо.

Занесение данных в массив из структурированного файла
Всем привет! Столкнулся со следующей проблемой... Есть файл, содержащий текст: 1 2 1 2 3 4 5 5 4 3 2 1 6 7 8 9 4 Требуется...

Запись и чтение данных из структурированного файла, поиск по строкам
Доброго времени суток Всем! Вот такая тема, допустим есть некий файл txt или другой какой то просто не знаю какой лучше Так вот есть...

22
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 11:28
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ну как - то так:
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
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // создаем reader и открываем файл
            StreamReader sr = new StreamReader(@"c:\test.txt");
            // считываем весь текст из файла
            string text = sr.ReadToEnd();
            // закрываем поток
            sr.Close();
 
            //разбиваем строку
            string[] splitStr = text.Split(new Char[] { '\r', '\n' });
            // просматриваем полученный массив строк
            for (int i = 0; i < splitStr.Length; i++)
            {
                if (splitStr[i] == "krug") //ищем определяющее слово
                {
                    Kryg circle = new Kryg(Convert.ToInt32(splitStr[i+1])); //создаем новый объект класса
                }
                else if (splitStr[i] == "treyg") //ищем определяющее слово
                {
                    treyg triangle = new treyg(Convert.ToInt32(splitStr[i + 1]),  //создаем новый объект класса
                                               Convert.ToInt32(splitStr[i + 2]),
                                               Convert.ToInt32(splitStr[i + 3]));
                }
                else if (splitStr[i] == "pram") //ищем определяющее слово
                {
                    pram rectangle = new pram(Convert.ToInt32(splitStr[i + 1]),   //создаем новый объект класса
                                              Convert.ToInt32(splitStr[i + 2]));
                }
            }
 
        }
    }
}
Правда, как видите, никаких проверок на корректность заполнения файла я не писал, поэтому файл нужно внимательнее заполнять, чтобы после krug - следовало только одно численное значение, после treyg - три, после pram - два.
0
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 12:17  [ТС]
Спасибо большое за код. Подскажите пожалуйста почему я не могу вывести то что у меня посчитало в консоль вот таким методом?
C#
1
2
foreach (Figure l in sr)
            Console.WriteLine(l.Vivod());
0
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 12:31
sr - это экземпляр класса StreamReader, этот класс служит для работы с файлами, сам по себе этот экземпляр не содержит никакой информации из файла, а только методы и функции для работы с файлами.
Покажите код, где вы хотите вывести информацию.
0
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 14:26  [ТС]
Извиняйте ввел вас в заблуждения. Я хочу спросить как вывести в консоль то что я посчитал в классах.
C#
1
List<Figure> fg = new List<Figure>();
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
10.01.2013, 14:30
C#
1
2
3
4
foreach(var figure in fg)
{
  Console.WriteLine(figure.Vivod());
}
не?

Добавлено через 2 минуты
А вообще лучше в классе переопределить метод ToString() и тогда так
C#
1
2
3
4
foreach(var figure in fg)
{
  Console.WriteLine(figure.ToString());
}
1
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 14:40  [ТС]
Так будет правильно?
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
class Program
    {
        static void Main(string[] args)
        {
            // создаем reader и открываем файл
            StreamReader sr = new StreamReader("test.txt");
            // считываем весь текст из файла
            string text = sr.ReadToEnd();
            // закрываем поток
            List<Figure> fg = new List<Figure>();
            sr.Close();
 
            //разбиваем строку
            string[] splitStr = text.Split(new Char[] { '\r', '\n' });
            // просматриваем полученный массив строк
            for (int i = 0; i < splitStr.Length; i++)
            {
                if (splitStr[i] == "krug") //ищем определяющее слово
                {
                    Kryg circle = new Kryg(Convert.ToInt32(splitStr[i + 1])); //создаем новый объект класса
                }
                if (splitStr[i] == "treyg") //ищем определяющее слово
                {
                    treyg triangle = new treyg(Convert.ToInt32(splitStr[i + 1]),  //создаем новый объект класса
                                               Convert.ToInt32(splitStr[i + 2]),
                                               Convert.ToInt32(splitStr[i + 3]));
                }
                if (splitStr[i] == "pram") //ищем определяющее слово
                {
                    pram rectangle = new pram(Convert.ToInt32(splitStr[i + 1]),   //создаем новый объект класса
                                              Convert.ToInt32(splitStr[i + 2]));
                }
                
            }
            sr.Close();
        foreach (var Figure in fg)
            Console.WriteLine(Figure.Vivod());
        }
    }
}
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
10.01.2013, 14:46
Возможно, покажите класс Figure
0
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 14:50  [ТС]
Класс Figure абстрактный.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    public abstract class Figure
    {
        public abstract double ploshad();
        public abstract double perimetr();
        public abstract string Vivod();
    }
}
Добавлено через 57 секунд
Класс для круга
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Kryg:Figure
    {
        int k;
        public Kryg(int p)
    {
        k = p;
    }
        public override double perimetr()
    {
        double x = 2 * k * 3.14;
        return x; 
    }
        public override double ploshad()
        {
            double x = 2 * k * k * 3.14;
            return x;
        }
        public override string Vivod()
        {
            return " " + ploshad() + " " + perimetr();
        }
    }
}
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
10.01.2013, 14:57
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C#
1
2
3
4
5
6
7
8
9
    public abstract class Figure
    {
        public abstract double ploshad();
        public abstract double perimetr();
        public override string ToString()
        {
            return " " + ploshad() + " " + perimetr();
        }
    }
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
class Program
    {
        static void Main(string[] args)
        {
            // создаем reader и открываем файл
            StreamReader sr = new StreamReader("test.txt");
            // считываем весь текст из файла
            string text = sr.ReadToEnd();
            // закрываем поток
            List<Figure> fg = new List<Figure>();
            sr.Close();
 
            //разбиваем строку
            string[] splitStr = text.Split(new Char[] { '\r', '\n' });
            // просматриваем полученный массив строк
            for (int i = 0; i < splitStr.Length; i++)
            {
                if (splitStr[i] == "krug") //ищем определяющее слово
                {
                    fg.Add(new Kryg(Convert.ToInt32(splitStr[i + 1]))); //создаем новый объект класса
                }
                if (splitStr[i] == "treyg") //ищем определяющее слово
                {
                    fg.Add(new treyg(Convert.ToInt32(splitStr[i + 1]),  //создаем новый объект класса
                                               Convert.ToInt32(splitStr[i + 2]),
                                               Convert.ToInt32(splitStr[i + 3])));
                }
                if (splitStr[i] == "pram") //ищем определяющее слово
                {
                    fg.Add(new pram(Convert.ToInt32(splitStr[i + 1]),   //создаем новый объект класса
                                              Convert.ToInt32(splitStr[i + 2])));
                }
                
            }
            sr.Close();
        foreach (var Figure in fg)
            Console.WriteLine(Figure.ToString());
        }
    }
}
Попробуйте так, должно работать
1
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 15:04  [ТС]
Спасибо.
C#
1
Console.WriteLine(Figure.ToString());
Почему ToString() а не Vivod()?
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
10.01.2013, 15:07
Так правильнее. Все так делают
2
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 15:14
Цитата Сообщение от da1z Посмотреть сообщение
Так правильнее. Все так делают
это только если ему по заданию не написано придумать свой метод вывода))
0
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 15:17  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
public abstract class Figure
    {
        public abstract double ploshad();
        public abstract double perimetr();
        public abstract  string Tostring()
        {
            return " " + ploshad() + " " + perimetr();
        }
    }
}
Пишет что так делать нельзя.
Кликните здесь для просмотра всего текста
ошибка CS0500: "ConsoleApplication1.Figure.Tostring ()" не может объявить тело, т.к. помечен модификатором abstract
0
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 15:25
Насколько я помню, в абстрактных классах методы только описываются, но не реализуются, поэтому
C#
1
2
3
4
 public abstract  string Tostring()
        {
            return " " + ploshad() + " " + perimetr();
        }
мне кажется неверным. Вы только описываете методы в классе Figure, а реализовывать их нужно в классах наследниках. Поправьте меня если я не прав...
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
10.01.2013, 15:29
Цитата Сообщение от da1z Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
public abstract class Figure 
{ 
  public abstract double ploshad();
  public abstract double perimetr();
  public override string ToString() 
  { 
    return " " + ploshad() + " " + perimetr(); 
  } 
}
я же написал
1
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 16:11  [ТС]
Сейчас задам очень глупый вопрос. Почему когда я ввожу в файл
Kryg
5

Мне ничего не выдает?
0
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 16:31
потому что вы вводите Kryg, а программа ищет krug Я делал именно те слова которые вы привели в примере файла))
0
0 / 0 / 1
Регистрация: 21.02.2012
Сообщений: 52
10.01.2013, 16:41  [ТС]
Это я здесь отпечатался в файле ввожу kryg.
0
174 / 174 / 57
Регистрация: 08.01.2013
Сообщений: 335
10.01.2013, 16:46
krug а не kryg А на будущее, давайте более осмысленные имена переменным
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2013, 16:46
Помогаю со студенческими работами здесь

Чтение структурированного файла
Собственно сабж. Не знаю как реализовать - есть несколько dat файлов, разделённых на блоки по n байт, а структура этих блоков описывается в...

Вывод данных из структурированного файла
помогите как вывести данные из файла в таблицу следующим образом strana | stolica | valuta россия москва рубль и тд... чтоб...

Считывание данных из структурированного файла
Всем добрый день. Возник такой вопрос. Имеется файл, в котором записаны числа примерно так: 0.1 'тра-та-та 0.00125 'тра-та-та 5...

Считывание структурированного файла
Здравствуйте, написал программу с помощью которой должны считываться данные типа Reading из файла mydata.txt в вектор mod_points; Но на...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит файл формата .dat Что нужно сделать? ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru