
Baìi táûp Tin hoüc Âaûi cæång 139
Pháön VIII : KIÃØU CON TROÍ & FILE
1. Nháûp 2 ma tráûn thæûc A vaì B cáúp nxn. Ma tráûn C laì ma tráûn täøng C=A+B, ma tráûn D laì ma
tráûn tich D=AxB, ma tráûn E , F láön læåüt laì ma tráûn chuyãøn vë cuía ma tráûn cuía ma tráûn C vaì
D.Sau âoï âæa caïc pháön tæí låïn nháút cuía tæìng haìng cuía ma tráûn C lãn âæåìng cheïo chênh vaì
pháön tæí låïn nháút cuía tæìng haìng cuía ma tráûn D lãn âæåìng cheïo phuû. Viãút chæång trçnh thæûc
hiãûn caïc cäng viãûc trãn duìng con troí.
* Chæång trçnh
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define N 20
/*------------------------------------------*/
void nhap(float *a,float *b,int n);
void xuat(float *a,int n, char ch);
void cong(float *a, float *b,float *c, int n);
void nhan(float *a,float *b, float *d,int n);
void chuyenvi(float *c,float *d, float *e,float *f,int n);
void tim_max_duong_cheo_chinh(float *c,int n);
void tim_max_duong_cheo_phu(float *d,int n);
/*------------------------------------------*/
void nhap(float *a,float *b, int n)
{
int i,j; float x;
for (i=1;i<=n; i++)
for (j=1;j<=n; j++)
{
printf("a[%d,%d]=",i,j);
scanf("%f",a+i*N+j);
}
for (i=1;i<=n; i++)
for (j=1;j<=n; j++)
{
printf("b[%d,%d]=",i,j);
scanf("%f",b+i*N+j);
}
}
/*------------------------------------------*/
void xuat(float *a,int n, char ch)
{
int i,j;
for(i=1;i<=n;i++)
{
Nguyãùn Vàn Nguyãn- Khoa CNTT-ÂTVT Âaûi hoüc Baïch Khoa Âaì Nàông

Baìi táûp Tin hoüc Âaûi cæång 140
for(j=1;j<=n;j++)
printf("%c[%d][%d]=%.2f ", ch,i,j,*(a+i*N+j));
printf("\n");
}
}
/*------------------------------------------*/
void cong(float *a, float *b,float *c, int n)
{
int i,j;
for(i=1;i<=n; i++)
{
for(j=1; j<=n; j++)
*(c+i*N+j)=*(a+i*N+j)+ *(b+i*N+j);
}
}
/*------------------------------------------*/
void nhan(float *a,float *b, float *d,int n)
{
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
*(d+i*N+j)=0;
for(k=1; k<=n; k++)
*(d+i*N+j)=*(d+i*N+j)+(*(a+i*N+k))*(*(b+k*N+j));
}
}
/*------------------------------------------*/
void chuyenvi(float *c,float *d,float *e,float *f,int n)
{ int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
*(e+i*N+j)=*(c+j*N+i);
*(f+i*N+j)=*(d+j*N+i);
}
}
/*------------------------------------------*/
void tim_max_duong_cheo_chinh(float *c,int n)
{
float max;
int m,i,j,L;
for(i=1;i<=n;i++)
{
max=*(c+i*N+1);
L=1;
Nguyãùn Vàn Nguyãn- Khoa CNTT-ÂTVT Âaûi hoüc Baïch Khoa Âaì Nàông

Baìi táûp Tin hoüc Âaûi cæång 141
for(j=2;j<=n;j++)
if(fabs(max)<fabs(*(c+i*N+j)))
{
max=*(c+i*N+j);
L=j;
}
if(L!=j)
{
*(c+i*N+L)=*(c+i*N+i);
*(c+i*N+i)=max;
}
}
}
/*------------------------------------------*/
void tim_max_duong_cheo_phu(float *d,int n)
{
float max;
int m,i,j,L;
for(i=1;i<=n;i++)
{
max=*(d+i*N+1);
L=n;
for(j=2;j<=n;j++)
if(fabs(max)<fabs(*(d+i*N+j)))
{
max=*(d+i*N+j);
L=j;
}
m=n+1-i;
if(L!=m)
{
*(d+i*N+L)=*(d+i*N+m);
*(d+i*N+m)=max;
}
}
}
/*------------------------------------------*/
void main()
{
clrscr();
textbackground(10);
textcolor(4);
clrscr();
float a[N][N];
float b[N][N];
Nguyãùn Vàn Nguyãn- Khoa CNTT-ÂTVT Âaûi hoüc Baïch Khoa Âaì Nàông

Baìi táûp Tin hoüc Âaûi cæång 142
float c[N][N];
float d[N][N];
float e[N][N];
float f[N][N];
int n=3;
nhap((float*)a,(float*)b,n);
xuat((float*)a,n,65);printf("\n");
xuat((float*)b,n,66);printf("\n");
cong((float*)a,(float*)b,(float*)c,n);
xuat((float*)c,n,67);printf("\n");
nhan((float*)a,(float*)b,(float*)d,n);
xuat((float*)d,n,68);printf("\n");
chuyenvi((float*)c,(float*)d,(float*)e,(float*)f,n);
xuat((float*)e,n,69);printf("\n");
xuat((float*)f,n,70);printf("\n");
tim_max_duong_cheo_chinh((float*)c,n);
xuat((float*)c,n,67);printf("\n");
tim_max_duong_cheo_phu((float*)d,n);
xuat((float*)d,n,68);printf("\n");
getch();
}
2. Viãút chæång trçnh nháûp danh saïch låïp gäöm Hoü tãn, ngaìy thaïng
nàm sinh, nháûp ba âiãøm cuía ba män: Toaïn, Lyï, Hoïa, tênh âiãøm
trung bçnh cuía ba män.
-Xãúp loaûi cuía danh saïch væìa vaìo theo âiãøm trung bçnh giaím dáön
(hoàûc tàng dáön).
-Sàõp xãúp danh saïch theo thæï tæû A, B, C.
-Âäøi hoü tãn toaìn bäü thaình chæî hoa.
*Yãu cáöu:
+Coï xæí lyï tãûp.
+Caìi âàût haìm coï traí vãö kiãøu Struct.
* Chæång trçnh
#include <conio.h>
#include <dos.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/*------------------------------------------*/
typedef struct {
char ho[15],ten[8],XL[6];
int namsinh;
float t,l,h,tb;
} ds;
Nguyãùn Vàn Nguyãn- Khoa CNTT-ÂTVT Âaûi hoüc Baïch Khoa Âaì Nàông

Baìi táûp Tin hoüc Âaûi cæång 143
ds x[50];
int i,n;
/*------------------------------------------*/
void nhap(int n,ds *x);
void motep(int *n,ds *x);
void in(int n,ds *x);
void sx(int n,ds *x);
void sxdtb(int n,ds *x);
void luutep(int n,ds *x);
/*------------------------------------------*/
void nhap(int n,ds *x)
{
int i;
float TL;
for(i=1;i<=n;i++) {
printf("\n Vao so lieu cho nguoi thu%2d:",i);
printf("\nHo lot :"); fflush(stdin);
gets(x[i].ho); strupr(x[i].ho);
printf("Ten:"); fflush(stdin);
gets(x[i].ten);strupr(x[i].ten);
printf("Nam sinh:" );
scanf("%d",&x[i].namsinh);
printf(" Diem cac mon\n");
tt:
printf(" Diem Toan:");
scanf("%f",&TL); x[i].t=TL;
printf(" Diem ly:"); scanf("%f",&TL);x[i].l=TL;
printf(" Diem hoa :"); scanf("%f",&TL);x[i].h=TL;
x[i].tb=(x[i].t+x[i].l+x[i].h)/3;
if(x[i].tb<4.0) strcpy(x[i].XL,"kem");
if(x[i].tb<5.0 && x[i].tb>=4.0) strcpy(x[i].XL,"yeu");
if(x[i].tb<6.5 && x[i].tb>=5.0) strcpy(x[i].XL,"Trung
Binh");
if(x[i].tb<8.0 && x[i].tb>=6.5) strcpy(x[i].XL,"Kha");
if(x[i].tb<9.0 && x[i].tb>=8.0) strcpy(x[i].XL,"Gioi");
if(x[i].tb<=10.0 && x[i].tb>=9.0) strcpy(x[i].XL,"Xuat
sac");
if(x[i].tb>10)
{
putch(7);putch(7);
printf("nhap lai:");
goto tt;
}
}
}
/*--------------------------------------------------*/
Nguyãùn Vàn Nguyãn- Khoa CNTT-ÂTVT Âaûi hoüc Baïch Khoa Âaì Nàông