Latest topics
Similar topics
week9 (gần full)
+3
chikclik
huy_d_t
Tung_tobe
7 posters
Trang 1 trong tổng số 1 trang
week9 (gần full)
Thấy Haidang im hơi lặng tiếng nên làm một vài bài cho đỡ buồn :shock: :shock:
Lần đầu tiên làm ti... <ah quên>post bài nên có j sơ suất ae chỉ giáo :P
Bài 1:
CODE
Bài 2
Nói thật là cái bài này thuật tóan taylor là cái j mình còn ko biết thì làm bằng niềm đau ah (hình như học trong toán cao cấp 1, mà toán cao cấp 1 thì mình chưa bh học :lol: :lol: ) thành ra lấy tạm một bài của một anh k54, k53 nào đó post lên để ae check, chứ đấy ko phải bài mình
Lần đầu tiên làm ti... <ah quên>post bài nên có j sơ suất ae chỉ giáo :P
Bài 1:
- Code:
Đề: Chỉnh lại bài chuyển cơ số hôm trước, dùng ct con ở các tùy chọn
CODE
- Code:
#include<stdio.h>
int a,b,d,dem1,menu,b1,check;
char c,tong;
void nhiphan(int b)
{
d=b;
tong=1;
printf("\nSo da nhap o he nhi phan la:");
while(b>=2){b=b/2;tong =tong+1;}
int A[tong];
for(dem1 =1;dem1<=tong;dem1++){A[dem1]=d%2;d=d/2;}
for(dem1 =1;dem1<=tong;dem1++){printf("%d",A[tong-dem1+1]);}
printf("\n");printf("...\n\n");
}
void he16(int b)
{
printf("\nSo da nhap o he hexa la: %X\n",b1);printf("...\n\n");
}
void he8(int b)
{
printf("\nSo da nhap o he 8 la: %o\n",b1);printf("...\n\n");
}
int main()
{
do
{
printf("\n\tCHUONG TRINH CHUYEN DOI HE CO SO ver1.0\n");
printf("\t\tTAC GIA:Nguyen Thanh Tung\n\n");
printf("1.Nhap so duong o he thap phan\n");
printf("2.So o he nhi phan\n");
printf("3.So o he hexa\n");
printf("4.So o he 8\n");
printf("5.Thoat\n");
printf("...");scanf("%d",&menu);
if(menu<=0||menu>5)printf("\nBan da nhap sai, xin moi nhap lai:\n");
if(menu==1)
{
do{
printf("\nXin moi nhap mot so nguyen duong bat ki:");scanf("%d",&b);
if(b<=0){printf("\nBan nhap so am, xin moi nhap lai...\n");check=1;}
if(b>0)
{
b1=b;
check=0;
}
}while(check==1);
}
if(menu==2)nhiphan(b);
if(menu==3)he16(b);
if(menu==4)he8(b);
}while(menu!=5);
printf("\nHen gap lai lan sau\n\n");
return 0;
}
Bài 2
- Code:
Đề: Viết ct có menu như sau
1.Nhập giá trị x và sai số epsilon
2.Tính sin(x) theo thuật toán lặp chuỗi Taylor -Maclaurin
3.Tính căn x theo phương pháp Newton
4.Quit
Nói thật là cái bài này thuật tóan taylor là cái j mình còn ko biết thì làm bằng niềm đau ah (hình như học trong toán cao cấp 1, mà toán cao cấp 1 thì mình chưa bh học :lol: :lol: ) thành ra lấy tạm một bài của một anh k54, k53 nào đó post lên để ae check, chứ đấy ko phải bài mình
- Code:
#include <stdio.h>
#define abs(x) x>0?x:-x
float epsilon,x;
float pow(float x, int n)
{
float p=1;
int i=1;
for(i=1;i<=n;i++) p*=x;
return p;
}
float giaithua(float n)
{
float i,ketqua=1;
for(i=2;i<=n;i++)
ketqua*=i;
return ketqua;
}
float sin(float x,float epsilon)
{
float ketqua,n=1,s;
do
{
s=pow(x,2*n-1)/giaithua(2*n-1);
ketqua+=pow(-1,n)*s;
n++;
}
while (abs(x*(2*n+1)/giaithua(2*n+1))>epsilon);
return ketqua;
}
float sqrt(float x,float epsilon)
{
float xn, ketqua;
xn = (x+1)/2;
do {
ketqua = xn;
xn = 0.5 * (xn + x/xn);
} while (abs((xn-ketqua)) > epsilon);
return ketqua;
}
void enter_value()
{
printf("Enter value x(radian):");
scanf("%f",&x);
printf("Enter value Epsilon:");
scanf("%f",&epsilon);
printf("\n\n");
}
int main()
{
int choice;
do {
printf("Please choose: \n");
printf("\t1. Enter value\n");
printf("\t2. Sin(x)\n");
printf("\t3. Sqrt(x)\n");
printf("\t4. Quit\n");
do {
printf("Your choice: "); scanf("%d",&choice);
} while (choice<=0 || choice >4);
switch(choice) {
case 1: enter_value(); break;
case 2: printf("\n\n Sin(x) =%10.4f\n\n\n\n",sin(x,epsilon)); break;
case 3: printf("\n\n Sqrt(x) =%10.4f\n\n\n\n",sqrt(x,epsilon));break;
case 4: return 0; break;
default: enter_value(); break;
}
} while (choice != 4);
}
- Code:
Đề:Viết hàm sử lý cho phép thống kê số lần xuất hiện các kí tự nguyên âm (a,e,u,i,o) rồi đổi các ký tự này sang chữ hoa
- Code:
#include<stdio.h>
#include<string.h>
char str[100];
int dem(char letter, char line[])
{
int i,dem=0;
for(i=0;line[i]!='\0';++i)
{
if (line[i]==letter){dem++;}
}
return dem;
}
void demkytu()
{
printf("Co %d ky tu 'a' hoac 'A' trong chuoi nhap vao\n",dem('a',str)+dem('A',str));
printf("Co %d ky tu 'e' hoac 'E' trong chuoi nhap vao\n",dem('e',str)+dem('E',str));
printf("Co %d ky tu 'o' hoac 'O' trong chuoi nhap vao\n",dem('o',str)+dem('O',str));
printf("Co %d ky tu 'i' hoac 'I' trong chuoi nhap vao\n",dem('i',str)+dem('I',str));
printf("Co %d ky tu 'u' hoac 'U' trong chuoi nhap vao\n",dem('u',str)+dem('U',str));
}
void thay(char line[],char thaychu,char thaybang)
{
int i;
for (i=0;line[i]!='\0';++i)
{
if(line[i]==thaychu)
line[i]=thaybang;
}
}
void inhoa()
{
thay(str,'a','A');
thay(str,'e','E');
thay(str,'i','I');
thay(str,'o','O');
thay(str,'u','U');
printf("\nDay sau khi da thay :%s\n\n",str);
}
main()
{
int menu,c=0;
printf("\nXIn moi nhap vao mot chuoi ky tu:");gets(str);
do
{
printf("\n1.Dem so ky tu nguyen am ");
printf("\n2.Thay cac ky tu nguyen am thanh ky tu VIET HOA");
printf("\n3.Thoat");
printf("\n...");scanf("%d",&menu);
if(menu<1||menu>3){printf("\n\nXin moi nhap lai...\n");c=0;}
else{
switch(menu)
{
case 1:demkytu();break;
case 2:inhoa();break;
case 3:{printf("\nHen gap lai lan sau\n\n");c=1;}break;
}
}
}while(c==0);
return 0;
}
Được sửa bởi Tung_tobe ngày 17/04/11, 12:12 am; sửa lần 1.
Tung_tobe- Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010
Re: week9 (gần full)
Các bài sử dụng thư viện
#include<stdio.h>
riêng bài 3 sử dụng thêm thư viện
#include<string.h>
#include<stdio.h>
riêng bài 3 sử dụng thêm thư viện
#include<string.h>
Tung_tobe- Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010
Re: week9 (gần full)
đoạn code b3 của phó tổng sẽ ngắn gọn hơn nếu sử dụng hàm chuyển -> chữ hoa toupper(char a), khai báo ctype.h
huy_d_t- Tổng số bài gửi : 112
Points : 142
Join date : 26/09/2010
Đến từ : Đại dâm tặc
Re: week9 (gần full)
ví dụ xem nào, nói thế làm sao hiểu đc
Tung_tobe- Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010
Re: week9 (gần full)
toupper(char); là hàm in hoa kí tự.
mình cũng sử dụng luôn hàm đó.
ví dụ
mình cũng sử dụng luôn hàm đó.
ví dụ
- Code:
#include<stdio.h>
#include<string.h>
void demkitu(char chuoikitu[],char kitu)
{
int i,leng,dem;
dem=0;
leng=strlen(chuoikitu);
for (i=0;i<leng;++i) if ((kitu==chuoikitu[i])||(toupper(kitu)==chuoikitu[i])) dem+=1;
printf("so nguyen am %c la :%d\n",kitu,dem);
}
void inhoa(char c[])
{
int i,j,leng;
leng=strlen(c);
char thay[]={'a','i','u','e','o'};
for (i=0;i<leng;i++) for (j=0;j<5;j++) if (c[i]==thay[j]) c[i]=toupper(thay[j]);
}
int main()
{
char select,chuoi[1000],quit;
printf("\t\t\t\tSELECT\n");
printf("\n1:dem ki tu\n2:in hoa ki tu\n3:te'\n");
printf("nhap chuoi:");gets(chuoi);
while (1)
{
printf("select?...");scanf("%c",&select);getchar();
switch (select)
{
case '1':demkitu(chuoi,'a');
demkitu(chuoi,'e');
demkitu(chuoi,'u');
demkitu(chuoi,'i');
demkitu(chuoi,'o');
break;
case '2':inhoa(chuoi);
puts(chuoi);break;
case '3':printf("quit?");quit=getchar();break;
}
if ((quit=='Y')||(quit=='y')) break;
}
return 0;
}
chikclik- Tổng số bài gửi : 12
Points : 20
Join date : 21/03/2011
Re: week9 (gần full)
Lưu ý một chút là thuật toán taylor chi đúng với góc x thuộc khoảng từ -2pi đến 2pi
Nên anh em nào nhập góc là 9 thì nó tính ra sai đấy
Nên anh em nào nhập góc là 9 thì nó tính ra sai đấy
em_la_T.O.P- Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010
Re: week9 (gần full)
TOP nói cũng sai nốt > Thuật toán lập chuỗi Taylor bậc 7 chỉ trùng với hàm sin khi x nằm trong khoảng -pi đến pi cái Taylor này khá rắc rối nên tớ chỉ đưa công thức tính của sin(x) (chính là sử dụng chuỗi Taylor bậc 7) lên đây thôi:
Sin(x) = x - (x^3)/3! + (x^5)/5! - ... +(-1)^n*(x^(2n+1))/(2n+1)!
Giá trị sin(x) càng chính xác khi n càng lớn
Có lẽ bài này xẽ xây dựng 2 chương trình còn để tính lũy thừa và giai thừa
Sin(x) = x - (x^3)/3! + (x^5)/5! - ... +(-1)^n*(x^(2n+1))/(2n+1)!
Giá trị sin(x) càng chính xác khi n càng lớn
Có lẽ bài này xẽ xây dựng 2 chương trình còn để tính lũy thừa và giai thừa
Re: week9 (gần full)
Nhầm nhọt tý >
Còn về viết chương trình con thì có thể sử dụng đệ quy tính giai thừa khá hay
Còn về viết chương trình con thì có thể sử dụng đệ quy tính giai thừa khá hay
- Code:
int gt(int x)
{
if(x==0) return 1;
else return x*gt(x-1);
}
em_la_T.O.P- Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010
Re: week9 (gần full)
Koltec mải chơi, nay mới lên 4umer.
Đây là sol của Koltec.
Bài 1: Không bàn
Bài 2:
Một số NX:
1. Khai triển Taylor (như bài của myname2), đúng với mọi x thuộc R.
2. KHÔNG sử dụng các chương trình con hay hàm tính giai thừa hay mũ vì sẽ tràn số (cái này làm mọi người lầm tưởng công thức Taylor chỉ đúng trong khoảng nào đó).
Ae thử vác máy tính ra bấm 20! xem bằng ?
Đây là code tính sin(x) của Koltec. Ae tham khảo, có gì bàn luận tiếp.
S_have fun!
Đây là sol của Koltec.
Bài 1: Không bàn
Bài 2:
Một số NX:
1. Khai triển Taylor (như bài của myname2), đúng với mọi x thuộc R.
2. KHÔNG sử dụng các chương trình con hay hàm tính giai thừa hay mũ vì sẽ tràn số (cái này làm mọi người lầm tưởng công thức Taylor chỉ đúng trong khoảng nào đó).
Ae thử vác máy tính ra bấm 20! xem bằng ?
Đây là code tính sin(x) của Koltec. Ae tham khảo, có gì bàn luận tiếp.
- Code:
double sin(double x)
{
int i = 0;
double res = 0, add = x;
do
{
res = res + add;
i++;
add = -add * x * x / (2 * i * (2 * i + 1));
}
while (((add > 0) ? add : -add) > eps);
return res;
}
S_have fun!
Re: week9 (gần full)
Code của Sáng ko dùng sai số à?
hieupro1269- Tổng số bài gửi : 31
Points : 37
Join date : 04/10/2010
Age : 32
Re: week9 (gần full)
Sai số anh ý nhập trong main
Mà vừa rảnh test code của anh Sáng cũng sai nốt
Mà vừa rảnh test code của anh Sáng cũng sai nốt
em_la_T.O.P- Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010
Re: week9 (gần full)
Sai số ở đây không so sánh với mấy đồng chí Casio đâu. Mà sai số là giữa 2 số liên tiếp trong chuỗi.em_la_T.O.P đã viết:Sai số anh ý nhập trong main
Mà vừa rảnh test code của anh Sáng cũng sai nốt
T.O.P post cái test sai lên xem để koltec fix cái. Nhanh ko có deadline.
Re: week9 (gần full)
Đây
Epsilon em để là 0,001 cho nó nhanh
- Code:
#include<stdio.h>
int main()
{
int i = 0;
double res = 0, add, x, eps=0.001;
printf("\nInput x: ");
scanf("\n%lf",&x);
add=x;
do
{
res = res + add;
i++;
add = -add * x * x / (2 * i * (2 * i + 1));
}
while (((add > 0) ? add : -add) > eps);
printf("\nSin: %lf",res);
}
Epsilon em để là 0,001 cho nó nhanh
em_la_T.O.P- Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010
Re: week9 (gần full)
Ko phải post code, anh hỏi chú đưa test, tức là đưa số cụ thể, nhập vào làm chương trình sai ây:)em_la_T.O.P đã viết:Đây
- Code:
#include
int main()
{
int i = 0;
double res = 0, add, x, eps=0.001;
printf("\nInput x: ");
scanf("\n%lf",&x);
add=x;
do
{
res = res + add;
i++;
add = -add * x * x / (2 * i * (2 * i + 1));
}
while (((add > 0) ? add : -add) > eps);
printf("\nSin: %lf",res);
}
Epsilon em để là 0,001 cho nó nhanh
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
06/02/14, 11:10 am by sshin_conan
» các bạn/anh/chị cho hỏi đề thi giải tích 1
03/05/13, 09:47 pm by ictk56
» Đề nghị sát nhập 2 diễn đàn
18/02/12, 11:01 am by ngoanhtuan_hn
» Hội nghị sinh viên Việt Nam Nhật Bản tuyển thành viên
17/02/12, 11:43 pm by michiosatoo
» mình có câu này, mong các bạn dịch giúp!!!
16/11/11, 06:17 pm by asakurayo
» nho forum chut
15/11/11, 11:29 am by asakurayo
» CS 1.6 MAP MAKER
15/11/11, 07:55 am by asakurayo
» ubuntu-win
12/10/11, 05:46 pm by darklord226
» diễn đàn hedspi k56
11/10/11, 09:41 pm by lakazai