Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 9

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

07.04.2013, 10:57. Показов 2627. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru