Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2014, 00:55   #1
CppForYou
Пользователь
 
Регистрация: 08.03.2013
Сообщений: 37
По умолчанию массивы

как сделать эту же программу используя функцию-шаблон (temlate<class Type> ...)
Код:
// Задание:
// В одномерном массиве, состоящем из n вещественных элементов, вычислить:
// 1. сумму отрицательных элементов массива;
// 2. произведение элементов массива, расположенных между максимальным и минимальным элементами.
// 3. Упорядочить элементы массива по возрастанию.

#include <stdio.h>
#include <iostream>
#include <time.h>
double first(double arr[], int len)
{
	double sum = 0;

	for(int i = 0; i < len; i++)
		if(arr[i] < 0)
			sum += arr[i];

	return sum;
}

double second(double arr[], int len)
{
	int index_min = 0;
	int index_max = 0;
	double mult = 1;

	for(int i = 0; i < len; i++) {
		if(arr[i] < arr[index_min])
			index_min = i;
		if(arr[i] > arr[index_max])
			index_max = i;
	}

	if(index_min > index_max) {
		int temp_index = index_min;
		index_min = index_max;
		index_max = temp_index;
	}

	for(int i = index_min+1; i < index_max; i++)
		mult *= arr[i];

	return mult;
}

void sort(double arr[], int len)
{
	for(int i = 0; i < len-1; i++)
		for(int j = i+1; j < len; j++)
			if(arr[i] > arr[j]) {
				double temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}

	return;
}

int main()
{
	double arr[10];

	srand(time(0));
	for(int i = 0; i < 10; i++) {
		arr[i] = rand()%256 - 128;
		std::cout << arr[i] << ' ';
	}

	std::cout << "\nSuma otricatelnyh: " << first(arr, 10) << std::endl;
	std::cout << "Proizvedenie mejdu min i max: " << second(arr, 10) << std::endl;

	sort(arr, 10);

	std::cout << "Otsortirovannyj massiv:\n";
	for(int i = 0; i < 10; i++)
		std::cout << arr[i] << ' ';
	std::cout << std::endl;
	return 0;
}
CppForYou вне форума Ответить с цитированием
Старый 09.04.2014, 01:04   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

CppForYou

как сделать эту же программу используя функцию-шаблон (temlate<class Type> ...)

замени это

double first(double arr[], int len)

на

template <typename T, size_t len, typename U>
T first(const T (&arr)[len], U)

использовать так же

double arr[10];
first(arr, 10);
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12