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

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

24.05.2009, 20:34. Показов 11418. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru