Katedra Informatyki Stosowanej
Borland C++
Opracowanie: dr Marzena Nowakowska
Katedra Informatyki Stosowanej, WZiMK PŚk
Scenariusz nr 04
Implementacja algorytmów obliczeniowych w aplikacji BCB
Tablice i instrukcje pętli: wyznaczanie statystyk z tablic numerycznych
Zadanie 1.
Opracuj aplikację, która realizuje zadanie wyznaczania statystyk podstawowych ciągu liczbowego, tak jak na
zaprezentowanym rysunku.
Programy obsługujące pracę formularza zacytowano poniżej.
void __fastcall TForm1::FormActivate(TObject *Sender)
{
StringGrid1->Cells[0][0] = "Student";
StringGrid1->Cells[1][0] = "Ocena studenta";
StringGrid2->Cells[0][0] = "Statystyka";
StringGrid2->Cells[1][0] = "Wartosc";
StringGrid2->Cells[0][1] = "Minimum";
StringGrid2->Cells[0][2] = "Maksimum";
StringGrid2->Cells[0][3] = "Srednia";
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->RowCount++;
StringGrid1->Col=0;
StringGrid1->Row=StringGrid1->RowCount-1; // Sprawdź w pomocy on-line właściwości grida w tej instrukcji
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, nn,n;
float min, max, srednia, y[100];
nn = StringGrid1->RowCount; // jak wyznaczyc liczbę niepustych wierszy?
for (i=1; i<nn; i++)
y[i-1]=StrToFloat(StringGrid1->Cells[1][i]);
if (nn > 0)
{ min = max = y[0]; srednia=0;
n=nn-1;
for (i = 0; i < n; i++)
{ if (y[i] < min)
min = y[i];
if (y[i] > max)
max = y[i];
srednia+=y[i];
}
Katedra Informatyki Stosowanej
Borland C++
srednia/=n;
StringGrid2->Cells[1][1] = FloatToStrF(min, ffGeneral, 5,1);
StringGrid2->Cells[1][2] = FloatToStrF(max, ffGeneral, 5,1);
StringGrid2->Cells[1][3] = FloatToStrF(srednia, ffGeneral, 5,2);
}
else
ShowMessage("Brak danych");
}
Zmodyfikuj funkcję Button2Click tak aby:
-
była wyznaczana liczba wierzy niepustych grida wejściowego,
-
instrukcje warunkowa do wyznaczanie ekstremum była optymalna.
Zadanie 2.
Zdefiniuj aplikację w BCB, która dla ciągu danych rzeczywistych realizuje następujące zadania:
a) liczba elementów ujemnych w ciągu,
b) wartość rozstępu w ciągu,
c) iloczyn elementów większych od wartości zadanej przez użytkownika,
d) liczba elementów ciągu leżąca poza otoczeniem średniej arytmetycznej tego ciągu o promieniu zadanym przez
użytkownika.
Ciąg danych do przetwarzania jest przechowywany w tablicy liczb rzeczywistych x o długości nie przekraczającej 100
elementów. Tablica jest publiczną składową klasy formularza.
Wartościowanie tablicy x wykonaj wpisując do metody formularza FormCreate podany niżej kod:
void __fastcall TForm1::FormCreate(TObject *Sender)
{ int i;
float x_pom[100]={1, 3, 5, 7, 9, -29, -17, -5, 0, -9, 18, 33, -78}; // jak nazywa się taka konstrukcja
// programistyczna?
for (i=0; i<13; i++)
x[i]=x_pom[i];
}
Zadanie 3.
Opracować aplikację jak w zadaniu 2, tak aby dane do tablicy były pobierane z obiektu klasy TStringGrid formularza.
Uwaga: należy z projektu usunąć prototyp oraz definicję metody FormCreate i zaprojektować wartościowanie tablicy x
z grida.
Zadanie 4.
Opracować aplikację jak w zadaniu 3, tak aby zastosować inne instrukcje pętli niż do tej pory wykorzystywane.