Bài tập về tệp tin

Mọi người cho e hỏi bài này với ạ


Screenshot (7)

#include<bits/stdc++.h>
#include<fstream>
using namespace std;
int main(){
    ifstream file("n.txt");
       int a[100];
       int n,sum=0;
       file>>n;
       for (int i = 0; i < n; i++){
          file >> a[i];
       }
       int max;
    for (int i = 0; i < n; i++){
        if (max < a[i])
            max = a[i];
    }
       int min;
    for (int i = 0; i < n; i++){
        if (min > a[i])
            min = a[i];
   }
    for (int i = 0; i < n; i++){
           sum+=a[i];
       }
       cout<<n<<max<<min<<sum<<" ";
}

Code của bạn bị sai kết quả, muốn nhờ mọi người xem giúp thì bạn phải nói rõ ra, đừng nói chung chung “hỏi bài này”, DNH sẽ tự động flag bài của bạn là vi phạm nội quy.

In ra 4 số thì bạn phải in kèm dấu cách giữa từng số chứ nhỉ.

cout<<n<<" "<<max<<" "<<min<<" "<<sum;

2 biến max, min này bạn chưa khởi tạo kết quả nên mới dẫn đến kết quả sai. Bạn cần khởi tạo 2 biến này có giá trị là a[0] (nếu đã chắc chắn n > 0).

1 vấn đề nữa là max, min là tên 2 hàm có sẵn trong C++ nên bạn tránh đặt tên biến là max, min nhé.

Bài này cần viết hàm nên bạn cố gắng tái tạo code trên máy sao cho gần giống trên môi trường nộp bài nhất có thể.

void solve(string filename) {
    ifstream file(filename);
    // khai báo biến
    fi >> n;
    // code tiếp tục...
}
2 Likes

Đề có chỉ rõ là bên trong tập tin các số (dãy số) chứ không bảo là có n (số lượng phần tử).
C++ thì tốt nhất là dùng vector cho mảng chưa xác định số phần tử.

Mà bài này thì cũng không cần dùng mảng làm gì, nhập số đến đâu, tính toán đến đó, sau khi đọc xong thì cũng được kết quả.

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