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

Вычислить минимальный по модулю элемент массива

20.12.2012, 12:16. Показов 5570. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: В одномерном массиве, состоящем из п целочисленных элементов, вычислить:
• минимальный по модулю элемент массива;
• сумму модулей элементов массива, расположенных после первого элемента,
равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располагались
элементы, стоявшие в четных позициях, а во второй половине — элементы,
стоявшие в нечетных позициях

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace _1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите количество элементов массива: ");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                a[i] = r.Next(-25, 25);
                Console.Write(a[i].ToString() + "  ");
            }
            Console.WriteLine();
            int min = Math.Abs(a[0]);
            for (int i = 0; i < n; i++)
                if (Math.Abs(a[i]) <= Math.Abs(min))
                    min = a[i];
            Console.WriteLine("Минимальный по модулю элемент: " + min.ToString());
            int zero_index = 0;
            bool check = false;
            for (int i = 0; i < n; i++)
                if (a[i] == 0)
                {
                    zero_index = i;
                    check = true;
                    break;
                }
            if (check)
            {
                int sum = 0;
                for (int i = zero_index + 1; i < n; i++)
                    sum += a[i];
                Console.WriteLine("Сумма элементов расположенных после первого нулевого: " + sum.ToString());
            }
            else
                Console.WriteLine("В массиве нет нулевых элементов.");
 
           int[] b = new int[n];
            for (int i = 0; i < n; i++)
                b[i] = a[i];
            int k = -1;
            for (int i = 0; i < n; i++)
                if (i % 2 == 1)
                {
                    k++;
                    a[k] = b[i];
                }
            for (int i = 0; i < n; i++)
                if (i % 2 == 0)
                {
                    k++;
                    a[k] = b[i];
                }
            Console.WriteLine("Преобразованный массив: ");
            for (int i = 0; i < n; i++)
                Console.Write(a[i].ToString() + "  ");
            Console.ReadKey();
        }
    }
}
Объясните 2 строчки 46-ую и 49-ую, или переделайте пожалуйста. Не могу ответить преподу, зачем вводить новый массив(46 строчка)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2012, 12:16
Ответы с готовыми решениями:

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

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

В одномерном массиве вычислить минимальный по модулю элемент
Здравствуйте! пожалуйста, кто-нибудь помогите с задачкой В одномерном массиве, состоящем из n...

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

4
1 / 1 / 2
Регистрация: 17.12.2012
Сообщений: 8
20.12.2012, 13:34 2
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
Console.Write("Введите количество элементов массива: ");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            int[] b = new int[n];
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                a[i] = r.Next(-25, 25);
                
            }
            Console.WriteLine("Исходный массив: " + string.Join(" ", a));
 
            int count = 0;
            for (int i = 1; i<a.Length; i++)
            {
                if ((i-1) % 2 == 0)
                { 
                    b[count] = a[i];
                    count++;
                }
            }
            for (int i = 0; i < b.Length; i++)
            {
                if ((i-1) % 2 != 0)
                {
                    b[count] = a[i];
                    count++;
                }
            }
            Console.WriteLine("Полученный массив: " + string.Join(" ", b));
            Console.ReadKey();
Добавлено через 2 минуты
Прошу прощения,не туда написал ответ!
0
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119
20.12.2012, 13:51 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            Console.Write("Введите количество элементов массива: ");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            Random r = new Random();
            for (int i = 0; i < n; i++)
            {
                a[i] = r.Next(-25, 25);
                Console.Write(a[i].ToString() + "  ");
            }
 
            
            //макисмум
            var MaxABS = a.Max(m => Math.Abs(m));
            
            //сумма модулей
            var Sum = a.SkipWhile(m => m != 0).Sum(m=>Math.Abs(m));
            
            //преобразование массива
            a = a.Where((item, num) => num % 2 == 0).Concat(a.Where((item, num) => num % 2 != 0)).ToArray<int>();
Добавлено через 13 минут
Цитата Сообщение от АлексейРОм Посмотреть сообщение
зачем вводить новый массив
В вашем коде обязательно вводить новый массив, т.к. иначе вы перезапишите элементы своего массива и некоторые данные утеряются. К примеру, при записи a[2] на место a[1] в вашем массиве исчезнет элемент a[1] базовой последовательности.
1
0 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 38
20.12.2012, 16:14  [ТС] 4
C#
1
a = a.Where((item, num) => num % 2 == 0).Concat(a.Where((item, num) => num % 2 != 0)).ToArray<int>();
спасибо, помогли,) объясните строку до каждой буквы буквально)

Добавлено через 22 минуты
И подскажите еще зачем в 49 стоке вводим элемент -K
0
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119
20.12.2012, 16:52 5
k - это переменная, которая определяет по какому индексу вставлять элемент в новый массив. Автор кода присваивает ей значение -1 и в первом же блоке if инкрементирует ее. таким образом первый элемент массива по индексу k=0 получает значение.
объясните строку до каждой буквы буквально)
Первый оператор
C#
1
a.Where((item, num) => num % 2 == 0)
возвращает последовательность элементов item, индекс num (положение в массиве) которых является четным.
Далее идет Concat - этот оператор возвращает последовательность, состоящую из вызывающей(которую мы уже определили с помощью первого where) и последовательности, которая задается в виде параметра, а именно
C#
1
a.Where((item, num) => num % 2 != 0)
, который в свою очередь возвращает последовательность, состоящую из элементов базового массива, которые находятся на нечетных позициях.
Получив эту последовательность мы преобразуем ее в массив int.

для простоты понимания эту строку можно разделить условно на 4 метода -
1. создаем последовательность из элементов, стоящих на четных позициях
2. создаем последовательность из элементов, стоящих на НЕчетных позициях
3. объединяем 2 последовательности
4. делаем из этой последовательности массив

Надеюсь понятно)
1
20.12.2012, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2012, 16:52
Помогаю со студенческими работами здесь

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

Найти минимальный по модулю элемент массива и поставить его последним
Нужна помощь в написании программы на C# Найти минимальный по модулю элемент массива и поставить...

Найти минимальный по модулю не нулевой элемент и заменить на него нулевые элементы массива
Длина массива должна быть введена в ручную, границы чисел Найти минимальный по модулю не нулевой...

Вычислить максимальный по модулю элемент массива
Ребята, помогите, пожалуйста..


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

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