1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 2 chiều phần 4 docx

11 908 14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 117,65 KB

Nội dung

Trang 1

printf("\n\tMa tran xoan oc:\n");

XuatMaTran(MaTranXoanOc,cot,dong);

getch();

}

void NhapCotDong(int &cot, int &dong)

{

printf("Nhap so cot: "); scanf("%d", &cot);

printf("Nhap so dong: "); scanf("%d", &dong);

}

void NhapMangThayMaTran(int Mang[],int cot,int dong)

{

for (int i=0, stt = 0; i<dong; i++ )

{

for (int j=0; j<cot; j++)

{

printf("\t\t%d/ [%d][%d] = ",stt+1, i, j);

scanf("%d", &Mang[stt]);

stt++;

}

}

}

void XuatMangThayMaTran(int Mang[],int cot,int dong)

{

printf("\t -\n");

for (int i=0,stt = 0; i<dong; i++)

{

printf("\t");

for (int j=0; j<cot; j++)

{

printf("%4d", Mang[stt]);

stt++;

}

printf("\n");

}

printf("\t -\n");

}

void SapXepMang1Chieu(int Mang[], int cot, int dong)

{

int temp;

for (int i=0;i <(cot*dong)-1; i++)

{

for (int j=i+1; j<(cot*dong); j++)

{

if(Mang[i]>Mang[j])

{

temp = Mang[i];

Mang[i]=Mang[j];

Mang[j]=temp;

}

}

}

}

void ThietLapMaTranXoanOc(int Mang[],int MaTranXoanOc[][10], int cot, int dong) {

Trang 2

int dem = 0;

int i=0, j=0;

int DauTien=0;

int Tru=0;

do

{

i=DauTien;

for (j=i; j< cot - Tru; j++)

{

MaTranXoanOc[i][j] = Mang[dem]; dem++;

}

j ;

for (i++; i< dong - Tru; i++ )

{

MaTranXoanOc[i][j] = Mang[dem]; dem++;

}

i ;

for (j ; j>=Tru; j )

{

MaTranXoanOc[i][j] = Mang[dem]; dem++;

}

Tru++;

j++;

for (i ; i>=Tru; i )

{

MaTranXoanOc[i][j] = Mang[dem]; dem++;

}

DauTien++;

} while (dem!=cot*dong);

}

void XuatMaTran(int a[][10], int cot,int dong)

{

printf("\t -\n");

for (int i=0; i<dong; i++)

{

printf("\t");

for (int j=0; j<cot; j++)

{

printf("%4d", a[i][j]);

}

printf("\n");

}

printf("\t -\n");

}

424 Sắp xếp các ptử theo hình ziczac

#include <stdio.h>

#include <conio.h>

void NhapCotDong(int &cot,int &dong);

void NhapMangThayMaTran(int Mang[],int cot,int dong);

Trang 3

void XuatMangThayMaTran(int Mang[],int cot,int dong);

void SapXepMang1Chieu(int Mang[], int cot, int dong);

void ThietLapMaTranZicZac(int Mang[],int MaTranZicZac[][10], int cot, int dong); void XuatMaTran(int a[][10], int cot,int dong);

void main()

{

int Mang[100];

int cot;

int dong;

NhapCotDong(cot,dong);

NhapMangThayMaTran(Mang,cot,dong);

printf("\n\tMa tran vua nhap vao: \n");

XuatMangThayMaTran(Mang,cot,dong);

SapXepMang1Chieu(Mang,cot,dong);

int MaTranZicZac[10][10];

ThietLapMaTranZicZac(Mang,MaTranZicZac,cot,dong);

printf("\n\tMa tran Zic Zac:\n");

XuatMaTran(MaTranZicZac,cot,dong);

getch();

}

void NhapCotDong(int &cot, int &dong)

{

printf("Nhap so cot: "); scanf("%d", &cot);

printf("Nhap so dong: "); scanf("%d", &dong);

}

void NhapMangThayMaTran(int Mang[],int cot,int dong)

{

for (int i=0, stt = 0; i<dong; i++ )

{

for (int j=0; j<cot; j++)

{

printf("\t\t%d/ [%d][%d] = ",stt+1, i, j);

scanf("%d", &Mang[stt]);

stt++;

}

}

}

void XuatMangThayMaTran(int Mang[],int cot,int dong)

{

printf("\t -\n");

for (int i=0,stt = 0; i<dong; i++)

{

printf("\t");

for (int j=0; j<cot; j++)

{

printf("%4d", Mang[stt]);

stt++;

}

printf("\n");

}

printf("\t -\n");

}

void SapXepMang1Chieu(int Mang[], int cot, int dong)

{

Trang 4

int temp;

for (int i=0;i <(cot*dong)-1; i++)

{

for (int j=i+1; j<(cot*dong); j++)

{

if(Mang[i]>Mang[j])

{

temp = Mang[i];

Mang[i]=Mang[j];

Mang[j]=temp;

}

}

}

}

void ThietLapMaTranZicZac(int Mang[],int MaTranZicZac[][10], int cot, int dong) {

int dem = 0;

int i=0, j=0;

do

{

for (i; i<dong ; i++)

{

MaTranZicZac[i][j] = Mang[dem]; dem++;

}

j++;

i ;

if (dem == cot*dong)

{

return;

}

for (i; i>-1; i )

{

MaTranZicZac[i][j] = Mang[dem]; dem++;

}

i++;

j++;

} while (dem != cot*dong);

}

void XuatMaTran(int a[][10], int cot,int dong)

{

printf("\t -\n");

for (int i=0; i<dong; i++)

{

printf("\t");

for (int j=0; j<cot; j++)

{

printf("%4d", a[i][j]);

}

printf("\n");

}

printf("\t -\n");

}

425 Xuất các giá trị âm giảm dần (ma trận ko thay đổi sau khi xuất)

Trang 5

Xây dựng ma trận

426 Cho ma trận A.Hãy tạo ma trận B,B[i][j] = abs(A[i][j])

void XayDungB(int a[][10], int n, int m, int b[][10])

{

for (int i=0; i<n; i++)

{

for (int j=0; j<m; j++) {

b[i][j] = abs(a[i][j]);

} }

}

427 Cho ma trận A.Hãy tạo ma trận B,B[i][j] = lớn nhất dòng i,cột j của A

int MaxTaiITaiJ(int a[][10], int n, int m,int i, int j)

{

int LonNhat = a[i][0];

for (int k = 1; k<m; k++)

LonNhat = (LonNhat < a[i][k])?a[i][k]:LonNhat;

for (k = 0; k<n; k++)

LonNhat = (LonNhat < a[k][j])?a[k][j]:LonNhat;

return LonNhat;

}

void XayDungB(int a[][10], int n, int m, int b[][10])

{

for (int i=0; i<n; i++)

{

for (int j=0; j<m; j++) {

b[i][j] = MaxTaiITaiJ(a,n,m,i,j);

} }

}

428 Cho ma trận A.Hãy tạo ma trận B,B[i][j] = số lượng ptử dương xung quanh A[i][j]

void XayDungB(int a[][10], int cot, int dong, int b[][10])

{

int dx[8]={-1,-1,-1, 0, 0, 1, 1, 1};

int dy[8]={-1, 0, 1,-1, 1,-1, 0, 1};

for (int i=0; i<dong; i++)

{

for (int j=0; j< cot; j++) {

for (int k=0; k<8; k++) {

if ((0<=dx[k]+i && dx[k]+i<dong) && (0<=dy[k]+j && dy[k]+j < cot)) {

if (a[dx[k]+i][dy[k]+j]>0) {

b[i][j]++;

} }

}

Trang 6

} }

}

Chuyên đề Ma trận vuông

429 Hàm nhập ma trận vuông số nguyên

430 Hàm nhập ma trận vuông số thực

431 Hàm xuất ma trận vuông số nguyên

432 Hàm xuất ma trận vuông số thực

437 Hàm sắp xếp ma trận vuông tăng từ trên xuống dưới và từ trái sang phải

void SapXep(int a[][10], int n)

{

for (int k=0; k<=n*n-2; k++)

for (int l=k+1; l<=n*n-1; l++)

if (a[k/n][k%n] > a[l/n][l%n]) {

int temp = a[k/n][k%n];

a[k/n][k%n] = a[l/n][l%n];

a[l/n][l%n] = temp;

} }

[b]Tính toán

438 Tổng ptử thuộc ma trận tam giác trên (ko tính đường chéo) trong ma trận vuông

439 Tổng ptử thuộc ma trận tam giác dưới (ko tính đường chéo) trong ma trận vuông

440 Tổng ptử trên đường chéo chính

int TongDuongCheoChinh(int a[][10], int n)

{

int S = 0;

for (int i=0; i<n;i++)

S+=a[i][i]

return S;

}

441 Tổng ptử trên đường chéo phụ

int TongDuongCheoPhu(int a[][10], int n)

{

int S = 0;

for (int i=0; i<n;i++)

S+=a[i][n-1-i]

return S;

}

442 Tổng ptử chẵn nằm trên biên

int TongPTuChanTrenBienMaTranVuong(int a[][100], int n)

{

int s=0;

for (int i=0; i<n;i++)

{

if (a[0][i] %2 == 0) //Dòng ??u 0

s+=a[0][i];

if (a[n-1][i] %2 == 0) //Dòng cu?i n-1

Trang 7

s+=a[n-1][i];

if (a[i][0] %2 == 0) //C?t ??u 0

s+=a[i][0];

if (a[i][n-1] %2 == 0) //C?t cu?i n-1

s+=a[i][n-1];

}

return s;

}

Kĩ thuật đặt lính canh

443 Tìm max trong ma trận tam giác trên

444 Tìm min trong ma trận tam giác dưới

445 Tìm max trên đường chéo chính

446 Tìm max trên đường chéo phụ

447 Tìm max nguyên tố trong ma trận

int SoNguyenTo(int n)

{

if (n<=1)

{

return 0;

}

for (int i=2; i<n-1; i++)

{

if (n/i==0) {

return 0;

} }

return 1;

}

int SoNguyenToDauTien(int a[][10], int n)

{

for (int i=0; i<n;i++)

{

for (int j=0; j<n; j++) {

if (SoNguyenTo(a[i][j])==1 ) {

return a[i][j];

} }

}

return 0;

}

int SoNguyenToMax(int a[][10], int n)

{

int SoNguyenToLonNhat = SoNguyenToDauTien(a,n);

if (SoNguyenToLonNhat == 0)

{

return 0; //ko co so nguyen to }

for (int i=0; i<n;i++)

{

for (int j=0; j<n; j++) {

Trang 8

if (SoNguyenTo(a[i][j])==1) {

SoNguyenToLonNhat=(SoNguyenToLonNhat>a[i][j])?SoNguyenToLonNhat:a[i][j]; }

} }

return SoNguyenToLonNhat;

}

448 Tìm 2 giá trị gần nhau nhất

void HaiGiaTriGanNhat(int a[][10], int n, int &X1, int &X2)

{

int KhoangCach = abs(a[0][0] - a[0][1]);

X1 = a[0][0]; //X1 va X2 la bien can tim

X2 = a[0][1];

int i;

int j;

for (i=0; i<n; i++)

{

for (j=0; j<n; j++) {

if (i == n-1 && j == n-1) {

break;

} for (int k=i; k<n;k++) {

for (int h=0; h<n; h++ ) {

if (k==i && h<=j) {

continue;

}

if (KhoangCach > abs(a[i][j] - a[k][h])) {

KhoangCach = abs(a[i][j] - a[k][h]);

X1 = a[i][j];

X2 = a[k][h];

} }

} }

}

}

449 * Cho ma trận vuông A(n x n) Hãy tìm ma trận vuông B(k x k) sao cho tổng các giá trị trên ma trận vuông này

là lớn nhất

Kĩ thuật đếm

450 Đếm số lượng cặp giá trị đối xứng nhau wa đường chéo chính

int DemCapGiaTriDoiXung(int a[][10], int n)

{

int dem = 0;

for (int i=1; i<n;i++)

for (int j=0; j<i; j++)

Trang 9

if (a[i][j]==a[j][i])

dem++;

return dem;

}

451 ??m s? l??ng dòng gi?m

int KtraDongGiam(int a[], int n)

{

for (int i=0; i<n-1; i++)

{

if (a[i]<a[i+1]) {

return 0;

} }

return 1;

}

int DemSoLuong(int a[][10], int n)

{

int dem = 0;

for (int i=0; i<n;i++)

{

if (KtraDongGiam(a[i],n)==1) {

dem++;

} }

return dem;

}

452 Đếm ptử cực đại

int SoLuongPTuCucDai(int a[][10], int n)

{

int dem=0;

int di[8] = {-1,-1,-1,0,0,1,1,1};

int dj[8] = {-1,0,1,-1,1,-1,0,1};

for (int i=0; i<n;i++)

{

for (int j=0; j<n; j++) {

int flag =1;

for (int k=0; k<8; k++) {

if (i+di[k]>=0 && i+di[k]<=n-1 && j+dj[k]>=0 && j+dj[k]<=n-1) {

if (a[i+di[k]][j+dj[k]]>a[i][j]) {

flag = 0;

break;

} }

}

if (flag == 1) {

dem++;

}

Trang 10

} }

return dem;

}

453 Đếm giá trị dương trên đường chéo chính

int SoLuongDuongCheoChinh(int a[][10], int n)

{

int dem=0;

for (int i=0; i<n;i++)

{

if (a[i][i]>0) {

dem++;

} }

return dem;

}

454 Đếm số âm trên đường chéo phụ

int SoLuongAm(int a[][10], int n)

{

int dem = 0;

for (int i=0; i<n;i++)

if (a[i][n-1-i]<0)

dem++;

return dem;

}

455 Đếm số chẵn trong ma trận tam giác trên

Kĩ thuật đặt cờ hiệu

456 Ktra đường chéo chính có tăng dần hay ko?

457 Ktra ma trận có đối xứng wa chéo chính ko?

458 ktra ma trận có đối xứng wa chéo phụ ko?

459 Ktra ma trận có phải là ma phương ko? Ma phương là khi tổng ptử trên các dòng, cột và 2 chéo chính phụ bằng nhau

Sắp xếp

460 Sắp chéo chính tăng dần

461 Sắp chéo phụ giảm dần

462 Hoán vị 2 dòng

463 Hoán vị 2 cột

464 sắp các dòng tăng dần theo tổng dòng

465 Đưa chẵn về đầu ma trận vuông

466 * Ma trận vuông A(n x n) với n >=3 Sắp tam giác trên tăng dần từ trên xuống dưới và từ trái sang phải

467 * Ma trận vuông A với n>=3 Sắp tam giác dưới giảm dần từ trên xuống dưới và từ trái sang phải

468 * Xây dựng ma phương A

Các phép toán trên ma trận

469 Tổng 2 ma trận

void Tong2MaTran(int a[][], int b[][], int c[][], int n, int m)

{

for (int i=0; i<n; i++)

{

Trang 11

for (int j=0; j<m; j++) {

c[i][j] = a[i][j] + b[i][j];

} }

}

470 Hiệu 2 ma trận

void Hieu2MaTran(int a[][], int b[][], int c[][], int n, int m) {

for (int i=0; i<n; i++)

{

for (int j=0; j<m; j++) {

c[i][j] = a[i][j] - b[i][j];

} }

}

471 Tích 2 ma trận

// mb = na; //dòng b = cột a

// nb = ma; //cột b = dòng a

// nc = na;

// mc = mb;

int GiaTriTungVTri(int a[][], int b[][], int m,int i, int j) {

int T = 0;

for (int k=0 ; k<m; k++)

T += a[i][k]*b[k][j];

return T;

}

void Tich2MaTran(int a[][], int b[][], int c[][], int n, int m) {

c = new int* [n];

for (int i=0; i<n; i++)

{

c[i] = new int [n];

for (int j=0; j<n; j++) {

c[i][j] = GiaTriTungVTri(a,b,m,i,j); }

}

}

472 * Ma trận nghịch đảo

473 * Định thức của ma trận

474 * Tạo ma phương bậc

-Hết -

Ngày đăng: 29/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

w