Menu
CoddyTech

Các thao tác phổ biến với mảng

Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 66 trên 74.

Dưới đây là một số thao tác phổ biến với mảng:

  • Tính tổng của tất cả phần tử trong một mảng:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Tìm giá trị trung bình của các phần tử trong một mảng:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • Tìm phần tử lớn nhất trong một mảng:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • Tìm phần tử nhỏ nhất trong một mảng:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

Thử thách

Dễ

Tạo một hàm có tên calculateStats nhận một mảng số thực và kích thước mảng làm đầu vào, rồi thực hiện các thao tác sau:

  1. Tính tổng tất cả phần tử trong mảng.
  2. Tính giá trị trung bình của các phần tử trong mảng.
  3. Tìm phần tử lớn nhất trong mảng.
  4. Tìm phần tử nhỏ nhất trong mảng.

Hàm cần trả về một mảng số thực chứa tổng, giá trị trung bình, giá trị lớn nhất và giá trị nhỏ nhất theo thứ tự đó.


Lưu ý quan trọng:
  • Dùng tham số size để kiểm soát vòng lặp: không dùng std::size().
  • Để khởi tạo max và min, hãy đặt giá trị ban đầu của chúng là arr[0]. Cách này vẫn hoạt động chính xác khi mảng chỉ chứa số âm.
  • Code viết sẵn trong main() đã cấp phát một mảng động bằng new và giải phóng mảng đó bằng delete[]. Bạn chỉ cần cấp phát mảng kết quả bên trong hàm bằng new double[4] rồi trả về mảng đó. Lưu ý: con trỏ và bộ nhớ động với new sẽ được giới thiệu kỹ hơn trong phần sau. Ở đây, bạn chỉ cần làm theo cách dùng new double[4] như minh họa.

Cách làm gợi ý:
  1. Khởi tạo sum = 0, max = arr[0] và min = arr[0].
  2. Lặp từ i = 0 đến i < size, cộng dồn tổng và cập nhật max/min khi cần.
  3. Tính giá trị trung bình bằng sum / size.
  4. Cấp phát một mảng mới bằng new double[4], lưu bốn kết quả theo thứ tự rồi trả về mảng đó.

Tự làm thử

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Bạn cần tính 4 giá trị (value) trước khi lưu chúng vào newArr
    // Khởi tạo các biến (variable) sum (bắt đầu từ 0), max và min (đều bắt đầu từ arr[0])
    // Dùng vòng lặp (loop) for để duyệt qua mảng (array)
    // Trong vòng lặp:
    //   Cộng từng phần tử (element) vào sum
    //   So sánh từng phần tử với max và cập nhật max nếu phần tử lớn hơn
    //   So sánh từng phần tử với min và cập nhật min nếu phần tử nhỏ hơn
    // Tính average = sum / size (sau vòng lặp)
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch C++ online