Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89

Индексатор с символьным индексом (текст задачи внутри )

09.11.2019, 09:59. Показов 5426. Ответов 3

Студворк — интернет-сервис помощи студентам
Задача
Напишите программу, в которой есть базовый класс с защищённым целочисленным массивом, индексатором (с целочисленным индексом), позволяющим считывать и присваивать значения элементам массива, а также свойство, возвращающее результатом размер размер массива.
На основе базового класса создаётся производный класс, у которого появляется защищённый символьный массив.
Опишите в производном классе версию индексатора с символьным индексом, который возвращает значение элемента символьного массива и позволяет присвоить значение элементу символьного массива.
Для свойства из базового класса необходимо выполнить замещение так, чтобы результатом возвращался целочисленный массив из двух элементов: первый элемент определяет размер целочисленного массива объекта, а второй элемент определяет размер символьного массива объекта.

Проблема
"Опишите в производном классе версию индексатора с символьным индексом"

Я сделал так, но как это использовать, я не понимаю:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public char this[char index]
    {
        get
        {
            return symbols[index];
        }
        set
        {
            symbols[index] = value;
        }
 
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2019, 09:59
Ответы с готовыми решениями:

Создать одномерный индексатор, возвращающий заданный индексом столбец таблицы
Тему можно удалить))) Разобрался сам)) Оказалось просто :)

Метод из интерфейса должен создавать новый массив (код программы и текст задачи внутри)
Текст Задачи Сложности с этим фрагментом: метод из интерфейса должен создавать новый массив Код программы: using System; ...

Передать индекс индексатора в метод на который ссылается экземпляр делегата (Текст задачи и наброски кода внутри)
Текст задачи: 4. Напишите программу, в которой объявляется делегат для работы с методами, имеющими целочисленный аргумент и целочисленный...

3
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
09.11.2019, 12:19
Шрайн, никак. В вашей задаче
индекс (ключ) - char
значение - char
Это бессмысленное сочетание. Были бы разные типы - другое дело.
Вот бестолковый и никому не нужный пример где идет конвертация английских букв в маленьких русские по раскладке клавиатуры.
Кликните здесь для просмотра всего текста
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
using System;
 
class Test
{
    char[] arr;
 
    public Test()
    {
        arr = new char[26]; // кол-во букв в англ. алфавите
    }
 
    public char this[char index]
    {
        get
        {
            return arr[Convert.ToChar(index.ToString().ToLower()) - 'a'];
        }
        set
        {
            arr[Convert.ToChar(index.ToString().ToLower()) - 'a'] = value;
        }
    }
}
 
class Program
{
    static void Main()
    {
        Test test = new Test();
        test['V'] = 'м';
        test['b'] = 'и';
        test['H'] = 'р';
 
        Console.WriteLine("" + test['v'] + test['B'] + test['h']);
 
        Console.ReadKey();
    }
}
1
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89
10.11.2019, 01:54  [ТС]
Цитата Сообщение от Enifan Посмотреть сообщение
Это бессмысленное сочетание. Были бы разные типы - другое дело.
Имело бы смысл такое?:
C#
1
public int this[char index]
0
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
10.11.2019, 10:09
Лучший ответ Сообщение было отмечено Шрайн как решение

Решение

Шрайн, все зависит от текущей задачи, но в целом да, это можно уже использовать.

Пример с витаминами
Кликните здесь для просмотра всего текста
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;
 
// Количество витаминов в милиграммах ежедневно
class Vitamins
{
    int[] arr;
 
    public Vitamins()
    {
        arr = new int[10]; // число взятое случайно
    }
 
    public int this[char index]
    {
        get
        {
            return arr[Convert.ToChar(index.ToString().ToUpper()) - 'A'];
        }
        set
        {
            arr[Convert.ToChar(index.ToString().ToUpper()) - 'A'] = value;
        }
    }
}
 
class Program
{
    static void Main()
    {
        Vitamins vitamin = new Vitamins();
        vitamin['A'] = 3300;
        vitamin['B'] = 2;
        vitamin['C'] = 100;
 
        Console.WriteLine($"Суточная доза витамина A составляет {vitamin['A']} мг");
        Console.WriteLine($"Суточная доза витамина B составляет {vitamin['B']} мг");
        Console.WriteLine($"Суточная доза витамина C составляет {vitamin['C']} мг");
 
        Console.ReadKey();
    }
}


Пример поля Морского боя
Кликните здесь для просмотра всего текста
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
using System;
 
class SeaBattleField // игровое поле морского боя
{
    bool[,] arr;
 
    public SeaBattleField()
    {
        arr = new bool[10, 10]; // размер поля 10х10
        /* расстановка кораблей */
    }
 
    public bool this[char ch, int index]
    {
        get
        {
            return arr[ch - 'a', index - 1];
        }
        set
        {
            arr[ch - 'a', index - 1] = value;
        }
    }
}
 
class Program
{
    static void Main()
    {
        SeaBattleField field = new SeaBattleField();
 
        // Могли писать так
        field[0, 0] = true;  // a1
        field[2, 2] = false; // c3
        field[5, 7] = true;  // g8
 
        // Но пишем так
        field['a', 1] = true;  // попал
        field['c', 3] = false; // мимо
        field['g', 8] = true;  // убил
 
        Console.ReadKey();
    }
}


Иногда полезно перегружать индексаторы.
Насчет char + char вы можете его применять, код то рабочий, вопрос где ?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2019, 10:09
Помогаю со студенческими работами здесь

Решение задачи Коши для системы диффур символьным методом в MathCAD
Доброе время суток. Прошу помочь с символьным решением данной системы. e1=const. Маткад изучаю сам, в основном пользуясь интернет...

DataGrid: удалить строку с индексом 1, если строка с индексом 2 получает фокус
Мне нужно удалить строку с индексом 1 если если строка с индексом 2 получает фокус. делаю так при нажатии на строку с индексом 2: ...

Как присвоить значению X:= F с верхним индексом n и нижним индексом 2 (см. вложение)
Как присвоить значению X:= F с верхним индексом n и нижним индексом 2 (см. вложение)

Подсчитать количество отрицательных элементов с четным индексом и сумму положительных с нечетным индексом
полный ноль в VBA, ничего даже в голову не лезет

Удалить из массива элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k
Дан массив из N элементов и номер элемента в массиве k. Удалите из массива элемент с индексом k, сдвинув влево все элементы, стоящие...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru