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

вывод нескольких номеров столбцов

17.03.2013, 21:19. Показов 3040. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание:Задание такое: Дана целочисленная прямоугольная матрица. Определить:
1. количество столбцов, содержащих хотя бы один нулевой элемент;
2. номер строки, в которой находится самая длинная серия одинаковых элементов.
хотелось бы чтобы она выводила ни один номер столбца ,а несколько если таких столбцов много
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication26
{
    class Program
    {
        static int max = 0;
        private static void Main()
        {
            Random r = new Random();
            int n = 4; //количество массивов в массиве 
            int[][] matrix = new int[n][]; //создаем массив из массивов
            int m = 4; //количество элементов массива
            for (int i = 0; i < n; i++)
            {
                matrix[i] = new int[m]; //создаем массив
                for (int j = 0; j < m; j++) //по очереди создаем одномерные массивы входящие в matrix
                {
                    matrix[i][j] = r.Next(0, 20); //случайным образом его заполняем
 
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(matrix[i][j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
 
            // поиск нулевого элемента
            var countzeroel = matrix.Count(x => x.Any(y => y == 0));
            // поиск столбца
            int b = 0;
            int k = 0;
            for (int j = 0; j < m-1; j++)
            {
                for (int i = 0; i < n; i++)
                {
                    if (matrix[i][j] == matrix[i][j + 1])// OutOfRange
                        b = b + 1;
                    if (max < b)
                    {
                        max = b;
                        k = i + 1;
                    }
                }
            }
            Console.WriteLine("Хотя бы один нулевой элемент " + countzeroel + " строках");
            Console.WriteLine("\n" + "Наибольшее число одинаковых элементов в столбце №{0}", k);
           
 
            Console.ReadLine();
        }
    }
}
Добавлено через 6 часов 34 минуты
да блин что никто не может помочь!!!!!((((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2013, 21:19
Ответы с готовыми решениями:

Вывод нескольких столбцов в Label
Как вывести ровные, равноотдаленные столбцы в Label? Я делаю это так: label1.Text +=...

Составить одномерный массив В из номеров столбцов, все элементы которых отрицательны
Помогите написать программу. Дана матрица А(m,n). Составить одномерный массив В, в котором В(j) (j=1,2,...,N) равно номерам столбцов, все...

Вывод нескольких столбцов в DBLookUpComboBox
Всем привет. Искал реализацию вывода нескольких столбцов в данный компонент, и наткнутся на строчку в мануале: &quot;ListField can...

9
45 / 45 / 9
Регистрация: 19.11.2012
Сообщений: 124
17.03.2013, 21:40
Уточните вопрос.
0
1 / 1 / 1
Регистрация: 11.02.2013
Сообщений: 83
17.03.2013, 22:38  [ТС]
Цитата Сообщение от fictiont Посмотреть сообщение
Уточните вопрос.
программа выводит номер столбца один даже если таких же повторений много!!!!я хотел бы чтоб она выводила все номера столбцов с максимальной последовательностью например вот матрица
1234
1335
3247
и программа должна выдать не 1столбец,а 1,2 и 3 столбец с максимальной последовательностью
0
45 / 45 / 9
Регистрация: 19.11.2012
Сообщений: 124
17.03.2013, 22:56
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int k[n] = 0;
int counter = 0;
.....................
//И этот блок:
if (max < b)
{
       max = b;
       k = i + 1;
}
 
//Меняешь на этот:
if (max <= b)
{
       max = b;
       k[counter] = i+1;
       counter++;
}
И в элементах массива k, которые не равны нулю будут номера требуемых столбцов, как-то так. Работоспособность не проверял.
0
1 / 1 / 1
Регистрация: 11.02.2013
Сообщений: 83
17.03.2013, 23:07  [ТС]
int k[n] = 0;
эту строчку не догнал
k[counter] = i+1;
а тут ошибка
0
45 / 45 / 9
Регистрация: 19.11.2012
Сообщений: 124
17.03.2013, 23:10
Цитата Сообщение от medved2800 Посмотреть сообщение
int k[n] = 0;
эту строчку не догнал
k[counter] = i+1;
а тут ошибка
В этой строчке создаем массив размером по кол-ву столбцов в матрице и инициализируем его нулями, я написал случайно сишным синтаксисиом. Нужно было так

int[] k = new int[n];
for (int i =0; i<n; i++)
k[i] = 0;

какая ошибка?
1
1 / 1 / 1
Регистрация: 11.02.2013
Сообщений: 83
17.03.2013, 23:15  [ТС]
индек вне границ интервала
0
45 / 45 / 9
Регистрация: 19.11.2012
Сообщений: 124
17.03.2013, 23:30
У вас кстати были перепутаны столбцы со строками в алгоритме нахождения столбца. Вот код короче:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
    class Program
    {
        static int max = 0;
        private static void Main()
        {
            Random r = new Random();
            int n = 4; //количество массивов в массиве 
            int[][] matrix = new int[n][]; //создаем массив из массивов
            int m = 4; //количество элементов массива
            for (int i = 0; i < n; i++)
            {
                matrix[i] = new int[m]; //создаем массив
                for (int j = 0; j < m; j++) //по очереди создаем одномерные массивы входящие в matrix
                {
                    matrix[i][j] = r.Next(0, 20); //случайным образом его заполняем
 
                }
            }
            for (int j = 0; j < m; j++)
            {
                for (int i = 0; i < n; i++)
                {
                    Console.Write(matrix[i][j] + "\t");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
 
            // поиск нулевого элемента
            var countzeroel = matrix.Count(y => y.Any(x => x == 0));
            // поиск столбца
            int b = 0;
            int k = 0;
            int[] numbrs = new int[m];
            for (int j = 0; j < m - 1; j++)
            {
                k = 0;
                b = 0;
                for (int i = 0; i < n; i++)
                {
                    if (matrix[i][j] == matrix[i][j + 1])// OutOfRange
                        b = b + 1;
                    if (max < b)
                    {
                        max = b;
                        k = i + 1;
                    }
                }
                numbrs[j] = k;
            }
            Console.WriteLine("Хотя бы один нулевой элемент в " + countzeroel + " строках");
            Console.WriteLine("\n" + "Наибольшее число одинаковых элементов в столбцах №: ");
            for (int i = 0; i < m; i++)
                if (numbrs[i] != 0)
                    Console.WriteLine(numbrs[i] + " ");
 
 
            Console.ReadLine();
        }
    }
}
С вас плюсик
1
1 / 1 / 1
Регистрация: 11.02.2013
Сообщений: 83
17.03.2013, 23:40  [ТС]
Цитата Сообщение от fictiont Посмотреть сообщение
У вас кстати были перепутаны столбцы со строками в алгоритме нахождения столбца. Вот код короче:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
    class Program
    {
        static int max = 0;
        private static void Main()
        {
            Random r = new Random();
            int n = 4; //количество массивов в массиве 
            int[][] matrix = new int[n][]; //создаем массив из массивов
            int m = 4; //количество элементов массива
            for (int i = 0; i < n; i++)
            {
                matrix[i] = new int[m]; //создаем массив
                for (int j = 0; j < m; j++) //по очереди создаем одномерные массивы входящие в matrix
                {
                    matrix[i][j] = r.Next(0, 20); //случайным образом его заполняем
 
                }
            }
            for (int j = 0; j < m; j++)
            {
                for (int i = 0; i < n; i++)
                {
                    Console.Write(matrix[i][j] + "\t");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
 
            // поиск нулевого элемента
            var countzeroel = matrix.Count(y => y.Any(x => x == 0));
            // поиск столбца
            int b = 0;
            int k = 0;
            int[] numbrs = new int[m];
            for (int j = 0; j < m - 1; j++)
            {
                k = 0;
                b = 0;
                for (int i = 0; i < n; i++)
                {
                    if (matrix[i][j] == matrix[i][j + 1])// OutOfRange
                        b = b + 1;
                    if (max < b)
                    {
                        max = b;
                        k = i + 1;
                    }
                }
                numbrs[j] = k;
            }
            Console.WriteLine("Хотя бы один нулевой элемент в " + countzeroel + " строках");
            Console.WriteLine("\n" + "Наибольшее число одинаковых элементов в столбцах №: ");
            for (int i = 0; i < m; i++)
                if (numbrs[i] != 0)
                    Console.WriteLine(numbrs[i] + " ");
 
 
            Console.ReadLine();
        }
    }
}
С вас плюсик
один х...)программа всеравно выдает один столбец когда их 2
0
45 / 45 / 9
Регистрация: 19.11.2012
Сообщений: 124
18.03.2013, 01:04
Так. Извиняюсь, ночь, а тут еще и в коде вашем куча ошибок.
Во 1-х, b изначально нужно инициализировать единицей, иначе если инициализировать нулем, как делали вы, то при последовательности из 3-х цифр, в b будет два.
Во 2-х, вы очень сильно запутали строки и столбцы.
В 3-х, называйте переменные не a, b, k, а по их смысловому содержанию.
В 4-х, ваш алгоритм поиска серии не правильный и если в столбце было к примеру 0011, то в b записывалось 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
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
    class Program
    {
        static int max = 0;
        private static void Main()
        {
            Random r = new Random();
            int n = 3; //количество cтолбцов в массиве 
            int m = 4; //количество строк массива
            int[][] matrix = new int[m][]; //создаем массив из массивов
            int lineCounter = 0; //в этой переменной количество строк с нулями
 
            for (int j = 0; j < m; j++)
            {
                int localMem = 1;
                matrix[j] = new int[n]; //создаем массив
                for (int  i = 0; i < n; i++) //по очереди создаем одномерные массивы входящие в matrix
                {
                    
                    matrix[j][i] = r.Next(0, 3); //случайным образом его заполняем
                    localMem *= matrix[j][i];//ищем строки с нулями
      
                    Console.Write(matrix[j][i] + "\t");  
                }
                if (localMem == 0) //считаем строки с нулями
                    lineCounter++;
                Console.WriteLine();
            }
 
            int colCounter = 1;
            int maxColCounter = 1; //в этой переменной количество элементов в  максимальной серии
            int colMem;
          
 
            for (int i = 0; i < n; i++)  //Циклы поиска количества эл-в максимальной серии.
            {
                colMem = matrix[i][0];
                colCounter = 1;
                for (int j = 0; j < m; j++)
                {
                    if (j < m - 1)
                        if (matrix[j][i] == matrix[j + 1][i]) //ищем повторы
                        {
                            if (matrix[j][i] == colMem) 
                                colCounter++;
                            if (matrix[j][i] != colMem)
                            {
                                colMem = matrix[j][i];
                                colCounter = 1;
                                colCounter++;
                            }
                        }
                    if (colCounter > maxColCounter) //находим максимальный повтор
                        maxColCounter = colCounter;
                }
            }
 
            int[] colNumbers = new int[n];
            Console.WriteLine("Максимальная серия : " + maxColCounter + "\nКоличество строк с нулями:  " + lineCounter);
            Console.WriteLine("Максимальные серии встречаются в столбцах: ");
            for (int i = 0; i < n; i++) //здесь ищем в каких столбцах встречаются максимальные серии
            {                           //в принципе цикл здесь точно такой же как предыдущий
                colMem = matrix[i][0];  //с разницей в том, что находим не количество эл. в макс. серии, а столбцы, в
                colNumbers[i] = 0;      //которых эта серия встречается
                colCounter = 1;
                for (int j = 0; j < m; j++)
                {
                    if (j < m - 1)
                        if (matrix[j][i] == matrix[j + 1][i])
                        {
                            if (matrix[j][i] == colMem)
                                colCounter++;
                            if (matrix[j][i] != colMem)
                            {
                                colMem = matrix[j][i];
                                colCounter = 1;
                                colCounter++;
                            }
                        }
                }
                if (colCounter == maxColCounter)
                {
                    Console.WriteLine((i + 1).ToString());
                    colNumbers[i]++;
                }
            }
           
            Console.ReadKey();
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2013, 01:04
Помогаю со студенческими работами здесь

Вывод результата по сравнению нескольких столбцов
Доброго времени суток всем. Написал простой скрипт, который в excel файле в таблице по выбранным столбцам (IVR - 3й столбец, Занято - 4й...

Вывести массив номеров строк и массив номеров столбцов, все элементы которых равны только 1 или только 0
Задан размер квадратной матрицы и значения ее элементов (0 или 1). Сформировать и вывести массив номеров строк и массив номеров столбцов,...

Нахождение номеров наименьших элементов столбцов матрицы
Составить программу нахождения и печати номеров наименьших элементов столбцов матрицы A(5,4): |0,5 2 -1 -2| | 1 5 -3 ...

Нахождение наименьших элементов и номеров строки столбцов в матрицах
Даны матрицы А(10,12), В(15,10) и С(5,10). Составить программу для нахождения наименьших элементов и номеров строк и столбцов,в которых она...

Нахождение номеров строк и столбцов и максимального элемента матрицы
задание:Дана матрица целых чисел размером MxN. Найти номера строки и столбца наибольшего элемента матрицы.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в 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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru