Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для D'2-ka
12 / 12 / 3
Регистрация: 12.03.2012
Сообщений: 120

Вывести в отсортированном виде список вводимых студентов

13.05.2012, 21:57. Показов 3562. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Помогите разобраться в работе с классами
С начало происходит ввод данных студентов (в данном коде 2 студента). После окончания :
//1) надо вывести колво вводимых студентов(в данном коде 2 студента, хотел в самом начале сделать пункт где надо вводить колво вводимых студентов но не смог, в принципе не обязательно).
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
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication12
{
    class worker
    {
 
        public static int kolvo = 0;
        public static int god = 0;
        public static int den = 0;
        public static int mesyac = 0;
        public static int u4eba = 0;
        public static string nacionalnost;
        public static string name;
        public static string pol;
        worker()
        {
 
            Console.Write("ФИО Студента:");
 
            //for (int i = 0; i < 10; i++)
 
            {
                name = Console.ReadLine();
 
            }
 
            while (true)
            {
                Console.Write("Введите Год рождения (между 1990-1995):");
                god = Convert.ToInt16(Console.ReadLine());
                if (god >= 1996) Console.WriteLine("***** Введенная дата не подходит критериям");
                else
                    if (god <= 1899) Console.WriteLine("***** Введенная дата не подходит критериям");
                    else
                        break;
            }
 
            while (true)
            {
                Console.Write("Введите Месяц рождения (**):");
                mesyac = Convert.ToInt16(Console.ReadLine());
                if (mesyac >= 13) Console.WriteLine("***** Введенная дата не подходит критериям");
                else break;
            }
 
            while (true)
            {
                Console.Write("Введите День рождения (**):");
                den = Convert.ToInt16(Console.ReadLine());
                if (den >= 32) Console.WriteLine("***** Введенная дата не подходит критериям");
                else break;
            }
 
            while (true)
            {
                Console.Write("Введите пол (<..М..> или <..Ж..>):");
                pol = Convert.ToString(Console.ReadLine());
                if (pol == "М")
                {
                    pol = "Мужской";
                    break;
                }
 
 
                if (pol == "Ж")
                {
                    pol = "Женскии";
                    break;
                }
 
                else if ((pol != "М") || (pol != "Ж"))
                {
                    Console.WriteLine("***** <..М..> или <..Ж..>");
                }
            }
 
            while (true)
            {
                Console.Write("Введите национальность:");
                nacionalnost = Convert.ToString(Console.ReadLine());
                break;
            }
 
 
            while (true)
            {
                Console.Write("Год поступления  (между 1996-2011):");
                u4eba = Convert.ToInt16(Console.ReadLine());
                if (u4eba >= 2012) Console.WriteLine("***** Введенная дата не подходит критериям");
                else
                    if (u4eba <= 1995) Console.WriteLine("***** Введенная дата не подходит критериям");
                    else
                        break;
            }
 
 
 
 
 
 
            Console.WriteLine("___________________________________________________________________");
            Console.WriteLine("ФИО студента: {0}\t     Дата рождения: {3}.{2}.{1}", worker.name, worker.god, worker.mesyac, worker.den);
            Console.WriteLine("Пол: {0}     Национальность: {1}     Год поступления : {2}", worker.pol, worker.nacionalnost, worker.u4eba);
            Console.WriteLine("___________________________________________________________________");
            Console.WriteLine();
            Console.WriteLine();
 
        }
 
        public static worker[] wrk1;
        static void Main(string[] args)
        {
 
            wrk1 = new worker[2];
            for (int i = 0; i < 2; i++)
                wrk1[i] = new worker();
 
            {
                Console.WriteLine();
            }
 
/////////////////////////// здесь и начинаются проблемы  
 
            for (int i = 0; i < 2; i++)
                Console.WriteLine("Колво введенных студентов:{0}", name[i]);
            Console.WriteLine("Студент           Дата рождения ");
 
            for (int i = 0; i < 2; i++)
                Console.WriteLine("{0}     {1}.{2}.{3}", worker.name, worker.god, worker.mesyac, worker.den);
 
 
            Console.ReadLine();
        }}
    }



ну хоть кто нибудь помогите )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2012, 21:57
Ответы с готовыми решениями:

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

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

Вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего
Задача следующая: вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего среднего балла

23
 Аватар для D'2-ka
12 / 12 / 3
Регистрация: 12.03.2012
Сообщений: 120
15.05.2012, 00:06  [ТС]
Студворк — интернет-сервис помощи студентам
понимаю , но я хотел бы просто разобраться где я допускал ошибки...
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
15.05.2012, 00:49
Вот класс:
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
using System;
 
class Рабочий
{
    string фамилия = string.Empty;
    string имя = string.Empty;
    string отчество = string.Empty;
    int? год_рождения = null;
    int? год_поступления = null;
    string национальность = string.Empty;
 
    public string Фамилия
    {
        get { return фамилия; }
        set { фамилия = value; }
    }
 
    public string Имя
    {
        get { return имя; }
        set { имя = value; }
    }
 
    public string Отчество
    {
        get { return отчество; }
        set { отчество = value; }
    }
 
    public int Год_рождения
    {
        get { return (int)год_рождения; }
        set
        {
            if ( value >= 1990 && value <= 1995 )
                год_рождения = value;
            else
                throw new IndexOutOfRangeException( "Год рождения не соответствовал условию." );
        }
    }
 
    public int Год_поступления
    {
        get { return (int)год_поступления; }
        set
        {
            if ( value >= 1996 && value <= 2011 )
                год_поступления = value;
            else
                throw new IndexOutOfRangeException( "Год поступления не соответствовал условию." );
        }
    }
 
    public string Национальность
    {
        get { return национальность; }
        set { национальность = value; }
    }
 
    public Рабочий()
    {
    }
 
    public Рабочий( string Фамилия, string Имя, string Отчество, int Год_рождения, int Год_поступления, string Национальность )
    {
        this.фамилия = Фамилия;
        this.имя = Имя;
        this.отчество = Отчество;
 
        if ( Convert.ToInt16( Год_рождения ) >= 1990 && Convert.ToInt16( Год_рождения ) <= 1995 )
            this.год_рождения = Год_рождения;
        else
            throw new IndexOutOfRangeException( "Год рождения не соответствовал условию." );
 
        if ( Convert.ToInt16( Год_поступления ) >= 1996 && Convert.ToInt16( Год_поступления ) <= 2011 )
            this.год_поступления = Год_поступления;
        else
            throw new IndexOutOfRangeException( "Год поступления не соответствовал условию." );
 
        this.национальность = Национальность;
    }
}
Ну и вот код для проверки класса:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main( string[] args )
        {
            Console.Write( "Введите ко-во рабочих которых хотите зарегистрировать: " );
            int size = int.Parse( Console.ReadLine() );
 
            Рабочий[] guys = new Рабочий[size];
 
            for ( int i = 0; i < guys.Length; i++ )
            {
                Console.WriteLine( "Введите через пробел Фамилию, Имя, Отчество, Год рождения,\nГод поступления, Национальность: " );
                string[] param = Console.ReadLine().Split( ' ' );
                guys[i] = new Рабочий( param[0], param[1], param[2], int.Parse( param[3] ), int.Parse( param[4] ), param[5] );
                if ( i == size - 1 )
                    Console.WriteLine( "Ввод окончен." );
            }
 
            Console.WriteLine( "Хотите вывести список рабочих?" );
            Console.WriteLine( "1. Да" );
            Console.WriteLine( "2. Нет" );
            string ans = Console.ReadLine();
 
            if ( ans == "1" )
            {
                foreach ( Рабочий r in guys )
                    Console.WriteLine( "Фамилия: {0}, Имя: {1}, Отчество: {2}\nГод рождения: {3}, Год поступления: {4}\nНациональность: {5}",
                        r.Фамилия, r.Имя, r.Отчество, r.Год_рождения, r.Год_поступления, r.Национальность );
            }
 
            Console.ReadKey();
        }
    }
}

Не по теме:

У меня уже не осталось времени посмотреть ваш код, но завтра гляну и скажу где ошибки.

1
 Аватар для D'2-ka
12 / 12 / 3
Регистрация: 12.03.2012
Сообщений: 120
15.05.2012, 00:54  [ТС]
Большое спасибо !
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
15.05.2012, 13:30
D'2-ka,
Вот твой сокращенный вариант. Все работает
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
 
namespace ConsoleApplication1
{
        class worker
        {
 
            int god = 0;
             string name;
 
            worker()
            {
 
                Console.Write("ФИО Студента:");
                name = Console.ReadLine();
 
                Console.Write("Введите Год рождения (между 1990-1995):");
                god = Convert.ToInt16(Console.ReadLine());
            }
 
           // ПРОЦЕДУРА СОРТИРОВКИ
           // Принимает на вход массив и возвращает тоже массив
            public static worker[] Sort (worker[] mass)
            {
                // массив, который будем заполнять с учетом сортировки.
                worker[] sortMass = new worker[mass.Length];
 
               SortedList sl = new SortedList();
 
               for (int i = 0; i < mass.Length; i++)
                {
                    sl.Add(mass[i].name, Convert.ToString(i)); // запоминаем в списке sl как: имя и номер ячейки в массиве mass, где это имя хранится
                }
 
               ICollection c = sl.Keys;
               // Далее идея такова: В каждой строке sl будет храниться name и номер ячейки массива, где этот name хранится.
                //  Строки будут выводиться с учетом сортировки по name. Там же и номер ячейки в  mass
               //номер этой ячейки Convert.ToUInt16(sl[str])
                int n = 0;
                foreach (string str in c)
               {
                   sortMass[n] = mass[Convert.ToUInt16(sl[str])]; 
                   n++;
               }
                  return sortMass;
           }
 
 
            static void Main(string[] args)
            {
                Console.Write("Введите количество студентов - ");
                int countSt = Convert.ToInt32(Console.ReadLine());
 
                worker[] wrk1 = new worker[countSt];
 
                // заполнение списка
                for (int i = 0; i < wrk1.Length; i++)
                {
                    wrk1[i] = new worker();
                }
 
                // вывод списка до сортировки по имени
                for (int i = 0; i < wrk1.Length; i++)
                    Console.WriteLine("{0}     {1}", wrk1[i].name, wrk1[i].god);
 
                // создаем дополнительный массив, аналогичный wrk1 но хранящий сортированные данные по имени
                worker[] wrk1Sort = new worker[countSt];
                wrk1Sort = Sort(wrk1);
 
                // вывод списка после сортировки по имени
                Console.WriteLine("отсортированный список");
                for (int i = 0; i < wrk1Sort.Length; i++)
                    Console.WriteLine("{0}     {1}", wrk1Sort[i].name, wrk1Sort[i].god);
            }
        }
   }
И еще, убери static в полях типа public static int kolvo = 0 и т.д.
Иначе, после ввода, у тебя во всех элементах массива будут одинаковые, введенные последними данные.
И name не должно совпадать. Иначе при сортировке в процедуре Sort выскочит ошибка.

P.S. Если ты учишься на программиста, то в оформлении программы должен пойти путем как у Дмитрий3241.
Так легче оформлять логику решения, исключать (ловить) ошибки, модифицировать и т.д.
Если программа будет большая то, со временем, ты "утонешь" в ней или вернувшись к ней через 2-3 года сам не поймешь, чего тут наворотил и как ее модифицировать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2012, 13:30

Работа с структурами. Вывести список студентов, имеющих по итогам аттестации только "2"
typedef struct {char name; int group, mark;} STUD; STUD kurs; /информация о студентах. Вывести список студентов, имеющих по итогам...

Вывести список в отсортированном виде
Помогите пож сделать сортировку списка в паскале. Даны 10 человек (ФИО, пол, год рождения). Вывести список в отсортированном виде. ...

Как вывести БД в отсортированном виде ?
Дана БД: https://www.cyberforum.ru/attachment.php?attachmentid=158776&amp;d=1338803516 как сделать так чтобы при выводе информации...

Создать класс, который выведет список деловых контактов в отсортированном виде
Помогите мне пожалуйста! У меня все время выводит ошибку &quot;Ссылка на объект не указывает на экземпляр объекта.&quot;, когда я пытаюсь...

Ввести список студентов и их группу Вывести список студентов заданной группы
Ребят, помогите пожалуйста, ибо в windowsform вообще не шарю и не знаю как его записать, может ли кто-то помочь? Буду очень признателен. ...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru