01/10/2018, 09:35

Hỏi cách giải bài toán về mảng trong C

mình mới tự học lập trình C đang học tới bài mảng, gặp bài tập thì bị đứng hình, mọi người giúp với TT!
Bài tập 1
Tạo một function tongArray để tính tổng các giá trị chứa trong nó (sử dụng return để trả về giá
trị). Và để giúp bạn hiểu rõ hơn, đây là prototype của function cần viết:
C code:
int tongArray (int array[ ], int kichthuocArray);

và đây là bài code của mình:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int mang[4], i = 0, s= 0;
    for(i = 0; i < 4; i++)
    {
        printf("nhap cac gia tri trong mang
");
        scanf("%d",&mang[i]);
        s+=mang[i];
    }
    printf("tong cac gia tri trong mang = %d
",s);
    return 0;
}

thấy có chạy, có tính tổng nhưng kì kì sao á, ai có cách code nào hay hơn mà xử dụng cả prototype không chỉ mình với.
thank all.

Tao Không Ngu. viết 11:47 ngày 01/10/2018

Hi St Marshy.
Bạn viết thành hảm riêng ra chứ @_@!

goneboy viết 11:50 ngày 01/10/2018

Em có thể tham khảo cách viết này:

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

using namespace std;

void input_array(int arr_out[], int &arr_size_out);
int array_sum(int arr_in[], int arr_size_in);

int main(int argc, char *argv[])
{
	int arr[32];
	int arr_size;
	int arr_sum;
	
	input_array(arr, arr_size);
	arr_sum = array_sum(arr, arr_size);

	system("pause");
	return 0;
}

void input_array(int arr_out[], int &arr_size_out)
{
	printf("Enter the array size: ");
	scanf("%d", &arr_size_out);

	for(int i = 0; i < arr_size_out; i++)
	{
		printf("arr[%d] = ", i);
		scanf("%d", &arr_out[i]);
	}

	return;
}

int array_sum(int arr_in[], int arr_size_in)
{
	int sum = 0;

	for(int i = 0; i < arr_size_in; i++)
	{
		sum += arr_in[i];
	}

	return sum;
}
St Marshy viết 11:50 ngày 01/10/2018

scanf("%d", &arr_size_out); dòng này là nhập vào số giá trị trong mảng hả anh như kiểu mảng có 5 số giá trị thì mình nhập là 5 ý.
cho em hỏi nữa là:
int array_sum(int arr_in[], int arr_size_in)
{
int sum = 0;

for(int i = 0; i < arr_size_in; i++)
{
	sum += arr_in[i];
}

return sum;

}
hàm này không khai báo i hả anh, còn cái arr_size_in khác i ở chỗ nào ạ, em thấy i cũng là kích thước mảng mà

St Marshy viết 11:44 ngày 01/10/2018

còn nhiều câu hỏi khác nữa tại cái code của anh nó còn nhiều thứ lạ lẫm với em quá TT

rogp10 viết 11:37 ngày 01/10/2018

Sai.

  • Ngay for đã có int i=0; rồi
  • i không phải là kích thước mảng, nó chỉ là biến lặp qua mảng thôi.
Trần Hoàn viết 11:38 ngày 01/10/2018
#include <stdio.h>

int TongArray(int MangCanTinhTong[], int KichThuocMang)
{
	int Tong = 0;
	for (int i = 0, i < KichThuocMang; i += 1)
		Tong += MangCanTinhTong[i];
	return Tong;
}

int main()
{
	printf("Nhap kich thuoc mang: ")
	int n;
	scanf("%d", &n);
	int mang[100];
	for (int i = 0; i < n; i += 1)
	{
		printf("Nhap so thu %d:", i + 1);
		scanf("%d", mang[i]);
	}
	int s = TongArray(mang, n);
	printf("Tong cac gia tri trong mang = %d",s);
	system("pause");
	return 0;
}
goneboy viết 11:37 ngày 01/10/2018

do e chưa quen thôi, code a viết như vậy là tương đối dễ hiểu và trong sáng đó. E nên đi từ hàm main, chạy debug từng dòng, sẽ hiểu được. Chứ e đừng vào là xem hàm tính tổng ngay. Với code a là 1 dạng để tham khảo thôi, e hãy hiện thực lại việc em hiểu theo cách của em.

St Marshy viết 11:40 ngày 01/10/2018

anh ơi! cho em hỏi em code như này:
#include <stdio.h>
#include “helloc.h”

void tongnhap(int mang[], int n);
void tongxuat(int mang[], int n);
int main()
{
int s = 0, t = 0, n = 10;
int mang[n];
tongnhap(mang,n);
tongxuat(mang,n);
int i;
for(i = 0; i < n; i++)
{
s+=mang[i], t = s/n;
}
printf(“tong cac gia tri trong mang = %d\n”,s);
printf(“trung binh cong cac gia tri trong mang = %d\n”,t);
return 0;
}
void tongnhap(int mang[], int n)
{
int i;
for(i = 0; i < n; i++)
{
printf(“nhap vao gia tri trong mang[%d]\n”,i);
scanf("%d\n",&mang[i]);
}
}
void tongxuat(int mang[], int n)
{
int i;
for(i = 0; i < n; i++)
{
printf(“cac mang da nhap = %d\n”,mang[i]);
}
}
chạy mọi thứ đều đúng, riêng ở chỗ nhập mang[0] em phải nhập 2 lần là sao hả anh???
ps/ 2 hàm void em để trong file.h nha, tập chuyên nghiệp tí

goneboy viết 11:40 ngày 01/10/2018

E bỏ ‘\n’ trong scanf đi rồi thử lại xem sao.

St Marshy viết 11:52 ngày 01/10/2018

à đúng rồi! lỗi của em

*grab popcorn* viết 11:49 ngày 01/10/2018

A post was split to a new topic: Mong mọi người giúp đỡ kiểm tra hàm lấy giá trị lớn nhất

Sang Ha viết 11:39 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Bài liên quan
0