30/09/2018, 16:51

tính trung bình cộng các số nguyên tố trong mảng

trung bình cộng các số nguyên tố trong mảng .ai giúp sửa code với ạ

Thành Phạm viết 18:53 ngày 30/09/2018

Bạn có ý tưởng gì chưa, đang gặp khó khăn ở đâu, cứ nêu ra thì mọi người mới giúp được

ngo viết 18:56 ngày 30/09/2018

mình dùng hàm kiểm tra để kiểm tra trong mảng những phần tử nào là số nguyên tố
rồi dùng hàm tính trung bình thui .nhưng viết code sai ở đâu nên tổng k tính được.

Thành Phạm viết 18:56 ngày 30/09/2018

Bạn có code thì cứ đưa lên đây

ngo viết 18:55 ngày 30/09/2018
#include<stdio.h>
#include<conio.h>
//tinh trung binh cong cac so nguyen to
//khai bao nguyen mau protype
void nhapmang();
int KiemTraSoNguyenTo();
float tinhTBC();
//ham nhap mang
void nhapmang(int A[],int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("mang A[%d]",i);
		scanf("%d",&A[i]);
	}
}
// ham kiem tra
int KiemTraSoNguyenTo(int n)
{	int i;
   if (n<=1)
       { 
           return 0; 
       } 
    for (i=2;i<n;i++) 
       { 
           if (n%i==0) 
           { 
                  return 0; 
           } 
       } 

       return 1; 

}
/* int kiemtra(int A[],int n)
{	int i;
	if(A[i]<=1)
	return 0;
	for(i=0;i<n;i++)
	{
		if(i%2==0||%i=0)	
		return 0;	
	}
	return 1;
}*/
//ham tinh tong
float tinhTBC(int A[],int n)
{	
	int i,s=0;
	float dem=0;
	for(i=0;i<n;i++)
	{
		if(KiemTraSoNguyenTo(n)==1)
		{	dem++;
			s+=A[i];
		}
	}
	return (float)s/dem++;
}
//ham chinh main
int main()
{
	int A[100];
	int n;
	printf("\n nhap so luong phan tu trong mang n= ");
	scanf("%d",&n);
	nhapmang(A,n);
	printf("tong la %f",tinhTBC(A,n));
	getch();
	
	
}
ngo viết 19:03 ngày 30/09/2018

kiểm tra giúp mình với ạ

Thành Phạm viết 19:07 ngày 30/09/2018
#include <stdio.h>
#include <stdlib.h>

//tinh trung binh cong cac so nguyen to
//khai bao nguyen mau protype
void nhapmang();
int KiemTraSoNguyenTo();
float tinhTBC();
//ham nhap mang
void nhapmang(int A[],int n)
{
    int i;
    for(i=0;i<=n;i++)
    {
        printf("mang A[%d]",i);
        scanf("%d",&A[i]);
    }
}
// ham kiem tra
int KiemTraSoNguyenTo(int n)
{
    int i;
    if (n<=1)
    {
        return 0;
    }

    for (i=2;i<n;i++)
        {
             if (n%i==0)
                {
                    return 0;
                }
        }
   return 1;




}
/* int kiemtra(int A[],int n)
{ int i;
if(A[i]<=1)
return 0;
for(i=0;i {
if(i%2==0||%i=0)
return 0;
}
return 1;
}*/
//ham tinh tong
float tinhTBC(int A[],int n)
{
    int i,s=0;
    float dem=0;
    for(i=0;i<=n;i++)
    {
        if(KiemTraSoNguyenTo(A[i])==1)
        {
            dem++;
            s+=A[i];
        }
    }
    return s/dem;
}
//ham chinh main
int main()
{
int A[100];
int n;
printf("\n nhap so luong phan tu trong mang n= ");
scanf("%d",&n);
nhapmang(A,n);
int i = 0;
for(i=0;i<=n;i++)
{
   printf("%d\n",KiemTraSoNguyenTo(A[i]));
}
printf("tong la %f",tinhTBC(A,n));
getch();

}

Bạn xem lại xem được chưa nhá, sai mấy chỗ , mà lần sau bạn đăng code thì bôi đen code rồi ấn Ctrl + K thì code sẽ hiện dễ nhìn hơn

ngo viết 18:55 ngày 30/09/2018

Thanks cậu nha . nhưng mình ngĩ trong hàm main không cần vòng lặp for

Thành Phạm viết 19:00 ngày 30/09/2018

À, mình quên mất không xóa , chỗ đó là mình test hàm kiểm tra nguyên tố thôi

ngo viết 18:56 ngày 30/09/2018

cậu xiêu thật đấy

James Nguyen viết 19:04 ngày 30/09/2018

cho e hỏi ngu tí! sao lại tách ra thành nhiều hàm thế ?
sao không phải là int main(void){} mà chỉ int main() thôi vậy @@!

Minh Hoàng viết 19:04 ngày 30/09/2018

Vì main cũng là một hàm thôi. Còn int main(void) và int main() đều giống nhau, int main(void) thì nó sẽ rõ ràng hơn (thông báo là không có tham số nào cả)
bạn xem thêm ở đây: http://www.geeksforgeeks.org/difference-int-main-int-mainvoid/

lekichnhuong viết 18:54 ngày 30/09/2018

Cái phần kiểm tra số nguyên tố, theo mình i < n/2 được rồi, không cần phải chạy đến n đâu

Thành Phạm viết 18:58 ngày 30/09/2018

Có được k nhỉ , bạn giải thích được không

Minh Hoàng viết 19:05 ngày 30/09/2018

i chạy từ 2 đến căn của n là được
xem thêm ở đây: http://java.dzone.com/articles/algorithm-week-determine-if

lekichnhuong viết 19:05 ngày 30/09/2018

Hic…không biết nói sao nữa. Ví dụ bạn có số N đi. N/2 = B.
Bây giờ bạn có số C > B => N/2< C, hay noi’ cách khác là N/C < 2 => Nghĩa là khi bạn chạy. i > n/2, thì kết qua? chia luôn nhỏ hơn 2 => kiểm tra chi, mình muốn kiểm tra 2+ mà

lekichnhuong viết 19:03 ngày 30/09/2018

=)) Vụ này hay à nha. Để coi coi

Thành Phạm viết 18:52 ngày 30/09/2018

Hehe, đã hiểu
Google được đoạn thế này

Tuy nhiên, suy nghĩ thêm một chút chúng ta sẽ thấy rằng không cần phải kiểm tra đến giá trị i = n – 1 mà thực chất chỉ cần tới n/2 (n div 2) vì không có ước số nào của n lớn hơn n/2.

Lại suy nghĩ thêm một chút chúng ta sẽ thấy rằng cũng không cần thiết phải kiểm tra đến giá trị n/2 mà chỉ cần đến căn bậc 2 của n là được (các bạn hãy tính toán một chút để thấy tại sao lại như vậy?)

Nguồn: http://expressmagazine.net/development/817/bai-toan-kiem-tra-so-nguyen

lekichnhuong viết 18:52 ngày 30/09/2018

=)) Giờ thì mình đã hiểu sao lại kiểm tra đến căn bậc 2, phục mấy người đó thiệt

Bài liên quan
0