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

Найти сумму тех элементов массива которые равны веденному числу

20.06.2016, 15:25. Показов 3634. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем Доброго времени суток!
Подскажите, пожалуйста, как мне найти сумму тех элементов массива которые равны веденному числу?
Т.е. есть некий массив mas[6] = {1, 3, 5, 3, 7, 2}, веденное число, с которым мы будет сравнивать, x = 15.
Что мне нужно:
сумма 7 + 3 + 5 = 15, т.е. вывод индекса элементов массива i = 1, 2, 4;
сумма 3 + 3 + 7 + 2 = 15, т.е. вывод индекса элементов массива i = 1, 3, 4, 5;
ну и т.д.
Помогите плизз, просо мозги не соображают.
Буду очень благодарен))))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2016, 15:25
Ответы с готовыми решениями:

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

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

Найти порядковые индексы тех элементов двумерного массива, которые равны 11
Найти порядковые индексы тех элементов двумерного массива, которые равны 11

Найти порядковые индексы тех элементов двумерного массива которые равны 14
Найти порядковые индексы тех элементов двумерного массива которые равны 14

6
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
20.06.2016, 19:42 2
Как я себе это представляю, это нужно реализовать перебор, причем от 1 до mas.Lengs:
1
2
...
mas.lengs - 1

1+2
1+3
...
1+mas.Lengs - 1

2+3
2+4
...
...
mas.Lengs - 2 + mas.Lengs - 1
...
// далее возрастает количество переборов.
1+2+3
1+3+4
И так далее...
0
1514 / 905 / 328
Регистрация: 17.05.2015
Сообщений: 3,417
20.06.2016, 20:47 3
Цитата Сообщение от Dakstar Посмотреть сообщение
как мне найти сумму тех элементов массива которые равны веденному числу?
Цитата Сообщение от Dakstar Посмотреть сообщение
сумма 7 + 3 + 5 = 15, т.е. вывод индекса элементов массива i = 1, 2, 4;
так что нужно то? найти числа которые в сумме дадут введенное число?
гугли комбинаторика и переборочные алгоритмы. Тебе нужно найти все комбинации чисел, и если сумма комбинации равна введеному значению выводить на экран.
0
160 / 148 / 92
Регистрация: 30.03.2011
Сообщений: 569
22.06.2016, 14:53 4
Посмотрите ссылку, правда, выдает только один вариант:
В заданном целочисленном массиве найти элементы, сумма которых равна этому числу
0
997 / 356 / 135
Регистрация: 27.10.2006
Сообщений: 764
22.06.2016, 17:59 5
поищите в поисковике "Задача о рюкзаке" или "задача о ранце"
0
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
22.06.2016, 18:23 6
программа просто перебирает разные комбинации
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
   class Program
    {
        static List<List<int>> comb;
        static bool[] used;
         static void Fill(bool[] originalArray, bool with)
        {
            for (int i = 0; i < originalArray.Length; i++)
            {
                originalArray[i] = with;
            }
        }  
 
        static void GetComb(int[] arr, int colindex, List<int> c)
        {            
            if (colindex >= arr.Length)
            {
                comb.Add(new List<int>(c));
                return;
            }
            for (int i = 0; i < arr.Length; i++)
            {
                if (!used[i])
                {
                    used[i] = true;
                    c.Add(arr[i]);
                    GetComb(arr, colindex + 1, c);
                    c.RemoveAt(c.Count - 1);
                    used[i] = false;
                }
            }
        }
 
        static void Main(string[] args)
        {
            int[] arr = { 1, 3, 5, 3, 7, 2 };
            int[ ] sum = new int[300];
            int n = 6;
            used = new bool[arr.Length];
            Fill(used,false);
            comb = new List<List<int>>();
            List<int> c = new List<int>();
            int число = 15;//веденное число, с которым мы будет сравнивать
            int m = 4; //количество перебираемых чисел
            m = n - m;
            GetComb(arr,m, c);
            int k = 0;
            foreach (var item in comb)
            {
 
                sum[k] = 0;
                foreach (var x in item)
                {
                    sum[k] = sum[k] + x;
                }
               
                if (sum[k] == число)
                {
                    var Item = comb.ElementAt(k-1);
                    Console.WriteLine(string.Join("\t", item.ToArray()));
                    Console.Write("\nsum={0}", sum[k]);
                    Console.WriteLine("");
                }
                 k += 1;
            }
        }
    }
0
160 / 148 / 92
Регистрация: 30.03.2011
Сообщений: 569
22.06.2016, 19:07 7
Как-то очень длинно. Может быть так будет проще:
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 Sum = 9;//искомая сумма
            int[] m = { 1, 3, 5, 3, 7, 2 };//исходный массив
            List<string> all = new List<string>();
            int k = m.Length;
            int r = 1; 
            int L = (int) Math.Pow(2,k);
            for (int i = 1; i < L; i++)
            {
                r = 1; int n =  i; string s = "";
                int ssum = 0;
                for (int j = 0; j < k; j++)
                {
                    if ((n & 1) == 1 )//
                    {
                        ssum += m[j];
                        if (ssum > Sum) break;
                        s += j.ToString() + " ";//заносим индекс
                    }                    
                    n =  n >> r;
                }
                if (ssum == Sum) 
                { 
                    s.TrimEnd(new char[]{' '}); 
                    s+="\r\n"; all.Add(s); 
                }
            }
            //Вывод индексов
            string str = "";
            foreach (string s in all)
                str += s;
            MessageBox.Show(str);
1
22.06.2016, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2016, 19:07
Помогаю со студенческими работами здесь

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

В массив A[N] занесены натуральные числа. Найти сумму тех элементов, которые кратны данному числу K
В массив A занесены натуральные числа. Найти сумму тех элементов, которые кратны данному числу K. ...

Найти сумму тех элементов массива, которые кратны K
В массив А занесены натуральные числа.Найти сумму тех элементов,которые кратны данному K.

Найти сумму тех элементов массива, которые кратны К
1.В массиве A занесены натуральные числа. Найти сумму тех элементов, которые кратны данному К.

Найти сумму тех элементов массива, которые кратны данному К.
В массиве А занесены натуральные числа. Найти сумму тех элементов,которые кратны данному К.

Найти сумму тех элементов массива, которые больше 15, но меньше 45
Задача: Задан массив n случайных чисел , принадлежащий промежутка . Найти сумму тех элементов...


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

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