30/09/2018, 19:46

2 vòng lặp lồng vào nhau

e ko hiểu rõ lắm về cách vòng lặp lồng vào nhau mong anh chị chỉ giáo

Đinh Phong viết 21:53 ngày 30/09/2018

Câu hỏi của bạn chưa cụ thể lắm, bạn có thể ví dụ bài nào bạn chưa hiểu hay chưa hiểu chỗ nào thì mọi người mới giúp được chứ

Dờ Uy Duy viết 21:48 ngày 30/09/2018
#include<stdio.h>
#include<math.h>
int main()
{
	int x, n, gt=1;;
	float s=0;
	printf("nhap x:\n");
	scanf("%d",&x);
	printf("nhap n:\n");
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		
			gt=1;
		for(int j=1;j<=i;j++)
			gt=gt*j;
			s=s+(pow(x,i))/gt; 
				
	}
	printf("tong giai thua la:%f\n",s);

Ngô Doãn Tuấn viết 21:49 ngày 30/09/2018

Không hiểu như thế nào vậy bạn?

Phan Hoàng viết 21:54 ngày 30/09/2018
for(int i=1;i<=n;i++) // cho i chạy từ 1 tới n, giả sử n =2 nhé
{
  gt=1; //khởi tạo gt = 1
  for(int j=1;j<=i;j++) // cho j chạy từ 1 tới i, vậy lần đầu nó chạy từ 1->1, lần 2 chạy từ 1->2
   { 
      gt=gt*j; //tính ra gt, ví dụ ở lần 2, nó tiếp tục chạy 2 vòng lặp nhỏ, lần 1 gt = 1*1, lần 2 sẽ bằng gt=1*2
                  //đại khái tính ra số giai thừa, lần 1 là 1!, lần 2 là 2!, .... 
   } //thoát khỏi vòng tính giai thừa (biến j)
 s=s+(pow(x,i))/gt; //tính tổng theo 2 vòng lặp, lần 1 là 1+(x mũ 1/1!)
                           //lần 2 sẽ là 1 +  (x mũ 1/1!) + (x mũ 2)/2!
}

Vậy bài toán này tính 1 tổng, trong đó các số hạng trong tổng cần phải tính giai thừa.

Dờ Uy Duy viết 21:58 ngày 30/09/2018

giống như là mỗi vòng lập chạy như thế nào á bạn @@

Dờ Uy Duy viết 22:01 ngày 30/09/2018

ủa để gt=1 ngoài vòng for ko dc hả bạn @@

Phan Hoàng viết 21:50 ngày 30/09/2018

Cái này bạn vẽ lược đồ (flow diagram) sẽ hiểu. gt đặt ngoài thì nó lại tính ra bài #, để vào trong để reset ấy mà (tất nhiên, để ngoài vẫn được, thuật toán tuy # đi nhưng vẫn ra được kết quả như yêu cầu. Thuật toán ở đây sẽ hơi bị trùng vì:

Tính 2!: vẫn tính từ 12
Tính 3
: bị trùng, tính 123
Tình 4!: vẫn tính từ đầu, 123*4

Hiếu Aq viết 21:56 ngày 30/09/2018

anh xem giúp em cái hàm đếm các phần tử cùng là số nguyên tố lớn nhất này của em xem sai ở đâu ạ
//ham dem so phan tu la song nguyen to lon nhat mang
int so_maxnt(int a[], int n)
{
int i,j,k,m,maxnt,dem = 0;

		for(i = 0 ; i < n; i++)
			if(ktnt(a[i])== 1)
				{
					
					maxnt = a[i];
					for(j = i+1; j< n;j++)
						{
							if(a[j] > maxnt&& ktnt(a[j])==1)
								{
								maxnt = a[j];
								k = j;
								}
						}
					
					for(m = k; m < n; m++)
						if(a[m] == maxnt)
							dem++;
					printf("\n%d la so nguyen to lon nhat trong mang va co %d lan lan lap lai",maxnt, dem);
							
					break;		
							
				
					}

}

Bài liên quan
0