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

Дана очередь данных о работниках фирмы

28.03.2013, 17:42. Показов 1469. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана очередь данных о работниках фирмы: ФИО и адрес (улица, дом, квартира). Во второй массив записать только тех из них, которые живут на улице Красной. Вывести их на экран в алфавитном порядке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2013, 17:42
Ответы с готовыми решениями:

Дана очередь данных о работниках фирмы
Дана очередь данных о работниках фирмы: ФИО и адрес (улица, дом, квартира). Во второй массив...

Обработка данных о работниках фирмы
В программе определить массив структур. Каждая структура хранит информацию о работнике фирмы:...

Даны такие сведения о 100 работниках фирмы
Помогите пожалуйста решить 2 задачи 1. Даны такие сведения о 100 работниках фирмы: фамилии...

Создать файл, содержащий сведения о работниках фирмы
Создать файл, содержащий сведения о работниках фирмы. Каждая запись содержит поля: фамилия...

4
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.03.2013, 18:40 2
Очередь в смысле Queue<T>? Или просто любая коллекция?

Добавлено через 1 минуту
С Linq или без?
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.03.2013, 19:12 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
namespace ConsoleApplication1
{
    public class Address
    {
        public Address(string street, uint? houseNumber, uint? appartmentNumber)
        {
            Street = street;
            HouseNumber = houseNumber;
            AppartmentNumber = appartmentNumber;
        }
 
        public Address()
            : this(string.Empty, 0u, 0u)
        {
        }
 
        public string Street { get; set; }
        public uint? HouseNumber { get; set; }
        public uint? AppartmentNumber { get; set; }
 
        public override string ToString()
        {
            return string.Format("Улица:\t{0}\r\nНомер дома:\t{1}\r\nНомер квартиры:\t{2}", Street,
                    HouseNumber == null ? "\b" : HouseNumber.ToString(),
                    AppartmentNumber == null ? "\b" : AppartmentNumber.ToString());
        }
    }
}
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
using System;
 
namespace ConsoleApplication1
{
    /// <summary>Представляет полное имя состоящее из фамилии, имени и отчества</summary>
    public class FullName : IComparable<FullName>
    {
        public FullName()
            : this(string.Empty, string.Empty, string.Empty)
        {
        }
 
        public FullName(string lastName, string firstName)
            : this(lastName, firstName, string.Empty)
        {
        }
 
        public FullName(string lastName, string firstName, string patronymic)
        {
            LastName = lastName;
            FirstName = firstName;
            Patronymic = patronymic;
        }
 
        /// <summary>Имя</summary>
        public string FirstName { get; set; }
        /// <summary>Фамилия</summary>
        public string LastName { get; set; }
        /// <summary>Отчество</summary>
        public string Patronymic { get; set; }
 
        public override string ToString()
        {
            return string.Format("{0} {1} {2}", LastName,
                FirstName == string.Empty ? "\b" : FirstName,
                Patronymic == string.Empty ? "\b" : Patronymic);
        }
 
        public int CompareTo(FullName other)
        {
            int ln = String.Compare(LastName, other.LastName, StringComparison.OrdinalIgnoreCase);
            int fn = String.Compare(FirstName, other.FirstName, StringComparison.OrdinalIgnoreCase);
            int p = String.Compare(Patronymic, other.Patronymic, StringComparison.OrdinalIgnoreCase);
            return ln + fn + p;
        }
 
    }
}
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
using System;
 
namespace ConsoleApplication1
{
    public class Person : IComparable<Person>
    {
        public Person(FullName fullName, Address address)
        {
            FullName = fullName;
            Address = address;
        }
 
        public Person(FullName fullName)
            : this(fullName, null)
        {
        }
 
        public FullName FullName { get; protected set; }
        public Address Address { get; set; }
 
        public override string ToString()
        {
            return string.Format("{0}\r\n{1}", FullName,
                Address.Street == string.Empty ? "\b" : Address.ToString());
        }
 
        public int CompareTo(Person other)
        {
            return FullName.CompareTo(other.FullName);
        }
    }
}
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
using System;
using System.Collections;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Queue<Person> persons = CreateQueueOfPersons();
            List<Person> filteredPersons = new List<Person>();
            foreach (var person in persons)
            {
                if (person.Address.Street.Equals("красная", StringComparison.CurrentCultureIgnoreCase))
                {
                    filteredPersons.Add(person);
                }
            }
            filteredPersons.Sort();
            foreach (Person person in filteredPersons)
            {
                Console.WriteLine(person + "\r\n");
            }
            Console.ReadKey();
        }
 
        private static Queue<Person> CreateQueueOfPersons()
        {
            Person[] personsTemp =
                {
                    new Person(new FullName("Прохоров", "Сергей", "Витальевич"), new Address("Красная", 10u, 122)),
                    new Person(new FullName("Астафьев", "Антон", "Олегович"), new Address("Красная", 4u, 1)),
                    new Person(new FullName("Гуляев", "Максим", "Витальевич"), new Address("Зелёная", 4u, 12)),
                    new Person(new FullName("Черепанов", "Андрей", "Васильевич"), new Address("Зелёная", 9u, 4)),
                    new Person(new FullName("Долгих", "Сергей", "Витальевич"), new Address("Красная", null, null)),
                    new Person(new FullName("Медведев", "Алексей", "Андреевич"), new Address("Оранжевая", 1u, 43)),
                    new Person(new FullName("Афанасьев", "Алексей", "Владимирович"), new Address("Оранжевая", 2u, 10)),
                };
            return new Queue<Person>(personsTemp);
        }
    }
}
Вложения
Тип файла: rar ConsApp_QueueOfPersons.rar (9.1 Кб, 31 просмотров)
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.03.2013, 20:00 4
Кстати, не совсем уверен в этом методе:
C#
1
2
3
4
5
6
7
        public int CompareTo(FullName other)
        {
            int ln = String.Compare(LastName, other.LastName, StringComparison.OrdinalIgnoreCase);
            int fn = String.Compare(FirstName, other.FirstName, StringComparison.OrdinalIgnoreCase);
            int p = String.Compare(Patronymic, other.Patronymic, StringComparison.OrdinalIgnoreCase);
            return ln + fn + p;
        }
Если тут не правильно и кто-то знает как сделать правильно,с удовольствием гляну как.

Добавлено через 50 секунд
Вроде как такой вариант не правильно сортирует:
C#
1
2
                    new Person(new FullName("а", "в", "б"), new Address("Красная", 4u, 1u)),
                    new Person(new FullName("а", "а", "в"), new Address("Красная", 4u, 1u)),
Добавлено через 56 секунд
По идее второй Person должен быть в верху после сортировки, но он внизу.

Добавлено через 18 минут
Вот теперь сортировка заработала как надо.
Метод класса FullName:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        public int CompareTo(FullName other)
        {
            int ln = String.Compare(LastName, other.LastName, StringComparison.OrdinalIgnoreCase);
            int fn = String.Compare(FirstName, other.FirstName, StringComparison.OrdinalIgnoreCase);
            int p = String.Compare(Patronymic, other.Patronymic, StringComparison.OrdinalIgnoreCase);
 
            if (ln == 1)
                return 1;
            if (ln == -1)
                return -1;
 
            if (ln == 0 && fn == 1)
                return 1;
            if (ln == 0 && fn == -1)
                return -1;
 
            if (ln == 0 && fn == 0 && p == 1)
                return 1;
            if (ln == 0 && fn == 0 && p == -1)
                return -1;
 
            return 0;
        }
Добавлено через 2 минуты
Даже лучше так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        public int CompareTo(FullName other)
        {
            int ln = String.Compare(LastName, other.LastName, StringComparison.OrdinalIgnoreCase);
            int fn = String.Compare(FirstName, other.FirstName, StringComparison.OrdinalIgnoreCase);
            int p = String.Compare(Patronymic, other.Patronymic, StringComparison.OrdinalIgnoreCase);
 
            if (ln != 0)
                return ln;
 
            if (ln == 0 && fn != 0)
                return fn;
 
            if (ln == 0 && fn == 0 && p != 0)
                return p;
 
            return 0;
        }
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.03.2013, 08:44 5
даже так
C#
1
2
3
4
5
6
7
8
9
10
        public int CompareTo(FullName other)
        {
            int ln = String.Compare(LastName, other.LastName, StringComparison.OrdinalIgnoreCase);
            if (ln != 0)
                return ln;
            int fn = String.Compare(FirstName, other.FirstName, StringComparison.OrdinalIgnoreCase);
            if (fn != 0)
                return fn;
            return String.Compare(Patronymic, other.Patronymic, StringComparison.OrdinalIgnoreCase);
        }
1
29.03.2013, 08:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2013, 08:44
Помогаю со студенческими работами здесь

Файлы. Создать файл, содержащий сведения о работниках фирмы
Создать файл, содержащий сведения о работниках фирмы. Каждая запись содержит поля: фамилия...

Текстовый файл с данными о работниках фирмы. Фильтрация по стажу работы
25. Имеется техтовый файл, в котоpом хpанятся данные о pаботающих в фиpме: фамилия, имя, отчество,...

Разработать класс коллекций Employee, содержащий в себе информацию о работниках фирмы
Вам поручили разработать класс коллекций Employee, содержащий в себе информацию о работниках фирмы....

Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее арифметическое элементов
Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее...


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

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