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

Добавление строки с максимумом после строк с делителями суммы первого и последнего элементов

23.06.2017, 18:19. Показов 1796. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте!)

Есть такая задачка:

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

Добавлено через 43 минуты
тишина...

Добавлено через 12 минут
Что-то написал, прошу найти ошибку, выходит за границу массива, и не факт, что делает то, что нужно по условию...
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
 
namespace ConsoleApplication8
{
    class Program
    {
        static int m = 5;
        static int[,] a = new int[m, m];
        static void Main(string[] args)
        {
            int max = a[0, 0];
            int maxs = -1;
            Random rnd = new Random();
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = rnd.Next(-100, 100);
                    if (a[i, j] > max)
                    {
                        max = a[i, j];
                        maxs = i;
                    }
                    Console.Write("{0} ", a[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("Maximum {0} in string {1}", max, maxs);
            int l = 0;
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if ((a[0, 0] + a[m-1, m-1]) % a[i, j] == 0)
                    {
                        l++;
                        int[,] b = new int[m + l, m];
                        for (int h = 0; h < i; h++)
                        {
                            for (int hh = 0; hh < m; h++)
                            {
                                b[h, hh-1] = a[h, hh-1];
                                Console.Write("{0} ", b[h, hh]);
                            }
                            Console.WriteLine();
                        }
                        for (int hh = 0; hh < m; hh++)
                        {
                            b[i + 1, hh] = a[maxs, hh];
                            Console.Write("{0} ", b[i+1, hh]);
                        }
                        Console.WriteLine();
                        for (int h = i + 2; h < m; h++)
                        {
                            for (int hh = 0; hh < m; h++)
                            {
                                b[h, hh] = a[h - 2, hh];
                                Console.Write("{0} ", b[h, hh]);
                            }
                            Console.WriteLine();
                        }
                    }
                }
            }
            Console.ReadKey(); 
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.06.2017, 18:19
Ответы с готовыми решениями:

Вставить 0 после элементов, которые будут делителями для суммы его первого, второго и последнего элементов
Условие: Вставить 0 после элементов, которые будут делителями для суммы его первого, второго и последнего элементов(элементы рассматривать...

Удалить элементы массива, которые будут делителями для суммы его первого и последнего элементов
Удалить элементы массива, которые будут делителями для суммы его первого и последнего элементов(элементы рассматривать по модулю)....

Добавить 0 в матрицу после каждого делителя суммы первого, второго и последнего элементов
Нужно добавить 0 после каждого делителя суммы первого, второго и последнего элементов в массиве. Тестовый пример 2 3 4 5 -1 -2 -3 -4....

4
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
23.06.2017, 19:32
Вы про модуль забыли,когда складывали первый и последний элемент.

Добавлено через 6 минут
Выходит за границу массива потому что,вы пытаетесь обратиться к элементу b[0,-1] в самом начале цикла(когда hh=0).
C#
1
2
3
4
5
6
7
8
9
   for (int h = 0; h < i; h++)
                        {
                            for (int hh = 0; hh < m; h++)
                            {
                                b[h, hh - 1] = a[h, hh - 1];//Вот тут
                                Console.Write("{0} ", b[h, hh]);
                            }
                            Console.WriteLine();
                        }
Добавлено через 50 минут
for (int hh = 0; hh < m; h++) И еще здесь вы увеличиваете h вместо hh(у вас в коде две такие строчки)
0
3 / 3 / 0
Регистрация: 03.08.2015
Сообщений: 113
24.06.2017, 09:08  [ТС]
Все равно выход за границы...
Исправьте, плиз
Еще и выводит через одно место...
Сначала последнюю строчку, потом первую...
0
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
24.06.2017, 13:49
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
 
 
namespace ConsoleApplication8
{
    class Program
    {
        static int m = 5;
        static int[,] a = new int[m, m];
        static void Main(string[] args)
        {
            int max = a[0, 0];
            int maxs = -1;
            Random rnd = new Random();
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = rnd.Next(-100, 100);
                    if (a[i, j] > max)
                    {
                        max = a[i, j];
                        maxs = i;
                    }
                    Console.Write("{0} ", a[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("Maximum {0} in string {1}", max, maxs);
            int l = 0;
           
            for (int i = 0; i < m; i++)//Считаем количество рядов в конечном массиве
            {
                bool RowHasDivisor = false;
                for (int j = 0; j < m && !RowHasDivisor; j++)
                {
                    if ((Math.Abs(a[0, 0]) + Math.Abs(a[m - 1, m - 1])) % a[i, j] == 0)
                    {
                        l++;
                        RowHasDivisor = true;
                    }
                }
            }
            int[,] b = new int[m + l, m];
            int h = 0;
            for (int i = 0; i < m; i++)//Заполняем массив
            {
                bool RowHasDivisor = false;
                for (int j = 0; j < m; j++)
                {
                    if ((Math.Abs(a[0, 0]) + Math.Abs(a[m - 1, m - 1])) % a[i, j] == 0)
                    {                      
                        RowHasDivisor = true;
                    }
                    b[h, j] = a[i, j];
                }
                if(RowHasDivisor)
                {
                    h++;
                    for (int j = 0; j < m; j++)
                    {
                      
                        b[h, j] = a[maxs, j];
                    }
                }
                h++;
            }
            for (int i = 0; i < m+l; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    
                    Console.Write("{0} ", b[i, j]);
                }
                Console.WriteLine();
            }
 
 
 
            Console.ReadKey();
        }
    }
}
0
34 / 34 / 16
Регистрация: 04.06.2017
Сообщений: 158
24.06.2017, 14:25
Лучший ответ Сообщение было отмечено Computershik как решение

Решение

тьфу-ты наконец нашел в чем у меня косяк был
Цитата Сообщение от Computershik Посмотреть сообщение
Есть такая задачка:
такой же малопонятный, как и все остальные, но что поделать коль по условию используются только массивы и циклы

Кликните здесь для просмотра всего текста
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
 static void Main(string[] args)
        {
            int m = 5;
            int[,] a = new int[m, m];// и зачем их глобально объявлять? тем паче что у вас весь код в Main...
 
 
 
            int max = a[0, 0];
            int maxs = -1;
 
            // заполняем двумерный массив случайными числами попутно находим максимальный элемент.
            Random rnd = new Random();
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = rnd.Next(-100, 100);
                    if (Math.Abs(a[i, j] )> max)
                    {
                        max = Math.Abs(a[i, j]);
                        maxs = i;
                    }
                    Console.Write("{0} ", a[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("Maximum {0} in string {1}", max, maxs+1);
 
            //создаем масиив для хронения номеров строк, после которых нужно вставить строку(их будет не более 0-го измерения массива, т.е. m) и счетчик для подсчета количества строк.
            // использовать  список вместо массива было бы гоаздо удобнее, но я так понимаю вы их еще не проходили.
            int[] iElements = new int[m];
            int count=0;
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if ((a[i, j] != 0) && ((Math.Abs(a[0, 0]) + Math.Abs(a[m - 1, m - 1])) % a[i, j] == 0))
                    {
                        iElements[count] = i; 
                        count++;
                        break;// вот блин!!! И конечно же прерываем цикл проверки строки на случай если в строке несколько эллементов подходящих под условие:)
                       
                    
                    }
                }
            }
 
            //создаем и заполняем новый массив в который будут входить все строки старого массива и дублированные стрки максимума
 
            int[,] result = new int[m + count, m];
            for (int i = 0,str=0; i < m ; i++)
            {
                for (int j = 0; j < m; j++)
                { 
                    result[i+str, j] = a[i, j]; 
                }
                if (i == iElements[str]&&count!=0)
                    {
                        str++;
                        for (int j = 0; j < m; j++)
                            result[i+str, j] = a[maxs, j];
                    }
               
            }
 
            //Выводим результат 
            for (int i = 0; i < m + count; i++)
            {
                for (int j = 0; j < m; j++)
                    Console.Write(result[i, j] + " ");
                Console.WriteLine();
            }
 
                    Console.ReadLine();
 
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2017, 14:25
Помогаю со студенческими работами здесь

Вставить 0 после элементов, которые будут делителями для суммы элементов в массиве
Здравствуйте. Нужно вставить 0 после элементов, которые будут делителями для суммы его первого, второго и последнего элементов(элементы...

В матрице подсчитать количество элементов, значение которых меньше суммы первого положительного и последнего отрицательного элементов матрицы
Доброго времени суток. Кое какие наработки: n=5; m=6; X=randi(,m,n); flagpositive=0;

Вычисление суммы элементов массива от первого до последнего элемента нечётного числа
1.Составьте программу заполнения массива, не используя клавиатуру, числами: 1, -3, 5, -7, 9, -11, 13, -15 без использование клав-ры. 2....

Записать в файл F суммы первого и последнего элементов в каждом столбце матрицы
3. Сформировать матрицу A(N,M) (N&lt;=10, M&lt;=15). Записать в файл F суммы первого и последнего элементов в каждом столбце матрицы. Найти...

Записать в файл F суммы первого и последнего элементов в каждом столбце матрицы
Сформировать матрицу A(N,M) (N&lt;=10, M&lt;=15). Записать в файл F суммы первого и последнего элементов в каждом столбце матрицы. Найти...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru