Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
1

Создать класс с полями: название песни, исполнитель, год выхода

13.11.2016, 17:52. Просмотров 1048. Ответов 6
Метки нет (Все метки)


Ввести класс с полями 1) название песни 2)исполнитель 3) год выхода. Заполнить массив 5-ю объектами. Сделать поиск: 1) по исполнителю; 2) по году. C#
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2016, 17:52
Ответы с готовыми решениями:

Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания.
Здраствуйте) Нужна помощь, а то незнаю как сделать даное задание! Создать класс КНИГА с такими...

Получить данные из аудио-потока (интернет-радио) - название песни, исполнитель
Всем привет, все никак найти не могу, каким образом выдернуть метаданные из потока, например,...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

Класс с++. Создать класс ЭКЗАМЕН со следующими полями: название предмета, фамилия студента, оценка
Был бы очень рад если помогли б ) Создать класс ЭКЗАМЕН со следующими полями: название предмета,...

6
Злой няш
1949 / 1384 / 508
Регистрация: 05.04.2010
Сообщений: 2,627
13.11.2016, 18:27 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
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
 
namespace ConsoleApplication
{
    public static class Program
    {
        public static void Main()
        {
            var songs = new List<Song>
            {
                new Song { Name = "Song1", Author = "Author1", Year = 1 },
                new Song { Name = "Song2", Author = "Author2", Year = 2 },
                new Song { Name = "Song3", Author = "Author3", Year = 3 },
                new Song { Name = "Song4", Author = "Author4", Year = 4 },
                new Song { Name = "Song5", Author = "Author5", Year = 5 }
            };
 
            var author = "author3";
            Console.Write($"Результат поиска по автору {author}: ");
            Console.WriteLine(string.Join(", ", SearchByAuthor(songs, author)));
 
            var year = 4;
            Console.Write($"Результат поиска по году {year}: ");
            Console.WriteLine(string.Join(", ", SearchByYear(songs, year)));
        }
 
        private static List<Song> SearchByAuthor(List<Song> songs, string author)
        {
            return songs.Where(x => string.Compare(x.Author, author, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase) == 0).ToList();
        }
 
        private static List<Song> SearchByYear(List<Song> songs, int year)
        {
            return songs.Where(x => x.Year == year).ToList();
        }
    }
 
    public class Song
    {
        public string Name { get; set; }
        public string Author { get; set; }
        public int Year { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
    }
}
1
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,094
13.11.2016, 18:35 3
I2um1, скажите, от чего зависит, где(или в Program или в самом классе Song) писать вот эти вспомогательные методы поиска? Я написал в классе Song, это ошибка?

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
using System;
using System.Collections;
 
namespace CyberForum
{
    public class Song
    {
        public string songName { get; set; }
        public string artist { get; set; }
        public int releaseYear { get; set; }
 
        public Song(string songName, string artist, int releaseYear)
        {
            this.songName = songName;
            this.artist = artist;
            this.releaseYear = releaseYear;
        }
 
        public override string ToString()
        {
            return string.Format("Song Name={0}, Artist={1}, Year of Release={2}", songName, artist, releaseYear);
        }
 
        public static Song[] searchByArtist(string artist, ArrayList songs)
        {
            Song[] found = new Song[0];
            foreach (Song song in songs)
            {
                if (song.artist == artist)
                {
                    Array.Resize(ref found, found.Length + 1);
                    found[found.Length - 1] = song;
                }
            }
            return found;
        }
 
        public static Song[] searchByYearOfRelease(int year, ArrayList songs)
        {
            Song[] found = new Song[0];
            foreach (Song song in songs)
            {
                if (song.releaseYear == year)
                {
                    Array.Resize(ref found, found.Length + 1);
                    found[found.Length - 1] = song;
                }
            }
            return found;
        }
    }
 
    class Test
    {
        static void Main(string[] args)
        {
            Song s1 = new Song("Asylum", "Disturbed", 2010);
            Song s2 = new Song("Violence Fetish", "Disturbed", 2000);
            Song s3 = new Song("Switchback", "Celldweller", 2005);
            Song s4 = new Song("Bully", "Shinedown", 2012);
            Song s5 = new Song("Best Song Ever", "Very famous artist", 2000);
 
            ArrayList songs = new ArrayList();
            songs.Add(s1);
            songs.Add(s2);
            songs.Add(s3);
            songs.Add(s4);
            songs.Add(s5);
 
            Console.WriteLine("Ведите исполнителя");
            string artist = Console.ReadLine();
 
            Song[] resultByArtist = Song.searchByArtist(artist, songs);
            foreach (Song song in resultByArtist)
            {
                Console.WriteLine(song);
            }
 
            Console.WriteLine("\nВведите год выпуска");
            int year = Int32.Parse(Console.ReadLine());
            Song[] resultByYear = Song.searchByYearOfRelease(year, songs);
            foreach (Song song in resultByYear)
            {
                Console.WriteLine(song);
            }
 
            Console.ReadKey(true);
        }
    }
}
0
Злой няш
1949 / 1384 / 508
Регистрация: 05.04.2010
Сообщений: 2,627
13.11.2016, 18:42 4
Цитата Сообщение от Artmal Посмотреть сообщение
Я написал в классе Song, это ошибка?
Нет, но это нарушает принцип S в SOLID: https://ru.wikipedia.org/wiki/... ммирование)
1
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,094
13.11.2016, 18:55 5
Впервые почитал про SOLID, теперь буду придерживаться этих принципов в своих программах.

Конкретно в этой программе, как я понял, из-за ее простоты вы поместили эти методы в класс Program. А если, например, программа была побольше и нам бы еще пригодились эти методы где-то еще? Как бы вы поступили?

Предпологаю, можно создать классы что-то вроде ByArtistSongFinder и ByYearSongFinder и поместить эти методы туда.
0
Злой няш
1949 / 1384 / 508
Регистрация: 05.04.2010
Сообщений: 2,627
13.11.2016, 19:05 6
Цитата Сообщение от Artmal Посмотреть сообщение
Предпологаю, можно создать классы что-то вроде ByArtistSongFinder и ByYearSongFinder и поместить эти методы туда.
Ну почти, вроде здесь неплохо описано, чтобы я использовал, только тут про фильмы: http://enterprisecraftsmanship... mentation/
2
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
18.12.2016, 21:47  [ТС] 7
Заполнить массив 5-ю объектами. Сделать поиск: 1) по исполнителю; 2) по году.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2016, 21:47

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

Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда
в общем .надо класс дата полями день, месяц год.теперь мне надо создать класс &quot;Время&quot; з...

Создать класс для представления даты с полями год, месяц, день
Мне нужно создать класс для представления даты с полями год, месяц, день и в случае недопустимых...

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

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени,...


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

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

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