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

Суммирование стобцов и рядков в двумерном массиве

22.12.2010, 23:00. Показов 1803. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, будьте добры, с задачей. Условие: дана матрица размера m * n (m и n вводятся 2<=m<=5, 2<=n<=10) Найти 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
static void Main(string[] args)
        {
            int n, m, i, j=0,min,max,s=0,s0=0;
            int a=0, b=0;
            Console.WriteLine("Enter number of columns");
            n = int.Parse(Console.ReadLine());//змінній n присваюємо значення довжини масиву
            Console.WriteLine("Enter number of rows");
            m = int.Parse(Console.ReadLine());//змінній m присваюємо значення довжини масиву
            /*int[,] arr;
            arr = new int[,] { { m }, { n } };*/
            int[,] arr = new int[m, n];
            Console.WriteLine();
            for (i = 0; i < m; i++)//заповнюємо масив
            {
                for (j = 0; j < n; j++)
                {                   
                    arr[i, j] = int.Parse(Console.ReadLine());//зчитуємо                    
                }
            }
            Console.WriteLine();
 
            for (i = 0; i < m; i++)
            {
                for (j = 0; j < n; j++)
                {
                    s0 = s;
                    Console.WriteLine("stolb is {0} ryad is {1}", j+1, i+1);
                    Console.WriteLine(arr[i, j] + "\t");
                    s += arr[i, j];
                    /*Console.WriteLine("\t");*/
                }
                Console.WriteLine("SUM of ryad {0} IS {1}", i + 1, s);
                s = 0;
                Console.WriteLine();
            }
            s = 0;
 
            for (j = 0; j < n; j++)
            {
                for (i = 0; i < m; i++)
                {
                    s0 = s;
                    s += arr[i, j];
                    a = s;
                }
                Console.WriteLine("SUM of stolb {0} IS {1}",j+1 , s);
                a = s;
 
            } 
            s = 0;
 
 
             Console.ReadKey(true);
        }
Буду рад вашей помощи! Комментарии в коде приветствуются
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2010, 23:00
Ответы с готовыми решениями:

Суммирование чисел в массиве
Здравствуйте, помогите с таким вопросом: мне необходимо суммировать два числа массива, вводимым...

Поиск в двумерном массиве
Ячейки массива отсортированы по возрастанию, при этом используется порядок расположения элементов...

Задача о двумерном массиве
Есть двухмерный массив, все четные числа массива нужно положить в один одномерный массив, все...

Поиск в двумерном массиве
Помогите написать программу Условие следующее: Дано массив целых чисел А , который состоит из...

4
36 / 36 / 8
Регистрация: 10.02.2010
Сообщений: 184
23.12.2010, 14:50 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
            int n = 3;
            int m = 4;
            int[][] a = new int[n][];
            for (int i = 0; i < n; i++)
                a[i] = new int[m];
 
            //Суммы строк
            int[] SumR = new int[n];
            for (int i = 0; i < n; i++)
            {
                SumR[i] = 0;
                for (int j = 0; j < m; j++)
                    SumR[i] += a[i][j];
            }
            //Суммы столбцов
            int[] SumC = new int[m];
            for (int i = 0; i < m; i++)
            {
                SumC[i] = 0;
                for (int j = 0; j < n; j++)
                    SumC[i] += a[j][i];
            }
 
            Point Max = new Point(0, 0);//Максимальное значение
            Point Min = new Point(0, 0);//Минимальное значение
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                {
                    if (SumR[i] + SumC[j] > SumR[Max.Y] + SumC[Max.X])
                        Max = new Point(j, i);
                    if (SumR[i] + SumC[j] < SumR[Min.Y] + SumC[Min.X])
                        Min = new Point(j, i);
                }
 
            Console.WriteLine("Min a[{0}][{1}] = {2}", Min.Y, Min.X, SumR[Min.Y] + SumC[Min.X]);
            Console.WriteLine("Max a[{0}][{1}] = {2}", Max.Y, Max.X, SumR[Max.Y] + SumC[Max.X]);
1
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 11
23.12.2010, 22:50  [ТС] 3
Благодарю. А представляется возможным сделать это используя методы?
0
36 / 36 / 8
Регистрация: 10.02.2010
Сообщений: 184
24.12.2010, 01:26 4
Каких методов? Тебе нужно найти минимум и максимум....Находится в 4 этапа.
1 - ввод данных в массив a[n][m]
2 - получаем массив SumR[n] - Сумма значений в строках массива a
3 - получаем массив SumC[m] - Сумма значений в столбцах массива a
4 - Получаем минимум и максимум
Можно эти этапы разделить в отдельные функции если хочешь, а так всё.
0
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 11
24.12.2010, 23:45  [ТС] 5
Простите за некорректность. Да именно єто я и имел ввиду. Мне надо создать несколько функций - для подсчета сумы столбцов, для суммы в строках, для нахождения максимума и минимума. Я никак не могу разобраться как ими грамотно пользоваться. Если на то пошло, то весь код печатать не обязательно, постараюсь сам допереть.

Добавлено через 11 часов 19 минут
Кстати хочу добавить что код таки не работает.Ругается на Point, говорит "Ошибка 3 Не удалось найти имя типа или пространства имен "Point" (пропущена директива using или ссылка на сборку?)". У меня 10 VS.

Добавлено через 4 часа 1 минуту
У меня уже получилось многое напечатать благодаря вашей помощи.

Для начала я, правда, хочу уточнить условие: от программы требуется подсчитать сумму каждой строки и каждого столбца (отдельно) и вывести максимальный столбец и строку.

У меня вышло создать, заполнить и посчитать сумму столбцов с помощью методов(функций). Проблема в том что максимум и минимум сумм надо считать тоже отдельными методами(функциями), а значит мне надо получить значение этих сумм. Я пока только смог их посчитать и записать их в коллекцию, но я не могу вывести эту коллекцию из функции, чтобы другая функция могла найти максимум и минимум из элементов этой коллекции.
Мой код:
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
class Matrix
    {
        static void Rows(ref int[,] arr, int s , List<int>sr)
        {
            Console.WriteLine("Counting sums");
            int s0 = 0;
            for (int i = 0; i < arr.GetLength(1); i++)
            {
                for (int j = 0; j < arr.GetLength(0); j++)
                {
                    
                    s0 = s;
                    Console.WriteLine("Column is {0} row is {1} element is {2}", i+1 , j+1, arr[i,j]);
                    
                    s += arr[i, j];
                    sr.Add(arr[i, j]);
                    /*foreach (int n in sr) Console.WriteLine(n);*/
                    
                } 
                Console.WriteLine("Sum of column {0} IS {1}", i + 1, s);
                s = 0;
                Console.WriteLine();
            }
 
        }
 
        static void Fill(ref int[,] arr)//метод  который заполняет массив
        {
            for (int j = 0; j < arr.GetLength(0); j++)
            {
                for (int i = 0; i < arr.GetLength(1); i++)
                {
                    Console.WriteLine("Enter please {0} column, {1} row", i+1, j+1);
                    arr[i, j] = int.Parse(Console.ReadLine());//зчитуємо                    
                }
            } Console.WriteLine();
 
        }
 
        static void Main(string[] args)
        {
            List<int> sumr = new List<int>();
            List<int> sumc = new List<int>();
            int sum = 0;
            Console.WriteLine("Enter number of rows");
            int row = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter number of culumns");
            int clmn = int.Parse(Console.ReadLine());
            int[,] mtrx = new int[row, clmn];            
            Console.WriteLine();
            Fill(ref mtrx);
            Rows (ref mtrx, sum , sumr);
            Console.WriteLine(sumr);
            Console.ReadKey(true);
        }
    }
Надеюсь я достаточно понятно объяснил свою проблему. Задание я должен сдать в понедельник. Надеюсь на вашу помощь
0
24.12.2010, 23:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2010, 23:45
Помогаю со студенческими работами здесь

Суммирование в двумерном массиве по условию
Добрый день! Я вытащил значения книги экселя в двумерный массив, массив ниже, подскажите как на...

Ошибка в массиве и суммирование
Всем добрый день! Прошу помощи!!:help: Надо создать цикл вида F(r,b), где r=1...n b - массив из 3х...

Суммирование значений в массиве
Здраствуйте. Помогите с такой задачкой. Есть массив повторяемых значений, где нужно убрать...

Суммирование классов в массиве
Добрый день прошу помощи или совета реализовать задачку: есть 2 input для ввода данных товара...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru