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

Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальными элементами

20.04.2014, 19:33. Показов 6522. Ответов 17
Метки нет (Все метки)

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

как найти сумму между первым макс и последним мин ? и где здесь можно поставить Exception (исключение, если я не ошибаюсь) желательно с пояснением (для тупы)

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
using System;
namespace ConsoleApplication
{
    class Class
    {
        static int[] Input()
        {
            Console.WriteLine("введите размерность массива");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            for (int i = 0; i < n; ++i)
            {
                Console.Write("a[{0}]= ", i);
                a[i] = int.Parse(Console.ReadLine());
            }
            return a;
        }
 
        static int Max(int[] a)
        {
            int max = a[0];
            for (int i = 1; i < a.Length; ++i)
                if (a[i] > max) max = a[i];
            return max;
        }
        static int Min(int[] a)
        {
            int min = a[0];
            for (int i = 1; i < a.Length; ++i)
                if (a[i] < min) min = a[i];
            return min;
        }
        static void Main()
        {
            int[] myArray = Input();
            int max = Max(myArray);
            int min = Min(myArray);
            int kol = 0;
            for (int i = 0; i < myArray.Length; ++i)
                if (myArray[i] == max) ++kol;
            Console.WriteLine("Количество максимальных элементов = " + kol+ " min" + min);
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2014, 19:33
Ответы с готовыми решениями:

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

Сумма элементов матрицы, расположенных между первым максимальным и последним минимальными элементами
как исправить ошибку в Main()? :umnik: Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальными...

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

17
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
20.04.2014, 19:53
грубо так
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
  int[] mass = new int[10];
            Random ran = new Random();
            for (int i = 0; i < 10; i++)
                mass[i] = ran.Next(-100, 100);
 
            int min = 0;
 
            for (int i = 1; i < 10; i++)
                if (min > mass[i])
                    min = i;
            int max = 0;
            for (int i = 1; i < 10; i++)
                if (min < mass[i])
                    min = i;
            if (max > min)
                throw new ArgumentException();
 
            int sum = 0;
            for (int i = max; i <= min; i++)
                sum += mass[i];
 
            Console.WriteLine("Сумма = " + sum);
 
 
            Console.ReadLine();
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 20:01
Вот вариант. Особо не отлаживал, проверьте.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random();
            int[] arr = new int[100];
            for (int i = 0; i < 100; i++)
                arr[i] = rand.Next(-50, 51);
 
 
            int min = arr.Min();
            int max = arr.Max();
 
            int min_index = Array.FindLastIndex(arr, delegate(int i)
            {
                return i == min;
            });
            int max_index = Array.FindIndex(arr, delegate(int i)
            {
                return i == max;
            });
 
            int sum = 0;
 
            if (max_index <= min_index)
            {
                for (int i = max_index + 1; i < min_index; i++)
                {
                    sum += arr[i];
                }
                Console.WriteLine("Сумма элементов: {0}", sum);
            }
            else
                Console.WriteLine("Максимальный результат расположен после минимального!");
            Console.ReadLine();
        }
    }
}
1
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
20.04.2014, 20:12
или с линкью можно

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int[] mass = new int[10];
            Random ran = new Random();
            for (int i = 0; i < 10; i++)
                mass[i] = ran.Next(-100, 100);
 
            int min = mass.Where(x => mass.Min() == x).Select((x, i) => i).Single();
            int max = mass.Where(x => mass.Max() == x).Select((x, i) => i).Single();
 
            if (max > min)
                throw new ArgumentException();
 
            int sum = 0;
            for (int i = max; i <= min; i++)
                sum += mass[i];
 
            Console.WriteLine("\nСумма = " + sum);
 
            Console.ReadLine();
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 20:19
Metall_Version, у меня вот в этой строке
C#
1
int min = mass.Where(x => mass.Min() == x).Select((x, i) => i).Single()
выбрасывает InvalidOperationException...
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
20.04.2014, 20:27
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 Ghost
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int[] array = Enumerable.Range(1, 15)
                .Select(x => rnd.Next(0, 20))
                .ToArray();
            int max = array.Max();
            int min = array.Min();
            Console.WriteLine(string.Join(", ", array));
            Console.WriteLine("Min: {0}{1}Max: {2}", min, Environment.NewLine, max);
            int sum = array.SkipWhile(x => x != max)
                .Skip(1)
                .Reverse()
                .SkipWhile(x => x != min)
                .Skip(1)
                .Sum();
            Console.WriteLine(sum);
        }
    }
}
1
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
20.04.2014, 20:30
insite2012, а может здесь ?

C#
1
2
if (max > min)
                throw new ArgumentException();
Добавлено через 2 минуты
insite2012, а не если макс элементов будет 2 и более будет ексепшн .. туплю )
нужно заменить на First() тогда все будет норм

Добавлено через 45 секунд
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int[] mass = new int[10];
            Random ran = new Random();
            for (int i = 0; i < 10; i++)
                mass[i] = ran.Next(-100, 100);
 
            int min = mass.Where(x => mass.Min() == x).Select((x, i) => i).First();
            int max = mass.Where(x => mass.Max() == x).Select((x, i) => i).First();
 
            if (max > min)
                throw new ArgumentException();
 
            int sum = 0;
            for (int i = max; i <= min; i++)
                sum += mass[i];
 
            Console.WriteLine("\nСумма = " + sum);
 
            Console.ReadLine();
1
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
20.04.2014, 20:30
Цитата Сообщение от Metall_Version Посмотреть сообщение
или с линкью можно
С Вами Linq когда-нибудь очень злую шутку сыграет...
Вы представляете сколько раз пройдёте по массиву mass своим решение с Linq?

Использование Linq уместно далеко не везде.

Это во-первых, а во-вторых Ваше решение неверное. Select может вернуть больше 1 значения.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 20:36
Цитата Сообщение от Spawn Посмотреть сообщение
Select может вернуть больше 1 значения.
Именно так у меня и происходит.
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
20.04.2014, 21:40
Цитата Сообщение от Spawn Посмотреть сообщение
Это во-первых, а во-вторых Ваше решение неверное. Select может вернуть больше 1 значения.
кто не ошибается тот ничего не делает
я потом исправил.
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
23.04.2014, 20:53  [ТС]
а можно вариант с продолжением моей части ? просто у меня в пятницу экзамен, надо делать по шаблону, а как что-то не пойму
вроде должно быть сравнение индексов с максимумом и минимумом, нет? (я не знаю как это "красиво" написать...)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.04.2014, 21:35
Myda4ek, так вам уже гору разных вариантов насоветовали, выбирайте любой.
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
23.04.2014, 21:39  [ТС]
вот что у меня получилось, но выводит всегда else... и только else, где у меня ошибка?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        static void Main()
        {
            int[] myArray = Input();
            int max = Max(myArray);
            int min = Min(myArray)
            int kol = 0;
 
            if (myArray[i] < Max(myArray) && myArray[i] > Min(myArray)) 
                  { 
                  for (int i = Max(myArray)+1; i < Min(myArray); ++i)
                        {
                      kol+=myArray[i];
                      
                         }
                       Console.WriteLine("Количество максимальных элементов = " + kol + " min" + min);
                  }
                else 
                      Console.WriteLine("Максимальный результат расположен после минимального!");
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.04.2014, 21:43
А где сам массив?
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
23.04.2014, 21:46  [ТС]
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
using System;
namespace ConsoleApplication
{
    class Class
    {
        static int[] Input()
        {
            Console.WriteLine("введите размерность массива");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            for (int i = 0; i < n; ++i)
            {
                Console.Write("a[{0}]= ", i);
                a[i] = int.Parse(Console.ReadLine());
            }
            return a;
        }
 
        static int Max(int[] a)
        {
            int max = a[0];
            for (int i = 1; i < a.Length; ++i)
                if (a[i] > max) max = a[i];
            return max;
        }
        static int Min(int[] a)
        {
            int min = a[0];
            for (int i = 1; i < a.Length; ++i)
                if (a[i] < min) min = a[i];
            return min;
        }
        static void Main()
        {
            int[] myArray = Input();
            int max = Max(myArray);
            int min = Min(myArray)
            int kol = 0;
 
            if (myArray[i] < Max(myArray) && myArray[i] > Min(myArray)) 
                  { 
                  for (int i = Max(myArray)+1; i < Min(myArray); ++i)
                        {
                      kol+=myArray[i];
                      
                         }
                       Console.WriteLine("Количество максимальных элементов = " + kol + " min" + min);
                  }
                else 
                      Console.WriteLine("Максимальный результат расположен после минимального!");
 
            //Console.WriteLine("Количество максимальных элементов = " + kol + " min" + min);
        }
    }
}
полностью прога
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.04.2014, 21:53
Myda4ek, ваша логика сложна для меня... Если уж вам так надо без LINQ и прочих наворотов, сейчас сделаю...
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
23.04.2014, 21:59  [ТС]
моя логика не слишком сложно, мне просто надо ПОНЯТЬ как это делается, у Вас написано более профессионально, а я нуб еще )))
спасибо!)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.04.2014, 22:14
Лучший ответ Сообщение было отмечено вредина как решение

Решение

Myda4ek, вот, безо всяких наворотов, голые циклы.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] myArray={1, 6, 0, 4, 5, 2, 6, -1, 7, 3, 7, 8, 1, -5, 0, 2, 7, 4, 8};
 
            int max = 0;
            int min = 0;
 
            int max_index = 0;           
            int min_index = 0;
 
            int sum = 0;
 
            //Считаем максимум
            for (int i = 0; i < myArray.Length; i++)
            {
                max = (max < myArray[i]) ? myArray[i] : max;
            }
 
            //Находим индекс первого максимума
            for (int j = 0; j < myArray.Length; j++)
            {
                if (myArray[j] == max)
                {
                    max_index = j;
                    break;
                }
            }
 
            //Считаем минимум и одновременно находим его индекс
            for (int i = 0; i < myArray.Length; i++)
            {
                if (min > myArray[i])
                {
                    min = myArray[i];
                    min_index = i;
                }
            }
 
            //Проверяем индексы, и если требуется считаем сумму
            if (max_index >= min_index)
                Console.WriteLine("Максимальный элемент расположен дальше или на той же позиции, что и минимальный");
            else
            {
                for (int i = max_index + 1; i < min_index; i++)
                {
                    sum += myArray[i];
                }
                Console.WriteLine("Сумма элементов между первым максимальным и последним минимальным элементами: {0}", sum);
            }
            Console.ReadLine();
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2014, 22:14
Помогаю со студенческими работами здесь

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

Вычислить сумму элементов массива, расположенных между первым и последним нулевым элементами
Не понимаю как сделать HELP

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

Найти сумму элементов массива, расположенных между первым и последним положительными элементами
Найти сумму элементов массива, расположенных между первым и последним положительными элементами. На данный момент программа может...

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru