Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Cout <<
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 8
#1

функция по поиску элемента - C++

21.04.2011, 18:27. Просмотров 379. Ответов 7
Метки нет (Все метки)

всем доброго времени суток )))

господа программисты помогите написать функцию
C++
1
2
3
4
5
6
7
8
9
10
const int* find(const int& val, const int* begin, const int* end);
 
   for(int i = 0;i < size; i++)
   {  if( begin[i]==end[i] )
           return 0;
       else
           if( begin[i] == val)
               return begin;
   }
}
функия производит поиск значения на промежутке [begin, end)
результатом есть указатель на елемент val или NULL;

я не до конца понимаю как получится передать указатели на begin и end в мейне
помогите кому не трудно
заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 18:27     функция по поиску элемента
Посмотрите здесь:

Функция нахождения максимального элемента массива C++
C++ Не вызывается функция по поиску цифр из заданной строки
функция в си++ для удаления элемента C++
Функция для вставки элемента в массив C++
C++ Функция для нахождения минимального элемента
Функция удаления последнего четного элемента C++
C++ Рекурсивная функция по удалению элемента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1636 / 1264 / 129
Регистрация: 21.12.2010
Сообщений: 1,925
Записей в блоге: 7
21.04.2011, 18:52     функция по поиску элемента #2
при ненайденном элементе возвращать лучше не NULL, а end:
http://www.cplusplus.com/reference/algorithm/find/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
const int* find(const int* begin, const int* end, const int& val){
    for(; begin!=end; ++begin){
        if(*begin==val) break;
    }
    return begin;
}
 
int main(){
    int mas[]={1,2,3,4,5,6,7,8,9};
    const int* res=find(mas, mas+sizeof(mas)/sizeof(*mas), 2);
    std::cout<<"index= "<<res-mas<<"\n";
    return 0;
}
Cout <<
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 8
21.04.2011, 19:02  [ТС]     функция по поиску элемента #3
ИГОРЬ, спасибо тебе огромное

подскажи вот ещё что....
а если бы я захотел, что бы begin был 3, а end 8 элементом массива как тогда бы выглядел мейн ??
igorrr37
1636 / 1264 / 129
Регистрация: 21.12.2010
Сообщений: 1,925
Записей в блоге: 7
21.04.2011, 19:18     функция по поиску элемента #4
begin тройка, end восьмёрка
C++
1
const int* res=find(mas+2, mas+sizeof(mas)/sizeof(*mas)-2, 6);
Cout <<
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 8
21.04.2011, 22:22  [ТС]     функция по поиску элемента #5
спасибо, Игорь, извени что достаю, но как это сделать в шаблонах
C++
1
2
template<typename T> 
const T* find(const T& val, const T* begin, const T* end);
вот для такой
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
21.04.2011, 22:28     функция по поиску элемента #6
Cout <<,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template<class T>
const T* find(const T& value, const T* begin, const T* end){
    for(; begin!=end; ++begin){
        if(*begin==val) break;
    }
    return begin;
}
 
int main(){
    int mas[]={1,2,3,4,5,6,7,8,9};
    const int* res=find(2, mas, mas+sizeof(mas)/sizeof(*mas));
    std::cout<<"index= "<<res-mas<<"\n";
    return 0;
}
Cout <<
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 8
22.04.2011, 00:14  [ТС]     функция по поиску элемента #7
а в мейне что ничего не поменялось ???

Добавлено через 21 минуту
я всё понял спасибо

Добавлено через 1 час 22 минуты
скажите пожалуйста, а что не так в этой функции

C++
1
2
3
4
5
6
7
8
9
10
const F* min( const F* begin, const F* end){
 double* m = 0;
    for(; begin!=end; ++begin)
    {
       
        if(*begin < *m)
            *m = *begin;
    }
    return m;
}
она должна искать наименьший элемент и возвращать указатель на этот елемент
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2011, 12:17     функция по поиску элемента
Еще ссылки по теме:

C++ Функция, описывающая действия логического элемента OR
C++ Функция вставки элемента в циклический список
C++ Функция добавления элемента в кольцевой список
Поиск положительного элемента в массивах-функция C++
C++ Не работает функция удаления элемента из списка

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

Или воспользуйтесь поиском по форуму:
igorrr37
1636 / 1264 / 129
Регистрация: 21.12.2010
Сообщений: 1,925
Записей в блоге: 7
22.04.2011, 12:17     функция по поиску элемента #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
 
template <class T>
    const T* min_element (const T* first, const T* last ){
    const T* lowest = first;
    if (first==last){
        return last;
    }
    while (++first!=last){
        if (*first<*lowest){
            lowest=first;
        }
    }
    return lowest;
}
 
int main(){
    int mas[]={9,8,7,-1,2,3,4,-5,6,7};
    std::cout<<*min_element(mas, mas+sizeof(mas)/sizeof(*mas))<<"\n";
    return 0;
}
Yandex
Объявления
22.04.2011, 12:17     функция по поиску элемента
Ответ Создать тему
Опции темы

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