Thứ Sáu, 22 tháng 5, 2015

Bài tập xử lý mảng 2 chiều trên file

Filled under:

Cho File INPUT.txt có dạng như sau:
Dòng 1: ghi số dòng và số cột, các dòng còn lại ghi các số.
Ví dụ:
3 4
16 101 8 2
4 424 101 4
2 800 4 6
Viết thuật toán:
Câu 1: Chỉ ra cột nào có giá trị lớn nhất
Câu 2: a. Cột nào có số nguyên tố thì xuất ra vị trí cột đó nếu không có thì trả về 0
b. Dòngnào có số nguyên tố thì xuất ra vị trí dòng đó nếu không có thì trả về 0
Câu 3: Xuất ra ma trận chuyển vị



#include<math.h>
#include<fstream>
#include<conio.h>
#include<stdio.h>
#pragma warning(disable:4996)
#define maxm 101
#define maxn 100
FILE *g;
int Nguyento(int x){
if (x < 2) return 0;
int k = sqrt((float)x);
for (int i = 2; i <= k;i++)
if (x%i == 0) return 0;
return 1;
}
void Docfile(int a[maxm][maxn], int &m, int &n){
FILE *f;
f = fopen("INPUT.txt", "rt");
fscanf(f, "%d%d", &m, &n);
for (int i = 1; i <= m; i++){
for (int j = 1; j <= n; j++){
fscanf(f, "%d", &a[i][j]);
}
}
fclose(f);
}


void Tongmaxcot(int a[maxm][maxn],int m,int n){
fprintf(g, "\n CAU 1: \n");
int maxcot = 0;
for (int i = 1; i <= n; i++){
int s = 0;
for (int j = 1; j <= m; j++)
s += a[j][i];
if (maxcot < s)
maxcot = s;
}
for (int i = 1; i <= n; i++){
int s = 0;
for (int j = 1; j <= m; j++){
s += a[j][i];
}
if (s == maxcot)
fprintf(g, "%d", i);
}
}

void Nguyentocot(int a[maxm][maxn], int m, int n){
int check = 0;
fprintf(g, "\nCAU 2: \n");
for (int i = 1; i <= n; i++){
int t = 0;
for (int j = 1; j <= m; j++)
if (Nguyento(a[j][i]) == 1){
t = 1; break;
}
if (t == 1){
fprintf(g, "%3d", i);
check = 1;
}
}
if (check == 0)
fprintf(g,"%4d", 0);
}

void Nguyentodong(int a[maxm][maxn], int m, int n){
int check = 0;
fprintf(g, "\n CAU 2b: \n");
for (int i = 1; i <= m; i++){
int t = 0;
for (int j = 1; j <= n;j++)
if (Nguyento(a[i][j])==1){
t = 1;
break;
}
if (t == 1){
fprintf(g,"\n %3d", i);
check = 1;
}
}
if (check == 0)
fprintf(g,"%3d", 0);
}
void ChuyenVi(int F[maxm][maxn], int n, int m){
fprintf(g,"\n CAU 3: \n");
for (int j = 1; j<=m; j++){
for (int i = 1; i<=n; i++)
fprintf(g, "%6d",F[i][j]);
fprintf(g, "\n");
}
}
int main(){
int a[maxm][maxn],m,n;
g = fopen("OUTPUT.out", "wt");
Docfile(a, m, n);
Tongmaxcot(a,m,n);
Nguyentocot(a, m, n);
Nguyentodong(a, m, n);
ChuyenVi(a, m, n);
fclose(g);

}

0 nhận xét:

Đăng nhận xét