Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94

Одномерные массив (Шаблоны функций)

24.05.2009, 20:34. Показов 11363. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание.
Шаблоны функций
Выполнить упражнения из раздела «Одномерные массивы», оформив каждый пункт задания в виде шаблона функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается. Привести примеры программ, использующих эти шаблоны для типов int, float и double.
Вот задание из одномерных массивов
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) количество элементов массива, меньших С;
2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
Преобразовать массив таким обрахом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом - все остальные.
Вот решенное задание из одномерных массивов
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
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
 const int n=10;
 float a[n], c;
 int kol;
 cout << "Enter C: ";
 cin >> c;
 kol=0;
 cout << "Enter " << n << " numbers:" << endl;
 for (int i=1; i<=n; i++) cin >> a[i];
 for (int i=1; i<=n; i++) cout << a[i] << " ";
 for (int i=1; i<=n; i++) {
 if (a[i]<c)
 kol++;
 }
 cout << "\n" << kol << " numbers less C.";
 getch ();
        return 0;
}
Очень прошу помочь с шаблонами функций, время поджимает

Добавлено через 5 часов 15 минут 11 секунд
Ребята, я показал вам готовый код предыдущей лабы. Надо просто ее преобразовать, ну помогите хоть кто-нибудь :'(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2009, 20:34
Ответы с готовыми решениями:

Шаблоны функций и массив указателей
Задание! Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее...

Шаблоны функций и двумерный массив
Задание следующее: программа работает с двумерным массивом, получает размерность и элементы, выводит матрицу на экран. Далее подсчитывает...

Шаблоны функций и динамический двумерный массив
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;algorithm&gt; #include &lt;string&gt; using namespace std; ...

11
17 / 17 / 7
Регистрация: 06.05.2009
Сообщений: 115
24.05.2009, 21:02
uto, в чём имено у вас проблема? Первое задание у вас правильно назодится, а последнее отрицательное значение находится так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int posl_otr; //нидекс в массиве последнего отрицательного массива
for(int i-0;i<n;i++)
{
  if(a[i]<0)
    posl_otr = i;
}
 
//а потом
int new_arr[n];
for(int i=posl_otr ;i<n;i++)
{
  new_arr[q] = a[i];
}
А потом сортируете его как вам надо
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
24.05.2009, 21:07  [ТС]
Забыл выложить, я отрицательные считал иначе, у меня даже короче))))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
int n;
cout << "Enter numbers elements "; cin >> n;
int i, ineg;
float sum, *a=new float [n];
cout << "Enter elements of array ";
for (i=0; i<n; i++) cin >> a[i];
for (i=0; i<n; i++) cout << a[i] << ' ';
for (i=0; i<n; i++) if (a[i]<0) ineg=i;
for (sum=0, i=ineg+1; i<n; i++) sum += int(a[i]);
cout << "The sum " << sum;
        getch ();
        return 0;
}
Но суть не в этом, а вот в чем
Цитата Сообщение от uto Посмотреть сообщение
Выполнить упражнения из раздела «Одномерные массивы», оформив каждый пункт задания в виде шаблона функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается. Привести примеры программ, использующих эти шаблоны для типов int, float и double.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 21:12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template<typename Type>
int counter(Type *A, int n, Type C)
{
   int kol=0;
   for (int i=0; i<n; i++)
      if (A[i] < C) kol++;
   return kol;
}
 
template<typename Type>
int summa(Type *A, int n)
{
   int res=0;
   int neg=0;
   for (int i=0; i<n; i++)
      if (A[i] < 0) neg = i;
   for (int i=neg+1; i<n; i++)
      res += (int)A[i];
   return res;
}
1
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
24.05.2009, 21:14  [ТС]
И это всё? Лаба готова? оО
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 21:15
ну это код шаблонов функций... в main() вызвать ты их сможешь, я недеюсь?
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
24.05.2009, 21:21  [ТС]
Неа, никогда не делал
Может покажешь как это делается?
----------------------------------------

Сегодня помогаете мне, завтра начну помогать вам и другим, а если помог, скажи спасибо
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 21:41
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
using namespace std;
 
   /*
   В одномерном массиве, состоящем из n вещественных элементов, вычислить:
   1) количество элементов массива, меньших С;
   2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
   Преобразовать массив таким обрахом, чтобы сначала располагались все элементы, отличающиеся от 
   максимального не более чем на 20%, а потом - все остальные.
   */
 
template<typename Type>
int counter(Type *A, int n, Type C)
{
   int kol=0;
   for (int i=0; i<n; i++)
      if (A[i] < C) kol++;
   return kol;
}
 
