Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
.NET 3.x

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

13.05.2014, 23:21. Показов 3027. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, помогите пожалуйста, программы нужно написать, они не сложные, но этот язык я не понимаю вообще(((

4) Задание №4 Перестановка
Дан массив размера N. Найти два элемента массива, сумма которых наиболее близка к максимуму массива, и поменять их местами.

 Комментарий модератора 
Одна задача - одна тема! И называйте темы осмысленно!


Добавлено через 3 минуты
вот 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
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        struct P
        {
            public int Value { get; set; }
            public int Index { get; set; }
        }
 
        static void WriteOut(IEnumerable<int> m)
        {
            foreach (var item in m)
            {
                Console.Write("{0} ", item);
            }
            Console.WriteLine();
        }
 
        static void Main(string[] args)
        {
            const int N=5;
 
            var A = new P { Value = 0, Index = 0 };
            var B = new P { Value = 0, Index = 0 };
            var rnd = new Random();
            var M = Enumerable.Range(0, N). OrderBy( n => rnd.Next()).ToArray();
            
            WriteOut(M);
            for (var i = 0; i < N; i++)
            {
                if (M[i] > A.Value)
                {
                    B.Value = A.Value;
                    B.Index = A.Index;
                    A.Value = M[i];
                    A.Index = i;      
                }
                else if (M[i] > B.Value)
                {
                    B.Value = M[i];
                    B.Index = i;
                }
 
            }
            WriteOut(M);
            Console.WriteLine("{0} {1}", A.Value, A.Index);
            Console.WriteLine("{0} {1}", B.Value, B.Index);
 
            Console.ReadKey();
       
 
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2014, 23:21
Ответы с готовыми решениями:

Найти два элемента массива, сумма которых наиболее близка к данному числу N
Дан массив целых чисел и целое число N. Найти два элемента массива, сумма которых наиболее близка к данному числу N.

Найти 2 различных элемента массива, сумма которых близка к числу r
Дан массив n и число его элементов r. Необходимо найти 2 различных элемента массива, сумма которых близка к числу r и вывести на экран эти...

Найти два различных числа в массиве, сумма которых наиболее близка к заданному числу
//Дан массив и число &quot;p&quot;. Найдите два различных числа в массиве, сумма которых наиболее близка к &quot;p&quot;. Проблема в том, что я...

6
36 / 36 / 16
Регистрация: 26.11.2011
Сообщений: 199
14.05.2014, 13:35
Сразу куча вопросов назревает)
1) Зачем нужна структура P ?
C#
1
2
3
4
5
struct P
        {
            public int Value { get; set; }
            public int Index { get; set; }
        }
2) Почему везде var а не int?
3) Что делает вот эта строка кода?
C#
1
var M = Enumerable.Range(0, N). OrderBy( n => rnd.Next()).ToArray();
4)
Цитата Сообщение от Wermoot Посмотреть сообщение
Дан массив размера N.
какого типа массив дан? структуры P? int?
0
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
14.05.2014, 20:59  [ТС]
Незнаю, в интернете нашёл это решение)

Добавлено через 10 минут
Вот ещё нашел вариант, но тут ещё более не понятно((((
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
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList mas = new ArrayList();
            int value;
            do
            {
                Console.Write(">");
                value = int.Parse(Console.ReadLine());
                if (value == 0)
                    break;
                else
                    mas.Add(value);
            }
            while (true);
            int max = int.MinValue;
            int min = int.MaxValue;
 
            for (int i = 0; i < mas.Count; i++)
            {
                if ((int)mas[i] > max)
                    max = (int)mas[i];
                if ((int)mas[i] < min)
                    min = (int)mas[i];
            }
 
            int raz = max - min;
 
            int sum = 0;
 
            for (int i = 0; i < mas.Count; i++) sum += (int)mas[i];
 
            double sred = sum / mas.Count;
 
            Console.WriteLine("Среднее арифитическое:" + sred);
            Console.WriteLine("Разница: " + raz);
            Console.WriteLine("Максимум: " + max);
            Console.WriteLine("Минимум: " + min);
 
            for (int i = 0; i < mas.Count; i++)
            {
                if ((int)mas[i] > sred)
                {
                    mas.Insert(i + 1, raz);
                    i++;
                }
            }
            for (int i = 0; i < mas.Count; i++)
            {
                Console.Write(mas[i] + " ");
            }
            Console.ReadKey(true);
        }
    }
}
0
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
14.05.2014, 21:13
Цитата Сообщение от Wermoot Посмотреть сообщение
Незнаю, в интернете нашёл это решение)
Может включить логику и для начала проанализировать какие действия необходимо выполнить?
0
36 / 36 / 16
Регистрация: 26.11.2011
Сообщений: 199
14.05.2014, 21:23
Лучший ответ Сообщение было отмечено Wermoot как решение

Решение

Вот пример, так покатит?
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
class Program
    {
        static Random r = new Random();
        static void Main(string[] args)
        {
            Console.WriteLine("Введите размер массива:");
            int i =int.Parse(Console.ReadLine());
            //содаем новый массив целых чисел
            int[] array=new int[i];
            //заполняем массив
            FillArray(array);
            //отображение исходного массива
            DisplayArray(array);
            //поменять местами два элемента массива,
            //сумма которых наиболее близка к максимуму массива
            ChangeTwoMax(array);
            //отобразить измененный масив
            DisplayArray(array);
 
            Console.ReadLine();
       
        }
        static void FillArray(int[] a)
        {
            for (int j = 0; j < a.Length; j++)
            {
                a[j] = r.Next(0,100);
            }
        }
        static void DisplayArray(int[] a)
        {
            foreach (int item in a)
            {
                Console.Write(item.ToString()+" ");
            }
            Console.WriteLine();
        }
        static void ChangeTwoMax(int[] a)
        {
            int max1=0, max2=0;
            int index1=0, index2=0;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] >= max1)
                { max1 = a[i]; index1 = i; }
                else if (a[i] >= max2)
                { max2 = a[i]; index2 = i; }
            }
            int temp = a[index1];
            a[index1] = a[index2];
            a[index2] = temp;
        }
    }
0
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
14.05.2014, 23:03  [ТС]
Спасибо тебе огромное))))) всё работает отлично)))
0
36 / 36 / 16
Регистрация: 26.11.2011
Сообщений: 199
14.05.2014, 23:13
You're welcome!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2014, 23:13
Помогаю со студенческими работами здесь

Поменять два элемента массива местами
Дан двумерный массив размером 12х12. Найти наибольший элемент массива и поменять его местами с элементом, стоящим в левом верхнем углу. ...

Как обменять два элемента массива местами если эти два элемента это объекты?
как обменять два элемента массива местами если эти два элемента это объекты?

найти два соседних элемента массива, сумма которых наиболее близка к числу R
дано число R и массив размера N. найти два соседних элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в...

Найти два различных элемента массива, сумма которых наиболее близка к числу R
Дано число R и массив размера N. Найти два различных элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в...

Найти два соседних элемента массива, сумма которых наиболее близка к числу R
дано число R и массив размера N. найти два соседних элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 11.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 10.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru