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

Программа в виде шаблона функции - C++

Восстановить пароль Регистрация
 
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
01.07.2012, 15:24     Программа в виде шаблона функции #1
помогите оформить программу в виде шаблона функции, пожалуйста!

C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
int main()
{   
 
    const int size = 4;
    int matr[size][size];
    int i=0, j=0;
    for (i = 0; i<size; ++i)
    {
        for (j = 0; j<size; j++)
        {
            matr[i][j] = rand()%10;
            cout<<matr[i][j]<<"\t";
        }
        cout<<"\n";
    }
 
    for (i = 0; i<size; ++i)
    {
        int index = i;
        int sum = 0;
        for (j = 0; j<size; ++j)
        {
            cout<<"matr["<<index<<"]["<<j<<"]";
            sum += matr[index++][j];
            if (index == size)
                index = 0;
            if (j != size - 1)
                cout<<" + ";
        }
        cout<<" = "<<sum<<"\n";
    }
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 15:24     Программа в виде шаблона функции
Посмотрите здесь:

C++ задание реализовать в виде класса - шаблона
Программа на C++ с использованием шаблона функции. C++
C++ программа для работы с бинарным деревом, реализующую функции: добавить элемент, удалить элемент, вывести в виде «дерева».В C++
Представить в виде шаблона C++
Разработайте программу, позволяющую реализовать диалог пользователя с ЭВМ в виде шаблона двух типов: свободного и жесткого C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.07.2012, 15:31     Программа в виде шаблона функции #2
Всю программу нельзя сделать из шаблона одной функции. В программе можно только использовать один или несколько шаблонов функций. Но не вся программа в виде шаблона.
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
01.07.2012, 15:36  [ТС]     Программа в виде шаблона функции #3
Цитата Сообщение от taras atavin Посмотреть сообщение
Всю программу нельзя сделать из шаблона одной функции. В программе можно только использовать один или несколько шаблонов функций. Но не вся программа в виде шаблона.
да, не шаблона функции, а шаблонов функции... я ошиблась)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.07.2012, 15:40     Программа в виде шаблона функции #4
Дело не во множественном/единственном числе, а в том, что ты не отличаешь всю программу от шаблона. Твоя постановка, это вроде как "сложи поленницу в виде палки", или "сложи оружейную пирамиду в виде пистолета Макарова". Часть путаешь с целым.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.07.2012, 15:50     Программа в виде шаблона функции #5
Я так понимаю вам надо что-то вроде этого
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
#include<iostream>
 
using namespace std;
 
template<class T>
void Calculate(T Size)
{
const T size = Size;
    T matr[size][size];
    T i=0, j=0;
    for (i = 0; i<size; ++i)
    {
        for (j = 0; j<size; j++)
        {
            matr[i][j] = rand()%10;
            cout<<matr[i][j]<<"\t";
        }
        cout<<"\n";
    }
 
    for (i = 0; i<size; ++i)
    {
        T index = i;
        T sum = 0;
        for (j = 0; j<size; ++j)
        {
            cout<<"matr["<<index<<"]["<<j<<"]";
            sum += matr[index++][j];
            if (index == size)
                index = 0;
            if (j != size - 1)
                cout<<" + ";
        }
        cout<<" = "<<sum<<"\n";
    }
}
 
int main()
{
    int a = 4;
 
    Calculate(a);
 
    double b = 3;
 
    Calculate(b);
 
 
    system("pause");
 
    return 0;
}
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
01.07.2012, 15:58     Программа в виде шаблона функции #6
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// функция заполнения массива
template <class T, size_t size>
void fill(T (&matr)[size][size])
{
    for(int i = 0; i < size; ++i)
    {
        for(int j = 0; j < size; ++j)
        {
            matr[i][j] = rand() % 10;
        }
    }
}
 
// функция вывода массива
template <class T, size_t size>
void print(T (&matr)[size][size])
{
    for(int i = 0; i < size; ++i)
    {
        for(int j = 0; j < size; ++j)
        {
            cout << matr[i][j] << " ";
        }
        cout << "\n";
    }
} 
 
// функция подсчёта сумм
template <class T, size_t size>
void summ(T (&matr)[size][size])
{
    int i, j;
    for (i = 0; i<size; ++i)
    {
        int index = i;
        T sum = 0;
        for (j = 0; j<size; ++j)
        {
            cout << "matr[" << index << "][" <<j<< "]";
            sum += matr[index++][j];
            if (index == size)
                index = 0;
            if (j != size - 1)
                cout << " + ";
        }
        cout << " = " << sum << "\n";
    }
}
 
int main()
{   
    const int size = 4;
    int matr[size][size];
    
    srand(static_cast<unsigned int>(time(0)));
    
    fill(matr);
    print(matr);
    summ(matr);
 
    return 0;
}
А что за суммы подсчитываются? Сначала подумал диагоналей...
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
01.07.2012, 16:03  [ТС]     Программа в виде шаблона функции #7
Schizorb, в программе находится максимум среди сумм элементов диагоналей, параллельных главной
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2012, 16:13     Программа в виде шаблона функции
Еще ссылки по теме:

Оформление выполненного кода в виде шаблона функции C++
Не компилируется программа (экспорт шаблона) C++
C++ Выполнить задание, оформив его в виде шаблона функции

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
01.07.2012, 16:13     Программа в виде шаблона функции #8
Диагонали циклически заворачиваются?
Я поработал над программой из соседней темы. Теперь для циклических.
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <algorithm>
#include <sstream>
#include <iomanip>
//#include <conio.h>
 
template <typename T> 
T cyclic_daig_sum(T** a, int rows, int cols, int diag)
{
    int r = 0;
    int c = diag;
    T sum = a[r++][c++];
 
    while (r < rows)
    {
        while (c < cols && r < rows)
            sum += a[r++][c++];
        c = 0;
    }
 
    return sum;
}
 
std::string daig_sum_string(std::string array_name, int rows, int cols, int diag)
{
    int r = 0;
    int c = diag;
    std::string str;
    std::stringstream so(str);
 
    so << array_name << "[" << r++ << "][" << c++ << "]";
    while (r < rows)
    {
        while (c < cols && r < rows)
            so << " + " << array_name << "[" << r++ << "][" << c++ << "]";
        c = 0;
    }
    
    return so.str();
}
 
template <typename T> 
void print_array(T** a, int rows, int cols, int width = 3)
{
    for (int r = 0; r < rows; ++r)
    {
        std::cout << std::setw(width) << a[r][0];
        for (int c = 1; c < cols; ++c)
        {
            std::cout << " " << std::setw(width) << a[r][c];
        }
        std::cout << std::endl;
    }
}
 
int main()
{
    int rows;
    int cols;
 
    std::cout << "Input num of rows\n";
    std::cin >> rows;
    std::cout << "Input num of cols\n";
    std::cin >> cols;
    int *p = new int[rows*cols];
    int **a = new int*[rows];
 
    std::cout << "Input elements of array\n";
 
    for (int i = 0; i < rows; i++)
    {
        a[i] = p + i*cols;
        for (int j = 0; j < cols; j++)
        {
            std::cout << "a[" << i << "][" << j << "] = ";
            std::cin >> a[i][j];
        }
    }
 
    std::cout << "\nArray:\n";
    print_array(a, rows, cols);
    std::cout << std::endl;
 
    int max_sum = cyclic_daig_sum(a, rows, cols, 0);
    for (int c = 0; c < cols; ++c)
    {
        int sum = cyclic_daig_sum(a, rows, cols, c);
        std::cout << daig_sum_string("a", rows, cols, c) << " = " << sum << std::endl;
        max_sum = std::max(sum, max_sum);
    }
    std::cout << "Max diagonal sum: " << max_sum << std::endl;
 
    delete [] a;
    delete [] p;
 
    //getch();
    return 0;
}
Yandex
Объявления
01.07.2012, 16:13     Программа в виде шаблона функции
Ответ Создать тему
Опции темы

Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru