С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Maxximus
1 / 1 / 2
Регистрация: 21.12.2010
Сообщений: 34
1

Сортировка по алфавиту

26.04.2011, 14:05. Просмотров 938. Ответов 0
Метки нет (Все метки)

Доброго времени суток. У меня проблема: есть массив из 10 структур-студентов (код прилагается), поля в структуре - фамилия, инициалы, номер группы, успеваемость. Нужно отсортировать этот массив по инициалам и по фамилиям по алфавиту (собственно, 2 метода, но очень похожих).
Будьте добры, помогите с методом сортировки по алфавиту
Код
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Structure
{
    public struct Student
    {
        private int num;//номер групи
        private double av;//середній бал
        private string sur, name;//ім'я, прізвище
        public Student(string sur, string name, int num, int[] pr)
        {//конструктор з параметрами
            this.num = num;
            this.sur = sur;
            this.name = name;
            av = 0;//рахуємо середній бал
            for (int i = 0; i < pr.Length; i++)
            {
                av += pr[i];
            }
            av = av / pr.Length;
        }
        public double Av
        {//вл-ть для видачі середнього балу студента
            get { return av; }
        }
        public int Num//для отримання чи встановлення номеру групи
        {
            get { return num; }
            set { num = value; }
        }
        public string Sur
        {//для отримання чи встановлення прізвища
            get { return sur; }
            set { sur = value; }
        }
        public string Name
        {//для отримання чи встановлення імені
            get { return name; }
            set { name = value; }
        }
        public override string ToString()
        {//перевизначимо метод для об єктів даного класу
            return sur + " " + name + " is studying in " + num.ToString() + " group. His average mark is " + Av;
        }
        public string[] Find(Student[] stud)
        {//шукаємо студентів, чий середній бал менший чи рівний 2.0
            string[] found = new string[10];
            for (int i = 0; i < stud.Length; i++)
            {
                if (stud[i].Av <= 2.0)
                {//якщо так, то закидуємо інформацію про цього студента в масив
                    found[i] = stud[i].Sur.ToString() + " " + stud[i].Name.ToString() + " has " + stud[i].Av.ToString() + " average mark";
                }
            }
            return found;
        }
         
    }
    class Program
    {
        static public void SortingNum(Student[] stud)
        {
            for (int i = 0; i < stud.Length - 1; i++)
            {
                int k = i;//сортировка по имени группы
                for (int j = i + 1; j < stud.Length; j++)
                    if (stud[j].Num < stud[k].Num) k = j;//если изменить знак, то будет по убыванию
                int r = stud[k].Num;
                stud[k] = stud[i];
                stud[i].Num = r;
            }
 
        }
        static void Main(string[] args)
        {
            try
            {
                string s, a;
                int num;
                int[] p = new int[5];
                Random rand = new Random();
                Student[] stud = new Student[10];
                for (int i = 0; i < stud.Length; i++)
                {//користувач вводить дані про 10 студентів
                    Console.WriteLine("Enter the second name of " + (i + 1) + "-th the student");
                    s = Console.ReadLine();
                    Console.WriteLine("Enter the first name of the " + (i + 1) + "-th student");
                    a = Console.ReadLine();
                    Console.WriteLine("Enter the number of the group");
                    num = int.Parse(Console.ReadLine());
                    for (int j = 0; j < p.Length; j++)
                    {
                        p[j] = rand.Next(1, 5);
                    }
                    stud[i] = new Student(s, a, num, p);
                }
                SortingNum(stud);//сортуємо масив структур по номеру групи
                for (int z = 0; z < stud.Length; z++)
                {//виводимо відсортований масив на екран
                    Console.WriteLine(stud[z].ToString());
                }
                string[] found = stud[0].Find(stud);
                if (found == null)
                {//якщо немає записів про студентів з балом нижче за 2.0, пишемо це
                    Console.WriteLine("There are no such students");
                }
                else
                {//або ж, якщо є, виводимо інформацію про цих студентів на екран
                    for (int b = 0; b < found.Length; b++)
                    {
                        if (found[b] != null)
                        {
                            Console.WriteLine(found[b]);
                        }
                    }
                }
 
            }
            catch (ApplicationException e)
            { Console.WriteLine(e.Message); }
            Console.ReadKey(true);
        }
    }
}

Array.Sort() не подходит, ибо нужно "руками" + есть разные поля, не все стринговые




Прошу прощения, разобрался сам, тему можно закрывать
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2011, 14:05
Ответы с готовыми решениями:

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

Сортировка по алфавиту
Здравствуйте, я новичок в этом деле. Слезно прошу помощи. Задача, значит,...

Сортировка по алфавиту
Есть массив Мой код выдает их в следующем порядке , а нужно , причем...

Сортировка строк по алфавиту
Не могу понять почему не происходит сортировка по алфавиту все данные вводятся...

Сортировка строк по алфавиту
Есть массив строк(на англ.), нужно его отсортировать по алфавиту. Не интересует...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2011, 14:05

Сортировка Dictionary по алфавиту
Здравствуйте, у меня следующая проблема: имеется объект типа...

Сортировка списка по алфавиту
Добрый день,как нужно сделать сортировку списка по названию товара,с...

Сортировка по алфавиту в List
как в List`е сделать сортировку по алфавиту в поле Фамилия(или Имя)? p.s....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru