Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 1 / 1
Регистрация: 29.11.2012
Сообщений: 479
1

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

27.02.2019, 22:49. Просмотров 1206. Ответов 5
Метки нет (Все метки)


Решил задачу, но у меня выскакивает ошибка. Вот сама задача: Написать шаблонную функцию, которая принимает одномерный массив любого типа, значение такого же типа, и размер массива, и возвращает значение типа int. Функция перебирает элементы массива с начала до конца, и как только встретит элемент, содержащий заданное значение, должна вернуть позицию (индекс) этого элемента в массиве. Если такого элемента нет, функция должна вернуть число -1.
ошибка Use of undeclared identifier 'val'
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int arr(int a, int val){
    if (a==val) {
        return -1;
    }
    return val;
}
 
 
int main(int argc, const char * argv[]) {
    int a[10]={1,2,3,4,5,-6,-7,-8,3,4};
    for (int i=0; i<=10; i++) {
        cout<<arr(a, val)<<endl; //Use of undeclared identifier 'val'
   }
    return 0;
}
Правильно ли я решил задачу? Если нет, то подскажите, как ее решить.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2019, 22:49
Ответы с готовыми решениями:

Написать шаблонную функцию, для обработки матриц любого типа
Написать ф-цию по матрицам,превратить в шаблон с тем,чтобы ф-ция обрабатывала матрицу любого типа.

Написать шаблонную функцию,которая вычислит сумму значений отрицательных элементов массива числового типа
Помогите с задачей на шаблонные функции. Я их вообще не понимаю. Вот задание.Мне сказали, что...

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите...

Написать функцию, которая принимает два параметра типа unsignet short int
Здравствуйте. Начал изучать С++ и столкнулся с таким заданием. Не могу разобраться и путаюсь в...

5
213 / 160 / 52
Регистрация: 09.12.2017
Сообщений: 520
27.02.2019, 22:53 2
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Use of undeclared identifier 'val'
Вы не инициализируете идентификатор val, следовательно, выходит ошибка.
Лучше в функции проходить по всему массиву. Примерно так :
C++
1
2
3
4
5
6
7
8
template <typename type>
int find(int length, type *arr, type element) // функция поиска индекса заданного элемента в массиве
{
    for (int i = 0; i < length; i++)
        if (arr[i] == element)
            return i;
    return -1;
}
0
3 / 1 / 1
Регистрация: 29.11.2012
Сообщений: 479
27.02.2019, 23:12  [ТС] 3
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Вы не инициализируете идентификатор val
Инициализирую и все равно ошибка.

Добавлено через 11 минут
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
, следовательно, выходит ошибка.
Лучше в функции проходить по всему массиву.
Я сделал, но получилась ерунда и кажется не соответствует заданию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
template <typename type>
int find(int length, type *arr, type element) // функция поиска индекса заданного элемента в массиве
{
    for (int i = 0; i < length; i++)
        if (arr[i] == element)
            return i;
    return -1;
}
 
 
int main(int argc, const char * argv[]) {
    const int s=10;
    int arr[10]={1,2,3,4,5,6,-3,-2,-7,-8};
    for (int i=0; i<=10; i++) {
        cout<<arr[i];
    }
    return 0;
}
0
213 / 160 / 52
Регистрация: 09.12.2017
Сообщений: 520
27.02.2019, 23:18 4
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
но получилась ерунда
Серьезно? А может быть нужно выводить результат функции, а не элементы массива?
C++
1
cout<< " find(10, arr, 2) : " << find(10, arr, 2) << endl; // ищем индекс элемента 2, если такой есть
0
213 / 160 / 52
Регистрация: 09.12.2017
Сообщений: 520
27.02.2019, 23:22 5
Лучший ответ Сообщение было отмечено Anonymous4722 как решение

Решение

Вот пример работы программы, при использовании Вашего массива.
Все верно, элемент 2 имеет индекс 1.
1
Миниатюры
Написать шаблонную функцию, которая принимает одномерный массив любого типа, значение такого же типа, и размер массива,  
3 / 1 / 1
Регистрация: 29.11.2012
Сообщений: 479
27.02.2019, 23:29  [ТС] 6
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Вот пример работы программы, при использовании Вашего массива.
Все верно, элемент 2 имеет индекс 1.
Да, теперь работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2019, 23:29

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

Написать функцию, которая принимает два параметра типа unsigned long long и выводит их на экран
Я самое наглое , ленивое и бессовестное чудовище)) но тем не менее Напишите функцию, которая ...

Написать функцию, которая по указателю принимает одномерный массив и его размер.
Здоров всэм!!! памагите ришыти задачу №1 Написати функцію, яка по вказівнику...

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

Функция которая принимает структуру любого типа в качестве параметра
Дана функция которая может принимать структуру любого типа (т. е. может хранить например 2 float и...


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

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

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