CNTT4A2 COMMUNITY

Thảo luận học tập


You are not connected. Please login or register

Go downThông điệp [Trang 1 trong tổng số 1 trang]

25/11/2010, 2:09 pm
whatsltd4us
whatsltd4us

Cái bài nhập vào 3 số a,b,c . Kiểm tra xem nó có phải là 3 cạnh của một tam giác hay không? :

Code:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
void main()
{
float a,b,c;
cin>>a>>b>>c;
if (((a+b)>c)&&((b+c)>a)&&((a+c)>b))
{
if (((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a))
{
if ((a==b)||(b==c)||(c==a))
cout<<"La do dai 3 canh tam giac vuong can\n";
else
cout<<"La do dai 3 canh tam giac vuong\n";
}
else
{
if ((a==b)&&(b==c))
cout<<"La do dai 3 canh tam giac deu\n";
else
{
if ((a==b)||(b==c)||(c==a))
cout<<"La do dai 3 canh tam giac can\n";
else
cout<<"La do dai 3 canh cua tam giac thuong\n";
}
}
}
else
cout<<"Khong la do dai 3 canh cua 1 tam giac\n";

return;
}




Thuật toán tìm số các số hoàn chỉnh < 1000:

Code:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
int n,s,i;
cout<<"Cac so hoan chinh nho hon 1000 : \n";
for (n=1;n<=1000;n++)
{
s=0;
for (i=1;i<=(n/2);i++)
{
if ((n%i)==0)
s=s+i;
}
if (n==s)
cout<<n<<"\n";
}
getch();
}

“Nếu một hàm f(x) đơn điệu (tăng hoặc giảm) trên một đoạn [a, b] nào đó và f(x) có đạo hàm không đổi dấu trên đoạn đó, thì chắc chắn phương trình f(x) = 0 có một nghiệm duy nhất c nào đó trong đoạn [a, b]” (ở đây [a,b] được chọn là “khoảng phân ly nghiệm”)

Để tìm nghiệm gần đúng c, ta thực hiện một số hữu hạn lần quá trình lặp các bước sau đây:
Bước 1: Ta chọn c là điểm chính giữa của đoạn [a, b]
c = (a + b) / 2
Bước 2: Nếu f(c) = 0 thì ta khẳng định ngay c là nghiệm cần tìm và chuyển sang bước 4, ngược lại chuyển sang bước 3.
Bước 3: Nếu f(a)f(c) < 0 thì ta đặt lại b = c và quay về bước 1. Còn nếu f(a)f(c) > 0 thì đặt lại a=c rồi cũng quay về bước 1.
Bước 4: Thông báo nghiệm c tìm được và kết thúc công việc tìm nghiệm của phương trình f(x) = 0.

Quá trình trên gọi là phương pháp chia đôi bởi vì cứ mỗi một lần lặp lại từ đầu thì khoảng [a, b] cần xem xét được thu gọn lại chỉ còn một nửa so với lần trước bởi điểm chính giữa c. Quá trình lặp trên cũng dừng lại khi đoạn [a,b] quá ngắn (nhỏ hơn một số dương rất nhỏ nào đó, gọi là sai số).


Ví dụ phương trình f(x) = 0 với f(x) = x ^ 3 - 4, thì nghiệm gần đúng với sai số 0.001 sẽ được tìm như sau:
Lần lặp ---- a ---- b ---------x
1 1.0000 2.0000 1.5000
2 1.0000 1.5000 1.2500
3 1.2500 1.5000 1.3750
4 1.3750 1.5000 1.4375
5 1.4375 1.5000 1.4688
6 1.4688 1.5000 1.4844
7 1.4844 1.5000 1.4922
8 1.4922 1.5000 1.4961
9 1.4961 1.5000 1.4980
10 1.4980 1.5000 1.4990
Vậy nghiệm gần đúng của phương trình trên là 1.499


Bài tập : Tìm nghiệm gần đúng của pt : exp(x) - 1.5 = 0 , sai số là pow(10,-6):

Code:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
float a=0,b=1;
float f,fa,fb;
fa = exp(0)-1.5;
fb = exp(1)-1.5;
do
{
f = exp((a+b)/2)-1.5;
//if (f==0)
//cout<<"phuong trinh co nghiem la : "<<(a+b)/2<<"\n";break;
if (f*fa<0)
b = (a+b)/2;
if (f*fb<0)
a = (a+b)/2;
}
while ((b-a)>=pow(10,-6));
cout<<"Nghiem cua pt la : "<<(a+b)/2<<"\n";
getch();
return;
}



Code khác đây :) :

Code:
#include<math.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
float a=0,b=1,c;
float fa,fc;
while ((b-a)>pow(10,-6))
{
c=(a+b)/2;
fa = exp(a)-1.5;
fc = exp(c)-1.5;
if ((fa*fc)==0)
break;
if (fa*fc>0)
a=c;
else
b=c;
}
cout<<"Nghiem xap xi cua phuong trinh = "<<c;

getch();
return;
}




Các số sinh đôi là các số nguyên tố mà khoảng cách giữa chúng là 2. Hãy in tất cả cặp số sinh đôi < 1000.

Code:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
#include<conio.h>
int nguyento(int n)
{
    if(n == 2 || n == 3)
    {
        return 1;
    }
    if( n == 0 || n == 1 || n % 2 == 0 || n % 3 == 0)
    {
        return 0;
    }
    if( n < 25 )
    {
        return 1;
    }
    int i = 5 ;
    int j = 2 ;
    while(i <= floor(sqrt(n)))
    {
        if(n % i == 0 )
        {
            return 0;
        }
        else
        {
            i = i + j ;
            j = 6 - j ;

        }
    }
    return 1;
}
void main()
 {
 int i;
cout<<"cac so nguyen to sinh doi nho hon 1000 la \n";
    for(i=3;i<1000;i++)
    {
    if ((nguyento(i)==1)&&(nguyento(i-2)==1))
                     cout<<i<<" va "<<i-2<<"\n";
                       }

    getch();

 }

Nhập vào tuổi cha và tuổi con. Cho biết sau bao nhiêu năm tuổi cha bằng đúng 2 lần tuổi con.

Code:
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr;
int cha,con,nam;
lap:
cout<<"Nhap vao tuoi cua cha ; ";cin>>cha;
cout<<"Nhap vao tuoi cua con : ";cin>>con;
if (cha<2*con)
{
cout<<"Ban can phai nhap lai !!!\n";
 goto lap;
}
nam = 0;
while (cha>2*con)
{
cha++;
con++;
nam++;
}
cout<<"Sau "<<nam<<" nam tuoi cha bang dung 2 lan tuoi con \n";
getch();
return;
}



Ngoài ra các bạn có thể làm ngắn hơn:
Thuật toán :
Tuổi cha : a; tuổi con : b; số năm : n
Sau n năm tuổi cha = 2 lần tuổi con: a+n= 2*(b+n)
=>a+n = 2*b+2*n
=>n = a-2*b

Tìm số có 2 chữ số sao cho tích 2 chữ số của nó gấp 2 lần tổng 2 chữ số của nó:


Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
void main()
{
int n,a,b;
for (n=10;n<100;n++)
{
a=(n%10);
b=(n/10);
if ((a*b)==(2*(a+b)))
cout<<n<<endl;
}
getch();
return;
}


Tính e^x bằng công thức Taylor
Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
long giaithua(int n)
{
   if(n==1||n==0) return 1;
   else
      return n*giaithua(n-1);
}
void main()
{
long x,i;
float s;
cout<<"nhap x = ";cin>>x;
i=0;s=0;
while (float((pow(x,i)/giaithua(i)))>(pow(10,-6)))
{
s = s+ float(pow(x,i)/giaithua(i));
i++;
}
cout<<"e^"<<x<<" = "<<s<<endl;
cout<<exp(x);
getch();
return;
}



Tinh Sinx = CT Taylor :

Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
long giaithua(int n)
{
   if(n==1||n==0) return 1;
   else
      return n*giaithua(n-1);
}
void main()
{
float x,s;
int i=0;
cout<<"Nhap x = ";cin>>x;
s=0;
do
{
s = s + (pow(-1,i+1))*(float(pow(x,2*i+1))/giaithua(2*i+1));
i++;
}
while ((float(pow(x,2*i+1))/giaithua(2*i+1))>pow(10,-6));
cout<<"sin("<<x<<") = "<<s<<endl;
getch();
return;
}


Thuật toán :
Cho x, ta cần tìm sqrt(x).
a(0)=m
a(i+1)=(a(i)*a(i)+x)/(2*a(i))

Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
void main()
{
long a,i;
float s;
lap:
cout<<"Nhap a = ";cin>>a;
if (a<0)
{
cout<<"Ban can nhap lai !!!\n" ;
goto lap;
}
s=a;
do
s=float((s*s+a)/(2*s));
while (fabs(float((a-s*s)/(2*s)))>pow(10,-6));
cout<<"can bac 2 cua a la : "<<s<<endl;
getch();
return;
}


Chuyển đổi cơ số :

Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
void main()
{
int n;
lap:
cout<<"Nhap n = ";cin>>n;
if (n<0)
goto lap;
int i,k;
int a[21];
for (k=0;k<=20;k++)
{
a[k]=0;
}
k=0;
while (n!=0)
{
a[k]=n%2;
k++;
n=n/2;
//cout<<a[k];
}
for (i=k;i>=0;i--)
cout<<a[i];
getch();
}


exp(n)-1999*log10(n)<2000 :


Code:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>
void main()
{
int n=1;
float s=0;
do
{
s=s+float(exp(n)-1999*log10(n));
n++;
}
while (s<2000);
cout<<"n = "<<n<<endl;
getch();
return;
}

http://vdvinh-nd.blogspot.com

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà whatsltd4us
27/11/2010, 3:53 pm
tinhbandep
tinhbandep

NHập 1 kí tự.Cho biết kí tự đó có phải là chữ cái hay không?


Code:
#include
#include
#include
//#include
void main()
{
char c;
cout<<"Nhap ki tu bat ki tu ban phim : ";cin>>c;
//cout<<"So thu tu trong bang ma ascii la :"<
if ((int(c)>64)&&(int(c)<91)&&(int(c)>96)&&(int(c)<123))
cout<<<" la chu cai \n";
else
cout<<<" khong phai la chu cai\n";
getch();
return;
}

Bài 2 C3
Code:
#include<iostream.h>
#include<math.h>
void main()
{
int a;
cout<<"nhap 1 so bat ki:";cin>>a;
if(a>0)
cout<< a<<" la so duong\n";
if(a<0)
cout<<a<<" la so am\n";
if(a==0)
cout<<a<<" khong duong khong am\n";
if(a%2==0)
cout<<a<<" la so chan\n";
//if((n%2)!=0)
else
cout<<a<<" la so le:";
return;
}



Bài 4 C3

Code:
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float fx,x;
cout<<"nhap gia tri cua x:";cin>>x;
if(x>=1)
fx=sqrt(x*x+1);
if(-1<x<1)
fx=3*x+5;
if(x<=-1)
fx=x*x+2*x-1;
cout<<"gia tri ham so la:"<<fx;
getch();
return;
}845
:6845ert:

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
29/11/2010, 7:40 pm
phamthecao1
phamthecao1

con nhieu bai lam ma bot len di nhe?

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà phamthecao1
29/11/2010, 9:49 pm
MurSmile
MurSmile

Đây là 1 số bài khó và dạng chung, các bài khác đã làm trên lớp hoặc giống nên không post lên nữa, còn thắc mắc bài nào thì nói cụ thể tên bài, chứ không post từ đầu đến cuối được :sdgsid: :45eyey:
Admin :D

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà MurSmile
21/3/2011, 8:23 am
tinhbandep
tinhbandep

A Vinh ơi các bài tập phần mảng o trng 78
với các bài tập "xâu kí tự " ở trang 79 nữa

:itryr:

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
21/3/2011, 8:38 am
tinhbandep
tinhbandep

ak mà anh khi post bài lên thì anh nên post cả thuật toán của bài đó lên. thì bọn e mới hiểu cặn kẽ được .na anh!!!
:):

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
27/3/2011, 7:54 pm
phamthecao1
phamthecao1

a vinh em dang bị ốm sốt phát ban

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà phamthecao1
27/3/2011, 7:55 pm
phamthecao1
phamthecao1

:;'liu:

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà phamthecao1
27/3/2011, 7:58 pm
phamthecao1
phamthecao1

a vinh nhóm minh tuần nay tổ chức đi xuống tắm biển quất lâm đi?

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà phamthecao1
27/3/2011, 7:59 pm
phamthecao1
phamthecao1

bé hảo chăm học wuas nhi?
:4yu:

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà phamthecao1

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Sponsored content

Về Đầu TrangThông điệp [Trang 1 trong tổng số 1 trang]

« Xem bài trước | Xem bài kế tiếp »

Bài viết mới cùng chuyên mục

    Bài viết liên quan với Thảo luận về bài tập C++

      Quyền hạn của bạn:

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