Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
1

Найти сумму между максимальным и минимальным элементом массива

04.03.2018, 20:47. Показов 10374. Ответов 14
Метки нет (Все метки)

Помогите найти ошибку. В массиве вычислить сумму расположенных между максимальным и минимальным элементами.
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
int[] mas = new int[10];
                int max;
                int min;
                int imin;
                int imax;
                int sum;
 
                for (int i = 0; i < 10; i++)
                    mas[i] = Convert.ToInt32(Console.ReadLine());
                min = int.MaxValue;
                max = int.MinValue;
                sum = 0;
                for (int i = 0; i < 10; i++)
                {
                    if (mas[i] < min)
                        min = mas[i];
 
                }
                for (int i = 0; i < 10; i++)
                {
                    if (mas[i] > max)
                        max = mas[i];
 
                }
                imax = mas[0];
                imin = mas[0];
 
                if (imin < imax)
                {
 
                    for (int i = imin + 1; i <= imax; i++)
                        sum = sum + mas[i];
                }
 
 
                else
 
                    for (int i = imax + 1; i <= imin; i++)
                    { sum = sum + mas[i]; }
 
 
 
                Console.WriteLine("min = {0}, max={1}, sum={3} ", min, max, sum);
            }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2018, 20:47
Ответы с готовыми решениями:

Найти произведение элементов, расположенных между максимальным и минимальным элементом массива
Всем здравствуйте. Не могу понять как сделать обратный счетчик, т.е. задача такая: -найти...

Посчитать, сумму положительных чисел, находящихся между минимальным и максимальным элементом
Может кто помочь?

Найти сумму элементов между максимальным и минимальным элементами массива.Массив занан рандомом
Найти сумму элементов между максимальным и минимальным элементами массива.Массив занан рандомом....

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

14
141 / 180 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
04.03.2018, 21:46 2
C#
1
2
imax = mas[0];
                imin = mas[0];
Зачем так делать? Судя по названиям, тебе нужно было в imax занести i при присвоении значения max, а в imin - значения min.
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
04.03.2018, 22:40  [ТС] 3
значит в этом случае мы imax=0 a imin=0?
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
04.03.2018, 23:25 4
Вот ваш код, считает сумму между не включая их самих.
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
int[] mas = new int[10];
            int max;
            int min;
            int imin = 0;
            int imax = 0;
            int sum;
 
            for (int i = 0; i < 10; i++)
                mas[i] = Convert.ToInt32(Console.ReadLine());
            min = int.MaxValue;
            max = int.MinValue;
            sum = 0;
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] < min)
                {
                    min = mas[i];
                    imin = i;
                }
                
            }
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] > max)
                {
                    max = mas[i];
                    imax = i;
                }
                    
 
            }
            if (imin < imax)
            {
 
                for (int i = imin + 1; i < imax; i++)
                    sum = sum + mas[i];
            }
            else
            {
                for (int i = imax + 1; i < imin; i++)
                { sum = sum + mas[i]; }
            }
            Console.WriteLine("min = {0}, max={1}, sum={2} ", min, max, sum);
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
04.03.2018, 23:35  [ТС] 5
Мне выдает такое
Необработанное исключение: System.FormatException: Индекс (отсчитываемый от нуля) должен быть больше или равен нулю, но меньше размера списка аргументов.
в System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
в System.String.FormatHelper
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
04.03.2018, 23:52 6
Если не ошибаюсь эта ошибка из-за строки где у вас неправильно пронумеровано 0,1,3
C#
1
Console.WriteLine("min = {0}, max={1}, sum={3} ", min, max, sum);
0
141 / 180 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
05.03.2018, 00:18 7
Поясню.
C#
1
2
mas[i];// - это элемент массива, который может быть максимальным в массиве или минимальным, но не обязательно,
 а i - индекс - номер элемента в массиве (он типа Int32).
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
05.03.2018, 01:56  [ТС] 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 imax = 0;
            imin = 0;
 
            if (imin < imax)
            {
              
                for (int i = imin; i <= imax; i++)
                    sum = sum + mas[i];
            }
 
 
            else
 
                for (int i = imax; i <= imin; i++)
                { sum = sum + mas[i]; }
 
 
 
            Console.WriteLine("min = {0}, max={1}, sum={2} ", min, max, sum);
        }
0
630 / 518 / 321
Регистрация: 20.05.2015
Сообщений: 1,448
05.03.2018, 06:12 9
Можно упростить это:
Кликните здесь для просмотра всего текста
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
int[] mas = new int[10];
            int max;
            int min;
            int imin = 0;
            int imax = 0;
            int sum;
 
            for (int i = 0; i < 10; i++)
                mas[i] = Convert.ToInt32(Console.ReadLine());
            min = int.MaxValue;
            max = int.MinValue;
            sum = 0;
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] < min)
                {
                    min = mas[i];
                    imin = i;
                }
                
            }
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] > max)
                {
                    max = mas[i];
                    imax = i;
                }
                    
 
            }

