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

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

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

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

01.06.2012, 20:26. Просмотров 324. Ответов 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;
}
Незнаю еще мало знаком с шаблонами функций поэтому, скажите правильно ли делаю?
По идее нада каждый пункт задания оформить в виде шаблона, ну я начал с суммы положительных элементов в массиве.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблоны функций. Исправьте ошибки (C++):

Шаблоны функций. Есть ошибки - C++
Помогите исправить ошибки! #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; template &lt;class T&gt; T myfind(T* arr,...

Исправьте ошибки - C++
На 10, 12, 16, 18 строках K, p, N, K соответственно, выдаёт was not declared in this scope. Помогите исправить. #include &lt;iostream&gt; ...

Исправьте ошибки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void main () { int N,M; int min=0, i, j;//переменные для цикла ...

Исправьте ошибки - C++
Ошибка не объявлена __MessageBoxA , chTitle , hProcess #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;Windows.h&gt;...

исправьте ошибки - C++
Задание прикрепил, 1 вариант. Вот такой код набрал, как описывает задание, но выдает ошибки, что делать не понимаю. ...

исправьте ошибки в коде - C++
посмотрите пожалуйста что не так с кодом? вот задание:Дана целочисленная квадратная матрица. Определить: • количество строк, не...

4
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. имхо, читать код без отступов сложновато, попробуйте пример полегче, чтобы понять как вызывать функции, объявлять и тд и тп.
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
01.06.2012, 21:57 #3
Procedure, функции find можно подставить тип void рас она ничего не возвращает
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
02.06.2012, 03:16 #4
C++
1
void find(atype &summ)
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.06.2012, 09:59 #5
Цитата Сообщение от Lordif Посмотреть сообщение
Скажите, а тип maxelem, minelem у вас где?
Так вот же он:
Цитата Сообщение от Procedure Посмотреть сообщение
C
1
2
int n,i,j,
maxelem, minelem;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2012, 09:59
Привет! Вот еще темы с ответами:

Исправьте ошибки в программе - C++
Программа:Нужно ввести 2 числа и программа должна посчитать их сумму,частное,разделить,умножить и если в знаменателе будет &quot;0&quot;, программа...

исправьте ошибки в игре - C++
Всем доброго времени суток. Прошу помощи: 1) Помогите сделать так, если я захожу в пункт меню (Enter'om), то потом не могу пользоваться...

Массивы(исправьте ошибки) - C++
Ошибка с массивом X, вот код: #include&lt;iostream.h&gt; #include&lt;math.h&gt; void main() {const int N=5; int i,k; int X; ...

исправьте ошибки в коде - C++
я понимаю что написал код не правильно исправьте пожалуйста #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
02.06.2012, 09:59
Ответ Создать тему
Опции темы

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