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

В массиве вычислить сумму между отрицательными

06.10.2019, 16:55. Показов 2361. Ответов 6
Метки нет (Все метки)

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

Вычислите сумму элементов, находящихся между первым и последним отрицательными элементами в массиве
Помогите с задачей, нужно решить на языке си шарп, с применение методов классов

В массиве найти номер минимального элемента, сумму элементов между первым и вторым отрицательными
8. В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер минимального элемента массива; сумму элементов массива,...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
В одномерном массиве, состоящем из n вещественных элементов, вычислить: Сумму элементов массива, расположенных между первым и вторым...

6
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
07.10.2019, 09:16
Cheesburger,
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
using System;
using System.Linq;
 
namespace ConsoleApp112
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] ArrElements = Enumerable.Repeat(new Random(), 5).Select(r => r.Next(-10, 10)).ToArray();
 
            Console.WriteLine($"Входной массив: {String.Join(", ", ArrElements)}");
 
            int FirstMinusIndexElement = Array.FindIndex(ArrElements, x => x < 0);
 
            Console.WriteLine($"Первый отрицательный элемент массива: {ArrElements.Select((Number, Index) => new { Number, Index }).Where(w => w.Index == FirstMinusIndexElement).Select(s => s.Number).First()}");
 
            int LastMinusIndexElement = Array.FindLastIndex(ArrElements, x => x < 0);
 
            Console.WriteLine($"Последний отрицательный элемент массива: {ArrElements.Select((Number, Index) => new { Number, Index }).Where(w => w.Index == LastMinusIndexElement).Select(s => s.Number).First()}");
 
            int SumBetweenFirstAndLast = ArrElements.Select((Number, Index) => new { Number, Index }).Where(w => w.Index > FirstMinusIndexElement && w.Index < LastMinusIndexElement).Sum(s => s.Number);
 
            Console.WriteLine($"Сумма между первым и последним орицательными элементами: {SumBetweenFirstAndLast}");
        }
    }
}
1
0 / 0 / 0
Регистрация: 06.10.2019
Сообщений: 34
26.10.2019, 14:21  [ТС]
непонятно
0
 Аватар для Arthur Progy
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
26.10.2019, 14:31
Cheesburger,
C#
1
2
3
4
5
6
7
8
9
10
11
public static long Sum(int[] array)
        {
            long sum = 0;
            int firstMinusElementIndex = Array.FindIndex(array, x => x < 0);
            int lastMinusElementIndex = Array.FindLastIndex(array, x => x < 0);
 
            for(int i = firstMinusElementIndex + 1; i < lastMinusElementIndex; i++)
                sum += array[i];
 
            return sum;
        }
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
26.10.2019, 16:39
Лучший ответ Сообщение было отмечено Cheesburger как решение

Решение

Здравствуйте.
Вариант для новичков:
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
using System;
 
namespace Question2508965_LINQ
{
    class Program
    {
        static void Main(string[] args)
        {
            const int n = 8;
            var array = new double[n] { 1.23, -5.67, -2.9, 7.43, 2.7, -1.2, -4.5, 7.1 };
 
            var firstIndex = -1;
            var lastIndex = -1;
 
            for (int i = 0; i < n; i++)
            {
                if (array[i] < 0)
                {
                    if (firstIndex == -1) firstIndex = i;
                    lastIndex = i;
                }
            }
            double sum = 0.0;
            for (int i = firstIndex + 1; i < lastIndex; i++)
                sum += array[i];
 
            Console.WriteLine("Cумма элементов массива: " + sum);
            Console.ReadKey();
        }
    }
}
2
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
26.10.2019, 16:57
Cheesburger, со всеми проверками
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
using System;
 
namespace Test
{
    class Program
    {
        static void Main()
        {
            Random random = new Random();
            double[] arr = new double[random.Next(5,13)];
            double total = 0;
            int indexMin = -1, indexMax = -1;
 
            // Заполнение массива
            for(int i = 0; i < arr.Length; i++)
                arr[i] = random.Next(-50000, 50000) / 100.0;
 
            // Вывод массива в консоль
            for(int i = 0; i < arr.Length; i++)
                Console.Write($"{arr[i],-8:f2}");
            Console.WriteLine();
 
            // Нахождение минимального индекса отрицательного числа
            for (int i = 0; i < arr.Length; i++)
            {
                if(arr[i] < 0)
                {
                    indexMin = i;
                    break;
                }
            }
 
            // Нахождение максимального индекса отрицательного числа
            for(int i = arr.Length - 1; i >= 0; i--)
            {
                if(arr[i] < 0)
                {
                    indexMax = i;
                    break;
                }
            }
 
            // Проверки, по которым подсчет элементов невозможен
            if(indexMin == -1 || indexMax == -1 || indexMin == indexMax)
            {
                Console.WriteLine("Недостаточно отрицательных чисел для выполнения программы");
                Console.ReadKey();
                Environment.Exit(0);
            }
 
            if(indexMin + 1 == indexMax)
            {
                Console.WriteLine("Нет чисел между крайними отрицательными элементами. Подсчет невозможен");
                Console.ReadKey();
                Environment.Exit(0);
            }
 
            // Подсчет значений между отрицательными элементами
            for(int i = indexMin + 1; i < indexMax; i++)
                total += arr[i];
 
            Console.WriteLine("Сумма чисел между крайними отрицательными элементами равна: " + total);
 
            Console.ReadKey();
        }
    }
}
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
26.10.2019, 17:44
Enifan, в данном примере спасает принцип SQL - если в запросе отсутствуют строки, то их сумма равна нулю.

Вариант с LINQ для изучающих C# второй семестр:
C#
1
2
3
4
5
                var firstIndex = Array.FindIndex(array, e => e < 0);
                var lastIndex = Array.FindLastIndex(array, e => e < 0);
                var sum = array.Skip(firstIndex + 1).SkipLast(array.Length - lastIndex).Sum();
 
                Console.WriteLine("Cумма элементов массива: " + sum);
Добавлено через 37 минут
Вариант для JavaScript в синтаксисе Питона (сначала имя метода, потом все параметры):
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="Linq2Iterator.js"></script>
</head>
 
<body>
    <script>
        let array = [1.23, -5.67, -2.9, 7.43, 2.7, -1.2, -4.5, 7.1];
        let firstIndex = array.findIndex(e => e < 0);
        let lastIndex = array.lastIndexOf(last(array, e => e < 0));
        let sum1 = sum(skipLast(skip(array, firstIndex + 1), array.length - lastIndex));
 
        console.log(sum1);
    </script>
</body>
</html>
В JavaScript нет методов расширения, поэтому тут два варианта:
- синтаксис Питона.
- обернуть последовательность в фиктивный служебный контейнер, а уже потом навешивать на него точечным синтаксисом методы.
Соответственно, фиктивный служебный контейер уже реализован в Java. Очень некрасиво.

Добавлено через 2 минуты
----
Интересно было посмотреть, как народ обходил отсутствующий метод array.findLastIndex с лямбда-функцией.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2019, 17:44
Помогаю со студенческими работами здесь

Вычислить сумму элементов массива расположенными между первым и последним отрицательными элементами
В одновимирному массиве, что состоит из n действительных элементов, вичислити: сумму элементов массива, расположенных между дерет и...

В массиве вычислить номер минимального элемента, сумму элементов, расположенных между первым и вторым отрицательными
Нужно сделать одно из двух , на ваш выбор 1.В одномерном массиве, состоящем из n вещественных элементов, вычислить: □ номер...

Вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами
Помогите пожалуйста сделать задачу, по массивам! Задача: В одномерном массиве, состоящем из 20 вещественных элементов (значения...

В массиве вычислить: номер минимального элемента, сумму элементов между 1 и 2 отрицательными элементами
В одномерном массиве, состоящем из N вещественных элементов, вычислить:  номер минимального элемента массива  сумму элементов...

В одномерном массиве вычислить сумму элементов расположенных между первым и последним отрицательными элементами
В одномерном массиве, состоящем из n целых элементов, вычислить: 2) сумму элементов массива, расположенных между первым и последним...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru