0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 29
1
.NET 4.x

Class Person

18.08.2017, 17:40. Показов 1506. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Еще одна интересная задача попалась. Подскажите как сделать.

Create class Person.
Class Person should consists of
a) two private fields: name and birthYear (the birthday year).(*As a type for this field you may use DataTime type.)
b) two properties for access to these fields (only get)
c) default constructor and constructor with 2 parameters
d) methods:
- Age() - to calculate the age of person
-Input() - to input information about person
-ChangeName() - to change the name of person
-ToString()
-Output() - to output information about person (call ToString())
- operator== (equal by name)
In the method Main() create 6 objects of Person type and input information about them.
Then calculate and write to console the name and Age of each person; Change the name of persons, which Age is less then 16, to "Very Young".
Output information about all persons.
Find and output information about Persons with the same names (use ==)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2017, 17:40
Ответы с готовыми решениями:

класс Person
Реализуйте класс Person, в котором при создании человеку будет присваиваться стандартное имя –...

Класс Person
Помогите пожалуйста. Нужно сделать лабу. Описать базовый класс PERSON (персона) со свойствами: •...

Сериализация Person в JSON
Есть вот такой класс Person public class Person { public int id; public...

Из List<Person> в .txt
Здравствуйте! У меня есть List&lt;Person&gt;, надо записать его элементы в текстовый файл. List&lt;Person&gt;...

12
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,355
Записей в блоге: 2
18.08.2017, 18:03 2
Цитата Сообщение от Ibelieveinyou Посмотреть сообщение
интересная задача попалась
Что-то я прочел и ничего такого интересного в ней не обнаружил... Обычное учебное задание, каких 100500 тут.
По каким критериям вы оценивали ее "интересность"?
0
OwenGlendower
18.08.2017, 18:21
  #3

Не по теме:

Цитата Сообщение от insite2012 Посмотреть сообщение
По каким критериям вы оценивали ее "интересность"? =-O
Возможно по критерию - "интересно, сделают ли задачу за меня?"

0
insite2012
18.08.2017, 18:24
  #4

Не по теме:

OwenGlendower, 100500 :D

0
1009 / 955 / 151
Регистрация: 10.08.2015
Сообщений: 5,113
19.08.2017, 00:25 5
Цитата Сообщение от Ibelieveinyou Посмотреть сообщение
- operator== (equal by name)
Мне кажется или здесь что-о не так?
0
3564 / 2505 / 1174
Регистрация: 14.08.2016
Сообщений: 8,213
19.08.2017, 00:37 6
кажется... перегрузить == так, что при совпадении имен возвращать тру, что смущает то?
0
1009 / 955 / 151
Регистрация: 10.08.2015
Сообщений: 5,113
19.08.2017, 00:44 7
Цитата Сообщение от Diamante Посмотреть сообщение
перегрузить == так, что при совпадении имен возвращать тру
Обычно == возвращает true при равенстве ссылок, его переопределение чревато непредсказуемыми последствиями
0
3564 / 2505 / 1174
Регистрация: 14.08.2016
Сообщений: 8,213
19.08.2017, 01:16 8
ну тут явно задание для первокура, а не коммерческая разработка для МИДов гейропы, просто вот так придумалось им, перегрузка операторов и перегрузка методов, все в кучу, но задание имеет место быть
З.Ы. == для ссылок - стандартное поведение, и мы вольны его переопределить как НАМ надо...а накосячить можно и в 2+2
0
1009 / 955 / 151
Регистрация: 10.08.2015
Сообщений: 5,113
19.08.2017, 03:48 9
Цитата Сообщение от Ibelieveinyou Посмотреть сообщение
Find and output information about Persons with the same names (use ==)
Вот здесь нужна рекурсивная функция, которая принимает список персон и возвращает список имен и количеств людей с этими именами...
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 29
19.08.2017, 20:23  [ТС] 10
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Возможно по критерию - "интересно, сделают ли задачу за меня?"
Да нет. Я сделал ее. просто интеретно правильно и как еще можно сделать...

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
using System;
 
namespace prog4
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] persons = new Person[6];
            Console.WriteLine("Enter information about person");
 
            for (int i = 0; i < 6; i++)
            {
                Person p = new Person();
                persons[i] = p;
                Console.WriteLine("\n Person {0}.", (i+1));
                persons[i] = persons[i].Input();
            }
 
            Console.WriteLine("\n Information about age");
            foreach (Person person in persons)
            {
                int age;
                age=person.Age();
                Console.WriteLine("name - {0},\t age - {1}", person.Name, age);
            }
 
            Console.WriteLine("\n Output");
            foreach (Person person in persons)
            {
                int age;
                age = person.Age();
                if (age < 16)
                {
                    person.ChangeName();
                }
                person.Output();
            }           
            Console.WriteLine("\n  Persons with the same names");
            for (int i =0; i<6; i++)
            {
                for (int j = i+1; j<6; j++)
                {
                    if (persons[i]==persons[j])
                    {
                        Console.Write("Person {0}. - ", (i+1));
                        persons[i].Output();
                        Console.Write("Person {0}. - ", j);
                        persons[j].Output();
                        Console.WriteLine();
                    }
                }
            }
 
        }
    }
    class Person
    {                               //quest a (two private fields)
        private string _name;            
        private int _birthYear;
                                    //quest b (two properties)
        public string Name         
        {
            get { return _name; }
        }
        public int BirthYear
        {
            get { return _birthYear; }
        }
        //quest c (default constructor and constructor with 2 parameters )
        public Person()
        {
 
        }
       public Person(string name, int birthYear)
        {
            _name = name;
            _birthYear = birthYear;
        }
        //quest d (methods)
        public int Age()
        {
            int age = 2017 - _birthYear;
            return age;
        }
        public Person Input()
        {
            string name;
            int birthYear;
  
            Console.Write(" name - ");
            name = Console.ReadLine();
            Console.Write(" year - ");
            while (!Int32.TryParse(Console.ReadLine(), out birthYear))
            {
                Console.Write("Error, year is not correct ");
                Console.Write("\n year - ");
            }
 
            return new Person(name, birthYear);
        }
        public string ChangeName()
        {
            this._name = "Very Young";            
            return this._name;
        }
        public override string ToString()
        {
            return "name - " + _name + ",\t \t the birthday year - " + _birthYear.ToString();
        }
        public void Output()
        {
            Console.WriteLine(ToString());
        }
        public static bool operator ==(Person first, Person second)
        {
 
            return first._name == second._name;
        }
        public static bool operator !=(Person first, Person second)
        {
            return !(first == second);
        }
    }
}
0
1009 / 955 / 151
Регистрация: 10.08.2015
Сообщений: 5,113
19.08.2017, 20:51 11
Цитата Сообщение от Ibelieveinyou Посмотреть сообщение
просто интеретно правильно
Обрати внимание. что компилятор предупреждает тебя, что ты не переопределил методы Equals и GetHashCode.Это говорит о том что ты не правильно организовал механизм сравнения, т.е. задание у тебя было некорректное
Ты забыл Console.ReadLine
Возраст у тебя считается неправильно
Информация о персонах у тебя повторяется
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 29
19.08.2017, 23:01  [ТС] 12
Цитата Сообщение от vlisp Посмотреть сообщение
Информация о персонах у тебя повторяется
Спасибо. Исправлю!)
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 29
24.08.2017, 15:31  [ТС] 13
Есть задание. вродебы сделал, но неуверен что все правильно. Возможно можно чтото изменить или переписать, упростить...?

Create class Person.
Class Person should consists of
a) two private fields: name and birthYear (the birthday year). (*As a type for this field you may use DataTime type.)
b) two properties for access to these fields (only get)
c) default constructor and constructor with 2 parameters
d) methods:
- Age() - to calculate the age of person
-Input() - to input information about person
-ChangeName() - to change the name of person
-ToString()
-Output() - to output information about person (call ToString())
- operator== (equal by name)
In the method Main() create 6 objects of Person type and input information about them. Then calculate and write to console the name and Age of each person; Change the name of persons, which Age is less then 16, to "Very Young".
Output information about all persons.
Find and output information about Persons with the same names (use ==)




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
using System;
 
namespace HomeWork4
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] persons = new Person[6];
            Console.WriteLine("Enter information about person");
 
            for (int i = 0; i < 6; i++)
            {
                Person p = new Person();
                persons[i] = p;
                Console.WriteLine("\n Person {0}.", (i + 1));
                persons[i] = persons[i].Input();
            }
 
            Console.WriteLine("\n Information about age");
            foreach (Person person in persons)
            {
                int age;
                age = person.Age();
                Console.WriteLine("name - {0},\t age - {1}", person.Name, age);
            }
 
            Console.WriteLine("\n Output");
            foreach (Person person in persons)
            {
                int age;
                age = person.Age();
                if (age < 16)
                {
                    person.ChangeName();
                }
                person.Output();
            }
            Console.WriteLine("\n  Persons with the same names");
            for (int i = 0; i < 6; i++)
            {
                for (int j = i + 1; j < 6; j++)
                {
                    if (persons[i] == persons[j])
                    {
                        Console.Write("Person {0}. - ", (i + 1));
                        persons[i].Output();
                        Console.Write("Person {0}. - ", j);
                        persons[j].Output();
                        Console.WriteLine();
                    }
                }
            }
 
        }
    }
    class Person
    {                               
        private string _name;
        private int _birthYear;
       
        public string Name
        {
            get { return _name; }
        }
        public int BirthYear
        {
            get { return _birthYear; }
        }
        
        public Person()
        {
 
        }
        public Person(string name, int birthYear)
        {
            _name = name;
            _birthYear = birthYear;
        }
        
        public int Age()
        {
            int age = 2017 - _birthYear;
            return age;
        }
        public Person Input()
        {
            string name;
            int birthYear;
 
            Console.Write(" name - ");
            name = Console.ReadLine();
            Console.Write(" year - ");
            while (!Int32.TryParse(Console.ReadLine(), out birthYear))
            {
                Console.Write("Error, year is not correct ");
                Console.Write("\n year - ");
            }
 
            return new Person(name, birthYear);
        }
        public string ChangeName()
        {
            this._name = "Very Young";
            return this._name;
        }
        public override string ToString()
        {
            return "name - " + _name + ",\t \t the birthday year - " + _birthYear.ToString();
        }
        public void Output()
        {
            Console.WriteLine(ToString());
        }
        public static bool operator ==(Person first, Person second)
        {
 
            return first._name == second._name;
        }
        public static bool operator !=(Person first, Person second)
        {
            return !(first == second);
 
            
        }
    }
}
0
24.08.2017, 15:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2017, 15:31
Помогаю со студенческими работами здесь

Разработать класс Person
Разработать класс Person, который содержит соответствующие члены для хранения: имени, возраста,...

Ошибки в классе Person
Здравствуйте. Столкнулся с данными проблемами, не могли мне помочь. Заранее спасибо! Persona.Age&quot;:...

List<Person> и AddRange
Как изменить следующий код, чтобы заработал ?.. using System; using System.Collections.Generic;...

Дополнения к классу Person
Я был бы крайне блогадарен за любую помощь! На основе класса Person сформировать производный...


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

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

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