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

Глобальный объект

06.12.2020, 03:46. Показов 617. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне нужно как то создать глобальный объект. Вот мое задание:
Кликните здесь для просмотра всего текста

Я описал класс матриц, дал ему методы.
И так при запуске программы надо ввести размер нужной нам матрицы, потом высвечивается меню.
В меню есть пункт "Изменить элемент матрицы". т.е. чтобы его изменить нам нужно обратиться к методу, который меняет элемент (я его сделал). НО т.к. мы в другом месте, то он не видит объекта. Как объект сделать глобальным?
Кликните здесь для просмотра всего текста

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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    class Matrix
    {
        private int width; // Количество строк
        private int height; // Количество столбцов
 
        public int[,] mas = new int[100, 100]; // Создаем двойной массив
 
        // Ниже создаем конструктор класса Matrix, в которых обязательны параметры строки, столбцы.
        public Matrix(int width, int height)
        {
            this.width = width;
            this.height = height;
 
        }
 
        // Ниже создаем метод InputALL - он вводит случайные значения во ВСЮ матрицу.
        public void InputALL()
        {
            Random rand = new Random();
            for (int i = 0; i < width; i++)
                for (int j = 0; j < height; j++)
                {
                    mas[i, j] = rand.Next(1, 1000);
                }
        }
 
        // Метод ниже Input - ввод в матрицу конкретного элемента.
        public void Input(int a, int b, int x)
        {
            mas[a - 1, b - 1] = x;
        }
 
        // OutputALL без параметров внутри - вывод ВСЕЙ матрицы.
        public void OutputAll()
        {
            Console.WriteLine("\n-------------------------------");
            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    Console.Write(mas[i, j] + "\t");
                }
                Console.WriteLine("\n");
            }
 
            Console.WriteLine("-------------------------------\n");
        }
 
        // OutputALL с двумя параметрами внутри - вывод подматрицы.
        public void OutputAll(int width, int height)
        {
            Console.WriteLine("\n-------------------------------");
            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    Console.Write(mas[i, j] + "\t");
                }
                Console.WriteLine("\n");
            }
            Console.WriteLine("-------------------------------\n");
        }
 
        // Output - вывод определенного элемента матрицы.
        public void Output(int a, int b)
        {
 
            Console.Write(mas[a - 1, b - 1] + "\n\n");
            Console.WriteLine("-------------------------------");
        }
    }
    class Program
    {
 
        public static void CreateMatrix()
        {
            int x, y;
            Console.Write("Введите количество строк: ");
            x = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите количество столбцов: ");
            y = Convert.ToInt32(Console.ReadLine());
            Matrix matrix1 = new Matrix(x, y);
            matrix1.InputALL();
            matrix1.OutputAll();
        }
 
        public static void OutputMatrix()
        {
            int x, y;
            Console.Write("Введите номер строки: ");
            x = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите номер столбца: ");
            y = Convert.ToInt32(Console.ReadLine());
            matrix1.Output(x, y);
        }
 
        public static void Main(string[] args)
        {
            CreateMatrix();
 
            Menu();
 
          /*  Matrix matrix1 = new Matrix(5, 4); // Создается матрица с параметрами 1. Количество строк, 2. Количество столбцов
            matrix1.InputALL(); // Рандомное заполнение всей матрицы
            matrix1.OutputAll(); // Нет параметров - вывод всей матрицы.
            matrix1.Output(3, 3); // Вывод определенного элемента по ID.(Выбираем строку, а затем столбец)
            matrix1.Input(3, 3, 123); // Ввод определенного элемента по ID. Третье значение - на что заменить
            matrix1.Output(3, 3); // Снова выводим один элемент, чтобы увидеть изменения
            matrix1.OutputAll(); // Посмотрим на изменения всей матрицы
            matrix1.OutputAll(3, 3); // Если мы передаем параметры, то выводим подматрицу 3 на 3.*/
        }
 
        public static void Menu()
        {
 
            int n = 0;
 
            while (n != 4)
            {
                Console.Write("Меню:" +
                    "\n1.Вывод элемента матрицы" +
                    "\n2.Ввод определенного элемента матрицы" +
                    "\n3.Вывести подматрицу" +
                    "\n4.Выход" +
                    "\n>");
 
                try
                {
                    n = Convert.ToInt32(Console.ReadLine());
                }
                catch(System.FormatException)
                {
                    Console.WriteLine("\nВы ввели недопустимый символ!\nВведите число от 1 до 4\n");
                }
 
                if (n == 1)
                {
                    OutputMatrix();
                }
 
                if (n == 2)
                {
                    Console.WriteLine("Ввод определенного элемента матрицы\n");
                }
 
                if (n == 3)
                {
                    Console.WriteLine("Вывести подматрицу\n");
                }
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2020, 03:46
Ответы с готовыми решениями:

Глобальный объект
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Глобальный объект класс
Есть код class Program { static void Main(string args) { Excel.Application xlApp; Excel.Workbook...

Найти объект, ссылающийся на заданный объект
Пишу игру растения против зомби. Дабы централизировать всю логику передвижений и действий юнитов, их реализация не включает в себя...

4
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 7
06.12.2020, 04:04  [ТС]
Мой объект создается как бы в одной области. В функции CreateMatrix()


Мне надо, чтобы объект выходил за пределы этой функции, т.к. в соседней функции он его не видит.
0
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 7
06.12.2020, 04:11  [ТС]
Я нашел решение. Наверное временное, но все же решение, создаю глобальный объект в классе Program и делаю матрицу 100 на 100. Когда пользователь создает матрицу 3 4, то он выписывает уже созданную матрицу от верхнего левого угла 3 на 4.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,139
Записей в блоге: 2
06.12.2020, 13:18
Цитата Сообщение от LonaHa33 Посмотреть сообщение
но все же решение, создаю глобальный объект в классе Program
Это не решение вашей задачи.
В вашей задаче чётко написано: "Описать класс, обеспечивающий представление матрицы...".
Вы этого не выполнили.
И методы класса Program не могут выполнить вашу задачу в принципе.
Вам надо создать свой новый класс и задавать в нём обычные (не статические) члены: методы, поля, свойства.

Добавлено через 7 минут
Цитата Сообщение от LonaHa33 Посмотреть сообщение
Я описал класс матриц, дал ему методы.
Не прочитал полностью ваш код.

Ваши метод CreateMatrix в Program должен вернуть созданную матрицу.
И потом в майн вы можете её использовать:
C#
83
84
85
86
87
88
89
90
91
92
93
94
95
        public static Matrix CreateMatrix()
        {
            int x, y;
            Console.Write("Введите количество строк: ");
            x = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите количество столбцов: ");
            y = Convert.ToInt32(Console.ReadLine());
            Matrix matrix1 = new Matrix(x, y);
            matrix1.InputALL();
            matrix1.OutputAll();
 
            return matrix1;
        }
C#
105
106
107
        public static void Main(string[] args)
        {
            Matrix matrix = CreateMatrix();
0
06.12.2020, 13:28
 Комментарий модератора 
LonaHa33, вы нарушаете правила форума!
Выложите текст задание в пост!
Правила5.18. Запрещено размещать задания и решения в виде картинок (кроме формул и блок-схем) и других файлов с их текстом.

Если не исправите нарушение - тема будет закрыта!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2020, 13:28
Помогаю со студенческими работами здесь

Объект ссылается на объект. Приравнивание объектов
Сегодня понял что видимо мое представление об объекте было в корне не верно. До сих пор считал что если: object a = null; object b = a;...

Глобальный хук активности
Здравствуйте, помогите мне пожалуйста, нужно создать программу(которая в последствии станет подпрограммой(но для данной задачи это не...

Глобальный поиск файла
Всем доброго времени суток. Столкнулся с проблемой поиска файлов на компьютере при помощи System.IO.DirectoryInfo.GetFiles(); При...

Сделать глобальный Dictionary
в программе один класс (Form1) namespace Программа { public partial class Form1 : Form { public Form1(){ ...

Глобальный отлов клавиш
Как собственно реализовать глобальный перехват клавиш??? В инете наткнулся на пример но на 64x он не работает :(


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru