Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27

Поиск в коллекции

28.06.2017, 02:52. Показов 7149. Ответов 6

Студворк — интернет-сервис помощи студентам
Как реализовать поиск в коллекции книги , по условию в абстрактном классе Abstr объявить метод Find. Метод Find определяет, находится ли среди объектов искомая книга. Если такая книга имеется, то выводится ее название и порядковый номер объекта. Иначе выводится сообщение, что такой книги нет.
Отдельный вопрос нужно ли искать по конкретному полю(name, titles,quant) или можно просто искать параметр и выводить всю строку? Ну и нужно ли сортировать перед поиском?
Зачем мне интерфейс и абстрактный класс лучше не спрашивайте, так нужно просто по условию Лабы -по условию нужно взять задачу из другой лабы и прикрутить интерфейс и абстрактный класс и чтоб их обоих унаследовал класс Book, ну и + сделать поиск.
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
using System;
using System.Collections.Generic;
 
 
namespace Application1
{
  interface Inter
    {
    void Print();        
    }
    
     /*public class Abstr
    {
    
    }*/
 
   public class Book : /*Abstr,*/ Inter
    {
        public string name{ get; set; }
        public string title{ get; set; }
        public string quant{ get; set; }
 
        
        public Book(string name, string title, string quant)
        {
        this.name = name;
        this.title = title;
        this.quant = quant;
        }
       public static Book New()
        {
        Console.Write(" Автор: ");
        string name = Console.ReadLine();
        Console.Write(" Название книги: ");
        string title = Console.ReadLine();
        Console.Write(" Количество: ");
        string quant = Console.ReadLine();
        return new Book(name, title, quant);
        }       
        
       public void Print () 
        {
            Console.WriteLine (name+" "+title+" "+quant);
        }
    }
        
 
public class MainClass
{
 public static void Main()
        {
     
      List <Book> books= new List<Book>();
        var stop = false;
        do
        {
            Console.WriteLine();
            Console.WriteLine("Меню :");
            Console.WriteLine("1. Добавить книгу");
            Console.WriteLine("2. Поиск книги");
            Console.WriteLine("3. Вывод всего списка");
            Console.WriteLine("0. Выход");
 
            String str=Console.ReadLine();
            switch(str)
            {
                
                case "1":
                books.Add(Book.New());
                    break;
                case "2":
                //место под поиск
                    break;
                case "3":
                foreach (Book book in books) 
            {
                book.Print ();
            }
                    break;      
                case "0":
                    stop = true;
                    break;
                default:
                    Console.WriteLine("Введите значение меню из списка");
                    break;
            }
        }
        while (!stop);
    
        }
 
 }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2017, 02:52
Ответы с готовыми решениями:

Поиск в коллекции
List&lt;LiveBeings&gt; coll = new List&lt;LiveBeings&gt;(); Horse h = new Horse(); Dog d = new Dog(); ...

Поиск в коллекции
Здравствуйте, возникла проблема с поиском в коллекции. Выдает ошибку: &quot; Ошибка CS0176 Доступ к члену &quot;Datess.Year&quot; через ссылку...

Не работает поиск по коллекции
Доброго времени всем. Такая история. Создаю вот такую коллекцию List&lt;int&gt; conects = new List&lt;int&gt;(); В цикле заполняю...

6
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
28.06.2017, 14:37
C#
1
2
3
4
5
6
7
   static public void Find(IEnumerable<Book> books,string name)
        {
           foreach(Book b in books)
            {
                if(b.Name==name) //Значит нашли нужную
            }
        }
Ну вот например так можно найти по имени книги.

Добавлено через 1 минуту
Сортировать то зачем?
1
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
28.06.2017, 15:36
Цитата Сообщение от Galeanes Посмотреть сообщение
Отдельный вопрос нужно ли искать по конкретному полю(name, titles,quant) или можно просто искать параметр и выводить всю строку?
Как душе Вашей угодно будет, так и организовываете поиск:
C#
1
books.Find(x => x.<Имя параметра для поиска>== <Искомое значение>) // для List, с другими коллекциями могут быть отличия
1
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27
28.06.2017, 19:36  [ТС]
Не могу понять для моего меню
C#
1
2
3
4
5
case "2":
Console.Write(" Фамилия искомого автора: ");
string Name = Console.ReadLine();
Abstr.Find(IEnumerable<Book> books, Name);
break;
Пишет "requires 1 type arguments" какой именно аргумент он ждет?
Сам класс с методом :
C#
1
2
3
4
5
6
7
8
9
10
11
public class Abstr
    {
       static public void Find(IEnumerable<Book> books,string Name)
        {
           foreach(Book b in books)
            {
               if(b.name==Name) //Значит нашли нужную
                Console.WriteLine(Name);
            }
        }
    }
Добавлено через 40 минут
А еще как при поиске вывести всю строку в списке? нужно выцепить индекс этой строки?
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
28.06.2017, 20:21
Лучший ответ Сообщение было отмечено Galeanes как решение

Решение

Galeanes, что за странный вид передаче параметров у тебя? IEnumerable<Book> books замени просто на books

Добавлено через 1 минуту
Цитата Сообщение от Galeanes Посмотреть сообщение
А еще как при поиске вывести всю строку в списке? нужно выцепить индекс этой строки?
по Вашему примеру так:
C#
1
2
3
4
if(b.name==Name) //Значит нашли нужную
{
    Console.WriteLine($"{b.name} {b.title} {b.quant}");
}
1
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 27
28.06.2017, 21:15  [ТС]
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
замени просто на books
Блин разобрался, моя ошибка - из-за описки первый раз не вышло и я начал мудрить
"$" -это что? индекс?
у меня компилятор ругается "Unexpected character '$'"
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
28.06.2017, 21:21
Galeanes, это новая возможность нового шарпа, если ругается значит или пользуйтесь старым добрым String.Format или поставьте свежую версию .net для билда проекта
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2017, 21:21
Помогаю со студенческими работами здесь

Поиск по ключу в коллекции
Time t = new Time(3, 15) Каким образом можно выполнить поиск по ключу в коллекции dict элемента с ключом t?

Быстрый поиск по коллекции
Нужно сделать быстрый полнотекстовый поиск (желательно в реальном времени) по полям элементов коллекции. Элементы вида: class Book { ...

Коллекции , поиск LINQ
Всем привет, такое задание , создать класс &quot;вектор&quot; в котором будет 1.int arr 2.capacity 3.len. Добавить его в коллекцию.и осуществить...

Получение новой коллекции путем фильтрации элементов коллекции находящихся в другой коллекции
Всем привет, нуждаюсь в помощи знатоков) Имеется вот такая иерархия если представить в JSON: { teachers: ...

Поиск в коллекции по типу
Уважаемый форумчане, здравствуйте. Нужен ваш совет. Допустим у меня есть класс A и, к примеру, три его наследника: B, C и D. Я создаю...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru