Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
1

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

24.02.2013, 22:32. Показов 3139. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти сумму элементов которые расположены между максимальным и минимальным элементами массива.Массив задан Рандомом.
Не пойму в чем дело.Остановился на последнем шаге,тоесть - на сумме.Сумма не получается как ни крути.Помогите исправить,добрые прогеры
А,да кстати сумму оно выводит на место 5-го элемента.)))
Вот код
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace laba2_mass
{
    class Program
    {
        public const int n = 6;
 
        public static void Main()
        {
            int[] a = new int[n];
            int i, idx1 = 0, idx2 = 0, s = 0;
 
            Console.WriteLine("Массив");
 
            Random rand = new Random();
            for (i = 0; i < n; i++)
            {
                a[i] = rand.Next(-20, 20);
 
                Console.Write(a[i] + " ");
            }
 
            Console.WriteLine();
            Console.WriteLine();
 
 
            //----- Максимальный элемент -----//
 
            for (i = 0; i < n; i++)
            {
                if (a[i] > 0 && a[i] > a[idx1])
                    idx1 = i;
            }
 
            Console.WriteLine("Максимальный элемент = " + a[idx1]);
 
            //------------------------------//
 
 
            //----- Минимальный элемент -----//
 
            for (i = 0; i < n; i++)
            {
                if (a[i] < 0 && a[i] < a[idx2])
                    idx2 = i;
            }
 
            Console.WriteLine("Минимальный элемент = " + a[idx2]);
            
            //--------------------------------//
 
 
            //----- Сумма элементов -----//
 
            for (i = 0; i < n; i++)
            {
                if (idx1 > idx2 && (i-1) < idx1)
                {
                    s += a[i];
                }
                if (idx1 < idx2 && (i-1) < idx2)
                {
                    s += a[i + 1];
                }
            }
 
            //----------------------------------//
 
            Console.WriteLine("Сумма элементов = " + s);
 
            for (i = 0; i < n; i++)
            {
                a[4] = s;
 
                Console.Write(a[i] + " ");
            }
 
            Console.WriteLine();
 
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2013, 22:32
Ответы с готовыми решениями:

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

Составить программу,которая вычисляет сумму элементов массива, которые расположены между максимальным и минимальным элементами.
Составить программу,которая вычисляет сумму элементов неупорядоченного целочисленного массива М,...

Найти сумму отрицательных элементов массива, которые расположены между максимальным и минимальным элементом
нужна помощь.... Дан одномерный массив, который содержит не более 40 целых чисел. Найти сумму...

Найти среднее арифметическое тех элементов, которые расположены между максимальным и минимальным элементами
Средствами ООП решить задачу: Случайным образом вводятся 20 вещественных элементов массива. Найти...

22
2 / 2 / 2
Регистрация: 18.02.2009
Сообщений: 23
24.02.2013, 22:49 2
C#
1
2
3
4
5
6
7
8
 //----- Сумма элементов -----//
 
            for (i = 0; i < n; i++)
            {
               
                    s += a[i];
              
             }


Думаю так должен быть
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
24.02.2013, 22:56 3
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
    static void Main( string[] args )
    {
        const int N = 6;
        int[] arr = new int[6];
        for ( int i = 0; i < N; i++ ) 
            arr[i] = new Random( DateTime.Now.Millisecond ).Next( 0, 11 );
 
        int iMin = 0, iMax = 0, tmp = int.MinValue;
        for ( int i = 0; i < N; i++ )
        {
            if ( arr[i] > tmp )
            {
                iMax = i;
                tmp = arr[i];
            }
        }
 
        tmp = int.MaxValue;
        for ( int i = 0; i < N; i++ )
        {
            if ( arr[i] < tmp )
            {
                iMin = i;
                tmp = arr[i];
            }
        }
 
        tmp = 0;
        for ( int i = Math.Min( iMax, iMin ); i < Math.Max( iMax, iMin ); i++ )
            tmp += arr[i];
 
        arr[5] = tmp;
 
        Console.ReadKey( true );
    }
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
24.02.2013, 22:58 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
using System;
 
class Program
{
    public static void Main()
    {
        int[] array = new int[10];
        int maximum = 0, minimum = 0;
        Random rnd = new Random();
 
        Console.WriteLine("Вывод случайного массива:");
        for (int i = 0; i < array.GetLength(0); i++)
        {
            array[i] = rnd.Next(-20, 20);
            Console.Write(array[i] + "\t");
            if (array[i] > maximum)
                maximum = array[i];
            else if (array[i] < minimum)
                minimum = array[i];
        }
        Console.WriteLine("Максимальный элемент массива:");
        Console.WriteLine(maximum);
        Console.WriteLine("Минимальный элемент массива");
        Console.WriteLine(minimum);
        Console.WriteLine("Сумма максимального элемента массива и минимального:");
        int sum = maximum + minimum;
        Console.WriteLine(sum);
 
 
        Console.ReadKey();
    }
}
Добавлено через 1 минуту
Вероятность того, что у тебя будут все положительные числа при значении rnd.Next(-20, 20); очень мала.
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
24.02.2013, 23:01 5
Цитата Сообщение от darkExpressI2P Посмотреть сообщение
Console.WriteLine("Сумма максимального элемента массива и минимального:");
В задаче нужно сумму элементов между максимальным и минимальным.
0
20 / 17 / 0
Регистрация: 15.08.2012
Сообщений: 122
24.02.2013, 23:03 6
Дмитрий3241, извеняюсь, не внимательность...
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
24.02.2013, 23:08 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
if (idx1 > idx2)
            {
 
                for (i = idx2; i <= idx1; i++)
                    s += a[i];
            }
            else
            {
 
                for (i = idx1; i <= idx2; i++)
                    s += a[i];
            }
Вот сумма
Это включая сами мин и макс
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
24.02.2013, 23:22 8
Цитата Сообщение от Zheka13 Посмотреть сообщение
Вот сумма
Это включая сами мин и макс
Тогда хотя бы вот так: ( красивее выглядит )
C#
1
2
for ( i = Math.Min( idx1, idx2 ); i <= Math.Max( idx1, idx2 ); i++ )
      s += a[i]
1
773 / 553 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
25.02.2013, 00:01 9
Дмитрий3241,
Ваш код уже на начальном этапе дает сбой заполная массив одними и теме же значениями ,и возвращает всегда ноль

Добавлено через 25 минут
Мой алгоритм тоже не идеален ,но хоть что то
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
        int[] array = new int[10];
        Random rand = new Random(DateTime.Now.Millisecond);
        Console.WriteLine("Sequence is ");
        for (int i = 0; i < 10; i++)
        {
            array[i] = rand.Next(10);
            Console.Write(array[i]+" ");
        }
 
        
        int max =  array.ToList().IndexOf( array.Max() );
        int min =  array.ToList().IndexOf( array.Min() );
        int start,end;
        if(min<=max)
        {
            start = min;
            end   = max ;
        }
        else 
        {
           end   = min;
           start = max ;
        }
        Console.WriteLine("\nSum is : "+array.Where((a, g) => 
            start < g && g < end).Sum());
 
 
        Console.ReadLine();
0
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 00:10  [ТС] 10
Цитата Сообщение от stibish Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
 //----- Сумма элементов -----//
 
            for (i = 0; i < n; i++)
            {
               
                    s += a[i];
              
             }


Думаю так должен быть
Так оно находит сумму всех элементов
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
25.02.2013, 00:18 11
ivladden
Если еще неразобрались в ответах то,а если разобрались то сообщение лишнее)
В ващем коде просто это заменить на
C#
1
2
3
4
5
6
7
8
9
10
11
for (i = 0; i < n; i++)
            {
                if (idx1 > idx2 && (i-1) < idx1)
                {
                    s += a[i];
                }
                if (idx1 < idx2 && (i-1) < idx2)
                {
                    s += a[i + 1];
                }
            }
это
C#
1
2
for ( i = Math.Min( idx1, idx2 ); i <= Math.Max( idx1, idx2 ); i++ )
      s += a[i];
1
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 00:27  [ТС] 12
Vitall, код не работает выдает просто пустю консоль....
Цитата Сообщение от Vitall Посмотреть сообщение
Дмитрий3241,
Ваш код уже на начальном этапе дает сбой заполная массив одними и теме же значениями ,и возвращает всегда ноль

Добавлено через 25 минут
Мой алгоритм тоже не идеален ,но хоть что то
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
        int[] array = new int[10];
        Random rand = new Random(DateTime.Now.Millisecond);
        Console.WriteLine("Sequence is ");
        for (int i = 0; i < 10; i++)
        {
            array[i] = rand.Next(10);
            Console.Write(array[i]+" ");
        }
 
        
        int max =  array.ToList().IndexOf( array.Max() );
        int min =  array.ToList().IndexOf( array.Min() );
        int start,end;
        if(min<=max)
        {
            start = min;
            end   = max ;
        }
        else 
        {
           end   = min;
           start = max ;
        }
        Console.WriteLine("\nSum is : "+array.Where((a, g) => 
            start < g && g < end).Sum());
 
 
        Console.ReadLine();
Добавлено через 3 минуты
Zheka13,пытался,к сожалению выдает пустую консоль
Цитата Сообщение от Zheka13 Посмотреть сообщение
ivladden
Если еще неразобрались в ответах то,а если разобрались то сообщение лишнее)
В ващем коде просто это заменить на
C#
1
2
3
4
5
6
7
8
9
10
11
for (i = 0; i < n; i++)
            {
                if (idx1 > idx2 && (i-1) < idx1)
                {
                    s += a[i];
                }
                if (idx1 < idx2 && (i-1) < idx2)
                {
                    s += a[i + 1];
                }
            }
это
C#
1
2
for ( i = Math.Min( idx1, idx2 ); i <= Math.Max( idx1, idx2 ); i++ )
      s += a[i];
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
25.02.2013, 00:32 13
Только опять проверил,у меня работает.
1
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 00:35  [ТС] 14
И тут я понял что просто Visual Studio почему-то выдавало всегда пустую консоль.При любых расскладах.
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
25.02.2013, 00:37 15
Цитата Сообщение от Vitall Посмотреть сообщение
Дмитрий3241,
Ваш код уже на начальном этапе дает сбой заполняя массив одними и теме же значениями ,и возвращает всегда ноль
Ноль он кстати не возвращает, а вот насчет одинаковых чисел это да не подумал, исправил, проверил теперь все работает:
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
static void Main( string[] args )
    {
        const int N = 6;
        int[] arr = new int[6];
        for ( int i = 0; i < N; i++ )
            arr[i] = new Random( DateTime.Now.Millisecond + i ).Next( 0, 11 );
 
        int iMin = 0, iMax = 0, tmp = int.MinValue;
        for ( int i = 0; i < N; i++ )
        {
            if ( arr[i] > tmp )
            {
                iMax = i;
                tmp = arr[i];
            }
        }
 
        tmp = int.MaxValue;
        for ( int i = 0; i < N; i++ )
        {
            if ( arr[i] < tmp )
            {
                iMin = i;
                tmp = arr[i];
            }
        }
 
        tmp = 0;
        for ( int i = Math.Min( iMax, iMin ) + 1; i < Math.Max( iMax, iMin ); i++ )
            tmp += arr[i];
 
        foreach ( int i in arr )
            Console.Write( i + " " );
        Console.WriteLine( "Сумма: " + tmp );
 
        Console.ReadKey( true );
    }
0
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 00:44  [ТС] 16
Zheka13, я перезапустил Visual Studio,все работает,но не так..(
Миниатюры
Найти сумму элементов которые расположены между максимальным и минимальным элементами массива.Массив задан Рандомом  
0
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
25.02.2013, 00:48 17
Видимо вам нужно чтобы между ними ,но иих самих не считала,тогда так.
C#
1
2
 for (i = Math.Min(idx1, idx2)+1; i < Math.Max(idx1, idx2); i++)
                s += a[i];
1
36 / 36 / 4
Регистрация: 27.05.2012
Сообщений: 180
Записей в блоге: 5
25.02.2013, 00:54 18
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
using System;
 
namespace ElementsSummary
{
    class Program
    {
        static Random r = new Random();
        int[] mass = new int[10];
        
        void MainMeth()
        {
            int max = 0, min = 0, sum = 0;
            int temp = 0, temp2 = 0;
            
            for (int i = 0; i < mass.Length; i++) 
            {
                mass[i] = r.Next(0,20);
            }
            Console.Write("Array: ");
            foreach(int i in mass)
                Console.Write(i + " ");
            
            for (int i = 0; i < mass.Length; i++) 
            {
                if(mass[i] > max)
                {
                    max = mass[i];
                    temp = i;
                }
                if(i == 0)
                    min = mass[i];
                
                if(mass[i] < min)
                {
                    min = mass[i];
                    temp2 = i;
                }   
            }
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Item {0} has max value with {1}", temp+1, max);
            Console.WriteLine("Item {0} has max value with {1}", temp2+1, min);
            
            if(temp2 < temp)
            {
                for (int i = temp2; i < temp-1; i++) 
                 {
                    sum+=mass[i+1];
                 }  
                 Console.WriteLine("Elements' sum: " + sum);
            }
            else
            {
                for (int i = temp; i < temp2-1; i++) 
                 {
                    sum+=mass[i+1];
                 }  
                 Console.WriteLine("Elements' sum: " + sum);
            }
            mass[4] = sum;
            Console.WriteLine();
            Console.Write("New Array: ");
            foreach(int i in mass)
                Console.Write(i + " ");
        }
        public static void Main(string[] args)
        {
            Program pr = new Program();
            pr.MainMeth();
            Console.ReadLine();
        }
    }
}
Комментить не стал, и так все кристально ясно.
0
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 00:56  [ТС] 19
Цитата Сообщение от Zheka13 Посмотреть сообщение
Видимо вам нужно чтобы между ними ,но иих самих не считала,тогда так.
C#
1
2
 for (i = Math.Min(idx1, idx2)+1; i < Math.Max(idx1, idx2); i++)
                s += a[i];

Огромное,спасибо))
Вот этот тот самый лакомый кусочек кода,которого мне не хватало.
0
18 / 7 / 0
Регистрация: 16.02.2013
Сообщений: 101
25.02.2013, 01:00  [ТС] 20
Вот выкладываю весь код

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace laba2_mass
{
    class Program
    {
        public const int n = 6;
 
        public static void Main()
        {
            int[] a = new int[n];
            int i, idx1 = 0, idx2 = 0, s = 0;
 
            Console.WriteLine("Массив");
 
            Random rand = new Random();
            for (i = 0; i < n; i++)
            {
                a[i] = rand.Next(-20, 20);
 
                Console.Write(a[i] + " ");
            }
 
            Console.WriteLine();
            Console.WriteLine();
 
 
            //----- Максимальный элемент -----//
 
            for (i = 0; i < n; i++)
            {
                if (a[i] > 0 && a[i] > a[idx1])
                    idx1 = i;
            }
 
            Console.WriteLine("Максимальный элемент = " + a[idx1]);
 
            //------------------------------//
 
 
            //----- Минимальный элемент -----//
 
            for (i = 0; i < n; i++)
            {
                if (a[i] < 0 && a[i] < a[idx2])
                    idx2 = i;
            }
 
            Console.WriteLine("Минимальный элемент = " + a[idx2]);
            
            //--------------------------------//
 
 
            //----- Сумма элементов -----//
 
            for (i = Math.Min(idx1, idx2) + 1; i < Math.Max(idx1, idx2); i++)
                s += a[i];
 
            //----------------------------------//
 
            Console.WriteLine("Сумма элементов = " + s);
 
            for (i = 0; i < n; i++)
            {
                a[4] = s;
 
                Console.Write(a[i] + " ");
            }
 
            Console.WriteLine();
 
            Console.ReadKey();
        }
    }
}
Миниатюры
Найти сумму элементов которые расположены между максимальным и минимальным элементами массива.Массив задан Рандомом  
0
25.02.2013, 01:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2013, 01:00
Помогаю со студенческими работами здесь

Переписать только те элементы массива, которые расположены между его максимальным и минимальным элементами
Задать массив А1 помощью генератора случайных чисел только числами, кратными 3. Переписать массив...

Найти сумму элементов массива между максимальным и минимальным элементами
помогите пожалуйста решить задачку, очень надо)) Найти сумму элементов массива А (100),...

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

Найти сумму элементов, расположенных между минимальным и максимальным элементами массива
Матрица A обрабатывается построчно. Найти сумму элементов, расположенных между минимальным и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru