background image

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]; 
       } 

background image

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.