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

Работа с массивом внутри методов и классов

05.04.2018, 14:49. Показов 698. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два класса, основной - Program и MyArray
В MyArray есть два метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 public int[,] 2Arr(int str, int stolb)
        {
            Random rnd = new Random();
            int[,] array = new int[str, stolb];         
            for (int i = 0; i < str; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    array[i, j] = rnd.Next(1, 100);
                   Console.WriteLine(array[i, j] + "\t");
                }
               Console.WriteLine("\n");
                
            }
            return array;
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public int 2ArrSRE(int[,] array, int str, int stolb)
        {
            int sum = 0, kol = 0, SredAref = 0;
            for (int i = 0; i < str; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    sum += array[i, j];
                    kol++;
                }
            }
            SredAref = sum / kol;
            return SredAref;
В основном классе есть следующий код
C#
1
2
3
4
5
6
7
 Console.Write("Введите количество строк ");
                                int str = Convert.ToInt32(Console.ReadLine());
                                Console.Write("Введите количество стобцов ");
                                int stolb = Convert.ToInt32(Console.ReadLine());
                                Console.WriteLine("Получившийся массив:\n");
                                var f = myArray.2Arr(str, stolb);
                                var SredAref2Mass = myArray.2ArrSRE(f, str, stolb);
Задача в том, чтобы избавиться в методе класса MyArray от Console.WriteLine() при выводе массивами, т.к. этот код потом нужно будет использовать в WinForms (код класса MyArray). И при этом должна остаться возможность передачи массива, который был создать в 2Arr, в другие методы, такие как 2ArrSRE.

Если записывать массив в строку, то потом его можно будет выводить в консоль и в WinForms строку тоже легко вывести, но пропадает возможность передавать массив в другие методы - а это самое важное.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2018, 14:49
Ответы с готовыми решениями:

Работа с массивом классов
Доброго времени суток. Появилась такая проблема: в классе hypergraph находятся два массива классов с которыми необходимо выполнять...

Работа с массивом из разных классов
Приветствую. Вопрос состоит в следующем, имеется Словарь, который должен быть виден в двух других классах со всеми своими элементами. ...

Работа с одномерным массивом с использованием контейнерных классов и алгоритмов библиотеки
вот задача В одномерном массиве из n элементов вычислить: 1) сумму элементов с нечетными индексами 1) сумму элементов между...

6
15 / 15 / 16
Регистрация: 19.07.2017
Сообщений: 61
05.04.2018, 15:10
ArtemRFT, в методе 2Arr убери строки
C#
1
Console.WriteLine(array[i, j] + "\t");
и
C#
1
Console.WriteLine("\n");
а в Main добавь цикл
C#
1
2
3
4
foreach(var item in 2Arr(str,stolb))
{
    Console.WriteLine(item);
}
1
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
05.04.2018, 15:21
Цитата Сообщение от ArtemRFT Посмотреть сообщение
Есть два класса, основной - Program и MyArray
А как на данный момент выглядит класс MyArray?
0
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 9
05.04.2018, 15:38  [ТС]
lemon4er, Получается следующее в MyArray
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
public int[,] 2Arr(int str, int stolb)
        {
            Random rnd = new Random();
            int[,] array = new int[str, stolb];
            for (int i = 0; i < str; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    array[i, j] = rnd.Next(1, 100);
                }
                
                
            }
            return array;
        }
        public int 2ArrSRE(int[,] array, int str, int stolb)
        {
            int sum = 0, kol = 0, SredAref = 0;
            for (int i = 0; i < str; i++)
            {
                for (int j = 0; j < stolb; j++)
                {
                    sum += array[i, j];
                    kol++;
                }
            }
            SredAref = sum / kol;
            return SredAref;
        }
В основном классе

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Console.Write("Введите количество строк ");
                                int str = Convert.ToInt32(Console.ReadLine());
                                Console.Write("Введите количество стобцов ");
                                int stolb = Convert.ToInt32(Console.ReadLine());
                                Console.WriteLine("Получившийся массив:\n");
                                var f = myArray.2Arr(str, stolb);
                                foreach (var item in myArray.2Arr(str, stolb))
                                {
                                    Console.WriteLine(item);
 
                                }
                                var SredAref2Mass = myArray.2ArrSRE(f, str, stolb);
                                Console.WriteLine("Среднее арифметическое = " + SredAref2Mass);
                                Console.WriteLine("После преобразования");
                         
                                }
Результат

Логика неправильна, получается, мы обращаемся к методу 2Arr, и от туда берем только 1 элемент и выводим в консоль через основной класс. А нужно, чтобы массив создался в методе, и в основном классе мы его выводим куда нибудь, и чтобы этот массиву мы могли передавать в другие методы в качестве входных параметров
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
05.04.2018, 15:41
Цитата Сообщение от ArtemRFT Посмотреть сообщение
C#
1
2
var f = myArray.Vivod2merMassiva(str, stolb);
foreach (var item in myArray.Vivod2merMassiva(str, stolb))
Вам не кажется что тут что-то не так?
Может вы хотели написать
C#
1
2
var f = myArray.Vivod2merMassiva(str, stolb);
foreach (var item in f)
?
1
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 9
05.04.2018, 15:57  [ТС]
Someone007, Да, там отсутствует логика)

Добавлено через 13 минут
Someone007,Спасибо большое, всё получилось!
А можете, пожалуйста, подсказать, как в таком случаи красиво массив вывести? (в виде матрицы)
0
15 / 15 / 16
Регистрация: 19.07.2017
Сообщений: 61
05.04.2018, 16:59
Цитата Сообщение от ArtemRFT Посмотреть сообщение
А можете, пожалуйста, подсказать, как в таком случаи красиво массив вывести? (в виде матрицы)
вместо foreach используй
C#
1
2
3
4
5
6
7
8
9
            
for (int i = 0; i < f.GetLength(0); i++)
            {
                for (int j= 0; j <f.GetLength(1); j++)
                {
                    Console.Write(f[i, j]+" ");
                }
                Console.WriteLine();
            }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2018, 16:59
Помогаю со студенческими работами здесь

Работа с внешним массивом внутри функции переданным как параметр Delphi 10.2 на .Net
Delphi 10.2 на .Net Насколько знаю при передачи массива в процедуру/функцию, передаётся её адрес, но не сам массив. type ...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов)
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Создание java классов в коде С++ и вызов Java методов и классов из C++
Здравствуйте! Собственно проблема вот в чем при клмпиляции получаю ошибки Первый этап обработки исключения в &quot;0x00000000&quot; в...

Рефлексия методов с неизвестным массивом параметров
Здравствуйте! Подскажите, как мне передать параметры в getMethod, для выполнения этого метода через invoke, если входящие параметры заранее...

Покритикуйте пару методов работы с массивом
Минимальный элемент k-й строки равен максимальному элементу k-го столбца. class Program { static bool TEST(bool a, int...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru