Việt - Nhật 's class
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Latest topics
» Oblivion - Phim Club
week9 (gần full) I_icon_minitime06/02/14, 11:10 am by sshin_conan

» các bạn/anh/chị cho hỏi đề thi giải tích 1
week9 (gần full) I_icon_minitime03/05/13, 09:47 pm by ictk56

» Đề nghị sát nhập 2 diễn đàn
week9 (gần full) I_icon_minitime18/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
week9 (gần full) I_icon_minitime17/02/12, 11:43 pm by michiosatoo

» mình có câu này, mong các bạn dịch giúp!!!
week9 (gần full) I_icon_minitime16/11/11, 06:17 pm by asakurayo

» nho forum chut
week9 (gần full) I_icon_minitime15/11/11, 11:29 am by asakurayo

» CS 1.6 MAP MAKER
week9 (gần full) I_icon_minitime15/11/11, 07:55 am by asakurayo

» ubuntu-win
week9 (gần full) I_icon_minitime12/10/11, 05:46 pm by darklord226

» diễn đàn hedspi k56
week9 (gần full) I_icon_minitime11/10/11, 09:41 pm by lakazai

Similar topics

week9 (gần full)

+3
chikclik
huy_d_t
Tung_tobe
7 posters

Go down

week9 (gần full) Empty week9 (gần full)

Bài gửi by Tung_tobe 16/04/11, 11:51 pm

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:

Đề: 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 Suspect
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);

 

 

}
Bài 3
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
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
Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by Tung_tobe 17/04/11, 12:02 am

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>
Tung_tobe
Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by huy_d_t 17/04/11, 09:55 am

đ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
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

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by Tung_tobe 17/04/11, 10:35 am

ví dụ xem nào, nói thế làm sao hiểu đc Sad
Tung_tobe
Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by chikclik 17/04/11, 03:38 pm

toupper(char); là hàm in hoa kí tự.
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;
}
42line.nội dung giống bài tobe
chikclik
chikclik

Tổng số bài gửi : 12
Points : 20
Join date : 21/03/2011

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by em_la_T.O.P 18/04/11, 08:05 pm

So good 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 Very Happy
em_la_T.O.P
em_la_T.O.P

Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by myname2 18/04/11, 09:34 pm

TOP nói cũng sai nốt >So good 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 Very Happy 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
myname2
myname2

Tổng số bài gửi : 66
Points : 90
Join date : 27/09/2010
Age : 31
Đến từ : Hà Nội

https://facebook.com/tuanhai

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by em_la_T.O.P 18/04/11, 09:44 pm

Nhầm nhọt tý >So good

Còn về viết chương trình con thì có thể sử dụng đệ quy tính giai thừa khá hay Very Happy

Code:

int gt(int x)
{
    if(x==0) return 1;
    else return x*gt(x-1);
}
em_la_T.O.P
em_la_T.O.P

Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by haidang001 19/04/11, 01:09 am

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.
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;
}
Bài 3: Ngại bàn Very Happy.

S_have fun! So good
haidang001
haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 31

http://haidang001.tk

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by hieupro1269 20/04/11, 09:36 pm

Code của Sáng ko dùng sai số à?
hieupro1269
hieupro1269

Tổng số bài gửi : 31
Points : 37
Join date : 04/10/2010
Age : 32

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by em_la_T.O.P 20/04/11, 10:00 pm

Sai số anh ý nhập trong main So good
Mà vừa rảnh test code của anh Sáng cũng sai nốt So good
em_la_T.O.P
em_la_T.O.P

Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by haidang001 20/04/11, 10:04 pm

em_la_T.O.P đã viết:Sai số anh ý nhập trong main So good
Mà vừa rảnh test code của anh Sáng cũng sai nốt So good
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.
T.O.P post cái test sai lên xem để koltec fix cái. Nhanh ko có deadline.
haidang001
haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 31

http://haidang001.tk

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by em_la_T.O.P 20/04/11, 11:18 pm

Đây So good

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
em_la_T.O.P

Tổng số bài gửi : 137
Points : 173
Join date : 26/09/2010

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by haidang001 21/04/11, 12:12 am

em_la_T.O.P đã viết:Đây So good

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
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:)
haidang001
haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 31

http://haidang001.tk

Về Đầu Trang Go down

week9 (gần full) Empty Re: week9 (gần full)

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết