0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
1

Удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным элементами

12.11.2018, 10:52. Показов 5997. Ответов 10

Author24 — интернет-сервис помощи студентам
В массиве A=(a1, а2, ..., аn) удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным элементами.
0
Лучшие ответы (1)
12.11.2018, 10:52
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2018, 10:52
Ответы с готовыми решениями:

В двухмерном массиве удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным
В двухмерном массиве 10x10 удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным элементами.

Отсортировать элементы массива, расположенные между первым положительным и последним отрицательным элементами
В консольном приложении нужно реализовать указанную задачу, используя одномерный массив 10 целых чисел. Элементы массива считываются с...

Все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива
В массиве A=(a1, а2, ..., аn) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива.

10
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
12.11.2018, 11:39 2
Лучший ответ Сообщение было отмечено Кирилл4316 как решение

Решение

Кирилл4316, получите:
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
var N = 10;
var A = new int[N];
// заполняем случайными значениями
var rand = new Random(DateTime.Now.Second);
for (var i = 0; i < N; i++)
    A[i] = rand.Next(-99, 100);
Console.WriteLine("Исходный массив: " + string.Join(", " , A));
var min = int.MaxValue;
var imin = 0;
var max = int.MinValue;
var imax = 0;
for (var i = 0; i < N; i++)
{
    // ищем минимальный среди положительных
    if (A[i] >= 0 && A[i] < min) 
    { 
        min = A[i];
        imin = i;
    }
    // ищем максимальный среди отрицательных
    if (A[i] < 0 && A[i] > max)
    {
        max = A[i];
        imax = i;
    }
}
Console.WriteLine("min A[{0}] = {1}, max A[{2}] = {3}", imin, min, imax, max);
var first = Math.Min(imin, imax);
var last = Math.Max(imin, imax);
var list = new List<int>();
for (var i = 0; i < N; i++)
{
    if (i > first && i < last) continue;
    list.Add(A[i]);
}
A = list.ToArray();
Console.WriteLine("Результирующий массив: " + string.Join(", ", A));
1
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
12.11.2018, 13:59  [ТС] 3
Я понял что этот кусок кода удаляет элементы, можно по подробнее что и как работает

C#
1
2
3
4
5
var list = new List<int>();
for (var i = 0; i < N; i++)
{
    if (i > first && i < last) continue;
    list.Add(A[i]);
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
12.11.2018, 18:03 4
Кирилл4316, объясняю:
1. Так как массив - штука постоянная, то удалить оттуда элементы можно только переопределением самого массива,
поэтому сначала мы заводим себе список list тип List<int>(), в который можно добавлять подходящие элементы.
2. Дальше, мы нашли нижний (first) и верхний (last) индексы, между которыми значения нам не нужны.
3. В цикле мы обходим все элементы массива и, если индекс i больше нижнего индекса и меньше верхнего индекса,
то мы берём следующую итерацию цикла (со строки 4 переходим к строке 2). Если индекс i в то условие не попадает,
то выполняется строка 5.
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
12.11.2018, 18:13  [ТС] 5
Спасибо разобрался. Еще вопрос, еще нужно сделать все тоже самое только с двухмерным массивом, как это реализовать
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
12.11.2018, 18:38 6
Кирилл4316
Для двумерного массива я не могу представить как будет работать этот алгоритм.
Вот когда Вы мне объясните как удалить элемент матрицы, не разрушив её структуры, тогда можно что-нибудь придумать...

А что скажут мэтры программирования?
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
12.11.2018, 18:42  [ТС] 7
Ну на форуме подсказали развернуть матрицу в одномерный массив удалить элементы и свернуть обратно в двухмерный
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
12.11.2018, 18:53 8
Ну тогда у нас останется "хвост" из неиспользованных ячеек матрицы, которые нулями что-ли заполнить?
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
12.11.2018, 18:55  [ТС] 9
А просто пустыми оставить можно? Если нельзя то, тогда заполнить нулями скорее всего
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
12.11.2018, 19:25 10
Цитата Сообщение от Кирилл4316 Посмотреть сообщение
пустыми оставить можно?
Если это целочисленный двумерный массив, то заполнение только нулями (хотя можно представить элементы типом <int?>)
А если это массив действительных чисел, то можно пустые ячейки обозначать как double.NaN
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 25
12.11.2018, 19:37  [ТС] 11
Вот что получается пока что, не подскажете как теперь как заполнить нулями и свернуть обратно?
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
            int[,] array = new int[5,5];
            int[] m1 = new int[25];
            int z = 0;
            Random rand = new Random();
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    array[i, j] = rand.Next(-99, 100);
                }
            }
            Console.WriteLine("Исходный массив: ");
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                    Console.Write(String.Format("{0,4}", array[i, j]));
                Console.WriteLine();
            }
            for (int i = 0; i < 5; i++)
                for (int j = 0; j < 5; j++)
                {
                    m1[z] = array[i, j];
                    z++;
                }
            Console.WriteLine("Развернутый массив: ");
            foreach (int t in m1)
            {
                Console.Write(t + " ");
            }
            int min = 100;
            int max = -99;
            int imin = 0;
            int imax = 0;
            for (int i = 0; i < array.Length; i++)
            {
                if (m1[i] >= 0 && m1[i] < min)
                {
                    min = m1[i];
                    imin = i;
                }
                if (m1[i] < 0 && m1[i] > max)
                {
                    max = m1[i];
                    imax = i;
                }
            }
            Console.WriteLine();
            Console.WriteLine("Минимальный положительный элемент: {0}", min);
            Console.WriteLine("Масимальный отрицательный элемент: {0}", max);
            int first = Math.Min(imin, imax);
            int last = Math.Max(imin, imax);
            var list = new List<int>();
            for (int i = 0; i <m1.Length; i++)
            {
                if (i > first && i < last) continue;
                list.Add(m1[i]);
            }
            m1 = list.ToArray();
            Console.Write("Массив после удаления элементов: ");
            foreach (int t in m1)
            {
                Console.Write(t + " ");
            }
 
 
            Console.ReadKey();
0
12.11.2018, 19:37
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2018, 19:37
Помогаю со студенческими работами здесь

Отсортируйте элементы массива, расположенные между первым положительным и последним отрицательным элементами массива.
В консольном приложении реализуйте указанную задачу, используя одномерный массив 10 целых чисел. Элементы массива считываются с клавиатуры....

Отсортируйте элементы массива, расположенные между первым положительным и последним отрицательным элементами массива.
В консольном приложении реализуйте указанную задачу, используя одномерный массив 10 целых чисел. Элементы массива считываются с клавиатуры....

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

Массив: Обнулить элементы массива, расположенные между его минимальным и максимальным элементами...
Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами (не включая максимальный и...

Элементы находящиеся между максимальным и минимальным элементами массива занести в другой массив
Ввести одномерный массив с клавиатуры и элементы находящиеся между максимальным и минимальным элементами массива занести в другой массив B...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Linux API: Полное руководство
hw_wired 08.02.2025
Linux API – это низкоуровневый программный интерфейс, обеспечивающий взаимодействие пользовательских приложений с ядром операционной системы. Он включает набор системных вызовов, библиотечных функций. . .
Асинхронное программировани­­­­­е и эмуляция async/await в C (СИ)
hw_wired 08.02.2025
Язык программирования C, несмотря на свой возраст, предоставляет неплохие средства для реализации асинхронных операций, позволяя создавать эффективные решения для обработки параллельных задач. В. . .
Как сгенерировать случайное число в указанном диапазоне в JavaScript
bytestream 08.02.2025
В JavaScript генерация случайных чисел основана на детерминированном алгоритме, который создает последовательность псевдослучайных значений. Встроенный метод Math. random() возвращает псевдослучайное. . .
Как получить список всех таблиц в PostgreSQL
bytestream 08.02.2025
PostgreSQL предлагает несколько методов для получения списка таблиц в базе данных. Наиболее распространенный способ - использование системного каталога pg_tables, который содержит информацию обо всех. . .
Java Spring для начинающих
bytestream 08.02.2025
Spring Framework - это универсальное решение для создания корпоративных Java-приложений. Он предоставляет комплексную программную и конфигурационную модель для современных приложений на Java. Spring. . .
Асинхронное программировани­­­­­­е и async/await в Visual Basic
bytestream 08.02.2025
В основе асинхронного программирования в Visual Basic лежит концепция неблокирующего выполнения операций. Когда программа встречает длительную операцию, например, чтение большого файла или запрос к. . .
Async/await и асинхронное программировани­­е в Delphi
bytestream 08.02.2025
Асинхронное программирование является неотъемлемой частью разработки современных приложений, позволяя создавать отзывчивые и эффективные программы. В Delphi реализация асинхронности опирается на. . .
Асинхронное программировани­­­­­е и async/await в C#
bytestream 08.02.2025
Асинхронное программирование - концепция, позволяющая приложениям эффективно выполнять длительные операции без блокировки основного потока выполнения. В контексте современной разработки на C# это. . .
Асинхронное программировани­­­­­е и горутины/каналы в Go
bytestream 08.02.2025
Язык Go изначально разрабатывался с учетом современных многоядерных процессоров и необходимости эффективного параллельного выполнения задач. В отличие от традиционных подходов к асинхронному. . .
Как восстановить stash в Git
hw_wired 08.02.2025
Git stash - это средство для временного сохранения изменений в рабочей директории. В процессе разработки часто возникают ситуации, когда нужно быстро переключиться на другую задачу, но текущие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru