Prototype và hàm

Em mới học C, em có làm bài tập về Array và Pointer đề bài là:
1.Tính tổng array
2.Tính trung bình
3.Coppy
4. Chuyển đổi số lơn hơn Max về 0
5. Sắp xếp tăng dần
Dưới đây là prototypes em viết ở file prototypes.h

#include <stdlib.h>
//Tinh tong
int TongArray (int array[ ], int kichthuocarray)
{
	int i;
	int itong =0;
	for(i=0;i<kichthuocarray;i++)
	{
		itong+=array[i];
	}
	printf("Tong la %d\n", itong);
}
//Tinh trung binh
double TrungbinhArray (int array[ ], int kichthuocarray)
{
	int i;
	double dtrungbinh=0;
	double dtong;
	for(i=0;i<kichthuocarray;i++)
	{
		dtong+=array[i];
	}
	dtrungbinh=dtong/kichthuocarray;
	printf("\nTrung binh la; %.5f\n", dtrungbinh);
}
//Coppy
void CoppyArray(int array[], int array2[], int kichthuocarray)
{
	int i;
		printf("\n array2 duoc coppy lai la \n");
	for(i=0;i<kichthuocarray;i++)
	{
		array2[i]=array[i];
				printf("%d\n",array2[i]);
	}
}
//Sap xep tang dan
void IncreaseArray(int array[], int kichthuocarray)
{
	int i,j,k;
		printf("\n Day so duoc sap sep tang dan la\n");
	//cong thuc hoan vi
	for(i=0;i<kichthuocarray-1;i++)
	{
		for(j=i+1;j<kichthuocarray;j++)
		{
			if(array[i]>array[j])
			{
				//k nhan gia tri cua a[i], k co gia tri a[i] va a[i] co gia tri cua a[i]
				k = array[i];
				//a[i] nhan gia tri cua a[j], k van con luu gia tri a[i]
				array[i] = array[j];
				//a[j] nhan lai gia tri duoc luu tu k
				array[j] = k;
			}
		}        
	}
	for(i=0;i<kichthuocarray;i++)
{
		printf("%5d", array[i]);
}
}
//Maximum return 0
void MaximumArray(int array[], int kichthuocarray, int MaximumNumber)
{
	int i;
		printf("\n So lon lon hon Max bi chuyen ve 0 \n");
	for(i=0;i<kichthuocarray;i++)
	{
		if(array[i]>MaximumNumber)
		array[i]=0;
		printf("%d\n",array[i]);
	}
}

Còn đây là code ở main.c

#include <stdio.h>

#include <stdlib.h>

#include "prototypes.h"

//tinh tong

int main(int argc, char *argv[])

{

int array[4]={1,2,3,4};

int array2[]={};

TongArray(array,4);

TrungbinhArray (array,4);

CoppyArray(array,array2,4);

MaximumArray(array,4,3);

IncreaseArray(array,4);

}

Em có 1 số câu hỏi muốn hỏi như sau mong được sự giúp đỡ của mọi người

  1. em dùng nhiều biết chung trong 1 prototypes nó ảnh hưởng gì không? cho em xin tác hại của nó.
  2. Phần chuyển số lớn hơn max về 0 “MaximumArray”: em nghĩ là chổ này là em bị dính cái biến đã bị thay đổi tại vì khi in ra màng hình từ “MaximumArray” về sau sô 4 đã bị chuyển thành số 0. Em muốn hỏi cách khắc phuc. Xin cảm ơn

(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)

Không đăng code dưới dạng hình chụp nha bạn, đăng dưới dạng văn bản. Xem cách đăng code tại

2 Likes

em cảm ơn ạ tại em mới vô nên chưa biết.

Lệnh CoppyArray là để cho bước cuối cùng đó bạn :slight_smile:

4 Likes

e chưa hiểu lắm ạ, anh có thể giải đáp giúp em 2 câu hỏi luôn được không ạ?

Thật sự ko hiểu câu 1 ý bạn là gì :smiley:

Prototype thì không có cái thân hàm {} và không cần tên tham số, chỉ cần số lượng và kiểu tham số trùng khớp.

Đây là hàm:

void foo(int bar) {}

Đây là prototype:

void foo(int bar);
3 Likes

Bạn muốn sắp xếp mảng ban đầu nhưng cái Max gì đấy() làm thay đổi mảng rồi.
Vậy thì phải “sao lưu” mảng ban đầu lại. Cái Copy gì gì đấy() dùng để “sao lưu” được không?!!

Câu này “xoắn não” phết!
Ý bạn là: Muốn dùng những hàm trong pro gì đấy.h nhiều lần ở nhiều tập tin .c khác nhau (include) thì có sao không?

Mảng này bao nhiêu phần tử nhỉ? :thinking:

3 Likes

Mảng đó dùng để tính bài coppy trong cái
CoppyArray(...); á anh.
không biết em để trống vậy có sao không anh? Hay là chỉ tốn bộ nhớ?

Câu này của em có nghĩa là: trong prototypes.h em có sử dụng biến
int array, int kichthuocarray cho tất cả các bàm thì không biết nó có ảnh hưởng gì đến các hàm dưới nếu làm như vậy? Vi em qua bên main.c thì khai báo có int array[]= int kichthuocint array2[]= thay gì mỗi ham em lại sử dụng 1 biến khác nhau. Như hàm TongArray() thì em lại dùng TongArray(int array, int kichthuoc) còn TrungbinhArray(int array1, int kichthuoc1)… đến cuối thì sẽ ra 1 đóng biến.

Cảm ơn anh nhé, em chưa tìm hiểu rõ để em xem lại.

Tham số hình thức thì mỗi hàm đều dùng riêng (local :smiley: ) nên không trùng đâu bạn.

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