Thứ Hai, 2 tháng 1, 2017

Bài tập 320-321-322-323-324: Tính Tổng các số dương trong ma trận

  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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include <iostream>
using namespace std;

#define MAX 100
//MẢNG 2 CHIỀU - MA TRẬN VUÔNG

// 1. NHẬP SỐ PHẦN TỬ CỦA MA TRẬN
void NhapN(int &N)
{
 do
 {
  cout << "Nhap N = ";
  cin >> N;
  if (N <= 0 || N > MAX)
   cout << "Nhap sai xin vui long nhap lai!!!\n";
 } while (N <= 0 || N > MAX);
}

// 2. NHẬP MA TRẬN
void Nhap_MaTran(int A[][MAX], int N)
{
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   cout << "A["<<i<<"]["<<j<<"] = ";
   cin>>A[i][j];
  }
 }
}
// 3. XUẤT MA TRẬN
void Xuat_MaTran(int A[][MAX], int N)
{
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   cout << A[i][j] << "\t";
  }
  cout << "\n";
 }
}


// TÍNH TOÁN
// 1. Khai báo biến Tổng
// 2.Duyệt bởi 2 vòng lặp
//  2.1 Nếu
//   Tăng tổng
// 3. Trả về tổng

//320 Tổng các số dương trong ma trận thực
int Tong_Duong(int A[][MAX], int N)
{
 int S = 0;
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   if (A[i][j] > 0)
    S += A[i][j];
  }
 }
 return S;
}

//321 Tích các số lẻ trong ma trận nguyên
int Tich_Le(int A[][MAX], int N)
{
 int P = 1;
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   if (A[i][j] % 2 != 0)
    P *= A[i][j];
  }
 }
 return P;
}

//322 Tổng giá trị trên 1 dòng ma trận thực
// VD: 
// 1 3 4 ==> 8 
// 4 5 1 ==> 10
// 1 4 2 ==> 7
int Tong_Dong_BK(int A[][MAX], int N, int dong)
{
 int S = 0;
 for (int j = 0; j < N; j++)
 {
  S += A[dong][j];
 }
 return S;
}

void Xuat_Tong_Dong(int A[][MAX], int N)
{
 for (int i = 0; i < N; i++)
 {
  int kq = Tong_Dong_BK(A, N, i);
  cout << "Tong dong thu " << i << " la " << kq<<"\n";
 }
}

//323 Tích giá trị dương trên 1 cột ma trận thực
int Tich_Cot_Duong_BK(int A[][MAX], int N, int cot)
{
 int P = 1;
 for (int i = 0; i < N; i++)
 {
  if (A[i][cot] > 0)
   P *= A[i][cot];
 }
 return P;
}

void Xuat_Tich_Cot_Duong(int A[][MAX], int N)
{
 for (int j = 0; j < N; j++)
 {
  int kq = Tich_Cot_Duong_BK(A, N, j);
  cout << "Tich cot duong thu " << j << " la " << kq << "\n";
 }
}


//324 Tổng giá trị dương trên 1 dòng ma trận thực
int Tong_Dong_Duong_BK(int A[][MAX], int N, int dong)
{
 int S = 0;
 for (int j = 0; j < N; j++)
 {
  if (A[dong][j]> 0)
   S += A[dong][j];
 }
 return S;
}

void Xuat_Tong_Dong_Duong(int A[][MAX], int N)
{
 for (int i = 0; i < N; i++)
 {
  int kq = Tong_Dong_Duong_BK(A, N, i);
  cout << "Tong dong thu " << i << " la " << kq << "\n";
 }
}

void main()
{
 int A[MAX][MAX], N = 0;
 // Nhập số phần tử của ma trận
 NhapN(N);
 // Nhập ma trận
 Nhap_MaTran(A, N);
 // Xuất ma trận
 cout << "Ma tran ban dau gom : \n";
 Xuat_MaTran(A, N);
 cout << "\n";

 int kq_Tongduong = Tong_Duong(A, N);
 cout << "BAI TAP 320 : Tong duong la " << kq_Tongduong;
 cout << "\n";

 int kq_Tichle = Tich_Le(A, N);
 cout << "BAI TAP 321 : Tich le la " << kq_Tichle;
 cout << "\n";

 cout << "BAI TAP 322 tong dong la \n";
 Xuat_Tong_Dong(A, N);
 cout << "\n";

 cout << "BAI TAP 323 Tich cot duong la \n";
 Xuat_Tich_Cot_Duong(A, N);
 cout << "\n";

 cout << "BAI TAP 324 Tong dong duong la \n";
 Xuat_Tong_Dong_Duong(A, N);
 cout << "\n";
 
}

Không có nhận xét nào:

Đăng nhận xét