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

Как вместо поиска по строкам сделать поиск по столбцам в матрице?

06.05.2014, 14:10. Показов 5535. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем доброго времени суток.
У меня такой вопрос, вот есть задача: Для каждой строки подсчитать количество положительных элементов и записать данные в новый массив.
Посчитал, получилось, ура. Но если я хочу посчитать количество отрицательных элементов в СТОЛБЦЕ, как это мне сделать?
Мне главное чтобы вы показали на моем примере, как вместо строк искать столбцы, ибо у меня с этим уж очень большая проблема...

Заранее спасибо.

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
namespace ConsoleApplication
{
    class Class
    {
        static int[][] Input()
        {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            int n = int.Parse(Console.ReadLine());
            int[][] a = new int[n][];
            for (int i = 0; i < n; ++i)
            {
                a[i] = new int[n];
                for (int j = 0; j < n; ++j)
                {
                    Console.Write("a[{0},{1}]= ", i, j);
                    a[i][j] = int.Parse(Console.ReadLine());
                }
            }
            return a;
        }
 
        static void print(int[][] a)
        {
            for (int i = 0; i < a.Length; i++,Console.WriteLine())
                  for (int j = 0; j < a[i].Length; j++)
                      Console.Write( "{0,5}", a[i][j]);
               
        }
        static void print2(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
                Console.WriteLine("{0,5}", a[i]);
        }
 
        static int Pol(int[] a)
        {
 
           int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                if (0<a[i])
                {
                   ++sum ; 
                }
                return sum;        
     }
            
        }
 
      
 
        static void Main()
        {
            int[][] mass = Input();
            Console.WriteLine("Исходный массив:");
            print(mass);
            int[] rez = new int[mass.Length];
            for (int i = 0; i < mass.Length; ++i)
                rez[i] = Pol(mass[i]); // [COLOR="Red"]почему ругается здесь?[/COLOR]
            Console.WriteLine("Новый массив");   
            print2(rez);
            
     
           
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2014, 14:10
Ответы с готовыми решениями:

Поиск в матрице ненулевых элементов по строкам и столбцам
Здравствуйте помогите решить задачку. Есть квадратная матрица &gt;&gt; N= N = 1 0 0 0 0 0 0 ...

Как не учитывать строковые переменные (string) в матрице, вывести минимальные значения по строкам и столбцам?
как не учитывать строковые переменные (string) в матрице, вывести минимальные значения по строкам и столбцам??? N- может быть в любом...

Среднее арифметическое в матрице по строкам/столбцам
Необходимо посчитать и вывести (можно в этом массиве отдельным столбцом, можно отдельным вектором) среднее арифметическое с m1 по m2...

15
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
06.05.2014, 15:23
Цитата Сообщение от вредина Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
int[][] a = new int[n][]; 
for (int i = 0; i < n; ++i) 
{
 a[i] = new int[n]; 
for (int j = 0; j < n; ++j) 
{ 
Console.Write("a[{0},{1}]= ", i, j); 
a[i][j] = int.Parse(Console.ReadLine()); 
} 
}
Не могу понять гениальность этого куска, м.б. кто объяснит?
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 15:30  [ТС]
Цитата Сообщение от EVG-1980 Посмотреть сообщение
Не могу понять гениальность этого куска, м.б. кто объяснит?
создание массива и его заполнение, вроде все ясно, разве нет?
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
06.05.2014, 15:31
вредина,
Цитата Сообщение от вредина Посмотреть сообщение
Для каждой строки подсчитать количество положительных элементов и записать данные в новый массив.
Во первых у тебя не массив а как я понял матрица?

Во вторых в какой новый массив записать данные?
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 15:38  [ТС]
ой, начинается, да это есть матрица, матрица есть массив с равным количеством строк и столбцов, в данном случае. "и записать данные в новый массив" - заполняет массив, некорректно выразился. Может перейдем к вопросу который задан, а потом, по ходу дела будем высказывать замечания/пожелания?
0
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
06.05.2014, 15:42
вредина,
Вы вместо двумерного массива используете jagged-массив. Это слегка усложняет задачу.
Если использовать LINQ, то решение будет выглядеть наподобие:
C#
1
array.Select(x => x[column_index]).Where(z => z < 0).Count();
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 15:55  [ТС]
зла на вас не хватает... (с)
Вон есть пример, из него надо сделать чтобы он вместо строк считал столбцы - все.
Зачем вообще здесь LINQ ? Да и если я не ошибаюсь, то его лучше всего избегать, в особенности новичкам.
Давайте все же вернемся к нашим пирогам, кто-нить может объяснить эти элементарные вещи?
Можете показать на примере объявления массива через m и n.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static int [,] Input (out int n, out int m)
        {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            n=int.Parse(Console.ReadLine());
            Console.Write("m = ");
            m=int.Parse(Console.ReadLine());
            int [,]a=new int[n, m];
            for (int i = 0; i < n; ++i) 
                for (int j = 0; j < m; ++j)
                {
                    Console.Write("a[{0},{1}]= ", i, j);
                    a[i, j]=int.Parse(Console.ReadLine());
                }
            return a;
        }
Добавлено через 7 минут
Цитата Сообщение от EVG-1980 Посмотреть сообщение
Во вторых в какой новый массив записать данные?
C#
1
2
3
4
5
 static void print2(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
                Console.WriteLine("{0,5}", a[i]);
        }
вот вывод данных в другой массив
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 16:03
Не пойму в чем проблема... Вот проход по массиву 3 на 3. Проход идет по столбцам. Если во внутреннем цикле поменять местами индексы то проход будет по строкам. Используйте.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] Arr = {{1,2,3},{4,5,6},{7,8,9}};
            for (int i = 0; i <= Arr.GetUpperBound(0); i++)
            {
                for (int j = 0; j <= Arr.GetUpperBound(1); j++)
                {
                    int n = Arr[j,i];
                }
            }           
        }
    }
}
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 16:14  [ТС]
ну покажите КАК это сделать на моем примере, я делаю у меня не получается, поэтому лезу на форум и создаю глупые темы...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 static int Pol(int[] a)
        {
 
            int sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                if (0 < a[i])
                {
                    sum += a[i];
                }
            }
            return sum;
        }
как здесь сделать проход по столбцам? Для прохода по строкам я задаю 1 цикл, яснопонятно, а для прохода по столбцам надо задать 2 цикла, первый будет по "j", второй по "i", осталось только написать как это выглядит, я пробовал много вариантов, но все время шарп ругается на меня...
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
06.05.2014, 16:17
Лучший ответ Сообщение было отмечено вредина как решение

Решение

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
using System;
namespace ConsoleApplication
{
    class Class
    {
        static int n;
        static int[,] Input()
        {
            Console.WriteLine("введите размерность массива");
            Console.Write("n = ");
            n = int.Parse(Console.ReadLine());
            int[,] a = new int[n,n];
 
            for (int i = 0; i < n; ++i)
            {
                for (int j = 0; j < n; ++j)
                {
                    Console.Write("a[{0},{1}]= ", i, j);
                    a[i,j] = int.Parse(Console.ReadLine());
                }
            }
            return a;
        }
 
        static void print(int[,] a)
        {
            for (int i = 0; i < n; i++, Console.WriteLine())
                for (int j = 0; j < n; j++, Console.Write(" "))
                    Console.Write("{0,1}", a[i,j]);
 
        }
 
        static void print1(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                Console.WriteLine();
                Console.Write(a[i]);
            }
        }
     
 
       static int[] Pol(int[,] a)
        {
            int [] countplus = new int [n];
            
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (a[i, j] > 0) countplus[i]++;
                }
            }
            return countplus;
        }
 
       static int[] Otr(int[,] a)
       {
           int[] countminus = new int[n];
           for (int i = 0; i < n; i++)
           {
               for (int j = 0; j < n; j++)
               {
                   if (a[j, i] < 0) countminus[j]++;
               }
           }
           return countminus;
       }
 
        static void Main()
        {
            int[,] mass = Input();
            Console.WriteLine("Исходный массив:");
            print(mass);
            int[] rez = Pol(mass);
            int[] rez1 = Otr(mass);
            Console.WriteLine("Положительные строки");
            print1(rez);
            Console.WriteLine("Отрицательные столбцы");
            print1(rez1);
            Console.ReadKey();
        }
    }
}
Держи написано в твоем духе
1
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 16:20  [ТС]
Цитата Сообщение от EVG-1980 Посмотреть сообщение
int[] countminus = new int[n];
такс, а теперь можно объяснить зачем мы создали новый массив n?)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 16:21
Так вы скажите что надо? Я вот не пойму...
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 16:25  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Так вы скажите что надо? Я вот не пойму...
Задание: Для каждого столбца подсчитать сумму отрицательных элементов и записать данные в новый массив.
Сделать это задание по примеру имеющемуся выше - все.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
06.05.2014, 16:27
вредина, в этот массив считается количество отрицательных элементов в столбцах т.е.

countminus[0] - количество отрицательных элементов в 1 столбце
countminus[1] - количество отрицательных элементов в 2 столбце
...
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 16:28
Цитата Сообщение от вредина Посмотреть сообщение
записать данные в новый массив.
Массив какой? Одномерный, двумерный? Блин, ну разве трудно уточнить? Можно же и так, и эдак сделать. ...
1
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
06.05.2014, 16:32  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Массив какой? Одномерный, двумерный? Блин, ну разве трудно уточнить? Можно же и так, и эдак сделать. ...
Есть же пример, где данные выводятся в одномерный массив, все вроде уже решили, спасибо Вам за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2014, 16:32
Помогаю со студенческими работами здесь

Поиск по всем строкам и столбцам в DGV
Помогите пожалуйста сделать поиск по всему datagridview, тот код, что у меня есть, только ищет по первому столбцу: ...

Как в dbgrid сделать сортировку по столбцам и поиск?
Есть таблица в которой есть столбцы по которым возможна сортировка путем переключения radiobuttona с именем столбца.

Как сделать поиск по всем столбцам в таблице?
Написал простую программу, которая выводит таблицию из базы данных dbm, сделал поиск в программе, но этот поиск ведется почему-то только в...

Как просматривать по столбцам и строкам?
Есть функция some_foo(...); В нее передается индекс столбца с которого нужно просматривать матрицу. Нужно найти 1 или -1. Если найден 1...

Как пробежаться не только по строкам массива но и по столбцам?
for var i := 1 to n do begin for var j := 1 to n do Как пробежаться не только по строкам массива но и по столбцам, используя...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru