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

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

Войти
Регистрация
Восстановить пароль
 
Procedure
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 9
#1

Шаблоны функций. Исправьте ошибки - C++

01.06.2012, 20:26. Просмотров 313. Ответов 4
Метки нет (Все метки)

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <math.h>
using namespace std;
template <class atype>
int find(atype summ)
{
    int n,i,j,
maxelem, minelem;
    for (maxelem=minelem=i=summ=0;i<n;i++){
if (arr[i] > 0) summ += arr[i]; // Сумма положительных элементов
if (fabs(arr[i]) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr[i]) < fabs(arr[minelem])) minelem = i; // И минимального
}
}
 
int main(){
int n,i,j,
maxelem, minelem; // Номера максимального и минимального элементов
float summ = 0, // Сумма положительных элементов
temp;
cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;
float *arr = new float [n]; // Создание массива
for (i = 0; i < n; i++){
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr[i];
}
maxelem = minelem = 0;
 
cout << "Summ = " << find(summ) << endl; // Вывод суммы положительных елементов
if (abs(maxelem - minelem) > 1){ // Если между максимальным и минимальным по модулю элементами
// есть элементы
int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
for (i = stelem + 1,temp = 1; i < endelem; i++)
temp *= arr[i]; // Произведение промежуточных элементов
cout << "Pro = " << temp << endl; // Вывод полученного произведения
}
else
cout << "No elements";
cout << "Source array:\n[";
for (i = 0; i < n; i++) // Вывод исходного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
// Сортировка массива методом сравнения:
for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
if (arr[i] < arr[j]){ // Сравнение текущего элемента с элементом из оставшейся части.
temp = arr[i]; // Обмен значений элементов если они стоят в неправильном порядке
arr[i] = arr[j];
arr[j] = temp;
}
 
cout << "Array sorted:\n[";
for (i = 0; i < n; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
delete [] arr;
cin.get(),cin.get();
return 0;
}
Незнаю еще мало знаком с шаблонами функций поэтому, скажите правильно ли делаю?
По идее нада каждый пункт задания оформить в виде шаблона, ну я начал с суммы положительных элементов в массиве.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 20:26     Шаблоны функций. Исправьте ошибки
Посмотрите здесь:

Исправьте пожалуйста ошибки C++
Массивы(исправьте ошибки) C++
C++ Исправьте ошибки в коде
C++ Исправьте мне ошибки!
Шаблоны функций. Есть ошибки C++
C++ исправьте ошибки в коде
исправьте ошибки в коде C++
C++ исправьте ошибки в игре
Исправьте ошибки C++
Исправьте ошибки в программе C++
Исправьте ошибки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
01.06.2012, 21:53     Шаблоны функций. Исправьте ошибки #2
Скажите, а тип maxelem, minelem у вас где?
Когда вы вызываете find(summ), необхолимо писать например так:
C++
1
find<int>(summ)
То, что в <> - тип, которым будет проинициализирован atype.
P.S. имхо, читать код без отступов сложновато, попробуйте пример полегче, чтобы понять как вызывать функции, объявлять и тд и тп.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
01.06.2012, 21:57     Шаблоны функций. Исправьте ошибки #3
Procedure, функции find можно подставить тип void рас она ничего не возвращает
MrGluck
Ворчун
Эксперт CЭксперт С++
6403 / 3601 / 448
Регистрация: 29.11.2010
Сообщений: 9,528
02.06.2012, 03:16     Шаблоны функций. Исправьте ошибки #4
C++
1
void find(atype &summ)
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 10
Завершенные тесты: 1
02.06.2012, 09:59     Шаблоны функций. Исправьте ошибки #5
Цитата Сообщение от Lordif Посмотреть сообщение
Скажите, а тип maxelem, minelem у вас где?
Так вот же он:
Цитата Сообщение от Procedure Посмотреть сообщение
C
1
2
int n,i,j,
maxelem, minelem;
Yandex
Объявления
02.06.2012, 09:59     Шаблоны функций. Исправьте ошибки
Ответ Создать тему
Опции темы

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