Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 179
1

Вектор в C# and Сортировка Шелла

26.10.2013, 22:49. Показов 1886. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Задали лабораторную по с#, она вроде легкая, но возникли проблемы во время написания кода.

Задание:
 Комментарий модератора 
Задание набираем самостоятельно и выкладываем текстом в сообщении.
Задания в виде картинок запрещены Правилами.


В с# нет контейнера вектор, потому преподаватель попросил его самому мне написать, но я не представляю как это сделать. Также он попросил, чтобы после считывания данных с файла информация писалась сразу в контейнер, а не в массив, а потом в контейнер. Подскажите пожалуйста советом.

В этой строчке
C#
1
2
// сортировка массива
            vector.Sort((o1, o2) => string.Compare(o1.Name, o2.Name));
преподавателю не понравилось, сортировка, что обычная, а не Шелла и собственно вектор, что и писалось выше.

Сам код:
Я создаю один класс тв и 3 подкласса.

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    /// <summary>
    /// Класс "Телевизионные передачи"
    /// </summary>
    public abstract class TV
    {
        /// <summary>
        /// Название
        /// </summary>
        public string Name { set; get; }
 
        public TV(string _name)
        {
            Name = _name;
        }
 
        /// <summary>
        /// Считать объект из файла
        /// </summary>
        /// <param name="reader">файл на чтение</param>
        public abstract void Read(string line);
 
        /// <summary>
        /// Записать в файл
        /// </summary>
        /// <param name="writer">файл на запись</param>
        public abstract void Write(StreamWriter reader);
    }
 
    /// <summary>
    /// Мыльная опера
    /// </summary>
    public class Milo : TV
    {
        public short SeriesCount { set; get; }
 
        public Milo(short count = -1, string name = null) :
            base(name)
        {
            this.SeriesCount = count;
        }
 
        public override void Write(StreamWriter writer)
        {
            writer.WriteLine("МыльнаяОпера: {0} {1}", Name, SeriesCount);
        }
 
        public override void Read(string line)
        {
            String[] str = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            Name = str[0];
            SeriesCount = short.Parse(str[1]);
        }
    }
 
    /// <summary>
    /// Научно-популярные передачи
    /// </summary>
    public class NaychPopylayr : TV
    {
        public Double Time;
 
        public NaychPopylayr(double prodolz = -1, string name = null) :
            base(name)
        {
            Time = prodolz;
        }
 
        public override void Write(StreamWriter writer)
        {
            writer.WriteLine("Передача: {0} {1}", Name, Time);
        }
 
        public override void Read(string line)
        {
            String[] str = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            Name = str[0];
            Time = double.Parse(str[1]);
        }
    }
 
    /// <summary>
    /// Новостные программы
    /// </summary>
    public class NovosProgr : TV
    {
        public double Time;
 
        public NovosProgr(double VremyaVihoda = -1, string Nazvanie = null) :
            base(Nazvanie)
        {
            Time = VremyaVihoda;
        }
 
        public override void Write(StreamWriter writer)
        {
            writer.WriteLine("Программа: {0} {1}", Name, Time);
        }
 
        public override void Read(string line)
        {
            String[] str = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            Name = str[0];
            Time = double.Parse(str[1]);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите имя входного файла: ");
            string fileName = Console.ReadLine();
 
            if (!File.Exists(fileName))
            {
                Console.WriteLine("Файл {0} не удается открыть", fileName);
                return;
            }
 
            List<TV> vector = new List<TV>();
 
            // чтение из файла
            using (StreamReader reader = new StreamReader(fileName))
            {
                string currentLine = reader.ReadLine();
                string[] parts = currentLine.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                TV obj;
 
                if (string.Compare(parts[0], "МыльнаяОпера:") == 0)
                    obj = new Milo();
                else if (string.Compare(parts[0], "Программа:") == 0)
                    obj = new NovosProgr();
                else
                    obj = new NaychPopylayr();
 
                obj.Read(currentLine.Substring(currentLine.IndexOf(' ') + 1));
                vector.Add(obj);
            }
 
            // сортировка массива
            vector.Sort((o1, o2) => string.Compare(o1.Name, o2.Name));
 
            // запись массива в файл 
            Console.WriteLine("Введите имя файла для записи: ");
            fileName = Console.ReadLine();
 
            using (StreamWriter writer = new StreamWriter(fileName))
            {
                foreach (TV o in vector)
                    o.Write(writer);
            }
 
            Console.ReadKey();
        }
    }
}

Нашёл аналог вектора в интернете - лист
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public class SimpleList<T> {
 
            private T[] innerArray = new T[0];
 
            public void Add(T element) {
                System.Array.Resize<T>(ref innerArray, innerArray.Length + 1);
                innerArray[innerArray.Length - 1] = element;
            }
 
            public void RemoveLast() {
                System.Array.Resize<T>(ref innerArray, innerArray.Length - 1);
            }
 
            public T this[int index] {
                get { return innerArray[index]; }
                set { innerArray[index] = value; }
            }
 
        }
, но как встроить не пойму, боюсь, что сделаю что-то не так.

С вектором, хоть что-то более или менее понятно, а вот с сортировкой - ничего. Помогите пожалуйста.

Работаю в VS Express 2012.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2013, 22:49
Ответы с готовыми решениями:

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком...

Сортировка Шелла и пирамидальная сортировка для символов
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки...

Сортировка Шелла быстрее чем Быстрая сортировка
В универе задали задание построить графики относительно скорости сортировок и размеров массивов....

Сортировка Шелла по убыванию, сортировка массива с файла
В задании нужно чтобы массив был взят из файла или сгенерирован, и упорядочен по возрастанию и...

2
154 / 146 / 20
Регистрация: 12.03.2011
Сообщений: 806
27.10.2013, 00:55 2
Зачем что-то встраивать? http://msdn.microsoft.com/ru-r... 2ey19.aspx
0
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 179
31.10.2013, 05:35  [ТС] 3
Здравствуйте, SergeyS, мне вот и не понятно, как считанные данные сразу перенести в контейнер минуя массив.
0
31.10.2013, 05:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2013, 05:35
Помогаю со студенческими работами здесь

Сортировка методом Шелла и быстрая сортировка
Помогите найти код для функций в виде кусков кода сортировок...

Пирамидальная сортировка и сортировка Шелла
Ребята помогите пожалуйста, я NEWBIE и не могу решить такая задача : Выполнить сортировку по...

Сортировка Шелла и сортировка вставками
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Быстрая сортировка и сортировка Шелла
есть трудности с быстрой сортировкой и сортировкой Шелла также нужен их сравнительный анализ

Сортировка Шелла
Люди помогите! Эта прога сортирует массив из к элементов. Но в подпрограмме и в самой программе...

Сортировка Шелла
Основная идея алгоритма заключается в сортировке элементов массива, отстоящих друг от друга на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru