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

Одномерные массивы, задачи

21.08.2016, 17:15. Показов 8202. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста решить две задачи.
Задание 2: Пользователь вводит прибыль фирмы за год (12 месяцев). Затем пользователь вводит диапазон (например, 3 и 6 – поиск между 3-м и 6-м месяцем). Необходимо определить месяц, в котором прибыль была максимальна и месяц, в котором прибыль была минимальна с учетом выбранного диапазона.

Задание 3: В одномерном массиве, состоящем из N вещественных чисел вычислить:
• Сумму отрицательных элементов.
• Произведение элементов, находящихся между min и max элементами.
• Произведение элементов с четными номерами.
• Сумму элементов, находящихся между первым и последним отрицательными элементами.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2016, 17:15
Ответы с готовыми решениями:

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил "Запрещено создавать темы с множеством...

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

Массивы одномерные
Помогите плиз!!!!!!!!!!! 1.заменить максимальный по модулю отрицательный элемент нулем 2.заменить первые K элементов на противоположные...

8
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.08.2016, 17:43
shluhan, 2)
C#
1
2
3
4
5
6
            int[] m = { 1000, 200, 300, 400, 200, 300, 3000, 400, 700, 777, 666, 555 };
            int s = 3;
            int t = 6;
            var take = m.Take(t).Skip(s);
            var min = take.Min();
            var max = take.Max();
Добавлено через 5 минут
3)
C#
1
2
3
4
5
6
1) - Where Sum
2) - Если они единственны: Take(индекс мин или мак -
смотря что больше) потом Skyp(индекс мин мак -
смотря что меньше) Потом Aggregate(0,(i,j)=i*j)
3) Where((_,i)=>i%2==1) и Aggregate(0,(i,j)=i*j)
4) аналогично 2) - только или Sum() или Aggregate(0,(i,j)=i+j) вконце
0
4 / 2 / 2
Регистрация: 21.07.2015
Сообщений: 12
21.08.2016, 18:23
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
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    class Program
    {
        static int[] mounth = new int[12];
        
        /// <summary>
        /// Меньшее значение диапазона
        /// </summary>
        static int f;
 
        /// <summary>
        /// Большее значение диапазона
        /// </summary>
        static int l;
 
        static void Main(string[] args)
        {
 
            InputArray();
            Console.Write("Введите меньшее значение диапазона: "); InputNum(out f);
            Console.Write("Введите большее значение диапазона: "); InputNum(out l);
 
            if (f > l)
            {
                ShowError("Меньшее значение не может быть больше");
            }
            else
            {
                var min = Min(f, l);
                var max = Max(f, l);
                Console.WriteLine("Минимальное значение {0} в месяце {1}", mounth[min-1], min);
                Console.WriteLine("Минимальное значение {0} в месяце {1}", mounth[max-1], max);
            }
 
            Console.Read();
        }
 
        /// <summary>
        /// Ввод массива с данными о месяцах
        /// </summary>
        static void InputArray()
        {
            for (int i = 0; i < mounth.Length; i++)
            {
                Console.Write("Месяц {0}: ", i + 1);
                var str = Console.ReadLine();
                int temp;
                if (int.TryParse(str, out temp))
                {
                    mounth[i] = temp;
                }
                else
                {
                    ShowError("Не верный формат int числа. Введите ещё раз");
                    i--;
                }
            }
        }
 
        /// <summary>
        /// Ввод границ диапазона
        /// </summary>
        /// <param name="num"></param>
        static void InputNum(out int num)
        {
            var str = Console.ReadLine();
            while (!int.TryParse(str, out num))
            {
                ShowError("Не верный формат int числа. Введите ещё раз");
                str = Console.ReadLine();
            }
        }
 
        /// <summary>
        /// Показываем ошибку
        /// </summary>
        /// <param name="text"></param>
        static void ShowError(string text)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(text);
            Console.ForegroundColor = ConsoleColor.White;
        }
 
        /// <summary>
        /// Максимальное значение
        /// </summary>
        /// <param name="f">Нижняя граница диапазона</param>
        /// <param name="l">Верхняя граница диапазона</param>
        static int Max(int f, int l)
        {
            int max = mounth[f-1];
            for (int i = f; i <= l - 1; i++)
            {
                if (max < mounth[i]) max = mounth[i];
            }
            return max;
        }
 
        /// <summary>
        /// Минимальное значение
        /// </summary>
        /// <param name="f">Нижняя граница диапазона</param>
        /// <param name="l">Верхняя граница диапазона</param>
        static int Min(int f, int l)
        {
            int min = mounth[f-1];
            for (int i = f; i <= l - 1; i++)
            {
                if (min > mounth[i]) min = mounth[i];
            }
            return min;
        }
    }
Кликните здесь для просмотра всего текста
,
C#
1
2
3
var take = m.Take(t).Skip(s);
var min = take.Min();
var max = take.Max();
Тут результатом будет минимальное и максимальное значение среди элементов массива, а не индекс. Можно и индекс достать, но тогда придётся ещё раз по массиву проходить (например Array.IndexOf)
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.08.2016, 18:47
hiho,
C#
1
2
3
4
5
6
7
8
9
10
            var m = new[] { 1000, 200, 300, 400, 200, 300, 3000, 400, 700, 777, 666, 555 }
            .Select((n, i) => new { n = n, i = i + 1 });
 
            int s = 1;
            int t = 12;
            var take = m.Take(t).Skip(s).OrderBy(n=>n.n);
            var min = take.Last();
            var max = take.First();
 
            Console.WriteLine($"{min.n} {min.i}\n{max.n} {max.i}");
0
4 / 2 / 2
Регистрация: 21.07.2015
Сообщений: 12
21.08.2016, 18:50
EveKS, не спорю, но сортировка чуть медленнее, чем одиночный проход по части массива
0
 Аватар для Alllexander
5 / 5 / 6
Регистрация: 07.08.2016
Сообщений: 18
21.08.2016, 18:52
Лучший ответ Сообщение было отмечено shluhan как решение

Решение

Задание 3: В одномерном массиве, состоящем из N вещественных чисел вычислить:
• Сумму отрицательных элементов.
• Произведение элементов, находящихся между min и max элементами.
• Произведение элементов с четными номерами.
• Сумму элементов, находящихся между первым и последним отрицательными элементами.
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
            double[] array = new double[] { 2, 1, 3, 2, 1, -6, -9 };
            double sum = 0, elSum = 1, intervalSum = 0;
            double max = 0, min = 0;
            int elMax = 0, elMin = 0;
            double chet = 1;
 
            for (int i = 0; i < array.Length; i++)
            {
                //суммa отрицательных элементов
                if (array[i] < 0)
                {
                    sum += array[i];
                }
                //поиск индекса максимального елемента
                if (array[i] > max)
                {
                    max = array[i];
                    elMax = i;
                }
                //поиск индекса минимального елемента
                if (array[i] < min)
                {
                    min = array[i];
                    elMin = i;
                }
                //произведение элементов с четными номерами.
                if ( i % 2 == 1 )
                {
                    chet *= array[i];
                }
            }
            //сумму элементов, находящихся между первым и последним отрицательными элементами
            for (int i = 1; i < array.Length - 1; i++)
            {
                intervalSum += array[i];
            }
            //произведение элементов, находящихся между min и max элементами
            if (elMin < elMax)
            {
                for (int i = elMin +1; i < elMax; i++)
                    elSum *= array[i];
            }
            else if (elMin > elMax)
            {
                for (int i = elMax +1; i < elMin; i++)
                    elSum *= array[i];
            }
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.08.2016, 18:58
hiho, можно было так:
C#
1
var take = m.Take(t).Skip(s).OrderBy(n=>n.n).ToList();
чтоб был 1н запрос.
0
4 / 2 / 2
Регистрация: 21.07.2015
Сообщений: 12
21.08.2016, 19:11
EveKS, можно, но не вижу смысла делать сортировку, когда она в принципе не нужна, да и зачем создать объект листа? Но если отбросить все предирки к скорости работы и памяти для элемента массива, то LINQ-запрос конечно же намного короче и удобней =)
0
21.08.2016, 20:19
 Комментарий модератора 
Цитата Сообщение от shluhan Посмотреть сообщение
решить две задачи.
shluhan, раз уж вам на все ответили, то ладно. Но на будущее следует помнить - один вопрос-одна тема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2016, 20:19
Помогаю со студенческими работами здесь

Одномерные массивы
Помогите выполнить данную задачу с объяснениями. Пытаюсь разобраться, ничего не понимаю. Помогите пожалуйста.. Спасибо большое!!

Одномерные массивы
Случайным образом формируются координаты X и Y 100 точек. Диапазон значений координат от -150 до 150. Для каждой четверти напечатать точки,...

Одномерные массивы
В одномерном массиве, который состоит из n вещественных элементов, вычислить: • сумму позитивных элементов массива; • произведение...

Одномерные массивы, сортировка
Из последовательности целых чисел вывести в порядке возрастания все числа, стоящие на чётных местах и встречающиеся более двух раз. Я...

Цикл с параметром и одномерные массивы
Помогите решить Цикл с параметром 1.Вывести числа следующим образом: 25 25.5 24.8 26 26.5 25.8 ………………… 35 35.5 34.8


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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 через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru