Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
s-partizan
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 34
#1

Найти два элемента массива, сумма которых наименее близка к данному числу - C++

28.11.2012, 21:01. Просмотров 1809. Ответов 16
Метки нет (Все метки)

Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти два элемента массива, сумма которых наименее близка к данному числу (C++):

Найти два элемента массива, сумма которых наименее близка к данному числу R - C++
1)Дано вещественное число R и массив размера n. Найти два элемента массива, сумма которых наименее близка к данному числу R. 2) Дан...

Найти два элемента массива, сумма которых наиболее близка к заданому числу. - C++
Помогите пожалуйста, срочно нужно написать такую программу: задано действительное число R і массив размера N. Найти два елемента массива,...

Найти два различных элемента массива, сумма которых наиболее близка к числу R - C++
Найти два различных элемента массива, сумма которых наиболее близка к числу R. С соседними все понятно, но как перебрать все различные...

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

Дано вещественное число R и массив вещественных чисел. Найти 2 элементы массива, которые наименее близки к данному числу R - C++
Дано вещественное число R и массив вещественных чисел. Найти 2 элементы массива, которые наименее близки к данному числу R. пожалусто...

Найти все трехзначные числа, сумма цифр которых равна данному целому числу - C++
Найти все трехзначные числа?сумма цифр которых равна данному целому числу! Ребята побыстрее надо, заранее спасибо!

16
Krugera
27 / 27 / 2
Регистрация: 14.11.2011
Сообщений: 134
28.11.2012, 23:26 #2
Кто подскажет, как найти сумму всех элементов матрицы?
0
valeriikozlov
Эксперт С++
4677 / 2503 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
29.11.2012, 03:13 #3
Цитата Сообщение от s-partizan Посмотреть сообщение
Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наименее близка к данному числу.
Сортируете массив. Ответом будет: или два первых числа или два последних (одним сравнением это определите).
1
Kuzia domovenok
2119 / 1949 / 192
Регистрация: 25.03.2012
Сообщений: 6,755
Записей в блоге: 1
29.11.2012, 03:17 #4
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Сортируете массив. Ответом будет: или два первых числа или два последних (одним сравнением это определите).
Вот это подметил! Но справедливости ради стоит отметить, что выходит и сортировать до конца массив не надо, только найти 2 максимальных/2 минимальных элемента.
0
valeriikozlov
Эксперт С++
4677 / 2503 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
29.11.2012, 03:20 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Но справедливости ради стоит отметить, что выходит и сортировать до конца массив не надо, только найти 2 максимальных/2 минимальных элемента.
все правильно, можно и не сортировать.
0
Krugera
27 / 27 / 2
Регистрация: 14.11.2011
Сообщений: 134
29.11.2012, 17:53 #6
Объясните пожалуйста логику.Почему именно так?
0
valeriikozlov
Эксперт С++
4677 / 2503 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
29.11.2012, 19:15 #7
Цитата Сообщение от Krugera Посмотреть сообщение
Объясните пожалуйста логику.Почему именно так?
Если спрашиваете, значит еще не поняли, но это так.
Если взять числовую прямую, то максимальный разброс значений суммы двух чисел массива это: сумма двух самых минимальных чисел и сумма двух самых максимальных чисел. Какое бы значение не выбрали R максимально удаленное будет из этих двух значений.
0
Krugera
27 / 27 / 2
Регистрация: 14.11.2011
Сообщений: 134
30.11.2012, 22:42 #8
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Если спрашиваете, значит еще не поняли, но это так.
Если взять числовую прямую, то максимальный разброс значений суммы двух чисел массива это: сумма двух самых минимальных чисел и сумма двух самых максимальных чисел. Какое бы значение не выбрали R максимально удаленное будет из этих двух значений.
А если заставить пользователя вводить числовые значения в массив? то уже будет не известен их разброс? как тогда найти максимально приближенное число к R?
Меня пока больше всего интересует как узнать наибольшую сумму каждого элемента между собой?

Добавлено через 56 минут
Я не правильно задал вопрос. Самую большую сумму элементов узнать легко. А вот как узнать сумму всех элементов между собой, а потом еще и сравнить с каким-нибудь числом?
0
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
30.11.2012, 23:36 #9
тебе надо просто найти два самых маленьких элемента в массиве
Цитата Сообщение от Krugera Посмотреть сообщение
как
с помощью операции <= (меньше либо равно), я думаю.
0
Krugera
27 / 27 / 2
Регистрация: 14.11.2011
Сообщений: 134
30.11.2012, 23:40 #10
Цитата Сообщение от remarkes Посмотреть сообщение
тебе надо просто найти два самых маленьких элемента в массиве

с помощью операции <= (меньше либо равно), я думаю.
а зачем узнавать два самых маленьких элемента?неужели это позволит сплюсавать все элементы массива между собой?
0
s-partizan
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 34
30.11.2012, 23:58  [ТС] #11
У меня такой вопрос какое записать условие на вывод этих элементов
Я нашёл сумму 2-ух минимальных и 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
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
int R;
   cout<<"Vvedite chislo R= ";
   cin>>R;
   int n;
   cout<<"Zadayte razmer masiva n= ";
   cin>>n;
   int a[n];
   int i;
   cout<<"Zadayte masiv"<<endl;
   for(i=0;i<n;i++)
   {
       cin>>a[i];
   }
   int max=0,mmax=0;
   int maxpos=0,mmaxpos=0;
 
   for(i=0;i<n;i++)
   {
       if(a[i]>max)
       {
           max=a[i];
           maxpos=i+1;
       }
   }
    for(i=0;i<n;i++)
   {
       if(a[i]>mmax&&mmax<max&&a[i]!=max)
       {
           mmax=a[i];
           mmaxpos=i+1;
       }
   }
int min=max,mmin=max;
int minpos=0,mminpos=0;
   for(i=0;i<n;i++)
   {
       if(a[i]<min)
       {
           min=a[i];
           minpos=i+1;
       }
   }
    for(i=0;i<n;i++)
   {
 
       if(a[i]<mmin&&a[i]!=min)
       {
           mmin=a[i];
           mminpos=i+1;
       }
   }
   int summax=max+mmax;
   int summin=mmin+min;
  int e=R+summax;
  int e1=R+summin;
 if(e>e1)
 cout<<"Maksimalno udalionnaya summa elementov "<<mmaxpos<<" and "<< maxpos <<endl;
 else
 cout<<"Maksimalno udalionnaya summa elementov "<< minpos <<" and "<<mminpos<<endl;
0
valeriikozlov
Эксперт С++
4677 / 2503 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
01.12.2012, 00:14 #12
Цитата Сообщение от Krugera Посмотреть сообщение
А если заставить пользователя вводить числовые значения в массив? то уже будет не известен их разброс?
без разницы откуда берутся числа. Еще раз:
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Сортируете массив. Ответом будет: или два первых числа или два последних (одним сравнением это определите).
0
__Александр__
8 / 11 / 0
Регистрация: 17.09.2012
Сообщений: 188
Записей в блоге: 2
01.12.2012, 00:19 #13
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int n = 0; 
    int sum = 0;
    cin >> n; // Считываем с клавиатуры n
    int **a = new int* [n]; // Создаем массив указателей
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n]; // Создаем элементы
    }
    // А дальше работа как с обычным массивом. 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10;
            cout << a[i][j] << " "; // Вывести элементы на консольку
            sum+= a[i][j];
        }
        cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
    }
 
    cout << "sum =" << sum << endl;
    // Удаление массива
    for (int i = 0; i < n; i++)
    {
        delete[]a[i]; // Удаляем каждый элемент
    }
    delete [] a; // А потом массив
    return 0;
}
0
remarkes
303 / 226 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
01.12.2012, 09:52 #14
__Александр__, в C++ использовать низкоуровневый массив - это не тру. Для этого есть STL-контейнеры типа vector и прочие няшки.
Страуструп сказал
0
Krugera
27 / 27 / 2
Регистрация: 14.11.2011
Сообщений: 134
01.12.2012, 11:59 #15
Цитата Сообщение от s-partizan Посмотреть сообщение
У меня такой вопрос какое записать условие на вывод этих элементов
Я нашёл сумму 2-ух минимальных и 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
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
int R;
   cout<<"Vvedite chislo R= ";
   cin>>R;
   int n;
   cout<<"Zadayte razmer masiva n= ";
   cin>>n;
   int a[n];
   int i;
   cout<<"Zadayte masiv"<<endl;
   for(i=0;i<n;i++)
   {
       cin>>a[i];
   }
   int max=0,mmax=0;
   int maxpos=0,mmaxpos=0;
 
   for(i=0;i<n;i++)
   {
       if(a[i]>max)
       {
           max=a[i];
           maxpos=i+1;
       }
   }
    for(i=0;i<n;i++)
   {
       if(a[i]>mmax&&mmax<max&&a[i]!=max)
       {
           mmax=a[i];
           mmaxpos=i+1;
       }
   }
int min=max,mmin=max;
int minpos=0,mminpos=0;
   for(i=0;i<n;i++)
   {
       if(a[i]<min)
       {
           min=a[i];
           minpos=i+1;
       }
   }
    for(i=0;i<n;i++)
   {
 
       if(a[i]<mmin&&a[i]!=min)
       {
           mmin=a[i];
           mminpos=i+1;
       }
   }
   int summax=max+mmax;
   int summin=mmin+min;
  int e=R+summax;
  int e1=R+summin;
 if(e>e1)
 cout<<"Maksimalno udalionnaya summa elementov "<<mmaxpos<<" and "<< maxpos <<endl;
 else
 cout<<"Maksimalno udalionnaya summa elementov "<< minpos <<" and "<<mminpos<<endl;
Это и есть решение твоего задания?
я немного по другому нашел, правда не сам додумался.
0
01.12.2012, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2012, 11:59
Привет! Вот еще темы с ответами:

Найти два соседних элемента массива, сумма которых минимальна - C++
Дан массив.Найдите два соседних элемента,сумма которых минимальнп.

Найти два соседних элемента массива, сумма которых максимальна - C++
Доброго времени суток! Прошу помощи в решении следущих задач, которые впрочем можно решить и на Borland C++ Builder, но я предпочитаю...

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

вывод всех N значных чисел, сумма цифр которых = данному числу - C++
Составить программу вывода всех N значных десятичных чисел, сумма цифр которых равна введённому с клавиатуры целому числу (&lt;50).


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru