Thao tác với array

Mình có một đoạn code chạy trên visual studio, mình muốn kết quả in ra bảng 2 cột, cột 1 là thứ tự array, cột 2 là giá trị array, nhưng chạy thì chỉ in ra dòng arr[0] và dòng sum.
Mong các bạn giúp đỡ ạ. Đoạn code như sau:

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <math.h>

using namespace std;

void printOut(int arr[]) {
	int i = 0;
	cout << setw(15) << left << "Element" << setw(15) << left << "Value" << endl;
	for (i; i <= 5; i++) {
		if (i < 5)
			cout << setw(15) << left << i << left << setw(15) << arr[i] << endl;
		if (i = 5)
			cout << setw(15) << left << "sum" << setw(15) << left << (arr[0] + arr[1] + arr[2] + arr[3] + arr[4]);
	}
}

int main() {
	int arr[5];
	int i;
	for(i=0; i<5; i++)
		cin >> arr[i];
	printOut(arr);
	system("pause");
}

Ý mình là cần nó in ra từ arr[0] đến arr[4] lun. Xong rồi mới in ra sum. nhưng mà mình chạy code thì nó chỉ in arr[0] với dòng sum thôi à

Không ai giúp mình à :slightly_frowning_face::slightly_frowning_face::slightly_frowning_face: chương trình đầu tiên mình làm với mảng nên ko có kinh nghiệm lắm :cry::cry::cry: chắc hơi khó hiểu…

Chẳng khó hiểu, mình hiểu ý của bạn.
Nhưng theo đoạn mã đó thì không có cách nào nó chỉ in chỉ 2 dòng.
Liệu rằng trước đó bạn chỉ in 2 dòng, sau đó rồi mới cho vào vòng lặp.
Nếu nhấn Run trong IDE nó chỉ chạy chứ không biên dịch. Để chắc chắn cập nhật được những thay đổi thì chọn Compile sau đó Run.

2 Likes

if (i = 5) kìa. == mới đúng

3 Likes

:laughing::laughing::laughing:đúng rồi cậu ơi @SITUVN.gcd @tntxtnt… thêm == với ấn compile thì nó chạy an toàn rồi. Mà compile là gì vậy @SITUVN.gcd ơi.

à còn nữa… cách khai báo mảng trong hàm void ở trên là gì??? tớ ko hiểu lắm, liệu có phải mảng arr[] trong hàm void đó là không có giới hạn ko cậu???

đó là cách viết đểu của C, thật ra arr khi truyền vào hàm void đó nó là con trỏ. Con trỏ int* này trỏ tới 1 số nguyên nào đó, có thể trỏ tới 1 mảng số nguyên (ko rõ bao nhiêu phần tử), có thể trỏ tới 1 biến số nguyên.

nếu muốn truyền mảng 5 số nguyên thì có nhiều cách:

truyền tham chiếu :V

void printOut(const int (&arr)[5])

khi này nếu arr là ví dụ int arr[6] chẳng hạn thì truyền vào printOut nó sẽ báo lỗi error: invalid initialization of reference of type ‘const int (&)[5]’ from expression of type ‘int [6]’ nghĩa là phải truyền đúng mảng có 5 phần tử, 6 phần tử nó ko nhận.

xài C++11 std::array

#include <array>

void printOut(const std::array<int, 5>& arr)
{
    //...
}

int main()
{
    std::array<int, 5> arr;
    // nhập arr...
    printOut(arr);
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?