Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно написать функцию которая возвращает индекс 
:(
    Опции темы
vovamakr
Дата 2.11.2015, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



Нужно написать функцию которая возвращает индекс элемента в массиве который мы  ищем.  Массив наполнять вручную..  Если такого значения нет , повернуть  размер  массива. Массив  отсортирован. Я  без понятия как  делать.  Помогите написать. 
PM MAIL   Вверх
feodorv
Дата 2.11.2015, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(vovamakr @  2.11.2015,  22:05 Найти цитируемый пост)
Массив  отсортирован

Бинарный поиск?


Цитата(vovamakr @  2.11.2015,  22:05 Найти цитируемый пост)
повернуть  размер  массива

Что сделать?

Это сообщение отредактировал(а) feodorv - 2.11.2015, 22:15


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
vovamakr
Дата 3.11.2015, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



feodorv,  хз, препод сказа цыклом пройтись  и найти индекс 
повернуть  что то чтобы не перепутать с индексом


Это сообщение отредактировал(а) vovamakr - 3.11.2015, 10:40
PM MAIL   Вверх
feodorv
Дата 3.11.2015, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(vovamakr @  3.11.2015,  10:39 Найти цитируемый пост)
повернуть  что то чтобы не перепутать с индексом
Может, всё-таки вернуть из функции? Вам абсолютно всё равно, что и как, лишь бы сдать? Тогда Вам в "Центр помощи". По ссылке, что я Вам дал, можно найти код на C и C++, нужно будет только изменить возвращаемое из функции значение.



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
vovamakr
Дата 3.11.2015, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



feodorv, я  там не нашел ничего про массив(
PM MAIL   Вверх
feodorv
Дата 3.11.2015, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(vovamakr @  3.11.2015,  11:00 Найти цитируемый пост)
feodorv, я  там не нашел ничего про массив( 

По ссылке? Не нашли???
Цитата

Пример кода на языке программирования Си для поиска элемента x в массиве a[n], отсортированного в возрастающем порядке:

А в "Центр помощи" скопируйте своё первое сообщение. Не забудьте указать в заголовке в квадратных скобках язык программирования.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
vovamakr
Дата 3.11.2015, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



сделал:
Код

int Array(int* array, int value, int size)
{
 
    
    for (int index = 0; index < size; ++index)
    {
        if (array[index] == value)
            return index;
        else
            return size;
    }
}
int main()
{
    int array[10] = { 1, 3, 5, 7, 8 };
 
    int pr = Array(array, 5, 10);
    printf("Value index:%d\n", pr);
 
}

PM MAIL   Вверх
feodorv
Дата 3.11.2015, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Код

#include <stdio.h>

unsigned int binarySearch( int m[], unsigned int size, int value)
{
    unsigned int first = 0;
    unsigned last = size;

    while( first < last ) 
    {
        unsigned int mid = (first + last) / 2;

        if( value == m[mid] ) return mid;

        if( value < m[mid] )
            last = mid;
        else
            first = mid + 1;
    }

    return size;
}

int main()
{
    int mass[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 };
    unsigned int index = binarySearch( mass, 10, 13);
    if( index < 10 )
      printf( "Found, index = %u\n", index);
    else
      printf( "Not found\n" );
    return 0;
}




Цитата(vovamakr @  3.11.2015,  11:48 Найти цитируемый пост)
сделал

А если:
Цитата(vovamakr @  3.11.2015,  11:48 Найти цитируемый пост)
    int pr = Array(array, 5, 3);



Это сообщение отредактировал(а) feodorv - 3.11.2015, 11:54


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
vovamakr
Дата 3.11.2015, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



Код

#include <cstdio>

int Array(int* array, int value)
{
    int size = (sizeof (array)) / sizeof(array[0]);
    for (int index = 0; index < size; ++index)
    {
        if (array[index] == value)
            return index;
    }
    return size;
}
int main()
{
    int array[10] = { 1, 3, 5, 7, 8 };

    int pr = Array(array, 3);
    printf("Value index:%d\n", pr);

}

PM MAIL   Вверх
math64
Дата 3.11.2015, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(vovamakr @  3.11.2015,  12:02 Найти цитируемый пост)
Код

int size = (sizeof (array)) / sizeof(array[0]);

Так можно писать когда array объявлен как массив (в main).
В Array он передается как указатель. Поэтому size получится равным 1 (на 32-разрядной ОС)
PM   Вверх
vovamakr
Дата 3.11.2015, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



math64,  а как сделать чтобы норм работало?
PM MAIL   Вверх
rudolfninja
Дата 3.11.2015, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



Цитата(vovamakr @  3.11.2015,  12:20 Найти цитируемый пост)
а как сделать чтобы норм работало? 

Передавать в функцию размер массива. Это вполне нормальная и распространенная практика.
PM MAIL Skype   Вверх
feodorv
Дата 3.11.2015, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(vovamakr @  3.11.2015,  12:20 Найти цитируемый пост)
а как сделать чтобы норм работало? 
Передавать размер массива дополнительным аргументом функции:
Цитата(vovamakr @  3.11.2015,  12:02 Найти цитируемый пост)
int Array(int* array, int size, int value)



Ну, и осталось учесть, что
Цитата(vovamakr @  2.11.2015,  22:05 Найти цитируемый пост)
Массив  отсортирован
 smile 




--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
rudolfninja
Дата 3.11.2015, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



Я думаю, что раз ему сказали в цЫкле  smile  пробежать по массиву и найти индекс, то факт, что массив отсортирован - бесполезный. Да и не думаю, что автор сам сможет бинарный поиск реализовать.
PM MAIL Skype   Вверх
vovamakr
Дата 3.11.2015, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 2.11.2015

Репутация: нет
Всего: нет



feodorv
Код

#include <cstdio>

 int FindValueInArray(const int* array, int value, int size)
{


    for (int index = 0; index < array[value]; ++index) // бинарный поиск я спрашывал в  препода следущее задание. А  тут  нужно пройтись покы етот елемент  больше следущих  
    {
        if (array[index] == value)
            return index;
    }
    return size;
}
int main()
{
    int array[5] = { 1, 3, 5, 7, 8 };

    int pr = FindValueInArray(array, 8, 5);
    printf("Value index:%d\n", pr);

}

PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1080 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.