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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2018, 18:45   #1
с787ан
 
Регистрация: 16.04.2018
Сообщений: 4
По умолчанию Нужно немного переделать программу - C++

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

#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int f1 (float *mas, float n )
{
//количество элементов массива, больших С;
int i, count=0, ind=0;
float c, maxm=0, counter=0;
cout<<"\n\nВведите число C: ";
cin>>c;
for(i=0; i<n; i++)
{
if(i==0)
{
maxm=fabs(mas[i]);
}
if(mas[i]>c)
{
count++;
}

if(fabs(mas[i])>maxm)
{
maxm=fabs(mas[i]);
ind=i;
}
}
cout<<"\n\nКоличество эл-ов больших С: "<<count;
cout<<endl;
}

int f2 (float *mas, float n )
{
//Произведение элементов массива, расположенных после максимального по модулю элемента
int count=0, ind=0, i;
float c, maxm=0,pro=1, counter=0;
float max = abs(mas[0]);
counter = 0;
for(i = 0; i < n; i++)
if(abs(mas[i]) > max)
{
counter = i;
max = abs(mas[i]);
}
float mult = 1;
for(i = counter+1; i < n; i++)
mult *= mas[i];
if(counter == n-1)
mult = 0;
cout << "\n\nПроизведение элементов массива, расположенных после максимального по модулю элемента: " << mult;
}

f3(float *mas, float n )
{
//ортируем массив по возрастанию
int i;
for(i=0; i<n-1; i++)
{
for(int j=0; j<n-i-1; j++)
{
if(mas[j]>mas[j+1])
{
float temp=mas[j];
mas[j]=mas[j+1];
mas[j+1]=temp;
}
}
}
cout<<"\n\nОтсортированный массив: ";
for(i=0;i<n;i++)
{
cout<<mas[i]<<"\t";
}
cout<<endl;
}
int main()
{
setlocale (LC_CTYPE,"rus");
cout<<"************************ Программа для работы с массивами *********************\n"<<endl;
// установка размера массива
int n1,i;//кол-во элементов
cout<<"Введите кол-во элементов: ";
cin>>n1;
float mas[n1]; //объявляем массив из кол-ва элементов, которое мы ввели
for(i=0; i<n1; i++)//запускаем цикл с просьбой ввести значение каждого элемента массива
{
cout<<i+1<<"-ый элемент: ";
cin>>mas[i];
}
//выведем значения всех эл-ов массива, используя цикл
cout<<"Исходный массив: ";
for(i=0; i<n1; i++)
{
cout<<mas[i]<<"\t";//вывод i-го эл-та
}
f1(mas,n1);
f2(mas,n1);
f3(mas,n1);
getch();
return 0;
}

Эта программа работает и вычисляет:
- количество элементов массива, больших С;
- произведение элементов массива, расположенных после максимального по модулю элемента.
- преобразовает массив путем расположения всех отрицательных элементы, а потом — всех положительных

Единственное что я не понимаю КАК оформить каждый пункт задания в виде шаблона функции.
с787ан вне форума Ответить с цитированием
Старый 26.04.2018, 20:02   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Скорее всего, речь идёт о функции, которая умеет работать с любым типом массива.
Код:
template <typename T>
f3(T *mas, int n)
{
  //Cортируем массив по возрастанию
  int i;
  for(i = 0; i<n-1; i++)
  {
    for(int j = 0; j<n-i-1; j++)
    {
      if(mas[j]>mas[j+1])
      {
        T temp = mas[j];
        mas[j] = mas[j+1];
        mas[j+1] = temp;
      }
    }
  }
  cout<<"\n\nОтсортированный массив: ";
  for(i = 0; i<n; i++)
  {
    cout << mas[i] << "\t";
  }
  cout << endl;
}
Black Fregat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать немного программу kisiy Помощь студентам 5 28.10.2015 00:21
Нужно немного подправить программу на работу с двумерной матрицей(C++ Builder6)) Kroleg Помощь студентам 1 09.10.2011 04:49
нужно немного переписать программу на Delphi dizWOLV Фриланс 6 15.05.2011 13:29
Помогите переделать программу немного. texcel Общие вопросы C/C++ 1 16.02.2009 19:42