[Programming] ai chỉ giúp e bài lập trình c này với |
06/03/2009 10:57:17 (+0700) | #1 | 172080 |
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
06/03/2009 12:56:33 (+0700) | #2 | 172101 |
lamer
Elite Member
|
0 |
|
|
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
|
|
Dùng vòng lặp để tính giai thừa của i. Nếu i là chẵn thì cộng giá trị giai thừa đó vào s cho đến khi đụng phải 2n.
Bài này chắc chắn phải dùng tới số lớn ví dụ như thư viện GMP. |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
06/03/2009 13:42:36 (+0700) | #3 | 172111 |
VaT
Member
|
0 |
|
|
Joined: 04/09/2008 00:17:52
Messages: 87
Offline
|
|
Nếu không dùng thư viện thì có thể sử dụng Array và String để làm. Chủ yếu là để tập làm về thuật toán. |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
06/03/2009 13:53:29 (+0700) | #4 | 172112 |
seraphpl
Member
|
0 |
|
|
Joined: 04/12/2006 19:52:12
Messages: 97
Location: xxx
Offline
|
|
VaT wrote:
Nếu không dùng thư viện thì có thể sử dụng Array và String để làm. Chủ yếu là để tập làm về thuật toán.
bài này tập về kĩ năng code chứ có gì nhiều về thuật toán đâu nhở |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
06/03/2009 15:45:10 (+0700) | #5 | 172115 |
VaT
Member
|
0 |
|
|
Joined: 04/09/2008 00:17:52
Messages: 87
Offline
|
|
- Thì thuật toán tính n!
- Thêm thuật toán nhân 2 số lớn .
Quan trọng là thuật toán có tối ưu không . Nếu bạn làm với số n nhỏ thì sẽ không thấy rõ, nhưng thử cho n lớn một chút thì chắc sẽ nhức đầu lắm đó |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
06/03/2009 23:29:24 (+0700) | #6 | 172123 |
khanh120
Member
|
0 |
|
|
Joined: 06/03/2009 10:59:50
Messages: 7
Offline
|
|
[code]
đây là code ở đoạn xữ lý
{
long tong=0;
long giaithua=1;
for(int i=0;i<n;i++)
giaithua=giaithua*i;
tong+=giaithua;
return tong;
}
cái này mới nghĩ ra còn đúng không thì chưa chắc |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 00:34:43 (+0700) | #7 | 172137 |
FaL
Moderator
|
Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
|
|
khanh120 wrote:
[code]
đây là code ở đoạn xữ lý
{
long tong=0;
long giaithua=1;
for(int i=0;i<n;i++)
giaithua=giaithua*i;
tong+=giaithua;
return tong;
}
cái này mới nghĩ ra còn đúng không thì chưa chắc
Sai là cái chắc |
|
Hãy giữ một trái tim nóng và một cái đầu lạnh |
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 01:11:27 (+0700) | #8 | 172140 |
|
Z0rr0
Q+WRtaW5pc3RyYXRvc+g
|
Joined: 14/08/2002 12:52:01
Messages: 1323
Location: Underground
Offline
|
|
tác giả topic đâu rồi nhỉ. Tui nghĩ ko nên "code dùm" những câu hỏi như vầy vì cuối cùng chẳng rèn luyện được gì cho tác giả. |
|
Hibernating |
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 01:48:55 (+0700) | #9 | 172145 |
|
luugu
Member
|
0 |
|
|
Joined: 01/03/2009 20:35:15
Messages: 3
Offline
|
|
Có lẽ nên dùng hàm tính giai thừa thì hơn,sau đó thì dùng lệnh for ,kiểm tra biến n của hàm n!,xem có chẵn hay không,nếu lẻ thì bỏ qua và tính tiếp,đây là hàm tính giai thừa này,còn đoạn sau thì bạn tự viết nhé!
#include<stdio.h>
long int GT(int n)
{ int i;
long int GT=1;
if(n>1) for(i=0;i<=n;i++) GT*=i;
return GT;
}
void main()
.....................
Hoặc dùng đệ quy:
long int GT(int n)
{ if(n==0) return 1;
else return n*GT(n-1);
}
Tuy nhiên dùng đệ quy hay bị lỗi overflow |
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 02:15:46 (+0700) | #10 | 172146 |
cảm ơn mấy bạn đã giúp đỡ
nhưng cái bài này mình muốn chỉ dùng vòng lập while thôi
không biết có viết được không
|
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 02:56:37 (+0700) | #11 | 172147 |
|
luugu
Member
|
0 |
|
|
Joined: 01/03/2009 20:35:15
Messages: 3
Offline
|
|
thì mấy lệnh lặp có khác nhau mấy đâu,while của bạn đây :
#include<stdio.h>
void main()
{ int n,i=0,gt=1;
printf("n="); scanf("%d",&n);
while(i<n)
{ i++;
gt*=i;
}
printf(" giai thua bang: %d",gt);
getch();
}
Hoặc nếu bạn muốn dùng do while thì đây:
#include<stdio.h>
void main()
{ int n,i=0,gt=1;
printf("n="); scanf("%d",&n);
do { i++;gt*=i; } while (i<n);
printf(" giai thua bang: %d",gt);
getch();
}
|
|
|
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 11:04:14 (+0700) | #12 | 172213 |
khanh120
Member
|
0 |
|
|
Joined: 06/03/2009 10:59:50
Messages: 7
Offline
|
|
[code]
#include<stdio.h>
long int GT(int n)
{ int i;
long int GT=1;
if(n>1) for(i=0;i<=n;i++) GT*=i;
return GT;
}
nếu vậy cũng tiu
ghi như trên thì GT=0 rồi tính gì nữa
rất ngố |
|
|
[Question] Re: ai chỉ giúp e bài lập trình c này với |
07/03/2009 11:30:34 (+0700) | #13 | 172215 |
khanh120
Member
|
0 |
|
|
Joined: 06/03/2009 10:59:50
Messages: 7
Offline
|
|
[code]
mình xin viết lại code đúng ( hồi sáng đọc lộn đề )
#include<stdio.h>
void main()
{
int n;
printf("\n moi nhap n =");
scanf("%d",&n);
int S=1,t;
printf("\n1");
for(int i=1;i<=n;i++)
{
t=1;
for(int j=1;j<=2*i;j++)
t=t*j;
printf("+ %d ",t);
S=S+t;
}
printf("= %3d ",S);
} |
|
|
|