View Full Version : Đề thực hành 4 (Hàm – buổi 1) ~ K49CD (có thể cả CC)
Hận Đời Không Đối Thủ
12-10-2005, 02:05 PM
Thực hành 4 (Hàm – buổi 1)
Bài 1. Viết một hàm có tham số là một số tự nhiên trong khoảng [0, 999], giá trị trả về là cách đọc tiếng Việt không dấu của số đó. Ví dụ : 999- chin tram chin muoi chin.
Bài 2. Hãy viết hàm tính số Fibonacci thứ n dưới dạng đệ qui và không đệ qui.
Hoàn thiện bài lập trình bài toán nhân ma trận A(n,m), B(m,p) (thực hành 3), kích thước không giới hạn (có sử dụng các hàm để viết chương trình cho gọn).
Tìm hiểu các khái niệm về hàm : http://fotech.vnu.edu.vn/courses/file.php/36/Chapter03_Function.pdf
Anh em cố gắng giải hộ em >:d< em đi đ .. b :21:
Nomad
12-10-2005, 04:12 PM
Hix, làm được mỗi bài 2, bài 1 không biết làm kiểu gì. TC của trường không ra sao cả. Chán quá đi mất.
999 : chin tram chin muoi chin , nghe chuối quá :-L , đọc là "chin tram chin chin" nghe xuôi hơn
ai muốn nghe theo kiểu chuối kia :dry: thì bỏ mấy cái // đi :D
#include<iostream.h>
#include<conio.h>
char* name[]={"linh","muoi","tram"};
char* num[]={"khong","mot","hai","ba","bon","lam","sau","bay","tam","chin","tu","nam"};
int number=-1;
//
void get(void); //Lay du lieu
void spell(void);//danh van :D
//
void main(void){
get();
spell();
}
//
void get(void){
while ((number<0)||(number>999))
{
clrscr();
cout<<"\n\tnumber : ";
cin>>number;
}
}
//
void spell(void){
int i=-1,a[2];
a[1]=0;a[2]=0;
do{
a[++i]=number%10;
number=number/10;
} while (number>0);
cout<<"\n\t";
if (a[2]>0)
{
cout<<num[a[2]]<<" "<<name[2];
if ((a[1]==0)) if (a[0]>0) cout<<" "<<name[0];
else;
else if (a[1]>1) cout<<" "<<num[a[1]];//<<" "<<name[1];
else cout<<" "<<name[1];
if (a[0]>0)
if (a[1]>1)
if (a[0]!=4) cout<<" "<<num[a[0]];
else cout<<" "<<num[10];
else
cout<<" "<<num[a[0]];
}
else
if (a[1]>1) {
cout<<num[a[1]];//<<" "<<name[1];
if (a[0]>0)
if (a[0]!=4) cout<<" "<<num[a[0]];
else cout<<num[10];
}
else
if (a[1]==1) {
cout<<name[1]<<" ";
if (a[0]>0) cout<<num[a[0]];
}
else
if (a[0]!=5)cout<<num[a[0]];
else cout<<num[11];
getch();
}
lang tu IT
12-10-2005, 09:32 PM
mãi mới có 1 hôm thấy thằng MT post được bài tưt tế
mãi mới có 1 hôm thấy thằng MT post được bài tưt tế
:dry: ai viết hộ thằng Thành cái giấy phép nghỉ học cái :-w
:21:chẳng qua sever võ lâm đang bị laggggggggg ;;)
Hận Đời Không Đối Thủ
18-10-2005, 11:25 PM
đây là toàn bộ code các bài trên :
bài tìm số fibo bằng cách đệ qui :
//de qui
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
int n;
void nhap()
{
cout << "nhap n = ";cin >> n;
}
int fibo(int k)
{
if (k <= 2) return (1);
else return (fibo(k-1)+fibo(k-2));
}
void main()
{
clrscr();
nhap();
cout <<"\nso fibonaci thu " << n << ": " << fibo(n);
getch();
}
Cách khử đệ qui
//khu de qui
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
int n,fibo;
void nhap()
{
cout << "nhap n = ";cin >> n;
}
void xuly()
{
int i,a,b;
if (n == 1) fibo = 1;
if (n == 2 ) fibo = 2;
a = 1 ; b = 1;
if (n > 2 )
{
fibo = 0 ;
for (i = 3 ; i <= n ; i++)
{
fibo = a + b ;
a = b;
b = fibo;
}
}
cout <<"\nso fibonaci thu " << n << ": " << fibo;
}
void main()
{
clrscr();
nhap();
xuly();
getch();
}
Đọc số (tương tự O_O):
#include<iostream.h>
#include<conio.h>
char* name[]={"linh","muoi","tram"};
char* num[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
int n=-1;
void nhap();
void doc();
void main()
{
nhap();
doc();
}
void nhap()
{
while ((n<0)||(n>999))
{
clrscr();
cout<<"\nn : ";
cin>>n;
}
}
void doc()
{
int i=-1,a[2];
a[1]=0;a[2]=0;
do
{
a[++i]=n%10;
n=n/10;
}
while (n>0);
cout<<"\n";
if (a[2]>0)
{
cout<<num[a[2]]<<" "<<name[2];
if ((a[1]==0))
if (a[0]>0) cout<<" "<<name[0];
else;
else
if (a[1]>1) cout<<" "<<num[a[1]]<<" "<<name[1];
else cout<<" "<<name[1];
if (a[0]>0)
if (a[1]>1)
if (a[0]!=4) cout<<" "<<num[a[0]];
else cout<<" "<<num[10];
else cout<<" "<<num[a[0]];
}
else
if (a[1]>1)
{
cout<<num[a[1]]<<" "<<name[1];
if (a[0]>0)
if (a[0]!=4) cout<<" "<<num[a[0]];
else cout<<num[10];
}
else
if (a[1]==1)
{
cout<<name[1]<<" ";
if (a[0]>0) cout<<num[a[0]];
}
else
if (a[0]!=5)cout<<num[a[0]];
else cout<<num[11];
getch();
}
Nhân ma trận (bài này chưa test đâu nhé :21:)
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
void nhap(int **k,int hang,int cot,char *kt);
void in(int **k,int hang,int cot);
void nhanmt(int **k,int hang,int cot);
void giaiphong(int **k,int hang);
int n,m,p,**a,**b,**c;
int main ()
{
clrscr();
cout<<"Hay nhap gia tri cho ma tran:";
cout<<"\nn= ";cin>>n;
cout<<"\nm= ";cin>>m;
cout<<"\np= ";cin>>p;
nhap(a,n,m,"A");
nhap(b,m,p,"B");
nhanmt(c,n,p);
in(c,n,p);
giaiphong(a,n);
giaiphong(b,m);
giaiphong(c,p);
return 0;
}
void nhap(int **k,int hang,int cot,char *kt)
{
int i,j;
k = new int *[hang];
for (i=0 ; i < hang ; i++)
k[i]= new int [cot];
for (i=0 ; i < hang ; i++)
for (j=0 ; j < cot ; j++)
{
cout<<"["<<i+1<<"]["<<j+1<<"] = ";
cin>> k[i][j];
}
}
void in(int **k,int hang,int cot)
{
int i,j;
for (i=0 ; i < hang ; i++)
{
cout<<"\n";
for (j=0 ; j < cot ; j++)
cout<<k[i][j]<<"\t";
}
}
void nhanmt(int **c,int hang,int cot)
{
int i,j,k;
c = new int *[hang];
for (i=0 ; i < hang ; i++)
c[i]= new int [cot];
for (i = 0 ; i < n ; i++)
for (j = 0 ; j < m ; j++)
{
c[i][j]=0;
for (k = 0 ; k < p ; k++)
c[i][j] = c[i][j] + a[i][k] * b[k][j] ;
}
}
void giaiphong(int **k,int hang)
{
int i;
for (i=0 ; i < hang ; i++) delete k[i];
delete k;
}
Bài này đọc được đến hàng tỷ, tuy nhiên hơi bị trâu bò, không được tinh tế cho lắm, có gì anh em góp ý #-S :
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
char* hang[] = {"nghin", "trieu", "ty"};
char* num[] = {"khong", "mot", "hai", "ba", "bon",
"nam", "sau", "bay", "tam", "chin"};
char** kq;
long int n;
int d, h;
//
void Nhap(){
printf("Nhap n = "); scanf("%ld", &n);
d = 0;
}
//
void DocSo(){
int s;
if ((n % 100) == 0){
kq[++d] = "tram";
kq[++d] = num[n / 100];
n = n / 1000;
}
else{
if (n != 0){
s = n % 10;
n = n / 10;
if ((s == 5)&&(n % 10)) kq[++d] = "lam";
else if (s != 0) kq[++d] = num[s];
};
if (n != 0){
s = n % 10; n = n / 10;
if (s == 0) kq[++d] = "linh";
else if (s == 1) kq[++d] = "muo`i";
else if (s != 0){
kq[++d] = "muoi";
kq[++d] = num[s];
}
}
if (n != 0){
s = n % 10; n = n / 10;
kq[++d] = "tram";
kq[++d] = num[s];
}
}
}
//
void XuLy(){
h = 0;
if ((n % 1000000000) == 0){
n = n / 1000000000;
kq[++d] = hang[2];
}
else
if ((n % 1000000) == 0){
n = n / 1000000;
kq[++d] = hang[1];
}
else
if ((n % 1000) == 0){
n = n / 1000;
kq[++d] = hang[0];
}
while (n != 0){
DocSo();
if (n != 0) kq[++d] = hang[h];
while (((n % 1000) == 0)&&(n != 0)){
n = n / 1000;
kq[d] = hang[++h];
}
++h;
};
}
//
void Viet(){
for (int i = d; i >= 1; --i) printf("%s ", kq[i]);
}
//
void main(){
clrscr();
Nhap();
XuLy();
Viet();
getch();
}
Còn đây là nhân ma trận theo cách cô giáo thực hành hướng dẫn, không biết có như của thầy Duy râu dạy không? :box:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
int **a, **b, **c;
int n, m, p;
//
void Nhap(){
printf("Nhap so hang cua mang a (n) = "); scanf("%d", &n);
printf("Nhap so cot cua mang a - so hang cua mang b (m) = "); scanf("%d", &m);
printf("Nhap so cot cua mang b (p) = "); scanf("%d", &p);
a = (int **) malloc(n * m * 2);
b = (int **) malloc(m * p * 2);
c = (int **) malloc(n * p * 2);
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= p; ++j) c[i][j] = 0;
printf(">>>NHAP MANG a: \n");
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j){
printf("Nhap a[%d][%d] = ", i, j); scanf("%d", &a[i][j]);
};
printf(">>>NHAP MANG b: \n");
for (i = 1; i <= m; ++i)
for (j = 1; j <= p; ++j){
printf("Nhap b[%d][%d] = ", i, j); scanf("%d", &b[i][j]);
};
}
//
void Nhan(){
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= p; ++j)
for (int k = 1; k <= m; ++k)
c[i][j] += a[i][k] * b[k][j];
}
//
void Xuat(){
printf(">>>MANG c = a * b: \n");
for (int i = 1; i <= n; ++i){
for (int j = 1; j <= p; ++j) printf("%4d", c[i][j]);
printf("\n");
}
}
//
void main(){
clrscr();
Nhap();
Nhan();
Xuat();
getch();
}
Bài Fibo làm như thằng Hận là ổn rồi, nên khai báo kiểu biến là long int thì tốt hơn, vì nếu để kiểu int thì n chỉ được khoảng trên dưới 20! Oáp! (:| Em đi ngủ, chúc các bác ngủ ngon!!! :((
vBulletin® v3.6.10, Copyright ©2000-2010, Jelsoft Enterprises Ltd.