Thứ Bảy, 16 tháng 7, 2016

Step 13 .Một số bài tập sử dụng vào ra file.

Bài 29: 


Bài 30:Cho một ma trận có N hàng và M cột chỉ gồm các số nguyên dương không quá 100 (1<N,M<10). Hãy 
viết chương trình loại bỏ hàng có tổng các phần tử là lớn nhất ra khỏi ma trận. Nếu có hai hàng trở lên 
có tổng các phần tử bằng nhau thì chọn hàng có thứ tự nhỏ hơn. 
Dữ liệu vào: File BAI2.INP
Dòng 1 ghi số bộ test. Với mỗi bộ test: dòng đầu ghi 2 số N và M. Tiếp theo là N hàng, mỗi hàng M 
phần tử của ma trận. 
Kết quả: File BAI2.OUT  với mỗi bộ  test ghi trên N-1  hàng các phần tử  của ma trận kết quả. Mỗi 
phần tử cách nhau đúng một khoảng trống. Sau mỗi bộ test in ra một dòng trống.

code: 
#include<stdio.h>
#include<math.h>
FILE*f1=fopen("BAI2.INP","r");
FILE*f2=fopen("BAI2.OUT","w");
void nhap(int n, int m, int a[][10]){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
fscanf(f1,"%d",&a[i][j]);
}
}
}
void xoa(int n, int m, int a[][10]){
int max=0,k=1,t=0,dd=0;
for(int i=0;i<m;i++){
max=max+a[0][i];
}
while(t<n){
int k=0;
for(int i=0;i<m;i++){
k=k+a[t][i];
}
if(k>max){
max=k;
dd=t;
}
t++;
}
for(int i=0;i<n;i++){
if(i!=dd){
for(int j=0;j<n;j++){
fprintf(f2,"%d ",a[i][j]);
}
fprintf(f2,"\n");
}
}
}
main()
{
int t;
fscanf(f1,"%d",&t);
char s[6];
fgets(s,5,f1);

while(t--){
int n,m,a[10][10];
fscanf(f1,"%d%d",&n,&m);
nhap(n,m,a);
xoa(n,m,a);
fprintf(f2,"\n");
}
}

Bài 31: Một số được coi là đẹp nếu nó là số nguyên tố và tổng chữ số là một số trong dãy Fibonaci. Bài toán 
đặt ra là đếm xem trong một đoạn giữa hai số nguyên cho trước có bao nhiêu số đẹp như vậy. 
Dữ liệu vào: File: BAI1.INP
Dòng đầu tiên ghi số bộ test.
Mỗi bộ test viết trên một dòng hai số nguyên dương tương ứng, cách nhau một khoảng trống. 
Các số đều không vượt quá 9 chữ số. 
Kết quả: BAI1.OUT
Mỗi bộ test viết ra số lượng các số đẹp tương ứng.
#include<stdio.h>
#include<math.h>
FILE*f1=fopen("BAI1.INP","r");
FILE*f2=fopen("BAI1.OUT","w");
int nt(int n){
if(n<2)
return 0;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
return 0;
}
return 1;
}
int fb(int n){
int f1=0,f2=1,f3;
while(f1<100){
f3=f1+f2;
f1=f2;
f2=f3;
if(n==f3)
return 1;
}
return 0;
}
int tong(int n){
int s=0;
while(n){
s=s+n%10;
n/=10;
}
if(fb(s))
return 1;
return 0;
}
main()
{
int t;
fscanf(f1,"%d",&t);
while(t--){
int n,m,d=0;
fscanf(f1,"%d%d",&n,&m);
for(int i=n;i<=m;i++){
if(tong(i)&&nt(i))
d++;
}
fprintf(f2,"%d\n",d);
}
}

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

Đăng nhận xét