Menu
Coddy logo textTech

Typowe operacje na tablicach

Część sekcji Podstawy ścieżki C++ w Coddy. Lekcja 66 z 74.

Oto kilka typowych operacji na tablicach:

  • Znajdź sumę wszystkich elementów tablicy:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • Oblicz średnią elementów tablicy:
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;
  • Znajdź element maksymalny w tablicy:
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;
  • Znajdź element minimalny w tablicy:
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

Wyzwanie

Łatwy

Utwórz funkcję o nazwie calculateStats, która przyjmuje tablicę wartości typu double oraz rozmiar tablicy jako dane wejściowe i wykonuje następujące operacje:

  1. Oblicza sumę wszystkich elementów tablicy.
  2. Oblicza średnią elementów tablicy.
  3. Znajduje największy element tablicy.
  4. Znajduje najmniejszy element tablicy.

Funkcja powinna zwracać tablicę wartości typu double zawierającą kolejno sumę, średnią, maksimum i minimum.


Ważne uwagi:
  • Użyj parametru size, aby kontrolować pętlę: nie używaj std::size().
  • Aby zainicjalizować max i min, ustaw je na arr[0]. To działa poprawnie nawet wtedy, gdy tablica zawiera wyłącznie liczby ujemne.
  • Wstępnie napisany kod w main() już przydziela pamięć dla tablicy dynamicznej za pomocą new i zwalnia ją za pomocą delete[]. W swojej funkcji musisz jedynie przydzielić pamięć dla tablicy wyników za pomocą new double[4] i ją zwrócić. Uwaga: wskaźniki i pamięć dynamiczna z użyciem new zostaną szczegółowo omówione w późniejszej sekcji. Tutaj wystarczy zastosować pokazany wzorzec new double[4].

Proponowane podejście:
  1. Zainicjalizuj sum = 0, max = arr[0] i min = arr[0].
  2. Wykonaj pętlę od i = 0 do i < size, sumując wartości i w razie potrzeby aktualizując max/min.
  3. Oblicz średnią jako sum / size.
  4. Przydziel pamięć dla nowej tablicy za pomocą new double[4], zapisz w niej kolejno cztery wyniki i zwróć ją.

Spróbuj swoich sił

#include <iostream>

double* calculateStats(double arr[], int size) {
    // Przed zapisaniem ich w newArr musisz obliczyć 4 wartości
    // Zainicjalizuj zmienne sum (wartość początkowa 0), max i min (obie z wartością początkową arr[0])
    // Użyj pętli for, aby przejść przez tablicę
    // Wewnątrz pętli:
    //   - Dodaj każdy element do sum
    //   - Porównaj każdy element z max i zaktualizuj max, jeśli element jest większy
    //   - Porównaj każdy element z min i zaktualizuj min, jeśli element jest mniejszy
    // Oblicz average = sum / size (po zakończeniu pętli)
    

    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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator C++ online