Cách chạy mảng 1 chiều tính tổng và trung bình cộng của mảng?

Ai có thể chỉ em chạy mảng 1 chiu tính tổng và trung bình cộng của mảng trong khoảng 10-40 ko ạ? Em mới hk nên chưa rõ cách hoạt động của mảng

  • Bạn chưa biết cách truy xuất từng phần tử trong mảng?
  • Chưa biết dùng vòng lặp?
  • Chưa biết gọi một số thuộc tính của mảng (C#)?
2 Likes

Bạn có thể xem qua bài hướng dẫn về mảng của anh @ltd.
:point_right: Ngôn ngữ C: Mảng số tự nhiên

2 Likes

Mk bit cách dùng và truy xuất mảng và vòng lặp nhưng điều mk đang phân vân là tính trung bình cộng trong mảng có nên dùng 2 vòng lặp hay lập điều kiện

#include"stdio.h"
#include"conio.h"
#define Fuck 100
void Nhapmang(int a[],int &n)
{ printf("Nhap n:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("Phan tu thu a[%d]:\t",i+1);
scanf("%d",&a[i]);
}

}
void Xuatmang(int a[],int n)
{
printf("Noi dung cua mang la:\n");
for(int i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
}
void Tongmang(int a[],int n)
{
int S=0;
	for(int j=35;j>=5;j--)
    for(int i=0;i<n;i++)
	if(a[i]<=a[j]&&a[i]>=a[j-30])
	{
     S+=a[i];
    }
	
}
printf("\nTong cua mang la:%d",S);
}
float TBC(int a[],int n)
{
int TB=0,k=0;
for(int j=10;j<=40;j++){
	for(int i=0;i<n;i++){
		if(a[j]<=a[i]&&a[i]<=a[j+30])
		{
		TB+=a[i];
		k++;}
		break;}}
	printf("%d",TB);
return TB/k;

}
int Min(int a[],int n)
{int min=a[0];
for(int i=1;i<n;i++){
if(min>a[i])
 min=a[i];
}
	return min;
}
int Max(int a[],int n)
{int max=a[0];
for(int i=1;i<n;i++){
 if(max<a[i])
 max=a[i];

}
	 return max;
}
void Sapxep(int a[],int n)
{
int TG;
printf("\nHam sau khi sap xep theo chieu giam dan la:\n");
for(int i=0;i<n-1;i++)
	for(int j=i+1;j<n;j++)
	if(a[i]<a[j]){
	TG=a[i];
	a[i]=a[j];
    a[j]=TG;	
	}
	Xuatmang(a,n);
}
main(){
	int a[Fuck],n;
	float S;
	Nhapmang(a,n);
	Xuatmang(a,n);
	Tongmang(a,n);
S=TBC(a,n);
printf("\nTrung binh cong cua mang trong khoang [10-40]:\t%.3f",S);
	printf("\nMin=%d",Min(a,n));
	printf("\nMax=%d",Max(a,n));
Sapxep(a,n);
	getch();
	return 0;
}

Nếu muốn tính tổng hay tbc của mảng từ vị trí start đến end thì bạn có thể làm đơn giản như thế này:
:point_right: https://ideone.com/CJePiG

3 Likes

Sao lại phải dùng đến 2 vòng lặp nhỉ?
Trong khoảng 10 - 40 là sao? Giá trị của phần tử hay chỉ số của phần tử?

3 Likes

Nhìn code thì 10-40 là window size (tức là running average). Chỉ cần 2 for nối nhau :smiley:

3 Likes

chỉ số phần tử bạn ak ???

bạn có thể làm mẫu cho mk ko

1 for thôi, hay nói cách khác đây là avg(arr[10…40]).

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?