template<typename Type>
int summa(Type *A, int n)
{
   int res=0;
   int neg=0;
   for (int i=0; i<n; i++)
      if (A[i] < 0) neg = i;
   for (int i=neg+1; i<n; i++)
      res += (int)A[i];
   return res;
}
 
template<typename Type>
void modify(Type *A, int n)
{
   int max=0;
   for (int i=0; i<n; i++)
      if (A[i] > A[max]) max = i;
 
   Type x = (A[max]/100 * 20);
 
   int l=0;
   for (int i=0; i<n; i++)
   {
      if (A[i]>(A[max]-x))
      {
         Type tmp = A[l];
         A[l++] = A[i];
         A[i] = tmp;
      }
   }
}
 
template<typename Type>
void print(Type *A, int n)
{
   for (int i=0; i<n; i++)
      cout << A[i] << " ";
   cout << endl;
}
 
int main()
{
   const int n = 10;
   float A[n] = {-1.1, -2.2, -3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10};
   float C;
 
   cin >> C;
   cout << "KOl-vo: " << counter(A, n, C) << endl;
   cout << "Suuma: " << summa(A,n) << endl;
   modify(A, n);
   print(A, n);
 
   system("pause");
   return 0;
}
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.05.2009, 21:44
Цитата Сообщение от uto Посмотреть сообщение
Неа, никогда не делал
Может покажешь как это делается?
Ну коль не шутишь, то:
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
60
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
template<typename Type>
int counter(Type *A, int n, Type C)
{
  int kol=0;
  for (int i=0; i<n; i++)
    if (A[i] < C) kol++;
  return kol;
}
 
template<typename Type>
int summa(Type *A, int n)
{
  int res=0;
  int neg=0;
  for (int i=0; i<n; i++)
    if (A[i] < 0) neg = i;
  for (int i=neg+1; i<n; i++)
    res += (int)A[i];
  return res;
}
 
int main()
{
  int n;
 
  cout << "Enter numbers elements "; 
  cin >> n;
  
 
  double* arr = new double[n];
 
  cout << "Enter elements of array ";
  
  for (int i=0; i<n; i++)
    cin >> arr[i];
  
  for (int i=0; i<n; i++)
    cout << arr[i] << ' ';
 
  double c = 0.0;
  
  cout << "Enter c ";
  cin >> c;
  
  double sum = summa(arr, n);
  cout << "Sum= " << sum << endl;
 
  int count = counter(arr, n, c);
  cout << "Count= " << c << endl;
 
  system("pause");
 
  return 0;
};
Опоздал...
1
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 21:48
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Опоздал...
да ничего у самого бывает часто
0
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
24.05.2009, 21:56  [ТС]
Оба кода работают некоректно.
Monte-Cristo, ввожу еденицу, а он пишет

1
KOl-vo: 3
Suuma: 49
8.8 9.9 10.1 4.4 5.5 6.6 7.7 -1.1 -2.2 -3.3
Что это за цифры, не пойму

CyBOSSeR, а твой код выводит все нормально, только вот не правильно считает сумму элементов меньших С..
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
24.05.2009, 22:10
Цитата Сообщение от uto Посмотреть сообщение
Оба кода работают некоректно.
это ты некорректно воспринимаешь свое условие)

ввел еденицу...
кол-во чисел меньше еденицы: 3 (так как -1.1, -2.2, -3.3)
сумма = 49.. это сумма целых частей расположенных после последнего отрицательного элемента (4+5+6+7+8+9+10)
(у тебя исходный массив: -1.1, -2.2, -3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10 )
и выведен массив, где элементы не превышающие отличие от максимального на 20 процентов, перенесены в начало массива (20 % от 10.10 ~ 2 (т.е. это элементы 8.8, 9.9, 10.10))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2009, 22:10
Помогаю со студенческими работами здесь

Возожно ли создать массив указателей на шаблоны функций?
Можно ли создать массив указателей на шаблоны функций, если да, то как? Пробовал вот так template &lt;class my_type&gt; void my_func(...

Шаблоны функций
Реализовать на языке С++ программу, в которой оформ-лены в виде шаблонов функций (массив передавать в функцию в качестве параметра) :...

Шаблоны функций.
Написать шаблон функции, осуществляющей обработку линейного массива. Тип и размер массива передаются как параметры шаблона ( &lt;class T,...

Шаблоны функций в с++
Подскажите, почему появляется сообщение об ошибке? как исправить? #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; //#include...

Шаблоны функций
Добрый вечер! У меня возникли трудности с шаблонами функций. Вот код с шаблоном template &lt;class type,class ttype&gt; ttype...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru