Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi 13520178
    Nhập n, nhập xuất mảng a0, a1,a2,…, an-1
    Tính tổng và trung bình cộng, yêu cầu sử dụng hàm.
    Mong được anh chị giúp đỡ ạ ! [IMG]images/smilies/biggrin.png[/IMG]
    Cái này search goole là ra 1 đống rồi, topic này đã có quá nhiều, mà cái c[ bản vậy cũng ko chịu t]f làm sao mà khá nổi?
    Tôi chỉ bạn ý tưởng thôi còn lại phải tự code rồi sai chỗ nào thì quăng cái code lên đây.
    1/ Xuất nhập mảng ý tưởng giống nhau: chạy vòng for từ 0->n, nếu là nhập thì cin>>, xuất thì cout<<
    2/ Tổng và trung bình cộng cũng có ý tưởng tương đồng:
    -Tính tổng thì đầu tiên tạo 1 biến sum cho nó bằng 0, chạy vòng for như xuất nhập mảng, trong vòng for thì cộng dồn cái sum với từng phần tử.
    - Tính trung bình cộng thì giống tính tổng, nhưng sau khi được tổng bao nhiêu thì đem chia cho số phần tử mảng, chính là chia cho n đó.
    Đến vậy mà ko làm được thì bó chân.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Nhập xuất mảng, tính tổng, trung bình cộng của mảng (sử dụng hàm)

    Nhập n, nhập xuất mảng a0, a1,a2,…, an-1
    Tính tổng và trung bình cộng, yêu cầu sử dụng hàm.
    Mong được anh chị giúp đỡ ạ ! [IMG]images/smilies/biggrin.png[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    dạ...em làm được rồi...em mới học nên còn nhiều cái chưa hiểu rõ...thanks anh nhé !

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình cũng là beginer thấy bài này hay hay nên cũng thử làm xem sao. và đây là kết quả, mong mọi người góp ý.

    Mã:
    #include <stdio.h>
    #include <stdlib.h>
    
    float sum(float a[], int n);
    float average(float a[], int n);
    
    int main()
    
    {
        int n,i;
        printf(" Nhap n phan tu cua mang:");
        scanf("%d",&n);
        float a[n];
        for (i=0;i<n;++i){
            printf("Nhap gia tri cua phan tu a[%d] ",i);
            scanf("%f",&a[i]);
        }
     printf("Tong la S= %.2f 
    Trung binh la A=%.2f", sum(a,n),average(a,n));
        return 0;
    }
    
    float sum(float a[],int n)
    {
        float s=0;
        int i=0;
        for(i=0;i<n;++i)
            s+=a[i];
        return s;
    }
    float average(float a[], int n)
    {
        float tb=0;
        tb=sum(a,n);
        return tb;
    }
    Em ko biết bạn sử dụng trình biên dịch nào nếu viết trungbinh=sum thì nó ko chạy. Mình phải viết là
    tb=sum(a,n) có đối số a và n. Mình đang dùng code block.
    Vài điều chia sẽ.[IMG]images/smilies/biggrin.png[/IMG]

  5. #5
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0
    Mã:
    #include <stdio.h>
    
    int nhap();
    void nhapmang();
    void xuatmang();
    int tinhtong();
    
    
    int trungbinh(float sum, int n)
    {
    	float trungbinh;
    	trungbinh= sum;
    	return trungbinh;
    }
    
    
    int tinhtong(int ia[], int n,int  sum)
    {
    	int i;
    	for(i=0; i<n; i++)
    		sum=sum+ia[i];
    	return sum;
    
    }
    void xuatmang(int ia[], int n)
    {
    	int i;
    	for(i=0; i<n; i++)
    		printf("%d  ", ia[i]);
    }
    void nhapmang(int ia[], int n)
    {
    	int i;
    	for(i=0; i<n; i++)
    	{
    		printf("Xin nhap phan tu thu %d : ", i);
    		scanf("%d", &ia[i]);
    	}
    		
    }
    int nhap(int &n)
    {
    	printf("Nhap so phan tu cua mang: ");
    	scanf("%d", &n);
    	return n;
    }
    
    
    void main()
    {
    	float k;
    	float sum=0;
    	int ia[20] ;
    	int n=0 ;
    	nhap(n);
    	nhapmang(ia, n);
    	xuatmang(ia, n);
    	printf("
    ");
    	printf("gia tri tong cua mang la: %d
     ", tinhtong(ia, n, sum));
    	printf("gia tri trungbinh cua mang la: %f ", trungbinh(tinhtong(ia, n, sum), n));
    }
    Em làm rồi mà sao cái chỗ tính trung binh nó ra không đúng ạ

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lần sau có lỗi bạn post kèm theo thông báo lỗi cho mình nha, cái sai cơ bản của bạn đó là "râu ông nọ cắm cằm bà kia". Rõ ràng method tính trung bình cộng bạn cho trả về kiểu int mà trong khi đó bạn lại để biến trungbinh kiểu float thì khi bạn tính mà kết quả ra số thập phân có phải nó chỉ xuất ra bằng 0 thôi đúng ko?
    Xem xét lại toàn bộ bài nhé bạn, nhiều chỗ còn thừa lắm, tuy ko sai nhưng ko tối ưu phí bộ nhớ quá. Ví dụ như:
    1/Trong hàm main ko cần có biến sum, biến n(số phần tử mảng đúng ko?) biến này ko cần gán bằng 0 ban đầu. Mình nhắc bạn một gợi ý nhỏ nhưng rất hữu ích đó là chỉ khi nào bạn làm việc với con trỏ hoặc khi một biến nào đoa nằm trong 1 hàm riêng biệt thì mới nên khở tạo giá trị đầu còn ko thì thôi.
    2/ Hàm tinhtong chẳng việc gì phải truyền biến sum vào cả, biến sum là biến sẽ có khi gọi hàm chứ ko phải là 1 đối số cần truyền vào. Cụ thể trong hàm tinhtong chỉ cần truyền vào mảng và số phần tử của mảng thôi.
    Cố gắng nghuên cứu tiếp nhé, mình rất mừng vì bạn tự code chứ ko như những bạn khác chỉ chờ người khác cho code đem về xài.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •