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

Как через Индексатор вывести строку, которую выбрал в матрице?

31.03.2018, 00:33. Показов 3064. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    class P
    {
        //поля 
        
        int[,] a;
        int m, n;
        
 
        public P(int m, int n)
        {
            this.m = m;
            this.n = n;
            a = new int[m, n];
 
        }
 
        public P(int n) //Конструктор 
        {
            this.n = n;
            a = new int[n, n];
        }
 
 
        public int I //Свойство - 1 
        {
            get { return n; }
            set { if (value > 0) n = value; }
        }
 
        public int I2 //Свойство - 2 
        {
            get { return m; }
            set { if (value > 0) m = value; }
        }
 
        public int this[int i, int j] //Индексатор (вывести строку которую выбираю)
        {
            get
            {
                return a[i, j];
            }
            set
            {
                a[i, j] = value;
            }
        }
 
        public void Vvod()   //ввод матрицы
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.WriteLine("Заполните массив: A = [{0}][{1}]", i + 1, j + 1);
                    a[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
        }
        public void Vvod(int n1) //ввод 2-матрицы но заполнения рандом
        {
            Random r = new Random();
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    a[i, j] = r.Next(10);
                }
            }
        }
        public void info() // Вывод матрице на экран 
        {
            Console.WriteLine("-------------");
            Console.WriteLine("Ваша матрица:");
 
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("{0,4}", a[i, j]);
                }
                Console.WriteLine("\n");
            }
        }
 
        bool vid()
        {
            bool b = false;
            Console.Write("Какую строку проверить? ");
            int i = int.Parse(Console.ReadLine()) - 1;
            for (int j = 0; j < n - 1; j++)
                if (a[i, j] > a[i, j + 1])
                {
                    b = false;
                    break;
                }
                else b = true;
            return b;
        }
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Введите размерность массива");
                int n = int.Parse(Console.ReadLine());
                P q = new P(n);
                q.Vvod();
                q.info();
                if (q.vid()) Console.WriteLine("Строка упорядочен по возрастанию.");
                else Console.WriteLine("Строка не упорядочен по возрастанию.");
 
                Console.WriteLine("Введите размерность кол-во строк");
                n = int.Parse(Console.ReadLine());
                Console.WriteLine("Введите размерность кол-во столбцов");
 
                int m = int.Parse(Console.ReadLine());
                P q2 = new P(n, m);
                q2.Vvod(n);
                q2.info();
                if (q2.vid()) Console.WriteLine("Строка упорядочен по возрастанию.");
                else Console.WriteLine("Строка не упорядочен по возрастанию.");
 
              [COLOR="Red"]  Console.WriteLine(q2.a);//Вывести через индексатор строку которую я выбираю выше
[/COLOR]
                Console.ReadLine();
            }
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2018, 00:33
Ответы с готовыми решениями:

БД (Access): Как записать в переменную значение ячейки, которую пользователь выбрал в столбце
Здравствуйте! С новым годом)))) А теперь вопрос:): Я привязываю к DataGridView базу данных в которой есть 3 столбца: Название, Цена, и...

Надо чтобы в указанное место в ричедите вводился адрес картинки, которую пользователь в опендиалоге выбрал.
А вот еще вопросик. Надо чтобы в указанное место в ричедите вводился адрес картинки, которую пользователь в опендиалоге выбрал. Код такой ...

Вывести строку из файла которую мне надо!
Как вывести строку из файла которую мне надо. Например: Есть файл.У файле текст ааааа бббббб ввввв гггггг ееееее жжжж ззззз...

5
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
31.03.2018, 01:33
через индексатор ни как, пиши отдельный метод
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
31.03.2018, 10:52
Цитата Сообщение от Diamante Посмотреть сообщение
через индексатор ни как, пиши отдельный метод
Отчего же?
Индексатор:
C#
1
2
3
4
5
6
7
8
9
10
public string this[int i] //Индексатор (вывести строку которую выбираю)
{
    get
    {
        string line = "";
        for (int j = 0; j < n; j++)
            line += a[i, j] + " ";
        return line;
    }
}
Вывод строки:
C#
1
Console.WriteLine(q2[i]); //i - индекс строки
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
31.03.2018, 10:57
kirazyk, добавляем такой индексатор к классу P
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public int[] this[int i]
{
    get
    {
        int size = a.GetLength(1);
        int[] row = new int[size];
        for (int j = 0; j < size; j++)
        {
            row[j] = a[i,j];
        }
        return row;
    }
    set
    {
        int size = value.Length;
        for (int j = 0; j < size; j++)
        {
            a[i,j] = value[j];
        }
    }
}
Затем в Main
C#
1
2
3
4
foreach (int num in p2[m])
{
    Console.WriteLine(num);
}
P.S. Твой код плохо написан.

1. Из-за того что класс Program с методом Main объявлен внутри класса P ты наруашешь инкапсуляцию не замечая этого. Вынеси класс Program из P и поймешь о чем речь.

2. setter у свойств I, I2 написан неверно. Они изменяют поля m,n не меняя размер матрицы. Код иллюстрирующий ошибку
C#
1
2
3
P p = new P(2,2);
p.I = 3;
p.info(); // IndexOutOfRangeException
Нужно или убрать setter-ы или создавать новую матрицу

3. Свойства m,n на самом деле не нужны. Их значения можно получить из самого массива - a.GetLength(0) и a.GetLength(1) соотвественно.

4. Свойства I,I2 лучще переиеновать в M и N.

5. Метод void Vvod(int n1) надо назвать как-то по другому чтобы не было необходимости в аргументе который не используется в теле метода и который нужен только чтобы можно было отличить два метода Vvod друг от друга.
1
0 / 0 / 0
Регистрация: 20.06.2017
Сообщений: 24
31.03.2018, 12:17  [ТС]
Добавил в код в индексатор
C#
1
2
3
4
5
6
7
8
9
10
public string this[int i] //Индексатор (вывести строку которую выбираю)
{
    get
    {
        string line = "";
        for (int j = 0; j < n; j++)
            line += a[i, j] + " ";
        return line;
    }
}
Почему ругается на вывод (на индекс i)
C#
1
Console.WriteLine(q2[i]); //i - индекс строки
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
31.03.2018, 12:23
Лучший ответ Сообщение было отмечено kirazyk как решение

Решение

kirazyk,
Потому что i нужно вводить в методе Main и передавать в vid.
Метод (кстати методы принято именовать с прописной буквы):
C#
1
2
3
4
5
6
7
bool Vid(int i)
{
    for (int j = 0; j < n - 1; j++)
        if (a[i, j] > a[i, j + 1])
            return false;
    return true;
}
И использование в методе Main:
C#
1
2
3
4
5
Console.Write("Какую строку проверить? ");
i = int.Parse(Console.ReadLine()) - 1;
if (q2.Vid(i)) Console.WriteLine("Строка упорядочен по возрастанию.");
else Console.WriteLine("Строка не упорядочен по возрастанию.");
Console.WriteLine(q2[i]);//Вывод строки
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2018, 12:23
Помогаю со студенческими работами здесь

Файл. Найти заданное слово и вывести строку, в которую оно входит
программа по поиску слова в файле и при его нахождении на экран должна высвечиваться вся срочка в которой находиться это слово...

Как в main использовать индексатор, чтобы вывести элементы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

Вывести строку-название цифры на которую заканчивается данное число на русском языке
помогите сделать пжл, MatLab. Дано целое число в диапазоне 10-99. Вывести строку-название цифры на которую заканчивается данное число на...

Как вывести строку в терминал через return?
Проблема такая: нужно вывести в терминал строки через return maina. например можно вернуть return ом число и узнать его вбив echo %? . А...

Как вывести строку через промежуток времени?
Здравствуйте! как вывести строку через промежуток времени? пр: 1) $f = @fopen(&quot;1.txt&quot;, &quot;r&quot;); for($i=0; sleep(1);...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru