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

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

Восстановить пароль Регистрация
 
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 114
23.05.2014, 21:39     Готовая прога исправить один недочет #1
Суть в том, что нужно посчитать
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; 
 
 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 21:39     Готовая прога исправить один недочет
Посмотрите здесь:

C++ Готовая программа для любой работы с массивом
C++ Целочисленное деление с округлением - пограмма готовая, только округление...
C++ строки C++ почти готовая
C++ Есть готовая прога,только нужно модифицировать.
Есть готовая рабочая прога. Нужно дописать пару строчек... C++
C++ Есть ли в с++ готовая функция преобразующая строку в массив?
C++ Не могу найти недочет ( массивы )
Дерево. Готовая программа на 95% C++
Готовая программа переделайте на Указатели C++
C++ Есть ли готовая функция для работы с массивами?
C++ Как исправить ошибку.подскажите пожалуйста. прога ломается на 79 строке
C++ Есть ли готовая команда, чтобы добавить в начало строки?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tenzor
5 / 5 / 9
Регистрация: 21.05.2014
Сообщений: 29
23.05.2014, 21:52     Готовая прога исправить один недочет #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Попробуй в начале программы поменять тип переменных p, sum и tmp на float

C++
1
2
3
4
5
6
int a[n][n];
float b[n][n];
float p = 1;
bool neotric = false;
float sum = 0;
float tmp = 0;
aksdaqg
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 114
24.05.2014, 11:10  [ТС]     Готовая прога исправить один недочет #3
Цитата Сообщение от Tenzor Посмотреть сообщение
int a[n][n];
float b[n][n];
float p = 1;
bool neotric = false;
float sum = 0;
float tmp = 0;
Спасибо большое. помогло
Yandex
Объявления
24.05.2014, 11:10     Готовая прога исправить один недочет
Ответ Создать тему
Опции темы

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