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

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

27.04.2014, 12:26. Показов 4670. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.
Не могу понять как сделать обратный счетчик, т.е. задача такая:
-найти произведение элементов расположенных между макс. элементом и мин. элементом. Я сделал счетчик если идет от мин. значение до макс. значение(в коде видно), а наоборот сделать не пойму как, можно же через for и i--, но там выдает ошибку "индекс ячейки выходит за пределы массива", вот собственно все.

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
Console.Write("razmer massiva");
            int n = Convert.ToInt32(Console.ReadLine());
            int[] massive = new int[n];
          
            for (int i = 0; i < massive.Length; i++)
            {
                massive[i] = Convert.ToInt32(Console.ReadLine());
            }
            int summaotrc = 0;
            for (int i = 0; i < massive.Length; i++)
            {
                if (massive[i] < 0)
                {
                    summaotrc += massive[i];
                    
                }
            }
            
            for (int i = 0; i < massive.Length; i++)
            {
                Console.Write("{0}\n", massive[i]);
            }
            int max = 0, min = 0;
            for (int i = 0; i < massive.Length; i++)
            {
                if (min > massive[i]) min = i;
                if (max < massive[i]) max = i;
            }
            Console.Write("maksimal'miy element = {0}", max+1);
            Console.Write("minimal'niy element = {0}", min);
            int proizvedenie = 1;
            
            for (int i = min; i < max; i++)
            {
 
              
                    proizvedenie *= massive[i];
                    Console.Write("proizvedenie elementov = {0}\n", proizvedenie);
                
 
            }
           
          
      
            Console.WriteLine("Summa otrc elementov = {0}", summaotrc);
            Console.ReadKey();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2014, 12:26
Ответы с готовыми решениями:

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

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

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

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

27
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 22
27.04.2014, 12:37 2
если я вас правильно понял:
C#
1
for(int i = massive.Lenght; i > 0; i--)
студии нет под рукой.
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 12:39  [ТС] 3
SteroType, "Индекс находился вне границ массива." - все равно эта ошибка.
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
27.04.2014, 12:51 4
qwiz, потому что массив индексируется с нуля и последний элемент будет иметь индекс massive.Lenght-1, а условие завершения цикла - нестрогое неравенство i >= 0
0
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 22
27.04.2014, 12:52 5
Черный ворон, ой. точно. спасибо.
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 13:10  [ТС] 6
Черный ворон, а с моими переменными (min, max), этого сделать нельзя?
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
27.04.2014, 13:18 7
qwiz, очень даже можно
C#
1
2
3
for(int i=max; i>=min; i--) {
//тело цикла
}
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 13:30  [ТС] 8
Черный ворон, я сейчас проверил, не считает :\
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
27.04.2014, 14:03 9
возможно это из-за Вашего весьма своеобразного определения индексов максимальных элементов.
Цитата Сообщение от qwiz Посмотреть сообщение
C#
1
2
3
4
5
6
int max = 0, min = 0;
for (int i = 0; i < massive.Length; i++) {
if (min > massive[i])
    min = i;
if (max < massive[i])
    max = i; }
думаю лучше сделать так:
C#
1
2
3
4
5
6
7
8
9
10
int maxIndex = 0, minIndex = 0, max=massive[0], min=massive[0];
for (int i = 0; i < massive.Length; i++)
            {
                if (min > massive[i]) {min = massive[i]; minIndex=i;}
                if (max < massive[i]) {max = massive[i]; maxIndex=i;}
            }
for (int i=maxIndex; i>=minIndex; i--)
{
//тело цикла
}
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 14:08  [ТС] 10
Черный ворон, а с чем это связано ? ну, т.е. что не так с моими переменными, мне просто интересно?
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
27.04.2014, 14:37 11
qwiz, в Вашем варианте в переменных min и max должны хранится, вероятно, индексы минимального и максимального элементов. тем не менее, когда Вы ищите эти элементы вы сравниваете индексы max и min с элементами. Это в принципе может пройти если у Вас массив это последовательность чисел от нуля до n, но не в общем случае. элементы должны сравниваться с элементами.
ну и ко всему начальная инициализация нулями - плохо. т.к. если в массиве все числа положительны, то 0 не будет минимальным т.к. его нет в массиве, аналогичная ситуация для максимума - 0 не будет им, если в массиве все числа отрицательны
1
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 16:25  [ТС] 12
Черный ворон, благодарю

Добавлено через 1 час 24 минуты
Черный ворон, но все же, если я ввожу: 8,7,-1,-5,-2; произведение не считается.
0
Эксперт .NET
17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
27.04.2014, 16:49 13
Если индекс минимального элемента больше индекса максимального, то, очевидно, их надо поменять местами.

C#
1
2
3
4
5
6
7
8
9
if (min < max)
{
   min ^= max;
   max ^= min;
   min ^= max;
}
 
for (int i = min + 1; i < max; i++)
   product *= array[i];
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 16:51  [ТС] 14
Цитата Сообщение от kolorotur Посмотреть сообщение
^=
это что за вещь?
0
Эксперт .NET
17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
27.04.2014, 16:54 15
Цитата Сообщение от qwiz Посмотреть сообщение
это что за вещь?
Сложение по модулю 2, оно же исключающее ИЛИ.
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 17:00  [ТС] 16
kolorotur, скажу так, мы это не проходили и юзать я это не могу.
0
Эксперт .NET
17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
27.04.2014, 17:01 17
Цитата Сообщение от qwiz Посмотреть сообщение
мы это не проходили и юзать я это не могу.
Ок.

C#
1
2
3
4
5
6
if (max < min)
{
   int temp = max;
   max = min;
   min = temp;
}
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 17:20  [ТС] 18
kolorotur, так это пузырьковая сортировка ?
0
Эксперт .NET
17437 / 12829 / 3361
Регистрация: 17.09.2011
Сообщений: 21,107
27.04.2014, 17:22 19
Цитата Сообщение от qwiz Посмотреть сообщение
так это пузырьковая сортировка ?
Где?
0
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
27.04.2014, 17:29  [ТС] 20
kolorotur,
Цитата Сообщение от kolorotur Посмотреть сообщение
C#
1
2
3
4
5
6
if (max < min)
{
int temp = max;
max = min;
min = temp;
}
0
27.04.2014, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2014, 17:29
Помогаю со студенческими работами здесь

Произведение элементов массива, расположенных между максимальным и минимальным элементами
Добрый день! Вроде бы правильно написал, но упорно выводит 1. Что не так, подскажите? int sum =...

Напечатать произведение элементов, расположенных между максимальным и минимальным элементами массива
Сформировать массив 40 целых случайных чисел в диапазоне от минус 40 до 40. Напечатать его....

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

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

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

Добавьте произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами
static void Main(string args) { Console.WriteLine(&quot;Введите...


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

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

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