0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9

Найти значение 3-го по величине элемента

07.04.2013, 10:57. Показов 2653. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста!!! Нужен код C#.

Объявить массив целых чисел и заполнить его случайными значениями. Размер массива 200,диапазон значений 0-100.

При выполнении следует иметь в виду следующее:

1)0 считается положительным числом, если в задании не оговорен какой-то другой его статус;
2)Когда речь идет о какой-то последовательности чисел, имеется в виду последовательность с длиной, большей 1;
3)В тех случаях, когда задание требует выполнения каких-то вычислений, разрешается выполнять их с той точностью, которую обеспечивают операции целочисленной арифметики.

Что нужно сделать?
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2013, 10:57
Ответы с готовыми решениями:

Найти значение 3-го по величине элемента и значение всех элементов массива, которые его превышают, заменить на найденное значение
Работа с массивами:

Найти значение 3-го по величине элемента массива
Задание Объявить массив целых чисел и заполнить его значениями, введенных с клавиатуры. Диапазон значений его элементов заданы в...

Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение ...

14
Заблокирован
07.04.2013, 14:01
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
static void Main(string[] args)
        {
            int a = 10, d = 0;
            Random rand = new Random();
            int[] A = new int[a];
            int[] B = new int[a];
            for (int i = 0; i < a; i++)
                A[i] = rand.Next(101);
            B = A;
            for (int i = 0; i < a; i++)
                Console.Write(A[i] + " ");
            Console.WriteLine();
            for (int i = 0; i < a; i++)
                for (int j = 0; j < a - 1; j++)
                    if (A[j] < A[j + 1])
                    {
                        int b = A[j];
                        A[j] = A[j + 1];
                        A[j + 1] = b;
                    }
 
            for (int i = 0; i < a; i++)
                Console.Write(A[i] + " ");
            Console.WriteLine();
            int max = 0;
            for (int i = 0; i < a && d < 2; i++)
                if (A[i] > A[i + 1])
                {
                    max = A[i + 1];
                    d++;
                }
 
            for (int i = 0; i < a; i++)
                if (B[i] > max)
                    B[i] = max;
 
            A = B;
 
            for (int i = 0; i < a; i++)
                Console.Write(A[i] + " ");
            Console.WriteLine();
        }
2
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
07.04.2013, 14:30  [ТС]
Большое спасибо, но если не затруднит, можете оставить несколько комментариев, что бы я смог разобраться)
0
Заблокирован
07.04.2013, 15:09
Немного модифицировал, так будет правильнее думаю:
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
static void Main(string[] args)
        {
            int a = 10, d = 0;
            Random rand = new Random();
            int[] A = new int[a];
            int[] B = new int[a];
            
            for (int i = 0; i < a; i++) //Заполняем массив случайными числами от 0 до 100(включительно)
                A[i] = rand.Next(101);
            
            for (int i = 0; i < a; i++) //Присваеваем массиву B массив А
                B[i] = A[i];            //т.к. обработку будем делать в нем
            
            for (int i = 0; i < a; i++) //Выводим на экран
                Console.Write(B[i] + " ");
            Console.WriteLine();
 
            for (int i = 0; i < a; i++) //Сортируем массив методом пузырька
                for (int j = 0; j < a - 1; j++)
                    if (B[j] < B[j + 1])
                    {
                        int b = B[j];
                        B[j] = B[j + 1];
                        B[j + 1] = b;
                    }
 
            for (int i = 0; i < a; i++) //Выводим на экран
                Console.Write(B[i] + " ");
            Console.WriteLine();
 
            int max = 0;
 
            for (int i = 0; i < a && d < 2; i++) //Находим 3ий по величине элемент
                if (B[i] > B[i + 1])
                {
                    max = B[i + 1];
                    d++;
                }
 
            for (int i = 0; i < a; i++) //Заменяем (уже в массиве А) все элементы
                if (A[i] > max)         //большие max(3его по величине эл.)
                    A[i] = max;
 
 
            for (int i = 0; i < a; i++) //Выводим на экран
                Console.Write(A[i] + " ");
            Console.WriteLine();
        }
1
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
07.04.2013, 15:52  [ТС]
Огромное спасибо!!)))
0
Заблокирован
07.04.2013, 20:02
Selection Problem решается за линейное время, а тут предложено решение за O(n^2), т.е. плохо вообщем.
0
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
07.04.2013, 20:49
А по-моему так писать было бы легче
C#
1
2
3
4
5
6
7
8
int[] arr = new int[200];
            for (int i = 0; i < 200; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
            }
            Array.Sort(arr);
            arr[0] = arr[2];
            arr[1] = arr[2];
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.04.2013, 20:53
Цитата Сообщение от Айрат95 Посмотреть сообщение
C#
1
2
arr[0] = arr[2];
arr[1] = arr[2];
Дык массив же заполнен случайными значениями, а значит возможны повторы.
0
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
07.04.2013, 21:06
Цитата Сообщение от kolorotur Посмотреть сообщение
Дык массив же заполнен случайными значениями, а значит возможны повторы.
Да.... Ошибочка вышла, простите за неправильное решение
0
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9
07.04.2013, 23:47  [ТС]
AIMaster, когда запускаю программу, выводит только 30 элементов в массиве, а нужно 200, подскажите как исправить?
0
Заблокирован
08.04.2013, 01:43
kolorotur, если формально подойти к задаче, то для {4,5,6,7,5} третий по величине элемент все таки будет 5, а не 6, но решается не сортировкой. в stl c++ есть алгоритм std::nth_element

на C# будет примерно вот так:
все это в контексте статического класса public static class SortHelper<T> where T : IComparable<T>
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
        //помещает в N-ю позицию последовательности элемент, который мог бы быть в этой позиции, 
        //если бы последовательность была отсортирована.
        public static void NthElement(T[] a, int n)
        {
            NthElement(a, n, 0, a.Length - 1);
        }
 
        private static void NthElement(T[] a, int n, int l, int r)
        {
            while (l < r)
            {
                int i = Partition(a, l, r);
                if (n <= i)
                    r = i - 1;
                if (n >= i)
                    l = i + 1;
            }
        }
 
       private static int Partition(T[] a, int l, int r)
        {
            int m = l + ((r - l) >> 1);
            Swap(ref a[m], ref a[r - 1]);
            Med3(a, l, r - 1, r);
            int i = l - 1;
            int j = r;
            T v = a[r - 1];
            do
            {
                while (a[++i].CompareTo(v) < 0) ;
                while (v.CompareTo(a[--j]) < 0) ;
                if (i >= j) break;
                Swap(ref a[i], ref a[j]);
            } while (true);
            Swap(ref a[r-1], ref a[i]);
            return i;
        }
 
 private static void Swap(ref T a, ref T b)
        {
            T t = a;
            a = b;
            b = t;
        }
 
        private static void CompareSwap(T[] keys, int a, int b)
        {
            if ((a != b) && (keys[a].CompareTo(keys[b])) > 0)
            {
                T t = keys[a];
                keys[a] = keys[b];
                keys[b] = t;
            }
        }
 
        private static void Med3(T[] a, int l, int m, int r)
        {
            CompareSwap(a, l, m);
            CompareSwap(a, l, r);
            CompareSwap(a, m, r);
        }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.04.2013, 02:04
Цитата Сообщение от farting Посмотреть сообщение
kolorotur, если формально подойти к задаче, то для {4,5,6,7,5} третий по величине элемент все таки будет 5, а не 6, но решается не сортировкой
Ммм... согласен с вами.
А почему ваш ответ мне адресован?
0
Заблокирован
08.04.2013, 02:16
kolorotur, потому что ты единственный кто поймет
0
08.04.2013, 03:03

Не по теме:

loro вернулся! Да здравствует мат и оскорбления. :rofl:

0
Заблокирован
08.04.2013, 03:20
Дмитрий3241, я ни куда и не уходил .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2013, 03:20
Помогаю со студенческими работами здесь

найти значение третьего по величине элемента массива
найти значение третьего по величине элемента массива размерность массива 200 диапазон значений 0-100 Добавлено через 1 час 11 минут...

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

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

Для каждого k от 2 до n найти значение второго по величине элемента среди первых k элементов последовательности a
Вам дана последовательность a1,a2...an длины n Для каждо k от 2 до n найдите значение второго по величине элемента среди первых k...

Определите значение второго по величине элемента в последовательности
Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...


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

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

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru