Chào các bạn. Các bạn có thể xem giúp mình mình sai cái gì không bạn? Mình thắc mặc quá. Cám ơn bạn (hình ở dưới, có cả input và output)
Bài tập tìm max min trong mảng bị sai
bạn chép code rồi để vô cặp dấu 3 dấu huyền nhé … để tiện anh em xem và hổ trợ cho ban … xem cách dụng markdown ngoài trang chủ
Đây bạn
#include <bits/stdc++.h>
using namespace std;
ifstream fi("hehe.inp");
ofstream fo("hehe.out");
int main()
{
int n, mi, ma;
fi >> n;
int x[n], y[n];
for (int i=0; i<=n; i++)
{
fi >> x[n];
}
for (int i=0; i<=n; i++)
{
fi >> y[n];
}
ma = x[0]; mi = y[0];
for (int i=0; i<=n; i++)
{
if (x[i] >= ma) ma=x[i];
}
for (int i=0; i<=n; i++)
{
if (y[i] <= mi) mi=y[i];
}
fo << ma << endl;
fo << mi << endl;
fi.close(); fo.close();
}
Bạn nên dùng
void open (const char* filename, ios_base::openmode mode = ios_base::in);
để mở file, sau đó mới có thể dùng
fi >> n;
Hoặc nếu bạn muốn dùng constructor của ifstream, thì dùng theo kiểu thế này:
std::ifstream ifs ("test.txt", std::ifstream::in);
1 Like
Ok bạn. Nhưng bạn thấy bài trên code lỗi gì không bạn? Có cái hình input output ở trên. Mình xem hoài mà không biết lỗi ở đâu hết bạn
int x[n], y[n];
trong C++ ko có kiểu khai báo mảng động này. Xài std::vector
như mảng động.
vòng lặp từ i=0 tới i<=n là n+1 lần rồi. ví dụ n=3 thì i = 0, 1, 2, 3 là 4 lần rồi. Chạy tới i<n thôi.
#include <iostream>
#include <vector>
#include <fstream>
int main()
{
std::ifstream fi("hehe.inp");
if (!fi) //kiểm tra có mở được file hay ko
{
std::cerr << "Cannot open file\n";
return 1;
}
int n;
fi >> n;
std::vector<int> x(n); //thay vì viết int x[n];
std::vector<int> y(n);
for (int i = 0; i < n; i++) fi >> x[i];
for (int i = 0; i < n; i++) fi >> y[i];
fi.close(); //close file sau khi đọc xong
// tìm min max, output ra fo...
}
1 Like