Sử dụng vector bị lỗi: vector subscript out of range?

Mycode

/*mo file input.txt tim max trong day so nguyen.txt*/
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
int main(){
	//mo file de doc
	ifstream FileIn("INPUT.TXT");

	if (!FileIn){
		cout << "Khong tim thay tap tin INPUT.TXT" << endl;
		system("pause");
		return 0;
	}

	vector<int> arr;
	int SoLuong;
	FileIn >> SoLuong;
	for (int i = 1; i <= SoLuong; i++){
		int x;
		FileIn >> x;
		arr.push_back(x);
	}
	FileIn.close();


	ofstream FileOut("OUTPUT.TXT");
	int max = arr[0];
	for (int i = 1; i <= arr.size(); i++){
		if (arr[i] > max){
			max = arr[i];
		}
	}
	FileOut << max;
	FileOut.close();
	system("pause");
	return 0;
}

2 Likes

Đọc lỗi này thì thấy là cách @tuantien8979 sử dụng vector bị sai. Sai ở chỗ là đã trỏ nhầm ra ngoài phạm vi của vector. Khi nào mình thấy chữ out of range là tự hiểu thế nhé.

Đọc vào code thì thấy thế này:

for (int i = 1; i <= arr.size(); i++)
{
    if (arr[i] > max)
    {
        max = arr[i];
    }
}

Sai ở chỗ:

i <= arr.size()

Sửa lại

i < arr.size()

Tuy nhiên cách dùng này không nên áp dụng đối với vector nhé. Hãy dùng iterator để code. @tuantien8979 xem các video về vector để hiểu cách dùng :smile:



3 Likes

Để em xem rùi làm lại bài này :blush:

2 Likes

Nếu sửa theo cách của anh thấy đúng thì nhớ chọn câu trả lời của anh là đúng nhé @tuantien8979

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