Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
srgfgvndu
0 / 0 / 0
Регистрация: 05.06.2018
Сообщений: 3
1

Найти элемент в упорядоченном массиве длинны N

05.06.2018, 18:24. Просмотров 364. Ответов 4
Метки нет (Все метки)

Найти элемент в упорядоченном массиве длинны N методом деления массива на k приблизительно равных частей.
Алгоритм немного не ясен. Он состоит в том , что нужно разделить массив на k частей , после чего мы получаем индексы границ , сравниваем искомое число с этими границами и полученную часть снова делим на k.Так вот, в чем неясность: Как поделить массив и искать эти самые индексы границ. Помогите , пожалуйста , разобраться. Заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2018, 18:24
Ответы с готовыми решениями:

Найти седловой элемент в массиве
Задание такое: прочитать массив из файла F1, и найти его седловую точку, то есть элемент который...

В массиве найти наибольший элемент
В массиве найти наибольший элемент. Вывести на дисплей полу- ченное значение. После этого изменить...

Найти минимальный элемент в массиве
Здравствуйте еще раз! Найти в каждой строке матрицы минимальный среди положительных элементов. я...

Найти в массиве наибольший нечетный элемент
Задать массив и найти в нем наибольший нечетный элемент

Найти минимальный элемент в одномерном массиве
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <math.h> float mad(float...

4
stake-k26
676 / 467 / 355
Регистрация: 25.04.2016
Сообщений: 1,333
06.06.2018, 00:13 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
#include <stdio.h>
// для примера размер массива 10
#define N 10
int main (void)
{
    // пусть массив будет заполненым:
    int a[N];           // массив
    int i;              // переменная-счетчик
    for (i=0; i<N; i++)
        a[i] = i+1;     // заполняем значениями
 
    // просим вользователя ввести количество частей
    int k;
    printf("k = ");
    scanf("%d", &k);
 
    // узнаем сколько элементов массива примерно поместится в 1 часть:
    k = (N+k - 1)/k;    // делим N на k с округлением вверх
 
    // теперь выпишем все "части" массива на экран:
    int j = 1;
    for (i=0; i<N; i++)
    {
        printf("%3d", a[i]);    // печатаем часть
        if (++j > k)            // увеличиваем счетчик внутри части
        {
            printf("\n");       // и если он превысил размер части,
            j = 1;              // начинаем печатать следующую часть
        }
    }
    printf("\n");
    return 0;
}
Конечно тут части делятся совсем не приблизительно поровну а по самому перовому алгоритму, который в голову пришел. Но как бы то ни было, обратите внимание на последний цикл, в котором части выводятся на экран. Мы идем по всему массиву и на каждом шаге цикла считаем еще и текущую длину части. Если часть закончилась, мы сбрасываем счетчик в 1 и начинаем печать следующей части.

Так вот, в тех местах, где происходит сброс счетчика и переход на новую строку - это и есть граница части. Т.е. вместо
printf("\n"); // и если он превысил размер части,

вам нужно запомнить номер элемента - границу

Это если только я правильно задание понял..
0
srgfgvndu
0 / 0 / 0
Регистрация: 05.06.2018
Сообщений: 3
06.06.2018, 10:43  [ТС] 3
Здравствуйте
А как именно можно запомнить границу и сравнить её с искомым элементом?
Ведь у нас же не одна граница получается. Если у нас, например, k = 25, а N = 100
То получается 25 границ. Как запомнить их?
0
Catstail
Модератор
24555 / 12471 / 2275
Регистрация: 12.02.2012
Сообщений: 20,245
06.06.2018, 10:58 4
Цитата Сообщение от srgfgvndu Посмотреть сообщение
То получается 25 границ. Как запомнить их?
- в массиве
0
srgfgvndu
0 / 0 / 0
Регистрация: 05.06.2018
Сообщений: 3
06.06.2018, 11:15  [ТС] 5
Я подумал, что можно это сделать как-то так :
В цикле проверки размера части присвоить границе новую переменную, начать сравнивать её с элементом.
После чего, если искомым элемент будет меньше границы, то выбрать эту часть массива и продолжить делить.
Но не получается это написать

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
06.06.2018, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2018, 11:15

Найти максимальный и минимальный элемент в массиве
здравствуйте! у меня несложное задание: найти максимальный и минимальный элемент в массиве. всё...

Рекурсивно найти минимальный элемент в массиве
Нужно написать рекурсивную функцию (программу) которая будет искать минимальный элемент в массиве.

В массиве найти средний по величине элемент
прикрепил фото с условием


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

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

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