Trzeba zapisać informacje o 50 uczniach, a więc o wielu obiektach o tej samej budowie. Dane pojedynczego ucznia są złożone (kilka pól: imię, nazwisko, średnia), dlatego naturalnym typem dla jednego ucznia jest struktura/rekord (np. struct w C/C++ lub record w Pascalu).
Skoro uczniów jest 50, potrzebujemy kolekcji 50 elementów tego samego typu. W zadaniu liczba elementów jest stała i z góry znana, więc właściwym wyborem jest tablica 50 elementów o składowych strukturalnych, czyli tablica, której elementami są struktury (rekordy) ucznia.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Tablica o składowych łańcuchowych sugeruje, że każdy element tablicy jest łańcuchem znaków. To nie pasuje, bo uczeń ma co najmniej jedno pole liczbowe (średnia), a także kilka pól jednocześnie.
- Struktura 50 elementów myli pojęcia: struktura to zwykle pojedynczy typ z polami, a nie "50 egzemplarzy". Owszem, struktura może mieć pole będące tablicą, ale wtedy otrzymujemy jeden obiekt zawierający tablicę, a nie prostą listę 50 rekordów jako kolekcję.
- Klasa 50 elementów typu tablicowego jest nieadekwatna do paradygmatu programowania strukturalnego i dodatkowo nie opisuje wprost 50 rekordów ucznia. W tym zadaniu nie potrzeba mechanizmów OOP, a najważniejszy jest dobór podstawowych typów danych.
W praktyce takie dane przechowuje się jako "tablicę struktur" (czasem później zastępowaną listą dynamiczną), a dostęp odbywa się przez indeks: od 0 do 49 (lub 1 do 50 zależnie od języka).