до такого:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
int[] mas = new int[10];
            int imin = 0;
            int imax = 0;
            int sum=0;
 
            for (int i = 0; i < 10; i++)
            {
                mas[i] = Convert.ToInt32(Console.ReadLine());
                if (mas[i] > mas[imax]) imax = i;
                if (mas[i] < mas[imin])  imin = i;
            }
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
05.03.2018, 13:52  [ТС] 10
Не правильно рассчитывает сумму элементов. Не могу найти ошибку. Проблема в этом коде
C#
1
2
3
4
5
6
7
8
9
10
11
          imax = 0;
            imin = 0;
            if (imin < imax)
            {
                for (int i = imin; i <= imax; i++)
                    sum = sum + mas[i];
            }
            else
                for (int i = imax; i <= imin; i++)
                { sum = sum + mas[i]; }
            Console.WriteLine("min = {0}, max={1}, sum={2} ", min, max, sum);
0
150 / 147 / 103
Регистрация: 30.10.2016
Сообщений: 312
05.03.2018, 14:09 11
lion1324, у Вас обе переменные imax и imin равны нулю, теперь представьте, как будет выполняться цикл for (int i = 0; i <= 0; i++)?
0
управление сложностью
1685 / 1297 / 260
Регистрация: 22.03.2015
Сообщений: 7,548
Записей в блоге: 5
05.03.2018, 14:20 12
Ну одна-то итерация все-таки будет
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 9
05.03.2018, 15:47  [ТС] 13
Извините, этот момент немного не понимаю.Что мы должны присвоить imax imin?
0
Модератор
2843 / 2009 / 431
Регистрация: 26.03.2015
Сообщений: 7,722
05.03.2018, 17:08 14
Цитата Сообщение от lion1324 Посмотреть сообщение
Что мы должны присвоить imax imin?
Они должны вычислиться на предыдущем этапе.
0
150 / 147 / 103
Регистрация: 30.10.2016
Сообщений: 312
05.03.2018, 17:45 15
lion1324, переменным imax и imin должны быть присвоены индексы максимального и минимального элементов массива, о чем Вам выше писал Alex9.

Ниже полное решение с комментариями. Постарайтесь проанализировать каждую строчку чтобы разобраться в ошибках.
Кликните здесь для просмотра всего текста
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
        static void Main()
        {
            int[] mas = new int[10];
            int max = int.MinValue;   // Максимальный элемент массива
            int min = int.MaxValue;   // Минимальный элемент массива
            int imax = mas[0];        // Индекс максимального элемента массива
            int imin = mas[0];        // Индекс минимального элемента массива
            int sum = 0;              // Сумма элементов массива расположенных между максимальным и минимальным элементами.
 
            // Заполнение массива элементами
            Console.WriteLine("Заполнение одномерного массива размерностью {0} элементов:", mas.Length);
            for (int i = 0; i < 10; i++)
            {
                Console.Write("Введите {0} элемент массива: ", i + 1);
                mas[i] = Convert.ToInt32(Console.ReadLine());
            }
 
            // Вывод созданного массива на консоль
            Console.Write("\nЗадан массив: ");
            foreach (int element in mas)
                Console.Write(element + " ");
            Console.WriteLine("\n");
 
            // Поиск максимального элемента массива и его индекса
            // Если элементов с максимальным значением несколько - учитываем первый найденный!
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] > max)   
                {
                    max = mas[i];   // Переменной max присваиваем значение максимального эєлемента
                    imax = i;       // Переменной imax присваиваем индекс максимального элемента
                }
            }
 
            // Поиск минимального элемента массива и его индекса
            // Если элементов с минимальным значением несколько - учитываем первый найденный!
            for (int i = 0; i < 10; i++)
            {
                if (mas[i] < min)   
                {
                    min = mas[i];   // Переменной min присваиваем значение минимального элемента
                    imin = i;       // Переменной imin присваиваем индекс минимального элемента
                }
            }
 
            // Вычисление суммы элементов, расположенных между максимальным и минимальным элементами.
            if (imin < imax)
            {
                for (int i = imin + 1; i < imax; i++)
                    sum += mas[i];
            }
            else
            {
                for (int i = imax - 1; i < imin; i--)
                    sum += mas[i];
            }
 
            Console.WriteLine("Максимальный элемент {0} расположен по индексу {1}", max, imax);
            Console.WriteLine("Минимальный элемент {0} расположен по индексу {1}", min, imin);
            Console.WriteLine("Сумма элементов, расположенных между максимальным и минимальным элементами: {0}", sum);
 
            Console.ReadLine();
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2018, 17:45

Найти сумму элементов которые расположены между максимальным и минимальным элементами массива.Массив задан Рандомом
Найти сумму элементов которые расположены между максимальным и минимальным элементами...

Даны массивы вещественных чисел A и B. Найти разность между минимальным и максимальным элементом для каждого из массивов
Здраствуйте, помогите пожалуйста написать код программы: Даны массивы вещественных чисел A и B с...

Найти сумму компонентов, стоящих между минимальным и максимальным
C# Задан числовой файл F(все элементы вводим с клавиатуры). Найти сумму элементов, стоящих между...

Найти расстояние между первым минимальным и первым максимальным элементом матрицы
дан текстовый файл: { N M матрица NxM } найти расстояние между первым минимальным и первым...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru