0 / 0 / 0
Регистрация: 30.01.2018
Сообщений: 10
1

Найти элемент массива ближайший к заданному числу. Если таких чисел несколько, вывести наименьшее из них

19.07.2018, 23:53. Показов 3571. Ответов 5
Метки нет (Все метки)

Если с основным условием я справился, то с уточнением не могу.

Вышло это:
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
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    #include <math.h>
    using namespace std;
 
    int main()
    {
    int x;
    cin>>x;
    int a[x],z,mi=1000,num=0;
 
    for (int i=0; i<x; i++)
    {cin>>a[i];}
 
    cin>>z;
 
    for(int n=0; n<x;n++)
    {
        if (abs(z-a[n])<mi) {mi=abs(z-a[n]); num=n;}
    }
    cout<<num+1;
    ;}
Как выводить наименьшее ближайшее не разобрался, хелпаните!
Заранее спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2018, 23:53
Ответы с готовыми решениями:

Найти элемент массива, который ближайший (дальний) к заданному числу
Помогите пожалуйста решить задачку. Дано действительное число R и массив размера N. Найти элемент...

Найти в массиве элемент с заданным значением; если таких элементов несколько, вывести индекс последнего из них
доброй ночи! Дан массив a. Элементы массива отсортированы в порядке возрастания. Используя метод...

Найти элемент массива, ближайший к заданному числу А и вставить после него A
Помогите пожалуйста. 1. Дан массив R, состоящий из N элементов. Найти элемент массива, ближайший...

Найти элемент, ближайший к заданному числу
Прошу помощи в решении задачи на одномерные массивы для VBA Excel. Найти элемент массива (и его...

5
12 / 12 / 3
Регистрация: 15.11.2017
Сообщений: 37
20.07.2018, 01:47 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
#include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    using namespace std;
 
    int main()
    {
    int x;
    cout << "Enter quantity of array values: "; // --
    cin>>x;
 
    int a[x],z,mi=1000,num=0;
 
    cout << "Enter array values:\n";
    for (int i=0; i<x; i++)
    {cin>>a[i];}
 
    cout << "\nEnter value for analyze: ";
    cin>>z;
 
    for(int n=0; n<x;n++)
    {
        if (abs(z-a[n])<mi) {mi=abs(z-a[n]); num=n;}
    }
    cout << "Position: " << num+1;
    cout << "\nValue: " << a[num];
    ;}
Библиотеки cmath и math.h взаимозаменяемы, поэтому следует оставить только одну.

Я не понимаю, чего ты хочешь. Поиск наименьшего ближайшего числа прекрасно выполняют строки 19-22 (по твоему коду). Твоя программа недоделана, но она выполняет условие задачи. Уточни свой вопрос
1
Модератор
Эксперт С++
12475 / 10029 / 6035
Регистрация: 18.12.2011
Сообщений: 26,847
20.07.2018, 09:32 3
Цитата Сообщение от Max1millian Посмотреть сообщение
наименьшее ближайшее
Думаю, имеется ввиду - элемент с наименьшим индексом.
Сделайте цикл проверки с конца
C++
1
2
3
4
5
num=x-1;mi=abs(z-a[num]);
for(int n=x-2; n>=0;n--)
    {
        if (abs(z-a[n])<mi) {mi=abs(z-a[n]); num=n;}
    }
1
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
20.07.2018, 15:45 4
Max1millian, по условию массив и число не обязательно целые - применяйте тип double. так как размер массива задаётся с клавиатуры используйте динамический массив.

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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int n, k=0, p=0, index=0;
    cout <<"n="; cin >>n;
 
    double*a = new double[n], z, min=0;  
  
    cout <<"Enter "<<n<<" elements:\n";
    for (int i = 0; i < n; i++)
    cin >>a[i];
    
    cout <<"number="; cin>>z;
 
    for(int i=0; i<n; i++)    
    if (i==0 || fabs(z-a[i])<min) {min=fabs(z-a[i]); index=i;}    
    
    for(int i=0; i<n; i++)
    {
    if (a[i]==z+min) k++;
    if (a[i]==z-min) p++;
    }
    
    if (k!=0 && p!=0) cout <<z-min<<endl;
    else cout <<a[index]<<endl;
   
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 30.01.2018
Сообщений: 10
22.07.2018, 00:47  [ТС] 5
Цитата Сообщение от Bargos Посмотреть сообщение
Уточни свой вопрос
Попробую объяснить на тестах:

1.Ввод:
5
1 2 3 4 5
6
Вывод:5 (т.к ближайшее число - 5, стоит 5-ым)

2.Ввод:
5
1 3 5 7 9
6
Вывод:3 (т.к. ближайшие числа - 5 и 7, 5 - наименьшее из них, стоит 3-им)

3.Ввод:
5
9 7 5 3 1
4
Вывод:4 (т.к. ближайшие числа - 5 и 3, 3 - наименьшее из них, стоит 4-ым)

Моя программа в третьем случае будет выводить "3", видимо потому, что "5" было введено раньше, чем "3"
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
22.07.2018, 01:52 6
Цитата Сообщение от Max1millian Посмотреть сообщение
Попробую объяснить на тестах:
1.Ввод:
5
1 2 3 4 5
6
Вывод:5 (т.к ближайшее число - 5, стоит 5-ым)
2.Ввод:
5
1 3 5 7 9
6
Вывод:3 (т.к. ближайшие числа - 5 и 7, 5 - наименьшее из них, стоит 3-им)
3.Ввод:
5
9 7 5 3 1
4
Вывод:4 (т.к. ближайшие числа - 5 и 3, 3 - наименьшее из них, стоит 4-ым)
и зачем интересно Вам номер числа ? где Вы это видите в условии ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2018, 01:52
Помогаю со студенческими работами здесь

Найти элемент последовательности ближайший к заданному числу
Есть задача, не понимаю что как делать Дана последовательность вещественных чисел a1,a2, ... ,...

Найти число, состоящее только из различных цифр. Если таких чисел несколько, найти первое из них
Ввести n чисел с консоли. Найти число, состоящее только из различных цифр. Если таких чисел...

В массиве целых чисел с количеством элементов n найти наиболее встречающееся число. Если таких чисел несколько, то определить наименьший из них
В массиве целых чисел с количеством элементов n найти наиболее встречающееся число. Если таких...

Найти число, в котором количество различных цифр минимально. Если таких чисел несколько, найти первое из них
Памагити) Уже который день бьюсь над задачкой. Задача. Ввести n чисел с консоли. Найти число,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru