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

Chuyên đề mảng 2 chiều phần 3 doc

13 945 16
Tài liệu đã được kiểm tra trùng lặp

Đ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 13
Dung lượng 125,12 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

GanMangVaoMaTrana,cot,dong,b; } 416 Sắp xếp ptử dương tăng dần theo cột và dòng.. Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng phụ như bài 415 thêm điều kiện xét ptử dương

Trang 1

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

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

dem[i]++;

int Max = dem[0];

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

Max = (Max>dem[i])?Max:dem[i];

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

if (Max == dem[i])

printf("\nDong %d co so nguyen to nhieu nhat la %d", i,Max); }

390 * Liệt kê các cột có nhiều chữ số nhất

void LietKe(int a[][100], int cot, int dong)

{

int dem[100] = {0};

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

{

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

int tam;

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

do {

dem[i]++;

tam=tam/10;

} while (tam>0);

} }

int Max = dem[0];

for (i=1; i<cot; i++)

Max = (Max>dem[i])?Max:dem[i];

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

if (Max == dem[i])

printf("\nCot %d co nhieu chu so nhat la %d", i,Max);

}

391 * Tìm ma trận con có tổng lớn nhất

Kĩ thuật xử lý ma trận

392 Hoán vị hai dòng ma trận

void HoanVi2Dong(int a[][100],int dong, int d1, int d2)

{

int temp[100];

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

{

temp[i] = a[d1][i];

a[d1][i] = a[d2][i];

a[d2][i] = temp[i];

}

}

393 Hoán vị hai cột ma trận

void HoanVi2Cot(int a[][100],int cot,int c1, int c2)

{

int temp[100];

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

Trang 2

{

temp[i] = a[i][c1];

a[i][c1] = a[i][c2];

a[i][c2] = temp[i];

}

}

394 Dịch xuống xoay vòng các hàng trong ma trận void DichXuong(int a[][100], int cot, int dong) {

int temp[100];

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

{

temp[i] = a[cot-1][i];

}

for (i = cot-1; i>=1; i )

{

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

a[i][j] = a[i-1][j];

} }

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

{

a[0][i] = temp[i] ; }

}

395 Dịch lên xoay vòng các hàng trong ma trận void DichLen(int a[][100], int cot, int dong) {

int temp[100];

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

{

temp[i] = a[0][i];

}

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

{

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

a[i][j] = a[i+1][j];

} }

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

{

a[dong-1][i] = temp[i] ; }

}

396 Dịch trái xoay vòng các cột trong ma trận void DichTrai(int a[][100], int cot, int dong) {

int temp[100];

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

Trang 3

{

temp[i] = a[i][0];

}

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

{

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

a[i][j] = a[i][j+1];

} }

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

{

a[i][cot-1] = temp[i] ; }

}

397 Dịch phải xoay vòng các cột trong ma trận

void DichPhai(int a[][100], int cot, int dong)

{

int temp[100];

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

{

temp[i] = a[i][cot-1];

}

for (int j = cot-1; j>0; j )

{

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

a[i][j] = a[i][j-1];

} }

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

{

a[i][0] = temp[i] ; }

}

398 Dịch phải xoay vòng theo chiều kim đồng hồ các giá trị nằm trên biên void DichPhaiXoayVong(int a[][100], int n, int m) // n dòng m c?t

{

int i, j; //i dong , j cot

int tam = a[0][0];

for (i=0,j=i; i< n-1; i++) //n=4, m = 5

{

a[i][j] = a[i+1][j]; //i = 3 > dung, j =0 }

for (j,i; j< m -1; j++ )

{

a[i][j] = a[i][j+1]; //i=3 > j = 4 }

for (i,j; i>0; i )

{

a[i][j] = a[i-1][j]; //i = 0 > j =4 }

Trang 4

for (i,j; j>1; j )

{

a[i][j] = a[i][j-1]; //i = 0 > j = 1 }

a[0][1] = tam;

}

399 Dịch trái xoay vòng theo chiều kim đồng hồ các giá trị nằm trên biên void DichTraiXoayVong(int a[][100], int cot, int dong)

{

int i, j;

int tam = a[0][0];

for (i=0,j=0; j< cot-1; j++)

{

a[i][j] = a[i][j+1];

}

for (i,j; i< dong-1; i++ )

{

a[i][j] = a[i+1][j];

}

for (i,j; j>0; j )

{

a[i][j] = a[i][j-1];

}

for (i,j; i>1; i )

{

a[i][j] = a[i-1][j];

}

a[1][0] = tam;

}

400 Xóa 1 dòng trong ma trận

void Xoa(int a[][100], int cot, int &dong)

{

printf("Nhap chi so dong ban muon xoa");

int x,i,j;

do

{

scanf("%d", &x);

} while ( x<0 || x>=dong);

for ( i=x;i<dong-1;i++ )

{

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

a[i][j] = a[i+1][j];

} }

dong ;

}

401 Xóa 1 cột trong ma trận

void Xoa(int a[][100], int &cot, int dong)

{

printf("Nhap chi so cot ban muon xoa");

Trang 5

int x,i,j;

do

{

scanf("%d", &x);

} while ( x<0 || x>=cot);

for ( i=x;i<cot-1;i++ )

{

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

a[j][i] = a[j][i+1];

} }

cot ;

}

402 Xoay ma trận 1 góc 90 độ

void XoayMaTran(int a[][100], int cot, int dong) {

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

{

for (int j=dong-1; j>=0; j ) {

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

printf("\n");

}

}

403 Xoay ma trận 1 góc 180 độ

void XoayMaTran(int a[][100], int cot, int dong) {

for (int i=dong-1;i>=0; i )

{

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

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

printf("\n");

}

}

404 Xoay ma trận 1 góc 270 độ

void XoayMaTran(int a[][100], int cot, int dong) {

for (int i=cot-1;i>=0; i )

{

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

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

printf("\n");

}

}

Trang 6

405 Chiếu gương ma trận theo trục dọc

void XoayMaTran(int a[][100], int cot, int dong) {

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

{

for (int j=cot-1; j>=0; j ) {

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

} printf("\n");

}

}

406 Chiếu gương ma trận theo trục ngang

void XoayMaTran(int a[][100], int cot, int dong) {

for (int i=dong-1;i>=0; i )

{

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

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

} printf("\n");

}

}

Kĩ thuật sắp xếp

407 Sắp xếp ptử trên 1 dòng tăng dần từ trái sang phải void SapXep(int a[][100], int cot, int dong)

{

int x;

printf("Nhap dong muon sap xep: ");

scanf("%d",&x);

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

{

for (int k=j+1; k<cot;k++) {

if (a[x][j]>a[x][k]) {

int temp = a[x][j]; a[x][j] = a[x][k];

a[x][k] = temp;

} }

}

}

408 Sắp xếp ptử trên 1 dòng giảm dần từ trái sang phải void SapXep(int a[][100], int cot, int dong)

{

int x;

printf("Nhap dong muon sap xep: ");

scanf("%d",&x);

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

Trang 7

{

for (int k=j+1; k<cot;k++) {

if (a[x][j]<a[x][k]) {

int temp = a[x][j];

a[x][j] = a[x][k];

a[x][k] = temp;

} }

}

}

409 Sắp xếp ptử trên 1 cột tăng dần từ trên xuống dưới void SapXep(int a[][100], int cot, int dong)

{

int x;

printf("Nhap cot muon sap xep: ");

scanf("%d",&x);

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

{

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

if (a[i][x]>a[j][x]) {

int temp = a[i][x];

a[i][x] = a[j][x];

a[j][x] = temp;

} }

}

}

410 Sắp xếp ptử trên 1 cột giảm dần từ trên xuống dưới void SapXep(int a[][100], int cot, int dong)

{

int x;

printf("Nhap cot muon sap xep: ");

scanf("%d",&x);

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

{

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

if (a[i][x]<a[j][x]) {

int temp = a[i][x];

a[i][x] = a[j][x];

a[j][x] = temp;

} }

}

}

411 Xuất giá trị chẵn trong ma trận theo thứ tự giảm dần

412 Xuất các số nguyên tố theo thứ tự tăng dần

Trang 8

413 Sắp xếp theo yêu cầu: Dòng có chỉ số chẵn tăng dần, lẻ giảm dần

void SapXep(int a[][100], int cot, int dong)

{

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

{

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

for (int k=j+1; k<cot;k++) {

if (i%2==0) {

if (a[i][j]>a[i][k]) {

int temp = a[i][j];

a[i][j] = a[i][k];

a[i][k] = temp;

} }

else {

if (a[i][j]<a[i][k]) {

int temp = a[i][j];

a[i][j] = a[i][k];

a[i][k] = temp;

} }

} }

}

}

414 Sắp xếp theo yêu cầu: Cột có chỉ số chẵn giảm từ trên xuống, lẻ tăng từ trên xuống void SapXep(int a[][100], int cot, int dong)

{

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

{

for (int j=0; j<dong-1; j++) {

for (int k=j+1; k<dong;k++) {

if (i%2==0) {

if (a[j][i]<a[j][i]) {

int temp = a[j][i];

a[j][i] = a[k][i];

a[k][i] = temp;

} }

else {

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

Trang 9

int temp = a[j][i];

a[j][i] = a[k][i];

a[k][i] = temp;

} }

} }

}

}

415 Sắp xếp ptử tăng dần theo hàng và cột: Dùng 2 phương pháp: sử dụng mảng phụ và ko dùng mảng phụ void GanMaTranVaoMang(int a[][10], int cot,int dong,int b[], int &nb)

{

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

{

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

b[nb] = a[i][j];

nb++;

} }

}

void SapXepMangPhu(int b[], int nb) //S?p x?p t?ng d?n

{

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

{

for (int j=i+1; j<nb; j++) {

if (b[i] > b[j]) {

int temp = b[i];

b[i] = b[j];

b[j] = temp;

} }

}

}

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

{

int n=0;

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

{

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

a[i][j] = b[n];

n++;

} }

}

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

{

int b[100],nb=0;

GanMaTranVaoMang(a,cot,dong,b,nb);

SapXepMangPhu(b,nb);

Trang 10

GanMangVaoMaTran(a,cot,dong,b);

}

416 Sắp xếp ptử dương tăng dần theo cột và dòng Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng

phụ (như bài 415 thêm điều kiện xét ptử dương)

417 Sắp xếp ptử chẵn giảm dần theo cột và dòng Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng

phụ (như bài 415 thêm điều kiện xét ptử chẵn và đổi dấu > thành <)

418 Sắp xếp âm tăng dần, dương giảm dần, 0 giữ nguyên

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

{

int i,j,k,h,d=0,temp;

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

{

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

if (a[i][j]<0) {

for (k=i; k<dong; k++) {

if (d==0)

h=j;

else

h=0;

for (; h<cot; h++) {

if (a[i][j] > a[k][h] && a[k][h]<0) {

temp = a[i][j];

a[i][j] = a[k][h];

a[k][h] = temp;

} }

if (h==cot)

d=1;

} d=0;

}

} }

}

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

{

int i,j,k,h,d=0,temp;

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

{

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

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

for (k=i; k<dong; k++) {

if (d==0)

h=j;

Trang 11

else

h=0;

for (; h<cot; h++) {

if (a[i][j] < a[k][h] && a[k][h]>0) {

temp = a[i][j];

a[i][j] = a[k][h];

a[k][h] = temp;

} }

if (h==cot)

d=1;

} d=0;

}

} }

}

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

{

SapXepSoAm(a,cot,dong);

SapXepSoDuong(a,cot,dong);

}

419 Sắp xếp chẵn tăng, lẻ giảm (như bài 418 chỉ sửa lại điều kiện)

420 Sắp xếp các giá trị nằm trên biên ma trận tăng dần

void GanBienVaoMang(int a[][10], int cot, int dong, int b[], int &n)

{

int i=0, j;

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

{

b[n] = a[i][j];

n++;

}

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

{

b[n] = a[i][j];

n++;

}

for (i ,j ; j>=0; j )

{

b[n] = a[i][j];

n++;

}

for (i ,j++; i>0; i )

{

b[n] = a[i][j];

n++;

}

}

void SapXepMangTangDan(int b[], int n)

{

Trang 12

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

{

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

if (b[i]>b[j]) {

int temp=b[i];

b[i] = b[j];

b[j] = temp;

} }

}

}

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

{

int i=0,j,n=0;

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

{

a[i][j] = b[n];

n++;

}

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

{

a[i][j] = b[n];

n++;

}

for (i ,j ; j>=0; j )

{

a[i][j] = b[n];

n++;

}

for (i ,j++; i>0; i )

{

a[i][j] = b[n];

n++;

}

}

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

{

int b[100], n=0;

GanBienVaoMang(a,cot,dong,b,n);

SapXepMangTangDan(b,n);

GanMangVaoBien(a,cot,dong,b);

}

421 Sắp xếp các giá trị dương nằm trên biên ma trận tăng dần(như bài 420 chỉ thêm điều kiện dương)

422 Sắp xếp các dòng dựa vào: tổng các ptử trong 1 dòng: sắp tăng dần

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

{

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

{

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

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

Trang 13

} }

}

void HoanVi2Dong(int a[][10],int cot, int d1, int d2)

{

int temp[10];

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

{

temp[i] = a[d1][i];

a[d1][i] = a[d2][i];

a[d2][i] = temp[i];

}

}

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

{

int b[10] = {0};

TongCacDong(a,cot,dong,b);

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

{

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

if (b[i]>b[j]) {

HoanVi2Dong(a,cot,i,j);

int temp = b[i];

b[i] = b[j];

b[j] =temp;

} }

}

}

423 Sắp xếp giá trị các ptử trong ma trận tăng dần theo dạng xoắn ốc (ma trận xoắn ốc)

#include <stdio.h>

#include <conio.h>

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

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

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

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

void ThietLapMaTranXoanOc(int Mang[],int MaTranXoanOc[][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); //Nh?p m?ng thay cho ma tr?n printf("\n\tMa tran vua nhap vao: \n");

XuatMangThayMaTran(Mang,cot,dong); //Xu?t m?ng theo ma tr?n SapXepMang1Chieu(Mang,cot,dong);

//Dò t?ng v? trí trong ma tr?n theo d?ng xo?n ?c

int MaTranXoanOc[10][10];

ThietLapMaTranXoanOc(Mang,MaTranXoanOc,cot,dong);

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

TỪ KHÓA LIÊN QUAN