Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мой сборник 2014-2015.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.45 Mб
Скачать

5 Тапсырма.

#include <stdio.h>

#include <math.h>

int main(void) {

shortn; /* параметр внешнего цикла */

double x, y; /* абсцисса и ордината графика */

short h; /* позиция точки на экране */

/* внешний цикл - для 5 периодов */

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

/* вывод заголовка таблицы */

printf("| x | y |\n");

printf("|-------|------------|\n");

/* внутренний цикл для одного периода */

for (x=0; x<4; x+=0.25) {

/* 1-й отрезок */

if (x<1) y=2*x-1;

/* 2-й отрезок */

else if (x<3) y=1-sqrt(1-(x-2)*(x-2));

/* 3-й отрезок */

else y=7-2*x;

/* вывод строки таблицы */

printf("| %5.2lf | %10.7lf |",x+n*4,y);

/* определение позиции точки */

h=(y+1)*10;

if (y-1-h*10>0.5) h++;

/* вывод точки графика */

for (; h>0; h--) printf(" ");

printf("*\n");

} /* конец внутреннего цикла */

/* пауза до команды оператора */

printf("Нажмитеклавишу Enter...");

getchar();

} /* конец внешнего цикла */

return 0;

} /* конец программы */

Бағдарламаның нәтижесі:

| x | y |

|-------|------------|

| 0.00 | -1.0000000 |*

| 0.25 | -0.5000000 | *

| 0.50 | 0.0000000 | *

| 0.75 | 0.5000000 | *

| 1.00 | 1.0000000 | *

| 1.25 | 0.3385622 | *

| 1.50 | 0.1339746 | *

| 1.75 | 0.0317542 | *

| 2.00 | 0.0000000 | *

| 2.25 | 0.0317542 | *

| 2.50 | 0.1339746 | *

| 2.75 | 0.3385622 | *

| 3.00 | 1.0000000 | *

| 3.25 | 0.5000000 | *

| 3.50 | 0.0000000 | *

| 3.75 | -0.5000000 | *

Нажмите клавишу Enter...

6 тапсырма. #include <stdio.h>

#include <time.h>

#include<stdlib.h>

int Ar[100]; /* массив, который обрабатывается */

int main(void) {

int i, j; /* индексывмассиве */

int av; /* среднее значение */

int nn; /* количество эл-тов в последовательности */

int ib; /* индекс начала последовательности */

randomize(); /* инициализация rand */

/* заполнение массива случайными числами */

for (i=0; i<100; Ar[i++]=random(101)-50 );

/* вывод начального массива */

printf("Начальный массив:\n");

for (i=0; i<100; printf("%3d ",Ar[i++]));

putchar('\n');

putchar('\n');

for (nn=i=0; i<100; i++) { /* перебормассива */

if (Ar[i]<0)

/* обработка отрицательного элемента */

if (!nn) {

/* начало последовательности */

/* запомнить индекс начала,

начальное значение накопителя суммы

и счетчика элементов */

ib=i; av=Ar[i]; nn=1;

}

else {

/* накопление суммы,

подсчет количества */

av+=Ar[i]; nn++;

}

/* конец обработки отрицательного элемента */

else /* обработка положительного элемента */

if (nn) {

/* если есть необработанная

отрицательная последовательность */

av/=nn; /* усреднение */

/* перебор всей последовательности

с ограничением */

for (j=ib; j<i; j++)

if (Ar[j]>av) Ar[j]=av;

nn=0; /* последовательность обработана */

} /* конец если есть необработанная... */

} /* конец перебор массива */

if (nn) /* если не обработана последняя

отрицательная последовательность */

for (av/=nn, j=ib; j<i; j++)

if (Ar[j]>av) Ar[j]=av;

/* вывод результатов */

printf("Массив-результат:\n");

for (i=0; i<100; printf("%3d ",Ar[i++]));

putchar('\n');

return 0;

}

Бағдарламаның нәтижесі:

Начальный массив:

22 15 45 -15 -19 19 -38 34 -39 37 -3 -25 33 -11 -27 -45

47 29 5 -14 17 -40 -34 -8 46 -29 40 0 17 9 38 17

42 -47 -27 9 1 30 -33 -4 -50 27 -10 1 41 24 -7 -41

35 35 41 12 37 -49 16 29 49 -11 -15 35 -39 43 3 19

-20 21 -45 -3 13 -12 3 -13 12 -11 34 -5 -14 -35 -13 -50

-2 48 47 -4 45 46 -13 -29 45 -12 -45 -2 21 -33 -42 -2

13 27 -24 -42

Массив-результат:

22 15 45 -15 -17 19 -38 34 -39 37 -3 -14 33 -11 -27 -27

47 29 5 -14 17 -27 -27 -8 46 -29 40 0 17 9 38 17

42 -37 -27 9 1 30 -29 -4 -29 27 -10 1 41 24 -7 -24

35 35 41 12 37 -49 16 29 49 -11 -13 35 -39 43 3 19

-20 21 -24 -3 13 -12 3 -13 12 -11 34 -5 -14 -19 -13 -19

-2 48 47 -4 45 46 -13 -21 45 -12 -19 -2 21 -25 -25 -2

13 27 -24 -42

2 бөлім. Borland C++ Builder-де қосымшаны әзірлеу

2.1 тақырып. Мәтінмен жұмыс

Зертханалық жұмыстар № 25,26,27

Жазбаны қолдану. Біржолдық редактор. Жолдар жиымдары. Түзету компонеттерінің жалпы элементтері. Тізімдермен жұмыс. Көпжолдық редактор. Мәтінмен жұмыс істеу компоненттерін қолданып бағдарламалар құру.

C++Builder құру ортасы

C++Builder – бұл құру ортасы, ол 4 негізгі элементтен тұрады. Үстінге жағында негізгі терезесі орналысады. Ол меню сызғышынан, саймандар панелінен және компонентттер панелінен тұрады.

Сурет 1. C++ Builder құру ортасының негізгі терезесі

Оң жағында инпектор объектов орналысады, ал сол жағында пішіндер конструкторы. C++Builder қосқан кезде констуктордда таза пішін тұрады. Пішін – ол визуалды бағдарламалаудын негізгі объектісі. Бағдарламаның негізгі терезесі, туынды терезесі, диалогты панель ретінед шыға алады. Пішінде әр түрлі басқару элементтерді орналастырамыз, олар визуалды компонент деп аталады. Сонымен қатар визуалды емес компоненттер бар, мысалы: таймер, мәліметтер қорымен істейтін компоненттер. Пішін конструкторының астынға жағында код редакторының терезесі орналысады.

Сурет 2. Визуалы және визуалды емес компонеттер

Код редакторы

Код редакторының терезесі (сурет 3) бағдарламалаушының негізгі жұмыс сайманы болып табылады.

Сурет 3. Код редакторының терезесі

C++Builder саймандар терезесі басқа терезелермен байланысқан да болуы мүмкін. Компоненттерді пішінге қосу үшін тышқан көмегімен компоненттер палитрасынан компонентті таңдаймызда оң жақ батырмасымен пішіннің керекті жеріне қоямыз. Пішінде компонент пайда болады да, оның көлемін және басқа да мінездемелерін ауытыруға болады. C++ Builder-де әр компонент үш мінездемеден тұрады, олар: қасиет, әрекет және әдіс. Егер компонентті палитрадан таңдасақ онда объекттер инспекторы автоматты турде оның қасиетін және әрекетін көрсетеді.

Сурет 4. Объекттер инспекторы

Тапсырма 1: Біржолдық редактор

Батырманы басқан кезде мәтінге біржолдық текстті еңгізетін бағдарлама құру. File/New Application меню пунктын таңдау арқылы проектіні құру және оны басты формаға samp1.cpp атауымен сақтауға, жобаның өзін samp.mak атауымен сақтау керек. Формаға Standard парағынан Button, Edit және ListBox компоненттерін орналастырамыз.

Формаға компоненттерді орналастыру

Edit компонентін таңдап, Text қасиеті арқылы берілген мәнді жоямыз. Button1 компоненті үшін Caption қасиеті көмегімен "Добавить" деп мәнді өзгертеміз.

Добавить батырмасы үшін OnClick оқиғаны өңдеушілерді қосу үшін формадан компонентті таңдап, объектілер инспекторынан оқиғаны ашып, екі рет OnClick оқиғасының оң жағынан шерту керек. Қажетті жолда функция атауы пайда болады. C++ Builder оқиғаны өңдеушілерді генерациялап оны код редаторында көрсетеді. Функция денесіне қажетті кодты операторлық жақша ішіне жазу керек{ ... }:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (!(Edit1->Text == ""))

{

ListBox1->Items->Add(Edit1->Text);

Edit1->Text = "" ;

}

}

Қосымшаны компиляциялау үшін меню жолынан Run пунктын тағдаймыз. Енді жоба тестілейміз. Қажетті мәтінде біржолдық редакторға енгізіп, сол мәтінде өріске қосу үшін Добавить батырмасын басамыз.

Дайын қосымша беті

Енді қосымшаны модификациялаймыз. Ол үшін Удалить және Выход батырмаларын қосамыз. Ол үшін тағы екі батырма қосып, Caption қасиеті арқылы атауын өзгертеміз:

Рис. 11. Модифицированное приложение

Удалить батырмасы үшін:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (!(ListBox1->ItemIndex == -1))

ListBox1->Items->Delete(ListBox1->ItemIndex);

}

Выход батырмасы үшін:

Close();

Жобаны сақтаймыз.

Тапсырма 2. Үшбұрыштың ауданын, биіктігі мен табаны бойынша есептеуді орындайтын қарапайым қосымша құру. Қосымша терезесі келесі түрде болуы қажет /4.4 -сурет(а,б)/.

4.4-сурет. а) Форма терезесі

4.4-сурет. в) Қосымша терезесі

Орындалуы:

1. File New  Application командалары орындалады.

2. Жаңа құрылған жобаны сақтау үшін Filе Save All командасы орындалады. Жоба

құрамына кіретін файлдардың бір бумада сақталуы қажет.

3. Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және

олардың келесі қасиеттері өзгертіледі:

«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код

жазылады:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int biktik, taban;

float audan;

biktik=StrToInt(Edit1->Text);

taban=StrToInt(Edit2->Text);

audan=float(biktik*taban)/2;

Edit3->Text=FloatToStr(audan);

}

Өзіндік жұмыс тапсымалары:

Келесі мазмұндағы есептерді шеше алатын қосымша құрыңыз:

1. Пирамиданың көлемін табу.

2. Үш қабырғасы бойынша үшбұрыштың ауданын есептеу.

3. Параллелипедтің көлемін есептеу.

4. Тізбектің жалпы кедергісін есептеу (параллель қосылған).

5. Трапецияның ауданын есептеу.

6. Тізбектің жалпы кедергісін есептеу (тізбектей қосылған).