Есть программа, в ней две матрицы. Надо посчитать количество элементов кратных 5 у той матрицы, у которой больше положительных чисел на главной диагонали. Не выводит число элементов, кратных пяти, помогите разобраться, пожалуйста.
#include
using namespace std;
int A[3][3];
void mass(int A[3][3])
{
srand(time(nullptr));
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
A[i][j]=rand()%11-5;
std::cout << A[i][j] << "\t";
}
std::cout << std::endl;
}
}
int P[4][4];
void mass1(int P[4][4])
{
int a, b;
srand(time(nullptr));
for(int a=0; a<4; a++)
{
for(int b=0; b<4; b++)
{
P[a][b]=rand()%11-5;
std::cout << P[a][b] << "\t";
}
std::cout << std::endl;
}
}
int f(int A[3][3])
{
int i,j,k=0;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
if(i=j && A[i][j]>0)
k++;
return k;
}
int f1(int P[4][4])
{
int a,b,l=0;
for(int a=0; a<4; a++)
for(int b=0; b<4; b++)
if(a=b && A[a][b]>0)
l++;
return l;
}
int glav(int A[3][3], int P[4][4])
{
int l,k,i,j,m=0;
l=f1(P);
k=f(A);
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
if(k>l && i>=j && A[i][j]%5==0)
++m;
else
cout<<"GG"<<endl;
return m;
}
int glav1(int A[3][3], int P[4][4])
{
int l,k,a,b,n=0;
l=f1(P);
k=f(A);
for(int a=0; a<3; a++)
for(int b=0; b<3; b++)
if(k>l && a>=b && P[a][b]%5==0)
++n;
else
cout<<"GG-1"<<endl;
return n;
}
int main()
{
mass(A);
mass1(P);
cout<<"Первая матрица "<<glav<<endl;
cout<<"Вторая матрица "<<glav1<<endl;
return 0;
}
C/C++
Матрицы, массивы C++
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
void fill_random(int* v, int n) {
for (int i = 0; i < n; ++i) v[i] = rand() % 11 - 5;
}
void show(int* v, int n) {
for (int i = 0; i < n; ++i) cout << setw(4) << v[i];
puts("");
}
int multiples_of(int* v, int n, int x) {
int count = 0;
for (int i = 0; i < n; ++i) if (0 == v[i] % x) ++count;
return count;
}
int main() {
system("chcp 1251 > nul");
srand(unsigned(time(nullptr)));
puts(" Матрица A:\n");
const auto na = 3;
int a[na][na];
for (auto& r : a) fill_random(r, na);
for (auto& r : a) show(r, na);
puts("\n Матрица B:\n");
const auto nb = 4;
int b[nb][nb];
for (auto& r : b) fill_random(r, nb);
for (auto& r : b) show(r, nb);
puts("");
int pa = 0;
for (int i = 0; i < na; ++i) if (a[i][i] > 0) ++pa;
int pb = 0;
for (int i = 0; i < nb; ++i) if (b[i][i] > 0) ++pb;
const int x = 5;
int count = 0;
if (pa > pb) {
cout << "Матрица A: ";
for (auto& r : a) count += multiples_of(r, na, x);
} else if (pa < pb) {
cout << "Матрица B: ";
for (auto& r : b) count += multiples_of(r, nb, x);
} else {
puts("Равенство положительных элементов");
}
if (count) cout << " количество кратных пяти: " << count << '\n';
system("pause > nul");
}
#include <ctime>
#include <iomanip>
using namespace std;
void fill_random(int* v, int n) {
for (int i = 0; i < n; ++i) v[i] = rand() % 11 - 5;
}
void show(int* v, int n) {
for (int i = 0; i < n; ++i) cout << setw(4) << v[i];
puts("");
}
int multiples_of(int* v, int n, int x) {
int count = 0;
for (int i = 0; i < n; ++i) if (0 == v[i] % x) ++count;
return count;
}
int main() {
system("chcp 1251 > nul");
srand(unsigned(time(nullptr)));
puts(" Матрица A:\n");
const auto na = 3;
int a[na][na];
for (auto& r : a) fill_random(r, na);
for (auto& r : a) show(r, na);
puts("\n Матрица B:\n");
const auto nb = 4;
int b[nb][nb];
for (auto& r : b) fill_random(r, nb);
for (auto& r : b) show(r, nb);
puts("");
int pa = 0;
for (int i = 0; i < na; ++i) if (a[i][i] > 0) ++pa;
int pb = 0;
for (int i = 0; i < nb; ++i) if (b[i][i] > 0) ++pb;
const int x = 5;
int count = 0;
if (pa > pb) {
cout << "Матрица A: ";
for (auto& r : a) count += multiples_of(r, na, x);
} else if (pa < pb) {
cout << "Матрица B: ";
for (auto& r : b) count += multiples_of(r, nb, x);
} else {
puts("Равенство положительных элементов");
}
if (count) cout << " количество кратных пяти: " << count << '\n';
system("pause > nul");
}
Дмитрий Скрипников
Спасибо вам большое!
Похожие вопросы
- Помощь с Массивами C++
- Задание массивы c++
- Помогите дописать код с массивом C++
- Помогите дописать код с массивом c++
- Двумерные массивы C++, ничего не понимаю((( Нужна помощь
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.
- Массивы c++, нужно написать программу
- Программирование алгоритмов с использованием двумерных массивов c++
- Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)
- Двумерный массив C++