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

Готовая прога исправить один недочет - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упражнение по многопоточному программированию http://www.cyberforum.ru/cpp-beginners/thread1186252.html
Добрый день уважаемые форумчане. Понял что имею большую дыру в познаниях в многопоточном программировании, нашел упражения и потихоньку делаю, если кого не затруднит прокоментируйте следующий код -...
C++ Отступы в файле Есть программа, туда вводится информация о работниках: имя, фамилия, должность, зарплата. Эти данные отображаются в консоли и записываются в файл, но в файл всё записывается одной строкой, то есть... http://www.cyberforum.ru/cpp-beginners/thread1186250.html
C++ Программирование с использованием файлов: список студентов
Помогите, пожалуйста, решить задачу Написать программу формирования файла, содержащего данные из задания соответствующего номеру по списку. В программе предусмотреть сохранение вводимых данных в...
Перегрузка операторов C++
Помогите, пожалуйста, решить задачу При создании собственных типов данных с помощью классов наиболее общей операцией является проверка на равенство экземпляров класса. Используя перегрузку,...
C++ Класс "Список товаров" http://www.cyberforum.ru/cpp-beginners/thread1186240.html
Создать класс, в котором определены поля и методы класса: конструктор с параметрами, конструктор без параметров, ввод и вывод данных. Реализовать два варианта ввода данных: программно и с клавиатуры....
C++ Сформировать текстовый файл f1. Определить количество повторений каждого слова Доброго времени суток! Вот есть шаблон кода. Функция work и должна определять количество повторений каждого слова. Как это можно реализовать? Заранее огромное спасибо. #include "stdafx.h"... подробнее

Показать сообщение отдельно
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 117

Готовая прога исправить один недочет - C++

23.05.2014, 21:39. Просмотров 255. Ответов 2
Метки (Все метки)

Суть в том, что нужно посчитать
1)произведение элементов в тех строках, которые не содержат отрицательных элементов;
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include <ctime>
 
using namespace std;
 
static const int n=5;
 
int a[n][n];
float b[n][n];
int p = 1;
bool neotric = false;
int sum = 0;
int tmp = 0;
int i,j;
 
template < class mas, class T >
void zadan1(mas (&a)[n][n],T p);
template < class mas, class T  >
void zadan2(mas (&a)[n][n], T sum);
 
void main()
{ 
 
setlocale(0,"");
 
srand((unsigned)time(NULL));
 
//Создание и заполнение матрицы
 
cout << "Матрица1" << endl;
 
for(i=0;i < n;i++) 
{
for(j=0;j < n;j++)
{
a[i][j] = rand()% 100 - 20;
cout << a[i][j] << " ";
}
cout << endl;
} 
 
cout << endl;    
 
zadan1(a,p);
zadan2(a,sum);
 
cout << endl;
 
//sum дублируется второй раз
 
cout << "Матрица2" << endl;
 
cout.precision(2);
for(i=0;i < n;i++) 
{
for(j=0;j < n;j++)
{
b[i][j] = (float(rand()%rand()% 100 - 20)/75);
cout << b[i][j] << " ";
}
cout << endl;
} 
 
cout << endl;    
 
zadan1(b,p);
zadan2(b,sum);
 
 
 
 
system("pause");
}
 
template< class mas, class T >
void zadan1(mas (&a)[n][n], T p )//(&a)[n][n]
    {
cout << "Произведение \n"; //1)произведение элементов в тех строках, которые не содержат отрицательных элементов;
for(i=0;i < n;i++)
{
for(j=0;j < n;j++)
{
if(a[i][j] > 0)
{
neotric = true;
}
if(a[i][j] < 0)
{
neotric = false;
j = n-1;
}
}
if(neotric == false)
{
cout << i << " строка имеет отрицательные элементы\n";
neotric = false;
}
if(neotric == true)
{
cout << i << " произведение = ";
for(j=0;j < n;j++)
p = p * a[i][j];
cout << p << endl;
p = 1; 
neotric = false;
}
} 
cout << endl;       
}
 
template < class mas, class T>
void zadan2(mas (&a)[n][n], T p)
{
cout << "Сумма \n"; //2)максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. 
for(i=0;i < n;i++)
{
for(j=1;j < n;j++)
{
sum = sum + a[i][j];
i++;
}
}
for(i=1;i < n;i++)
{
for(j=0;j < n-1;j++)
{
tmp = tmp + a[i][j];
i++;
}
}
 
if(sum > tmp)
cout << "максимум : " << sum << endl;
else
cout << "максимум : " << tmp << endl; 
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru