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

Шаблоны функций и двумерный массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано одномерный массив Р, который состоит из 12 элементов. Вычислить сумму модулей всех от "объемных элементов * превышающих числа А (А = 1.25) http://www.cyberforum.ru/cpp-beginners/thread915029.html
Помогите пожалуйста с задачкой Дано одномерный массив Р, который состоит из 12 элементов. Вычислить сумму модулей всех от "объемных элементов * превышающих числа А (А = 1.25). Число А ввести с клавиатуры.
C++ Ошибка в программе: отсутствует спецификатор типа помогите ошибку исправить.не понимаю в чём дело. ошибка: error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию d:\xxx\c++\xxx\8_10\5\consoleapplication1\consoleapplication1\consoleapplication1.cpp 16 // #include "stdafx.h" #include "iostream" using namespace std; http://www.cyberforum.ru/cpp-beginners/thread915023.html
C++ Дано целочисленный одномерный массив А, состоящий из 14 элементов. Обчилслиты и напечатать сумму четных элементов, которые находятся на нечетных места
Помогите пожалуйста с задачкой Даны целочисленный одномерный массив А, состоящий из 14 элементов. Вычислить и напечатать сумму четных элементов, которые находятся на нечетных местах, и их количество.
C++ Перегрузка круглых скобок как ravalue
Не могу понять, как перегрузить () для того чтобы можно было использовать a(1, 2)=2; вместо a=3; ошибся, наверное не rvalue, а lvalue
C++ числовые переменные http://www.cyberforum.ru/cpp-beginners/thread914991.html
Добрый день форумчане.Столкнулся с такой проблемой мне нежно посчитать число вплоть до миллионной но у меня это число округляется перепробывал разный тип данных не помогло .что посоветуйте?
C++ Определение длины заранее неопределенной строки Добрый день. Возник вопрос с определением длины строки. Если она заранее определена, то используя функцию strlen() я легко получаю нужное значение. Если же я пытаюсь ввести с клавиатуры строку, используя пробелы, то функция считает длину строки до этого пробела, а не до конца. Подскажите, пожалуйста, может есть иные функции для определения такой строки, или какие-то уловки, с помощью которых... подробнее

Показать сообщение отдельно
FatSlowpoke
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 16
30.06.2013, 14:54     Шаблоны функций и двумерный массив
Задание следующее: программа работает с двумерным массивом, получает размерность и элементы, выводит матрицу на экран. Далее подсчитывает количество столбцов, не содержащих ни одного нулевого элемента. А затем сортирует матрицу по сумме положительных четных элементов строки.
Надобно сделать через шаблоны функций.
Трижды получаем размерность и элементы и трижды осуществляем всю эту процедуру с матрицей, ибо int, float и double.
Работала с примерной программой для одномерного массива, все сделала по такой же схеме, все прекрасно работает. Здесь же 2 ошибки. Не могу понять в чем проблема.
Не нужно совершенствовать или в корне переделывать. Все устраивает, но эти ошибки.
В общем, у кого не вызовет особых затруднений, прошу помощи.
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include<conio.h>
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<cmath>
 
using namespace std;
template <class A> A nul(A** a, int col, int row);
template <class B> void sort(B** a, int col, int row);
 
int main()
{setlocale(LC_ALL,"Russian");
int row,col;
cout<<"Массив типа int.\n\n";
cout<<"Введите количество строк: \n";
cin>>row;
cout<<"Введите количество столбцов: \n";
cin>>col;
int i,j;
int **a=new int *[row];
for(i=0; i<row; i++) a[i]=new int [col];
cout<<"Введите элементы матрицы: \n";
for(i=0; i<row; i++)
for(j=0; j<col; j++)
cin>>a[i][j];
cout<<"Введенная матрица: \n";
for (int i=0; i<row; i++)
{for (int j=0; j<col; j++)
cout<<a[i][j] << " ";
cout<<endl;}
cout<<"Кол-во столбцов, не содержащих ни одного нулевого элемента: ";
cout<<nul(a,col,row);
cout<<"\nСортировка массива\n";
sort(a,col,row);
 
 
cout<<"Массив типа float.\n\n";
cout<<"Введите количество строк: \n";
cin>>row;
cout<<"Введите количество столбцов: \n";
cin>>col;
float **b=new float *[row];
for(i=0; i<row; i++) b[i]=new float [col];
cout<<"Введите элементы матрицы: \n";
for(i=0; i<row; i++)
for(j=0; j<col; j++)
cin>>b[i][j];
cout<<"Введенная матрица: \n";
for (int i=0; i<row; i++)
{for (int j=0; j<col; j++)
cout<<b[i][j] << " ";
cout<<endl;}
cout<<"Кол-во столбцов, не содержащих ни одного нулевого элемента: ";
cout<<nul(b,col,row);
cout<<"\nСортировка массива\n";
sort(b,col,row);
 
 
cout<<"Массив типа double.\n\n";
cout<<"Введите количество строк: \n";
cin>>row;
cout<<"Введите количество столбцов: \n";
cin>>col;
double **c=new double *[row];
for(i=0; i<row; i++) c[i]=new double [col];
cout<<"Введите элементы матрицы: \n";
for(i=0; i<row; i++)
for(j=0; j<col; j++)
cin>>c[i][j];
cout<<"Введенная матрица: \n";
for (int i=0; i<row; i++)
{for (int j=0; j<col; j++)
cout<<c[i][j] << " ";
cout<<endl;}
cout<<"Кол-во столбцов, не содержащих ни одного нулевого элемента: ";
cout<<nul(c,col,row);
cout<<"\nСортировка массива\n";
sort(c,col,row);
getch();}
 
 
template <class A> A nul(A** a, int col, int row)//функция по столбцам без нулей
{int count,t,i,j;
count = 0;
for(j=0; j<col; j++)//прогоняем столбцы
{t=0;
for(i=0; i<row; i++)if(a[i][j]==0)t++;//прогоняем строки и ищем в них элементы равные нулю
if(!t)count++;}//если попадается строка, в которой нет нуля, то плюсуем счетчик
return count;}//выводим количесвто столбцов без нулей
 
template <class B> void sort(B** a, int col, int row)//функция по сортировке массива по сумме положительных четных элементов строки
{B *mus = new B [row];//создаем динамический массив
{for (int i=0; i<row; i++)//прогоняем строки
{mus[i] = 0;
for (int j=0; j<col; j++)//прогоняем столбцы
if (a[i][j] > 0 && !(a[i][j]%2))//если находим четный положительный элемент, 
mus[i] += a[i][j];}//то в ячейку массива записываем этот элемент
 
for(int i = 0; i<row-1; i++)//сортирем матрицу
{int b = i;
for(int j=i+1; j<row; j++)
if (mus[j] < mus[b])
b = j;
int buf_mus = mus[i];
mus[i] = mus[b];
mus[b] = buf_mus;
for(int j = 0; j<col; j++)
{int buf_a = a[i][j];
a[i][j] = a[b][j];
a[b][j] = buf_a;}}}
for (int i=0; i<row; i++)//выводим отсортированную матрицу матрицу
{for (int j=0; j<col; j++)
cout<<a[i][j] << " ";
cout<<endl;}}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru