Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/64: Рейтинг темы: голосов - 64, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65

Ближайшее число в массива (линейный поиск)

09.04.2014, 14:36. Показов 13977. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно найти ближайшее число в массиве.
Собственно говоря мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main(){
    int x, y; int count = 0, index, min;
 
    cin >> x;
    int mas[101];
    for (int i = 0; i < x; i++) {
        cin >> mas[i];
    }
    cin >> y;
    index = mas[0];
    for (int i = 0; i < x; i++){
        if (abs(mas[i] - y)<index){ index = mas[i]; min = i; }
 
 
    }
    cout << min;
 
    return 0;
}
Оригинальный текст:В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

Во второй строке содержатся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

В третьей строке вводится одно целое число x, не превосходящее по модулю 1000.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2014, 14:36
Ответы с готовыми решениями:

Объяснить линейный поиск в массиве и сортировка массива
Рябята кому не трудно кто может обяснить линейный поиск в масиве и сортировку масива Не очень понял как на парах обясняли обясните вы...

Линейный поиск. Напишите программу, которая определяет, сколько раз встречается заданное число x в данном массиве
Добрый день! Прошу помочь со следующей задачей. Дано: В первой строке задается одно натуральное число N, не превосходящее 1000 – ...

Дано натуральное число. Найти ближайшее простое число
1. Дано натуральное число. Найти ближайшее простое число. 2. Дано 20 пар однозначных чисел. Первое число каждой пары означает количество...

10
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 27
09.04.2014, 15:00
и что не работает?
C++
1
2
cin >> x;
    int mas[101];
если х вы берете как размер массива то и выделяйте х памяти а не 101
0
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
09.04.2014, 15:17  [ТС]
так, а что скажут люди по опытней?)
0
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 27
09.04.2014, 15:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main(){
    int x, y; int count = 0, index, min;
 
    cin >> x;
    int *mas=new int[x];
    for (int i = 0; i < x; i++) {
        cin >> mas[i];
    }
    cin >> y;
    index = 9999;
    for (int i = 0; i < x; i++){
        if (abs(mas[i] - y)<index){ index = mas[i]; min = i; }
 
 
    }
    cout << min;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
09.04.2014, 15:36  [ТС]
Нет, не правильно работает (можете сами проверить, введите 5,1 2 4 5 6, 3)
А насчет переменной index, что ты будешь делать если массивы превышают его (например 100500), а переменная y ровна какой нибуть маленькой цифре (например 0)?
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
09.04.2014, 15:54
Цитата Сообщение от kasadi Посмотреть сообщение
элементы массива (целые числа, не превосходящие по модулю 1000)
Цитата Сообщение от kasadi Посмотреть сообщение
что ты будешь делать
При таком раскладе модуль разницы не будет превосходить 2000.

Добавлено через 1 минуту
Student100,
на
Цитата Сообщение от Student100 Посмотреть сообщение
int *mas=new int[x];
не забудьте в конце почистить память
C++
1
delete [] mas;
0
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 27
09.04.2014, 16:09
C++
1
if (abs(mas[i] - y)<index){ index = mas[i]; min = i; }
вот здесь нифига не айс
надо так
C++
1
2
3
int r;
r=abs(mas[i] - y;
if (r<index){ index = r; min = i; }
0
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
09.04.2014, 16:25
так работает
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 <conio.h>
using namespace std;
int main(){
    int x, y; int count = 0, index, min;
 
    cin >> x;
    int mas[101];
    for (int i = 0; i < x; i++) {
        cin >> mas[i];
    }
    cin >> y;
    index = abs(mas[0] - y);
    min = 0;
    for (int i = 1; i < x; i++){
        if (abs(mas[i] - y)<index){ index = abs(mas[i] - y); min = i; }
 
 
    }
    cout << min;
 
    getch();
    return 0;
}
1
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
09.04.2014, 16:40  [ТС]
Спасибо Isprofit, программа хорошо работает с положительными элементами, но вот с отрицательными нет.
0
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
09.04.2014, 17:38
По-моему, она и на отрицательных работает. Если приведете тест, то я исправлю
0
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
10.04.2014, 14:54  [ТС]
Ну во первых, программа должна выводить элемент массива, а не его индекс.
Я это исправил
C++
1
2
3
4
for (int i = 1; i < x; i++){
        if (abs(mas[i] - y)<index){ index = abs(mas[i] - y); min = mas[i]; }
    }
    cout << min;
ТЕСТ: Ввод 5, -2 -3 -5 -10 -8, 4 Вывод 0

Добавлено через 20 часов 30 минут
Все сделал, вот код. Может кому понадобится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main(){
    int x, y; int count = 0, index, min;
 
    cin >> x;
    int mas[101];
    for (int i = 0; i < x; i++) {
        cin >> mas[i];
    }
    cin >> y;
    index = abs(mas[0] - y);
    min = mas[0];
    for (int i = 1; i < x; i++){
        if (abs(mas[i] - y)<index){ index = abs(mas[i] - y); min = mas[i]; }
 
 
    }
    cout << min;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2014, 14:54
Помогаю со студенческими работами здесь

Программа, которая считывает число с клавиатуры и находит ближайшее справа число, которое является квадратом натурального числа
Написать программу, которая считывает число с клавиатуры и находит ближайшее справа число, которое является квадратом натурального числа, и...

Написать программу, которая считывает число с клавиатуры и находит ближайшее справа число, которое равно сумме кубов своих цифр
Написать программу, которая считывает число с клавиатуры и находит ближайшее справа число, которое равно сумме кубов своих цифр (например: ...

Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и...

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

Найти ближайшее число
Среди чисел 1, 1+\frac{1}{2}, 1+\frac{1}{2}+\frac{1}{3}... найти ближайшее к заданому числу b. Помогите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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