Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Настройка компонент StringGrid




     Для компоненты StringGrid 1 значения ColCount и RowCount установите равными, например, 3 – три столбца и три строки, а FixedCols и FixedRows – 1.

Так как компоненты StringGrid 2 и StringGrid 3 имеют только один столбец, то у них ColCount = 1, RowCount = 3, а FixedCols = 0 и FixedRows = 1.

В свойстве Options строку goEditing для компонент StringGrid 1 и StringGrid 2 установите в положение true.

     Для изменения размера n используется функция-обработчик EditChange, полученная двойным щелчком по компоненте Edit.

Текст программы может иметь следующий вид:

                                ...

//---------------------- Глобальные переменные -------------------

   int n = 3;

   double **a, *b;                                        // Декларации указателей

//---------------------------------------------------------------------------

void __fastcall TForm1:: FormCreate (TObject *Sender)

{

   Edit1->Text=IntToStr(n);

   StringGrid1->ColCount = n+1;   StringGrid1->RowCount = n+1;

   StringGrid2->RowCount = n+1; StringGrid3->RowCount = n+1;

// Ввод в левую верхнюю ячейку таблицы названия массивов

   StringGrid1->Cells[0][0] = "Матрица A";

   StringGrid2->Cells[0][0] = "Массив B";

   StringGrid3->Cells[0][0] = "Массив Y";

   for(int i=1; i<=n;i++){

    StringGrid1->Cells[0][i]="i="+IntToStr(i);

    StringGrid1->Cells[i][0]="j="+IntToStr(i);

   }

}

//---------------------------------------------------------------------------

void __fastcall TForm1:: Edit1Change (TObject *Sender)

{

   int i;

   n=StrToInt(Edit1->Text);

   StringGrid1->ColCount = n+1;   StringGrid1->RowCount = n+1;

   StringGrid2->RowCount = n+1;  StringGrid3->RowCount = n+1;

   for(i=1; i<=n;i++){

           StringGrid1->Cells[0][i]="i="+IntToStr(i);

           StringGrid1->Cells[i][0]="j="+IntToStr(i);

   }

}

//---------------------------------------------------------------------------

void __fastcall TForm1:: Button1Click (TObject *Sender)

{

   double s;

   int i,j;

   a = new double*[n];                            // Захват памяти под указатели

   for(i=0; i<n;i++) a[i] = new double[n];        // Захват памяти под элементы

   b = new double[n];      

// Заполнение массивов А и В элементами из таблиц StringGrid1 и StringGrid2

     for(i=0; i<n;i++) {

                   for(j=0; j<n;j++) a[i][j]=StrToFloat(StringGrid1->Cells[j+1][i+1]);

                        b[i]=StrToFloat(StringGrid2->Cells[0][i+1]);

     }

// Умножение строки матрицы А на вектор В и вывод результата s в StringGrid3

     for(i=0; i<n;i++){

                        for(s=0, j=0; j<n;j++) s += a[i][j]*b[j];

                        StringGrid3->Cells[0][i+1] = FloatToStrF(s, ffFixed,8,2);

     }

}

//---------------------------------------------------------------------------

void __fastcall TForm1:: Button2Click (TObject *Sender)

{

delete []a;       

delete []b;

   ShowMessage("Память освобождена!");

Close();

}

Пример создания консольного приложения

Текст программы может иметь следующий вид:

                                            ...

void main()

{

double **a, *b, s;

int i, j, n;

     printf(" Input size N: "); scanf("%d",&n);

a = new double*[n];                     // Захват памяти под указатели

for(i=0; i<n;i++)

              a[i] = new double[n];                  // Захват памяти под элементы     

b = new double[n];                      

     puts("\n Input Massiv A:");

for(i=0; i<n;i++)

      for(j=0; j<n;j++) scanf("%lf", &a[i][j]);

puts("\n Input Massiv B:");

for(i=0; i<n;i++)  scanf("%lf", &b[i]);

puts("\n Massiv Y:");

for(i=0; i<n;i++){

     for(s=0, j=0; j<n;j++) s+=a[i][j]*b[j];

   printf(" %8.2lf ", s);

}

delete []a;       

delete []b;

puts("\n Delete!");

puts("\n Press any key... ");

getch();

}

         

При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:


Индивидуальные задания

     Написать программу по обработке динамических массивов. Размеры массивов вводить с клавиатуры. При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов.

     1. Из матрицы размером N ´ M получить вектор B, присвоив его k- му элементу значение 0, если все элементы k -го столбца матрицы нулевые, иначе 1.

     2. Из матрицы размером N ´ M получить вектор B, присвоив его k- му элементу значение 1, если элементы k -й строки матрицы упорядочены по убыванию, иначе 0.

     3. Из матрицы размером N ´ M получить вектор B, присвоив его k- му элементу значение 1, если k -я строка матрицы симметрична, иначе значение 0.

     4. Задана матрица размером N ´ M. Определить количество «особых» элементов матрицы, считая элемент «особым», если он больше суммы остальных элементов своего столбца.

     5. Задана матрица размером N ´ M. Определить количество элементов матрицы, у которых слева находится элемент больше его, а справа – меньше.

     6. Задана матрицаразмером N ´ M. Определить количество различных значений матрицы, т.е. повторяющиеся элементы считать один раз.

     7. В матрице размером N ´ M упорядочить строки по возрастанию их первых элементов.

     8. В матрице размером N ´ M упорядочить строки по возрастанию суммы их элементов.

     9. В матрице размером N ´ M упорядочить строки по возрастанию их наибольших элементов.

     10. Определить, является ли квадратная матрица симметричной относительно побочной диагонали.

     11. Задана матрица размером N ´ M. Определить количество элементов матрицы, у которых слева находится элемент меньше его, а справа – больше.

     12. В квадратной матрице найти произведение элементов, лежащих выше побочной диагонали.

     13. В квадратной матрице найти максимальный среди элементов, лежащих ниже побочной диагонали.

     14. В матрице размером N ´ M поменять местами строку, содержащую элемент с наибольшим значением со строкой, содержащей элемент с наименьшим значением.

     15. Из матрицы размером n получить матрицу размером n- 1 путем удаления строки и столбца, на пересечении которых расположен элемент с наибольшим по модулю значением.

     16. В матрице размером n найти сумму элементов, лежащих ниже главной диагонали, и произведение элементов, лежащих выше главной диагонали.






Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 256 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

2576 - | 2502 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.