Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kurakova C++ shpor.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
136.72 Кб
Скачать

2.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:

сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни

құраушылары болып саналады.

Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.

Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.

Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.

Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.

Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады

3.N массивінің 3-ке қысқаратын элементерінің қосындысын табу

#include <stdio.h>

#include <conio.h>

int main()  {  intsumm,i,n,c;  i=1;//Началонатуральногоряда  n=20; //Скольконужночисел  summ=0; //Вэтойпеременнойбудемхранитьсумму  while(c!=n)  {  if (i % 3 == 0)//Тогдапроверяемделитсялина 3 безостатка  {  c++;  summ=summ+i;  } } i++;  };  //Когдасчетчик c сталравен n выводимрезультат  cout<< 'summ';  };

Билет №21

1.Кез келген табиғи тілдегі мәтінде 4 негізгі элементті бөліп қарастыруға болады,олар: символдар сөздер тіркестері және сөйлемдер.

С+ тілінің алфавиті

Си тілінде қолданылатын символдар жиындары:

1. латын алфавитінің бас әріптері (A,B,C,…….,Y,Z) мен кіші әріптері (a,b,c,………,y,z) ;

2. 0- ден 9- ға дейінгі араб цифрлары;

3. арнаулы символдар:

+ (плюс), - (минус), * (жұлдызша ), / (бөлу сызығы), = (тең), > (үлкен), < ( кіші) , ; (нүктелі үтір), & (амперсанд ), [ ] (тік

жақшалар), { } (жүйелі жақшалар ), ( ) (дөңгелек жақшалар), _ (астын сызу), (бос орын ), . (нүкте), , (үтір), : (қос нүкте), #

(нөмір), % (процент), ~ (разрядтап терістеу), ? (сұрақ белгісі), ! ( леп белгісі), \ (кері слэш). 4.бос орын символдары:бос орын табуляция символы,жаңа жолға көшу символы.

5.Алфавит символдарынан тіл лексемалары құралады.Олар:

Идентификаторлар;

Түйынды сөздер;

Операциялар белгілері;

Тұрақтылар;

Ажыратқыштар;

Лексемалардың шекаралық символдары ретінде ажыратқыштар немесе операциялар белгілері сияқты басқа лексемалар қолданылады.

Ақпараттық жүйелерде іздеу алгоритмдері және әртүрлі табиғаттағы мәліметтерді сұрыптау, жеке жағдайда кез-келген ұзындықтағы мәтіндік жолдар кеңінен қолданылады. Іздеу алгоритмдері мен сұрыптаудың тиімділігі көп жағдайда мәліметтердің көрінісін таңдаумен байланысты. Осындай ыңғайлы және тиімді көріністің бірі кез-келген ұзындықтағы мәтіндік жолдың басындағы көрсеткіштер массиві болып табылады.

Жадыда жолдар бір-бірімен тығыз орналасқандықтан, әр жеке жолға көрсеткіш арқылы оның бірініші литеріне қатынас жасау жүзеге асады.

Көрсеткіштердің өзін массив түрінде ұйымдастыруға болады. Мүмкіндіктердің бірі: екі жолдарды салыстыру арқылы – олардың strcmp функцияларына көрсеткіштерді беру. Жолдардың орындарын ауыстыру үшін, массивте олардың көрсеткіштерінің орнын ауыстыру жеткілікті (жолдардың өзін емес).

Бұдан екі мәселе бірдей шешіледі: біреуі – жадыны басқару күрделілігімен, ал екіншішісі – жолдардың өзін ауыстыруда жинақталған үлкен шығындармен байланысты.

Сұрыптау процессі үш кезеңге бөлінеді:

енгізу кезінде барлық жолдард оқу;

енгізілген жолдарды сұрыптау;

оларды рет-ретімен басып шығару.

Енгізу программасы барлық жолдардағы литерлерді оқу және есте сақтау керек, сол сиқты жолдрадың көрсеткіштер массивін тұрғызу керек. Бұл функция сол сияқты, енгізілген жолдардың санын есептеу керек – бұл ақпарат сұрыптау және баспаға шығару үшін қажет болады.

Шығару программасы жолдарды басып шығарумен ғана айналысады және ол көрсеткіштер массивінде олраға сілтеме жасайтындай ретпен орындалуы керек.

2.Енгізу-шығару мүмкіндіктері Си тілінің негізгі бөлігі емес. Нақтылы программалар біз сөз қылғандарға қарағанда, өзін қоршағандармен өте күрделі тәсілдермен өзара әрекеттеседі.

Библиотекалық енгізу-шығару функциясы ANSI стандартымен дәл анықталады, сондықтан Си-де қолдау болатын кез-келген қондырғымен байланысты. Осы функциялар енгізу-шығару мәтінінің қарапайым моделін іске асырады. Мәтіндік ағын жолдар тізбегінен тұрады; әр жол жаңа литер жолымен аяқталады.

Енгізудің қарапайым механизмі – ағынның келесі литерін қайтаратын немесе егер файлдың EOF соңы табылса getchar функциясының бір литерін оқу:

int getchar ( void)

әдетте EOF = -1 мәніне тең.

int putchar (int) функциясы шығару үшін қолданылады: putchar (c) с литерін стандартты шығаруға (экран) жібереміз. putchar фукнкциясы нәтиже ретінде жіберілген литерді немесе қате болған жағдайда EOF-ты қайтарады.

Printf функциясымен орындалатын шығару, сондай-ақ стандартты шығу ағынына жіберіледі putchar және printf-ды қалауымыз бойынша кезектесіп шығаруға болады, бұдан шығару осы функциялар шақыратын жүйелілікпен қалыптасады.

3.S=1*3*5*7.....

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

main()

{

int a[21];

intn;

printf("\nРазмерность массива : ");

scanf("%d",&n);

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

{

a[i] = rand() % 21;

printf("%i ",a[i]);

}

int sum=1;

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

sum+=a[i]; //элементы с индексами 1,3,5...

printf("\nсумма нечетных элементов массива : %i",sum);

}

Билет №22

1.Шартты өрнектер

if(a>b) z=a;

elsez=b;

нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.

Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.

z=(a>b) ? a:b; // z=max(a,b)

Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.

Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.

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

printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?’\n’:’ ‘);

Жаңа жол литері әрбір оныншыдан кейін және n–ші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.

2. Функция – нақты есептерді шешуге арналып құрылған программаның өзіндік бірлігі. Си тіліндегі функция басқа тілдердегі ішкі программа мен процедуралардың атқаратын қызметін атқарады. Функцияны пайдаланған ыңғайлы, мысалы, егер программаның бір және сол кодын өңдеу қажет болса. Айнымалылар сияқты функцияны да жариялау керек. Функцияны оны пайдаланғанға дейін жариялау қажет. Си тіліндегі әр функция ат пен аргументтер тізіміне ие.

Функциялар эффектілі және қолданғанда жеңіл болу керек. Әдетте бұл программалар бұл тілде аздаған функциялар ұлкен сандардан тәрады. Программа бір немесе бірнеше файлдардан табылады. Файлдарды бұлек хабарлауға және бірге жүктеуге болады. Функциялар ішкі басқа функцияларды анықтай алмайды.

Си программистке программаның қәрылымын анықтауға ұлкен мүмкіндіктер береді. Программаның сапасы оның барлық программаларды логикалық негізделген функциялардың жақсы негізделген интерфейстермен және программаның тексті жақсы қәжаттауы программистің білгірлігіне байланысты.

Функциялар – бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функция – программаның өз бетімен істелген бірлігі. Есептердің анықталған кластарын шешу үшін функцияларды бұлек файлға бұлуге болады. Бұл файл пайдалану кітапханасын әсынады.

Функциялар кітапханасы:

әртүрлі программистерге бір және сол функцияларды қолдануға;

программаның қәрылымы мен көрнектілігін жоғарылату;

қолданатын программаларды үйренуге және түзетуге, оқуын жеңілдетуге рәқсат етеді.

Си тіліндегі кез-келген программа main операторымен бас функцияларды және басқа функциялардың кез-келген санын әстайды.

Функция кейбір есептеулерді ыңғайлы тәсілмен жеке безендіруге және оларды әрі қарай оның қалай жұмыс істейтінін қамқорлыққа алмай-ақ, қолдануды қамтамасыз етеді. Си-де функцияны қолдану механизмі ыңғайлы, жеңіл, тиімді және мақсаты – анық, түсінікті түрдегі программаны алу.

Кез-келген функцияны анықтау келесі түрде болады:

функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)

{ декларация

инструкция

}

Функцияны анықтаудан басқа, форматы келесі түрде болатын функция прототипі түсінігі бар.

функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)

3.S=2*4*6*7……

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

main()

{

int a[50];

intn;

printf("\nРазмерность массива : ");

scanf("%d",&n);

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

{

a[i] = rand() % 50;

printf("%i ",a[i]);

}

int sum=1;

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

sum*=a[i]; //элементы с индексами 0, 2, 4...

printf("\nсумма четных элементов массива : %i",sum);

}

Билет №23

1.Шартты өрнектер

if(a>b) z=a;

elsez=b;

нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.

Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.

z=(a>b) ? a:b; // z=max(a,b)

Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.

Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.

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

printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?’\n’:’ ‘);

Жаңа жол литері әрбір оныншыдан кейін және n–ші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.

2. Функция – нақты есептерді шешуге арналып құрылған программаның өзіндік бірлігі. Си тіліндегі функция басқа тілдердегі ішкі программа мен процедуралардың атқаратын қызметін атқарады. Функцияны пайдаланған ыңғайлы, мысалы, егер программаның бір және сол кодын өңдеу қажет болса. Айнымалылар сияқты функцияны да жариялау керек. Функцияны оны пайдаланғанға дейін жариялау қажет. Си тіліндегі әр функция ат пен аргументтер тізіміне ие.

Функциялар эффектілі және қолданғанда жеңіл болу керек. Әдетте бұл программалар бұл тілде аздаған функциялар ұлкен сандардан тәрады. Программа бір немесе бірнеше файлдардан табылады. Файлдарды бұлек хабарлауға және бірге жүктеуге болады. Функциялар ішкі басқа функцияларды анықтай алмайды.

Си программистке программаның қәрылымын анықтауға ұлкен мүмкіндіктер береді. Программаның сапасы оның барлық программаларды логикалық негізделген функциялардың жақсы негізделген интерфейстермен және программаның тексті жақсы қәжаттауы программистің білгірлігіне байланысты.

Функциялар – бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функция – программаның өз бетімен істелген бірлігі. Есептердің анықталған кластарын шешу үшін функцияларды бұлек файлға бұлуге болады. Бұл файл пайдалану кітапханасын әсынады.

Функциялар кітапханасы:

әртүрлі программистерге бір және сол функцияларды қолдануға;

программаның қәрылымы мен көрнектілігін жоғарылату;

қолданатын программаларды үйренуге және түзетуге, оқуын жеңілдетуге рәқсат етеді.

Си тіліндегі кез-келген программа main операторымен бас функцияларды және басқа функциялардың кез-келген санын әстайды.

Функция кейбір есептеулерді ыңғайлы тәсілмен жеке безендіруге және оларды әрі қарай оның қалай жұмыс істейтінін қамқорлыққа алмай-ақ, қолдануды қамтамасыз етеді. Си-де функцияны қолдану механизмі ыңғайлы, жеңіл, тиімді және мақсаты – анық, түсінікті түрдегі программаны алу.

Кез-келген функцияны анықтау келесі түрде болады:

функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)

{ декларация

инструкция

}

Функцияны анықтаудан басқа, форматы келесі түрде болатын функция прототипі түсінігі бар.

функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)

3.А массивэлементтерінің геометриялық ортасын табу

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define n 15

main ()

{

int a[n],i;

printf("\nЭлементымассива:");

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

{a[i] = rand() % 50;

printf(" %i",a[i]);

}

// определение произведения и кол-ва пол.эл-тов

i=0; // начальный индекс = 0

float p=1.0; // произведение положит.эл-тов

int k=0; // кол-во положит.эл-тов

do

{ if (a[i]>0) { k++; p*=a[i];}

i++;

}

while (i<n);

printf("\nкол-вополэл-тов : %d\n",k);

p=pow(p,1.0/k);

printf("cpгеом = %f",p);

getch();

}

Билет №24

1.Көп жағдайда, берілгендерді өңдеу ғана керек емес, сонымен қатар оларды енгізу және шығару. Си тілінде енгізу үшін біраз стандарттық функциялар бар: бірі берілгендерді файлдан енгізеді,ылғандары берілгендерді файлдан алуға мүмкіндік береді. Олардың қатарына scanf () және printf () функцияларын жатқызуға болады. Берілгендерді шығаруды жүзеге асыратын негізгі функцияларға printf(),puts() және putchar жатады.

Printf() функциясының жалпы түрі

Printf() (форматтар қатары, обьект1, обьект2,…обьектn)

Мысалы:

Printf(“ y=%d\n”, y);

Мұндағы %d – бүтін санды көрсету операторы

y-шығару обьектісі

scanf () функцияда Printf () да шғатын функцияны енгізу.

Жазылу формасы:

scanf () форматтар қатары, обьект1, обьект2,…обьектn)

Мысалы:

scanf () (“ %d%d”, &x,&y);

Бұл x, y айнымалысына мән енгіз дегенді білдіреді.

Мәселен нәтеже экыранына 123 345 мәндері енгізіңіз.

Егер оның формасын былай өзгертсек онда

scanf () (“x=%d, y =%d”, &x,&y);

нәтеже x=123, y =345

Шығару обьектісі айнымалы, тұрақты өрнектер немесе функцияларды көрсетеді. Берілгендерді көрсетудің келесі алаңдардың спецификациясын пайдалану мүмкін.

2. #include<stdio.h> инструкциясы компиляторға, ол программаның мәтініне стандартты библиотеканың енгізу-шығаруы туралы ақпаратты қосу керек екендігін хабарлайды (printf функциясының прототипін шақыру). printf стандартты функциясы – форматты енгізу-шығарудың әмбебап функциясы. Оның бірінші аргументі, әрбір % таңбасы оның келесі аргуметтерінің біреуіне сәйкес келетін стринг болатынын, ал % таңбасынан кейін орналасқан ақпарат осы аргументтердің әрбірі шығарылу түрін көрсетеді.

Бұдан басқа, printf келесі спецификаторларды қолданады: %0 – сегіздік сан үшін, %X – он алтылық сан үшін, %С – литерді басу үшін, %S – стрингті басу үшін, литер %% - %-тің өзі үшін.

Стандартты библиотека енгізу-шығарудың өте қарапайым моделін ұстанады. Мәтіндік енгізу-шығару, ол қайдан шығып немесе қайда бағытталғанынан тәуелсіз литер ағынымен жұмыс жасайды. Енгізу-шығару моделі – бұл мәтіндік ағын, яғни әрқайсысы нөлден тұратын немесе литерден артық жолдарға бөлінген және жаңа жол литермен аяқталатын (\n) литерлер тізбегі.

Литердің біреуінің қарапайым оқу және жазу функциялары getchar и putchar болып табылады, сәйкесінше мәтіндік ағыннан келесі литерді оқу және бүтін айнымалыны литер түрінде басу.

3.Екі түрлі товардың бағасы p процентке өсті. Бастапқы және қазіргі бағасын шығар

#include <iostream.h> // Инклуд(ы) using namespace std; // Ввод/выводданных int main()  { inta,b,c,d; // Вводимпеременные cout<< "Введитечисло." <<endl; // Просим пользователя ввести начальное число cin>> a; // А тут он уже вводит b = a/100; // Выполняем деление cout<< "Один процент от этого числа равен: " << b << " \nА вам сколько процентов нужно? " <<endl; // Просим пользователя ввести кол-во процентов cin>> c; // Он вводит конечно же, куда ему деваться? d = b*c; // Выполняем умножение cout<< c << " процентов от числа " << a << " равняется: " << d <<endl; // Результат system("pause"); // Задерживаем этот результат на экране, пусть смотрит return 0; // Скажем системе, что программа завершилась успешно, без ошибок }

Билет №25

1.Шартты өрнектер

if(a>b) z=a;

elsez=b;

нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.

Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.

z=(a>b) ? a:b; // z=max(a,b)

Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.

Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.

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

printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?’\n’:’ ‘);

Жаңа жол литері әрбір оныншыдан кейін және n–ші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.

2.Құрылым – бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.

Құрлымның кең таралған мысалы – төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.

Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.

«Нүкте» құрлымының декларациясы келесі түрде болады:

structpoint

{ intx; \\ декларация тізімі фигуралы жақшада

inty;

};

point – бұл құрылым тегі (аты) (tag – ярлык, этикетка).

Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.

Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .

Құрлым декларациясы – бұл тип.

struct {…}x,y,z;

жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.

Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.

Құрылымдарға орындалатын операциялар – бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.

Құрылымдық объектілерді функцияға берудің үш тәсілі бар:

компоненттерді (мүшелерді) жеке беру;

барлық құрылымдарды түгелдей беру;

көрсеткішті құрылымға беру.

Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.

3.Тікбұрышты -ң катеті мен доғай бұрышы белгілі болса, оның периметрі мен ауданын есепте.

#include <stdio.h>

#include <math.h>

main()

{

floata,b,c,p,s;

clrscr();

printf("\n‚ үшбұрышқабырғаларыненгіз : \n");

scanf("%f%f%f",&a,&b,&c);

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

printf("s=%f\n",s);

}

Билет №26

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]