Builder С ортасында бағдарламалау
Қорқыт Ата атындағы Қызылорда мемлекеттік университеті
Builder С++ ортасында бағдарламалау
Кіріспе
С тілі өткен ғасырдың 70-жылдары басында АҚШ-та Bell Telephon
Laboratories компания-сының қызметкері Дэннис Ритчидің бастауы-мен дүниеге
келді. Бұл тілдің негізі Алголдан басталып, C++ және ПЛ1 тілдерімен қатар
пайда болды. C++ тілінің шығуы UNIX операциялық жүйесін-де программалаумен
тығыз байланысты, өйт-кені бұл жүйе ассемлерде және осы C++ тілінде жазылып
шыққан болатын. Бұл тілде жазылған программаны компьютерде орындау кезінде
ол алдымен трансляция сатысынан өтіп (машина тіліне аударылып), объектілік
программа түріне ауысады да, сонан кейін барып орындалады. Осы сәтте
компьютер-де программаның екі нұсқасы болады, оның біріншісі – C тіліндегі
алғашқы нұсқасы, ал екіншісі – объектілік кодтағы машина тілінде жазылған
программа. Есептің нәтижесін тек машиналық кодта жазылған программа арқылы
аламыз, ал программаны түзету қажет болғанда оның алғашқы нұсқасы өңделіп,
оны қайта түрлендіру сатысы жүзеге асырылады.
Жалпы C++ тілінің даму жолына қарасақ:
1. Алгол-60 - 1960-ж. халықаралық комитет жасап шығарды
2. CPL - (Combined Programming Language) Кембриджде және Лондон
университетінде 1963 ж. қатарласа жасалды
3. BCPL - (Basic Combined Programming Language) Кембриджде Мартин Ричардс
1967 ж. жасап шығарды
4. B - Bell Labs қызметкері Кен Томпсон 1970 ж. жасады
5. С - Bell Labs қызметкері Дэннис Ритчи 1972 ж. жасады
6. Сонымен, 1983 ж. C++ тілі стандартын жасау үшін (ANSI C) Америка
ұлттық стандарттар институты (ANSI) құрылды.
Кез келген С-программа бір немесе бірнеше функция-лардан тұрады. Олар
программа құруға керекті негізгі модульдер болып табылады.
С тіліндегі программа жеке-жеке жолдардан тұрады. Оларды теру, түзету
арнайы мәтіндік редакторлар арқылы атқарылады. Программа қатарларының
алдындағы азат жол немесе бос орындар саны өз қалауымызша алынады.
Бір қатарға бірнеше командалар немесе операторлар орналаса алады, олар
бір бірінен нүктелі үтір (;) арқылы ажыратылып жазылады, бірақ бір жолда
бір ғана оператор тұрғаны дұрыс, әрі түзетуге жеңіл, әрі ыңғайлы болып
саналады.
Мәліметтерді енгізу жәнет шығару
stdio.h модулі арқылы орындалатын Рrintf функциясы монитор экранына
хабарламалар мен айнымалылардың мәндерін шығаруды жүзеге асырады. Рrintf
функциясының алғашқы параметрі шығарылатын мәтін мен шығарылатын
айнымалының форматын анықтайтын шығару жолы болып табылады. Олардың
атаулары функцияның қалған параметрлер ретінде көрсетіледі. Айнымалының
мәндерін шығару форматы түрлендіру спецификаторының көмегімен беріледі - %
символынан басталатын символдар тізбегі. Сандық мәндерді шығаруда
төмендегідей спецификаторлар пайдаланылады:
%і -- таңбасы бар бүтін сандарды шығару:
%u - таңбасыз бутін сандарды шығару;
%f - жылжымалы үтірлі сандар түріндегі нақты сандарды шығару;
%n.mf- нақты сандарды форматымен шыгару
N - бүтін бөліктің цифрларының саны;
М - бөлшек боліктің цифрларының саны;
- жаңа жол;
\t- табуляция;
\" - қос тырнақша;
\\- түсіндірме жазу;
Рrintf функциясымен қатар экранға хабарламалар шығару бүтін тип
функциясын пайдалануға болады, мәтінді шығарғаннан кейін курсорды автоматты
түрде жаңа жолға көшіреді. Бағдарлама жұмысы аяқталғаннан кейін бірден
автоматты түрде басқа тереземен жабылмас үшін бағдарлама соңына
төмендегідей құрылымды қоюға болады:
Рrintf("жұмысты аяқтау үшін ENTER клавишын басыңыз);
Gеtсһ();
iostream.һ модулі арқылы орындалатын шығару операторының бірі сout.
Бұл шығару операторының жазылу форматы:
соutаа1.. .ап;
Мұндағы аі а2,..., ап айнымалылар тізімі. Егер айнымалының мәні
шығарылатын болса, онда символдарынан кейін айнымалы аты жазылады. Ал,
егер экранға мәтін шығарылатын болса, онда символдарынан кейін тырнақшаға
алынып жазылады. Мысалы, Соut "экранға шығарылатын мәтін".
Егер келееі жолдан басталып жазылатын баскару тізбегінің символдарын
көрстеу үшін де символдары жазылады. Мысалы, сout"Тік төртбүрыштың
қабыргаларын енгіз"'\n';
Енгізу операторлары
Енгізу функциясы scanf. Бастапқы берілгендерді клавиатурадан енгізу
үшін studio.h модулі арқылы орындалатын scanfфункциясы пайдаланылады.
Бұл функцияның бастапқы параметрі басқару жолы болып табылады, ал қалған
параметрлер - мәндері енгізілетін айнымалылардың адресі. Енгізілетін
мәліметтердің алдына & символы қойылады. Ал басқару жолы дегеніміз - қос
тырнақшаға алынған спецификаторлар тізімі:
%і - таңбасы бар бүтін сандарды енгізу;
%U - таңбасыз бүтін сандарды енгізу;
%f - жылжымалы үтірлі сандар түріндегі накты сандарды енгізу;
%с - символды енгізу;
%S- жолды енгізу.
Мысалы,
SсапF("%F%F'", &A, &B); типі нақты а және һ айнымалыларын енгізу
Енгізу функциясы сіn. іostream.һ модулі арқылы орындалатын енгізу
функциясы сіn деп аталады, Бұл енгізу функциясының жазылу форматы:
сіnаа2...аn;
Мұндағы аі а2,..., аn айнымалылар тізімі.
Си тілінде бағдарлама мәтінін енгізіп болғаннан кейін бағдарламаны
орындау үшін СТRL+F9, ал бағдарламаның орындалу нәтижесін көру үшін АLТ+Ғ5
клавиштар комбинациясы басылады.
1-мысал. Қабырғаларының мәндері бойынша тік төртбұрыштың ауданы мен
периметрін ееептейтін бағдарлама құрыңыз.
#includeiostream
using namespace std;
int main () {
int a,b;
float p,s;
cout"TIK BURISH ENGIZ "endl;
cinab;coutendl;
p=(a+b)2;
s=a*b;
cout"PERIMETR="pendl;
cout"AUDAN"sendl;
system("pause");
}
2-мысал. Тік бұрышты үшбұрыштың катеттерінің ұзындықтары а және b берілген.
Ұшбұрьшның периметрі мен ауданын табатын бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int a,b;
float p,s;
cout"a men b ENGIZ "endl;
cinab;coutendl;
p=(a+b+sqrt(pow(a,2)+pow(b,2)))2;
s=a*b2;
cout"PERIMETR="pendl;
cout"AUDAN"’ ’sendl;
system("pause");
}
3-мысал. Квадратың диаметрі берілген. Квадраттың ауданын табатын бағдарлама
құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
float d,s;
cout"AUDANIN ESEPTEY"endl;
cind; coutendl;
s=pow(d,2)2;
cout"S="sendl;
system(“pause”);
}
Шартты тексеру
Си тілінің басқару операторларына: құрама, шартты көшіру, таңдау,
қайталану жатады. Құрама оператор бірнеше оператордың бірігуі арқылы
жасалады және фигуралық жақшаның { } ішіне алынып жазылады, ол Паскаль
тіліндегі begin, екі операторлық жақшаларымен бірдей. Құрама операторлар
көбінесе тармақталу және қайталану операторларында пайдаланылады.
Шартты көшіру операторы
Тармақталуы бар процестерді ұйымдастыру үшін шартты оператор
пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе
орындалмауына тәуелді басқарылады.
Оның жазылу түрі:
Іf (шарт)
І-серия;
ЕlSЕ ІІ-серия ;
Егер IF сөзінен кейінгі жазылған шарт сақталса (ақиқат болса), онда 1-
операторлар сериясы орындалады да, ЕLSЕ сөзінен кейінгі ІІ-серия
операторлары орындалмайды. Егер командалар сериясы екі немесе одан да көп
операторлардан (құрама оператор болса) тұратын болса, онда олар фигуралық
жақшаға {} алынып жазылады. Тармақталу командасын блок- схема түрінде
былай көрсетуге болады.
Қатыиас операциялары. ІF сөзінен кейін жазылатын шартты тексеру үшін
қатынас операциялары пайдаланылады. C++ тілінде өрнектерді салыстыруға
пайдаланылатын қатынас операциялары:
Кесте 1. Қатынас операциялар
Тең
=
! = Тең емес
Үлкен
= Үлкен немесе тең
Кіші
= Кіші немесе тең
Қойылған шарттың тексерілу нәтижесі ақиқат болатын болса, онда өрнек
нәтижесінің мәні 1-ге болады, кері жағдайда 0-ге болады.
Логикалық операциялар. IF сөзінен кейін жазылатын шарт екі немесе одан да
көп болатын болса, онда логикалық қатынас белгілері (операциялар)
пайдаланылады. Бағдарламалау тілдерінде пайдаланылып жүрген логикалық
қатынас белгілерінің C++ тіліндегі жазылу түрі төмендегідей:
Кесте 2. Логикалық қатынас белгілері
және (and) && А&&В
немесе (оr) А В
терістеу(not! !А
)
Кей жағдайларда шартты оператордың ішінде шартты оператор орналасуы мүмкін.
Мысалы,
IF(І-шарт)
1-оператор;
Else IF (2-шарт)
2-оператор; еlse
3-оператор;
Бұл жағдайда алдымен бірінші шарт тексеріледі, егер бірінші шарт
ақиқат болса, онда бірінші оператор орындалады; ал, бірінші шарт жалған
болса, екінші шарт ақиқат болса, онда екініші шарт орындалады; ал, бірінші
және екінші шарт жалған болса, онда үшінші оператор орындалады.
Енді. шартты операторды пайдалануға арналған бірнеше мысал
қарастырайық.
1-мысал. Екі сан берілген. Егер бірінші санның абсолюттік шамасы екінші
санның абсолюттік шамасынан үлкен болса, онда 1-санды бес есе кішірейтіп.
ал кері жағдайда, оларды өзгертпей жазатын алгоритм
#includeiostream
#includemath.h
using namespace std;
int main () {
int x,y;
cout"x,y-manin engiz"endl;
cinxy; coutendl;
if (fabs(x)fabs(y)) {
x=x5;
cout"x="xendl;
cout"y="yendl;
}
else {
cout"x="xendl;
cout"y="yendl;
}
system("pause");
}
2-мысал. a,b,c сандары берілген. abc шартын тексеретін бағдарлама құр.
#includeiostream
using namespace std;
int main () {
int a,b,c;
cout"a.b.c enhiz"endl;
cinabc;
coutendl;
if((ab)&&(bc)) cout" shart orindaladi"endl;
else cout"shart orindalmaidi"endl;
system("pause");
}
3-мысал. a,b,c сандары берілген. Ең үлкен санды анықтайтын бағдарлама құр.
#includeiostream
using namespace std;
int main () {
int a,b,c,d;
cout"a.b.c engiz"endl;
cinabc;
coutendl;
if((ab) && (ac)) d=a; else if ((ba) &&(bc)) d=b;
else d=c;
cout"EN YLKEN SAN"' 'dendl;
system("pause");
}
4-мысал. Енгізілген сандардың теріс сандарының қосындысын есептейтін
прогрмма құр.
#includeiostream
using namespace std;
int main () {
int a,b,c,d;
cout"TERIS SANDARDIN KOSINDISIN ESEPTE"endl;
coutendl;
d=0;
for (int i=0; i=6;i++) {
cina; coutendl; if(a0) d=d+a;
}
coutdendl;
system("pause");
}
Практикалық тапсырмалар
1) Y =
2) Y =
3) Y =
4) Y =
5) Y =
6) Y =
7) Y =
8) Y =
9) Y =
10) Y =
11)Y =
12) Y =
13)Y =
14) Y =
15) Жазықтықта өз шыңдарындағы координаттарымен тұйық сынық сызық берілген.
Пайда болған фигура дөңес көп бұрыш болады ма, анықтау.
16) Жазықтықта өз шыңдарындағы координаттарымен берілген өз бетінше дөңес
көп бұрыш ауданын есептеу.
17) S және Т нүктелері y =ax+ b теңдеуімен берілген түзумен салыстырмалы
бір жартылай жазықтықта орналасқан ба, анықтау.
18) Берілген аралықтағы квадрат функциясының минимумы мен (немесе)
максимумын табу.
19) Жазықтықта өз координаттарымен берілген екі квадрат функцияларының
графиктері қиылысады ма, анықтаңыздар. Егер бар болса, қиылысу
нүктелерінің координаттарын табыңыздар.
20) Квадрат теңдеулер жүйесін шешіңіздер:
a) ( a*x*x+ Ь*х+ с) = О
b) ( a*x + Ь*2*Х+ с) = О.
21) Жазықтықта өз ақырларындағы координаттарымен екі кесінді берілген. Бір
түзуде олар жатады ма, анықтау.
22) Жазықтықта өз бетінше дөңес көп бұрыш өз шыңдарындағы координаттарымен
берілген. Берілген көп бұрыштың ең ұзын диагоналін табыңыздар.
23) Алдыңғы есептің шарты бойынша ұсынылған көп бұрыштың тік бұрыштары бар
ма, егер олар бар болса, қандай шыңдарында (нөмірі бойынша)
көрсетіңіздер. Бұл есептің әр түрлі шешу тәсілдерін ұсыныңыздар.
24) Жазықтықта (кеңістікте) өз координаттарымен берілген екі вектордың
скалярлық шығармасын табыңыздар.
25) Жазықтықта өз координаттарымен үш нүкте берілген. Осы нүктелер шыңдары
болып табылатын параллелограмм ауданын табыңыздар.
26) Дұрыс N-бұрышты пирамиданың негізделген жағы бойынша толық беті ауданын
және көлемін есептеңіздер.
27) Жазықтықта өз координаттарымен берілген екі түзу қиылысады ма, анықтау.
Қиылысу нүктелер координаттарын анықтау (егер олар бар болса).
28) Дұрыс N-бұрыш жағының берілген ұзындығы бойынша оның ішкі бұрыш
мөлшерін, ауданын, іште сызылған және сыртта сызылған шеңберлер
радиустарын табыңыздар.
29) A(XI, Yl), В(Х2, Y2) және С(ХЗ, Y3) нүтелері бір түзуді жатады ма,
анықтау.
30) Жазықтықта өз шыңдарындағы координаттарымен N үш бұрыштар берілген. Ең
үлкен ауданымен үш бұрышты табу.
31) Координаттар осьтері мен y=ax+b теңдеуімен берілген түзуден
құрастырылған үш бұрыш қай координаттық тоқсанда орналасқанын
анықтаңыздар.
32) Сандық түзу Al, А2, A3, ..., AN нүктелерімен кесінділерге бөлінді.
Берілген Х нүктесі қай кесіндіге жатады?
33) Келесінін анықтау:
a) Берілген бүтін сан жұп па;
b) Теріс емес а санын оң b санына бөлгенде пайда болатын қалдығы r немесе
s берілген екі санның біреуіне тең болады деген дұрыс па;
34) N натурал саны берілген.
a) Оның ішіндегі жүздік санын анықтау;
b) n саны цифрларының қосындысының кубы n*n-ге тең деген дұрыс па;
c) n санында неше цифра;
d) оның цифрлар қосындысы неге тең;
e) n санының соңғы цифрасын анықтау;
f) бұл сан палиндром болады ма;
g) бұл сан үш бірдей цифрлардан тұрады деген дұрыс па;
h) санның барлық төрт цифрасы әр түрлі деген дұрыс па.
35) x, y, z сандары берілген. Келесіні табу:
a) min (x, y);
b) max (x, y);
c) max (x, y, z);
d) min (x, y, z);
e) max (x+y+z, xy);
f) min (x+y2, z+2*x).
36) Екі сан берілген.
a) Егер бірінші сан екіншіден кіші немесе тең болса, оны нөлге ауыстыру
керек, кері жағдайда бұл санды өзгеріссіз қалдыру керек;
b) Бұл сандырын кішісін екеінің жартылай қосындысына ауыстыру қажет, ал
үлкенін – екі есе көбейтіндісіне ауыстыру керек.
37) Үш сан берілген.
a) Тек (1, 3] аралығына жататын нүктелерді теру;
b) Егер олардың қосындысы 1-ден кіші болса, онда олардың ең кішісін басқа
екеуінің жартылай қосындысына ауыстырыңыздар, кері жағдайда x пен y-
тің кішісін қалған екі мәннің жартылай қосындысына ауыстыр.
38. Нүктенің координаталары берілген. Берілген нүкте қай ширекте жатқанын
анықтау.
39. Үш нүктенің координаталары берілген. Олар үшбұрыш жасайтынын анықтау,
егер жасаса, бұл үшбұрыштын түрін анықтау:
– теңқабырғалы, теңбүйірлі немесе тең емес қабырғалы;
– сүйірбұрышты, тікбұрышты немесе доғалбұрышты.
40. Екі нүктенің координаталары берілген Олар бір жартылай жазықтықта
жатыр ма?
41. Өз ақырлы координаталарымен кесінді берілген. Координат осьтерімен
бұл кесінді қиылыса ма?
42. a,b қабырғалары бар тік төртбұрышты c,d қабырғалары бар тік
төртбұрышқа кіргізуге бола ма?
43. Екі үшбұрыш қабырғаларының ұзындықтары берілген. Үшбұрыштар ұқсас па?
44. Шкаф пен есіктің өлшемдері берілген. Шкаф есікке кіре ме?
Циклдер
Көп жағдайларда аргументтердің әр түрлі мәндері бойынша алгоритмнің
белгілі-бір бөліктерін немесе алгоритмдік тілдің бірнеше операторлар тобын
бірнеше рет қайталауға тура келеді. Осындай процестерді ұйымдастыру үшін
циклдік құрылымы бар алгоритмдер, дәлірек айтқанда, қайталанатын
алгоритмдер (операторлар) пайдаланылады. Қайталанатын бөліктер әр түрлі
заңдылықтар, ережелер бойынша құрастырылады.
Си тілінде қайталау процесін үш түрлі жолмен ұйымдастыруга болады:
– алдын ала берілген шарт бойынша қайталауды ұйымдастыру;
– келесі шарт бойынша қайталауды ұйымдастыру;
– параметрдін мәні бойынша қайталауды ұйымдастыру.
Бұл қайталаудың қайсысын алсақ та, олар қайталану
операторының көмегімен жүзеге асырылады. Қайталану операторлары құрама
операторлардың қатарына жатады.
Параметрлі қайталану командасы
Көп жагдайларда қайталану саны белгілі болғанда, шартты параметрлі
қайталану операторын пайдалануға болады. Параметрлі қайталану операторының
алгоритмдік тілдегі жазылу форматы:
Си тіліндегі жазылу форматы:
For (қайталану парметрінің бастапқы мәні; шарт; қайталану
инкременті)
{Қайталантын командалар сериясы}
Мұндағы, қайталану параметрінің бастапқы мәні - меншіктеу командасы
арқылы беріледі; ал, шарт арқылы қайталану командасының соңғы мәні
көрсетіледі; қайталану инкременті - бұл қайталану параметрінің мәнінің 1-ге
артып отыратынын көрсетеді.
1 - мысал. а!-ды есептейтін бағдарламаны қарастырайық.
#includeiostream
using namespace std;
int main() {
int i,a,p;
cina;coutendl; p=l;
for (i= 1; i=a; i++)
p=p* i;
cout"a!= “pendl;
system(“pause”);
}
Мысалдан көріп отырғанымыздай, егер қайталанатын командалар саны біреу
ғана болса, онда {} жақшасына алынбайды.
Қайталану параметрінің қадамның мәніне тәуелді параметрдің бастапқы мәні
мен шарттың жазылу орындары алмасып орналасады. Қайталану параметрінің мәні
1-ге артқан жағдайда (инкремент) і++ жазылса, ал, параметрдің мәні -1-ге
кемігенде (декремент) і - - жазылады. Жоғарыда келтірілген мысал қайталану
параметрінің кему реті бойынша былай өзгереді:
for (i=a; i=l; i - -) p=p*i;
2-мысал. 1+2+3+4+...+n сандарының қосындысын есептеуге арналған бағдарлама
құр.
#includeiosteam
using namespace std;
int n,s,elem,p;
int main () {
cout”N engiz”endl;
cinn;
coutendl;
p=1;
for(int i=1;i=n;i++) {
elem=I;
s+=elem;
}
cout”Katar sani”’ ‘sendl;
system(“pause”);
}
3-мысал.1+...; n қосындыны есептеуге арналған бағдарлама құр.
#includeiostream
#includemath.h
using namespace std;
int main ()
{
int n;
float s;
cout"n-sanin engiz"endl;
cinn; coutendl;
s=0;
for (int i=1;i=n;i++)
s=s+pow(-1,i)i;
cout"kosindi:"sendl;
system("pause");
}
4-мысал. S=0.11!+0.22!-0.33!+...-1.515! есептеуге арналған бағдарлама
құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int n;
float t,s,p;
cout"n sanin engiz"endl;
cinn; coutendl;
s=0;t=0.1;p=1;
for (int i=1;i=n;i++)
{
p=p*i;
s=s+tp; t=t+0.1;
}
cout"S="sendl;
system("pause");
}
5-мысал.1++; n қосындыны есептеуге арналған бағдарлама құр.
#includeiostream
#includemath.h
using namespace std;
int main () {
float s; int i,n;
cout"n sanin engiz"endl;
cinn; coutendl;
s=0;
for(int i=1;i=n;i++)
s=s+pow(-1,i+1)i;
cout"kosindi:"sendl;
system("pause");
}
Алдын-ала берілген шарт бойынша қайталау
Си тілінде алдын-ала берілген шaрт бойынша қайталау While операторы
арқылы жазылады. Бұл оператордағы қайталану саны бағдарламаның орындалуы
барысында анықталады.While сөзінен кейінгі жазылған шарт ақиқат болғанша
цикл денесі қайталана береді. Цикл аяқталуы үшін цикл денесінде оның
аяқталу шартына әсер ететін құрылым міндетті түрде болуы тиіс. Егер While
сөзінен кейін жазылған шарт бірден сақталмайтын болса, онда қайталану
денесі бірде-бір рет орындалмай қайталану командасы жұмысын аяқтауы мүмкін.
Көпшілік жағдайларда бүл қайталанудың бұл түрі жуықтап есептеулерді
ұйымдастыру, клавиатурадан немесе файлдардан мәліметтерді іздеу мен өңдеу
есептерінде пайдаланылады. Оператордың жазылу форматы:
While (шарт) {қайталанатын командалар сериясы }
1-мысал S=(ln^2 0,1)1^2.1 +(ln^4 0.2)2^2.2 +(ln^6 0,3)3^2.3 +(ln^8
0.4)4^2.4 + ... +(ln^20 l)10^3 есептеуге арналган бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main ()
{
float s,t,m; int i,k;
const int n=10;
cout"kosindini esepteu"endl;
s=0; i=1; t=2.1; k=2; m=0.1;
while (i=n)
{
s+=pow(log(m),k)pow(i,t);
t+=0.1; m+=0.1; k+=2; i++;
}
cout"s="sendl;
system("pause");
}
2-мысал. S=0,11!+0.22!+0,33!+...+1,515! қосындысын есептеуге
арналған бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
float s,t; int n,i,p;
cout"n-sanin engiz:"endl;
cinn; coutendl;
s=0: i=1; t=0.1 ;p=l;
while (i=n) {
p*=i; s+=tp: t+=0.1; i++;
}
cout"s="sendl;
system("pause");
}
Келесі шарт бойынша қайталау
С тілінде келесі шарт бойынша қайталау (дейін қайталану командасы) Do
While операторы арқылы жүзеге асырылады. Қайталанудың бұл турінде қайталану
саны бағдарламаның орындалуы барысында анықталады. Бұл команда While
сөзінен кейін жазылған шарттың мәні ақиқат болғанша жалғаса береді. Цикл
аяқталуы үшін цикл денесінде оның аяқталу шартына әсер ететін құрылым
міндетті түрде болуы тиіс. Егер While сөзінен кейін жазылған шарт бірден
сақталмайтын болса да, онда қайталану денесі кемінде бір рет орындалады.
Көпшілік жағдайларда, қайталанудың бұл түрі жуықтап есептеулерді
ұйымдастыру, клавиатурадан немесе файлдардан мәліметтерді іздеу мен өңдеу
есептерінде пайдаланылады. Оператордың жазылу форматы:
DO {
қайталанатын командалар сериясы
}
WHILE шарт
1-мысал. Енгізілген бүтін санның жай сан екенін анықтайтын бағдарлама
мысалын қарастырайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int a,b,c;
cout"san engiz:"endl; cina; coutendl;
b=2;
do
{
c=a % b;
if (c!=0) b++;
}
while (c!=0);
if(b == a)
cout"jai san"aendl;
else cout"jai san ernes"' 'aendl;
system("pause");
}
2-мысал. х=8.7,...,2,1 болғанда, у= х2 мәндерін табатын бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int x,y;
x=8; do
{
y=x*x;
cout"y- mani:"endl;
coutyendl;
cout"x-mani: "endl;
coutxendl; x--;
}
while (x!=0);
system("pause");
}
Практикалық тапсырмалар
1. Натурал санның цифрларының қосындысын табу.
2. Натурал санның максимальді цифрін шығару.
3. Натурал санның барлық жұп цифрлерін жою.
4. Натурал сан қарапайым болатын анықтау.
5. берiлген натурал санның цифрлары санның ортасы бойынша Симметриялы
екенiн анықтау.
6. Берілген натурал санның барлық бөлгіштерін табу.
7. Берілген натурал саннын қарапайым бөлгіштерге жіктеу.
8. Берілген N натурал санынан үлкен емес барлық қарапайым сандарды.
9. S тенгесiн 5, 10 және 20 тенгелермен төлемiнiң барлық нұсқаларын беру.
10. Цифрлар қосындысы M-ге барлық төрт таңбалы сандарды шығару.
11. Жазуында бiрдей цифрлары жоқ барлық үш таңбалы сандарды шығару.
12. Көбейту кестесiн экранға шығару бағдарламасын құру.
1) -100 ден 100-ге дейінгі барлық тақ сандар қосындысын табу.
2) -100 ден 100-ге дейінгі барлық тақ сандар көбейтіндісін табу.
3) Тек қана қосу және алу арифметикалық амалдарын танитын қолданушы үшін
нақты А санының N дәрежесін (мұнда N натурал сан) табу бағдарламасын
құрастыру.
4) Берілген арифметикалық (геометриялық) прогресСияның керекті N мүшелері
қосындысын есептейтін келесі бойынша бағдарлама құрастыру:
a) Нөмірлері белгілі кез келген оның екі мүшесі бойынша;
b) Нөмірі белгілі прогресСияның кез келген мүшесі және прогресСия айырымы
(бөлгіш).
5) a1, ..., an натурал сандарны берілген.
a) жұп (тақ) сандар болып табылатын;
b) 3-ке бөлініп,5-ке бөлінбейтін;
c) Жұп сандардың квадраттары болып табылатын;
d) Жұп ретті нөмірге ие болатын және тақ сандар болып табылатын;
e) 7-ге бөлінгенде 1,2, немесе 5 қалдық санын беретін мүшелер санын
анықтау.
6) a1, ..., a50 бүтін сандарны берілген. Келесі сандар қосындысын табу:
a) 5-ке бөлінетін;
b) Тақ және теріс;
c) aii2 шартын қанағаттандыратын.
d) 5-ке бөлінетін және 7-ге бөлінбейтін.
7) N натурал саны берілген.
a) n2 саны жазуына 3 цифрасы кіреді ме, анықтау.
b) n саны цифларын кері ретте шығару.
c) n санының бірінші және соңғы цифрларын орындарымен аумастыру.
d) n саны жазуының басына және соңына 1-ді жазу.
8) m1 бүтін саны берілген.
a) 4km шартын қанағаттандыратын ең үлкен k бүтін санын табу;
b) n санынан үлкен 2r түріндегі ең кішкентай сан табу.
9) a1, ..., a40 бүтін сандар және p, q сандары берілген.
a) p-ға бөлінетін барлық сандар көбейтіндісін табу;
b) р-ға бөлінгенде қалдықта q қалатын сандарды анықтау;
c) теріс мүшелерді 0 санына аумастыру, ал оң мүшелеріне 0.5 санын қосу;
d) (3, 7) кесіндісіне кіретін мүшелер қосындысын анықтау;
e) Теріс мүшелер санын және нөлдік мүшелер санын табу;
f) Бірінші р санын кейін келетін мүшелер қосындысын есептеу;
g) 3-тен үлкен барлық сандарды 5-ке ауыстырып, олардың санын табу.
10) ∑(ai-bi)2 (I=1,...,30) есептеу, мұнда
ai=I, егер I- тақ болса, ai=I2, кері жағдайда;
bi=i2, егер I – тақ болса, bi=i3 кері жағдайда.
11) а1, ..., аn нақты сандар берілген. Келесі тұжырымдар ақиқат па:
a) теріс мүшелер саны оң мүшелер санынан көп;
b) тізімнің ең үлкен мүшесі модуль бойынша 1-ден үлкен.
12) а1, ..., аn тізімінде келесі сандар көршілестіктері санын анықтау:
a) екі оң сандар;
b) түрлі таңбаларымен екі сан;
c) бір таңбасымен екі сан, бұл кезде бірінші санның модулі екінші санның
модулінен үлкен болуы керек;
d) екі (үш) бірінен кейін бірі келетін нөлдік мүшелер.
13) N натурал саны берілген.
a) Оның барлық натурыл бөлгіштерін табу;
b) Барлық сондай q: n саны q2 санына бөлініп, q3 санына бөлінбеуі керек.
14) n натурал саны берілген.
a) n –нен кіші барлық натурал сандарды табу;
b) бұл санның барлық қарапайым бөлгіщтерін табу;
c) оны натурал сандардың үш квадраттар қосындысы түрінде көрсетуге болады
ма.
15) Бөлгіштер қосындысы максимальды болып табылатын 1 ден 10000-ға дейінгі
натурал санын анықтау.
16) 100 бірінші қарапайым сандарды табу.
17) n және m натурал сандары берілген.
a) n≤p≤m шартын қанағаттандыратын барлық қарапайым р сандарды анықтау;
b) цифрлары қосындысының квадраты m-ге тең болатын n санынан кіші барлық
натурал сандарды анықтау.
18) n натурал саны мен а1, ..., а25 және b1, ..., bn бүтін сандары берілген
(қайталанылатындар жоқ).
a) а тізіміне кірмейтін b тізімінің барлық мүшелерін шығару;
b) а тізімінің барлық мүшелері b тізіміне кіреді деген ақиқат па;
c) тізімде бір рет қана кездесетін барлық сандарды анықтау;
d) тізімнің әр түрлі мүшелер санын анықтау;
e) тізімде бір рет қана кездесетін барлық сандар қанша болатынын анықтау;
f) ең болмағанда бір бірдей сандар жұбы бар ма, анықтау.
19) Әр түрлі бес сан берілген. Олардың арасынан екі сан табу, олардың
айырым модулі:
a) Ең үлкен мәнді;
b) Ең кіші мәнді.
20) N натурал саны , а1, ..., an бүтін сандар берілген.
a) Қандай сан бірінші кездесетінін анықтау – оң немесе теріс. Егер барлық
мүшелер нөлге тең болса, ол туралы хабарлау;
b) Тізімнің бірінші жұп мүшесі нөмірін табу;
c) Тізімнің соңғы тақ мүшесі нөмірін табу;
d) Келесі сандар қандай тізім (көбеюші, кемеюші) құратынын анықтау
выяснить:
- а1, ..., an, 2a1, 3a2, ..., (n+1)an;
- a1, ..., an, an+1, a(n-1)+2, ..., a1+n;
- a1, ..., an, n(a(n-1)+1), (n-1)(a(n-2)+2), ..., 2(a1+n-1).
21) х, у1, ..., у25 нақты сандары берілген. Арифметикалық ортасы х-ке ең
жақын болатындай тізімде екі сан табу.
22) х1, ..., х17 нақты сандары берілген. xi-xj мәндері қосындыларын табу
(1=ij=17).
23) а1, ..., а30 нақты сандары берілген. М – ең үлкен, m – ең кіші болсын.
(m, M) аралығына кіретін барлық тізімде жоқ нақты сандарды өсу ретінде
шығару.
24) х1, у1, ..., хn, yn натурал сандары берілген. Экранда xi, yi
координаттарымен нүктелер шығару және бір біріне ең алыс жұптарды
жұптау. Кесінді түзулерімен жұптау:
a) n нүктелердің әрқайсысын барлық қалған n-1нүктелермен;
b) бірдей жұптық нөмірлері бар нүктелерді;
c) әр түрлі жұптық нөмірлері бар нүктелерді.
25) x1, y1, c1, ..., xn, yn, cn натурал сандары берілген. әр xi, yi, ci үш
сандар нүктенің координаттары мен оның түсін береді. Бір түс
нүктелерінен:
a) біріншісін;
b) соңыншысын экранда шығару.
26) ҮШІН, ДЕЙІН және ӘЗІРШЕ циклдарын пайдалануымен тізімнің бірінші 10
мүшелер қосындысын есептейтін бағдарлама жасау. An тізім мүшесін
кестеден алу керек.
1. 2. 3.
4. 5. 6.
7. 8. 9.
10. 11. 12.
13. 14. 15.
26. y = , мұнда P(x) =
a S(t) = sin(2t+2)
27. y = , мұнда P(x) =
a S(t) = cos(t3)
28. y = , мұнда P(x) =
a S(t) = 2t + 12
29. y = , мұнда P(x) =
a S(t) = arctg(t-2)
30. y = , мұнда P(x) =
a S(t) = sin(t)-cos(t)
31. y = , мұнда P(x) =
a S(t) =
32. y = , мұнда P(x) =
a S(t) =
33. y = , мұнда P(x) =
a S(t) =
34. y = , мұнда P(x) =
a S(t) =
35. y = , мұнда P(x) =
a S(t) =
36. Процедура ЕҮОБ (а, в) табады.
37. Процедура санды жұптыққа тексередi.
38. Процедура натурал санның цифрларын керi ретке шығарады.
39. Процедура берiлген қатарда цифрлық Символдардың бар екенiн тексередi.
40. Процедура массивтiң максималдық элементiнiң нөмiрiн табады
41. Процедура өсу ретi бойынша екi санды сұрыптайды.
42. Функция кодтары өсу ретiнде жол Символдарын сұрыптайды.
43. Функция қайталанатын Символдарды жолдан өшiредi.
44. s, t нақты сандары берілген.
f(t, -2s, 1.17) + f(2.2, t, s-t) табу, мұнда f(a,b,c) = (2a-b-
sinc)(5+c).
45. s, t нақты сандары берілген.
g(1.2, s) + g(t, s) – g(2s-1, st) табу, мұнда g(a,b) =
(a*a+b*b)(a*a+2ab+3b*b+4).
46. a, b, c нақты сандары берілген.
(max(a, a+b) + max(a, b+c))(1+ max(a+bc, 1, 15) табу.
47. a, b нақты сандары берілген.
u = min(a, b), v = min(ab, a+b), min(u+v*v, 3.14) табу.
48. а1, ..., аn, b1, ..., bm нақты сандары берілген. а1, ..., аn және b1, ..., bm
тізбектерінде ең үлкен саннан кейін келетін барлық мүшелерді 0,5 санына
ауыстырыңыздар.
49. а1, ..., аn, b1, ..., bm, k бүтін сандары берілген. а1, ..., аn тізбегінде k
мәнімен бір де бір мүше табылмаса, барлығынан кіші емес реті бойынша
бірінші болып келетін мүшені k мәнімен ауыстырыңыздар. Осы ереже бойынша
b1, ..., bm тізбегін түрлендіру керек, 10 мәніне ауыстыру қажет.
50. N натурал саны, a1, ..., an бүтін сандар берілген. Келесіден тұратын
тізімнің кесінділерін табу:
a) Толық квадраттардан;
b) 5 дәрежесі;
c) Қарапайым сандар.
Әр жағдайда қарастырылатын кесінділердің ең ұзынын алу керек.
51. N натурал саны берілген. 1, 2, ..., n сандары арасынан екі натурал санның
толық квадраттары қосындысы түрінде көрсетуге болатын сандарды табу.
52. Нақты n саны берілген. Анық сандар x1, y1, x2, y2, ..., xn, yn.
бірыңғай кезекті қарағанда биіктігі (x1, y1), (x2, y2), ..., (xn, yn)
координаталы болатын n – бұрышының ауданың табу керек.
53. Нақты n саны берілген. n, n+1, ..., 2n сандары арасында егіз болып
кездесетін жай сандар, яғни олардың арасындағы екі сан айырымы нольге
тең сандар ды анықтау.
54. Процедураға қарайтын Символ әріп болып келетін және кері қарағанда
жалған мәнді нәтижелі болатын процедура құру .
55. Процедураға қарайтын Символ әріп болмайтын және кері қарағанда сәйкесті
тізбектегі әріп нәтижелі болатын процедура құру.
56. Бастапқы тізбекті Символдардың қысу процедурасын құру: Әрқайсы
тізбекшесі бір Символдың бірнеше енгізуден құралады, мәтінді
аумастырады: Символ (енгізу саны).
57. Бастапқы тізбекке берілген Символдың оң енгізу жолынан позициясын
анықтауға рұқсат беретін процедура құрастырылсын. Егер тізбекте Символ
болмаса, онда процедураның нәтижесі – 1 болуға тиісті.
58. Бастапқы Символ тізбекте барлық нольдер бірлікке, барлық бірліктер
нольге айналатын процедура құру. Аумастыру тізбектің берілген
позициясынан басталу керек.
59. Процедураға қарағанда нәтижесінде алғашқы берілген тізбектің әрбір
Символы жойылып, сонымен қоса ол екінші берілген тізбекке қараған
процедура құрастыру.
Бiр өлшемдi сандық массив
Массив дегеніміз - бір типтегі берілгендер жиыны. Басқаша айтқанда,
массив - бір атауға біріктірілген айнымалылардың реттелген тізбегі.
Айнымалылардың - массив элементтерінің типтері бірдей болады. Массив бір
ғана атпен белгіленеді. Мысалы, накты сандардан құрылган тізбекті R атаулы
массив деуге болады. Мысалы:
1.6, 14.9, -5.0, 8.5, 0.46 - ны бір өлшемді массив деп, оған А деп атау
беруге болады. Массивеің әр элементі массивтін атымен белгіленеді де, оның
индексі койылады. Массив элементтері индекстері бойынша реттеліп жазылады.
Мысалы, Аi А2,...,Аn немесе жалпы түрде А„і=1,2,...,n. C++ тілінде массив
элементтерінің индексі алгоритмдік тілдегі тәрізді тік жақшаға алынып
жазылады, мысалы, А[і]. Жоғарыдағы массивте А[0]=1.6, А[1]=14.9 жэне т.с.с.
мәндер қабылдайды. C++ тілінде массив элементтерінің индекстері 0-ден
бастап нөмірленеді.
С тілінде басқа бағдарламалау тілдеріндегі тәрізді массив элементтерін
кездейсоқ сандар генераторын пайдалып та енгізуге болады. Ол үшін stdlib.h
файлы арқылы орындалатын кездейсоқ сандар функциясы пайдаланылады. Бұл
функция арқылы қабылданатын мән О..RAND_МАХ=32767 аралығынан алынады және
оның типі бүтін болады.
Сөйтіп, C++ тіліндегі массив ұғымы алгоритмдік тілдегі кесте ұғымына
сәйкес келеді. C++ тілінде массивтің өлшемін - тұрақты арқылы (#define size
5) - көрсетуге болады. Басқа бағдарламалау тілдеріндегі тәрізді массив
элементтерін енгізу, массив элементтеріне операциялар қолдану және массив
элементтерін шығару (есеп шартына байланысты) қайталану командасы арқылы
жазылады. Мысалы, массив элементтерінің сипатталуы:
main() {іnt а[size];
Массив элементтерін енгізу:
for (i=0: isize;i-H-) {
printf("a[%i]=",i+l);
scanf("%i",&a[i]);
Массивтегі нөлдік емес элементтерді табатын бағдарлама бөлігі төмендегідей:
for (i=0; isize;i++) {
if (a[i]!=0) n++:
}
Егер есеп шартында массив элементтерін шығару талап етілсе, онда ол
қайталану операторларының бірін арқылы жүзеге асырылады.
1-мысал. Массивтің нөлге тең элементтердің санын анықта.
#includeiostream
using namespace std;
int main() {
int n=10;
int b[n], k;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i];
k=0;
for(int i=0; in;i++)
if(b[i]==0) k=k+1;
cout"nul sandarin sani"' 'kendl;
system("pause");
}
2-мысал. Бір өлшемді массивтің тақ элементтерін экранға шығаратын
бағдарлама кұрайык.
#includeiostream
using namespace std;
int main() {
int n=10;
int b[n], k;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i];
k=0;
for(int i=0; in;i++)
if(b[i]%2!=0) coutb[i]' ';
system("pause");
}
3-мысал. A_i (i=1,n) n=4;массиві берілген. Берілген к санынан үлкен болатын
массив элементтерінің санын анықтауға бағдарлама құрыңыз.
#includeiostream
using namespace std;
int main() {
int n=4;
int b[n], s,k;
cout"k sanin engiz"endl;
cink; coutendl;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i]; coutendl;
cout"k saninan ylken sandar"endl;
for(int i=0; in;i++)
if(b[i]k) coutb[i]' ';
system("pause");
}
Практикалық тапсырмалар
1. Берілген К сандарынан массивтің барлық элементтерінің белгісін жұп
(тақ) нөмірлерін қарама қарсысына ауыстырыңдар. .
2. Ұсынылған бір өлшемді массивте барлық нольдік элементтерді бірлікке
ауыстырыңдар.
3. Кез келген массивте көршілес жұп және тақ нөмірлі элементтердің
орындарын ауыстырыңдар. Қосымша маСивтерді қолдануға болмайды.
4. Берілген М сандарынан құрылған А маСивтен М 2 санына құрылған В
маСивін келесі формула бойынша құрындар: В (I) = (А (I)+A (М+1 --
I))2.
5. Нақты S (N). маСиві берілген. Дисплей арнасында И бағандарынқұрындар,
1-ші бағанның биіктігі S (1) тең болу керек.
6. Массивтің барлық тақ (жұп) элементтерінің 1 сандардан құралған
белгісін ауыстырыңдар (тұтас емес элементтер болу жағдайын қарастыру).
7. Массивті қысыңдар, әрқайсы екінші элементтің жою арқыл. (қосымша
массивтерді қолдануға рұқсат етілмейді).
8. A(N) бір өлшемді массив берілген, тек қана нольдер мен бірліктерден
құралған. Қатан реті бар ма екенін тексеріңдер.
9. Ұсынылған бір өлшемді массивтен, S мөлшерлі, екі өлшемді массив
құрыңдар, бірақ жаңа массивтің бірінші тізбегі біріншілік массивтің
жұп нөмірлі элементтері, ал екіншісі – тақ нөмірлі элементтері болсын.
10. Кестенің оң таңбалы элементтерінің қосындысын табыңдар. .
11. Массивтің 10-нан кіші элементтерін олардың үш дәрежесімен ауыстырыңдар.
12. Жол массивінің бөлігін максималдық және минималдық элементтері арасында
өсу ретімен ретке келтіріңдер.
13. Массивті шеңбер бойынша циклды жылжытыңдар, массивтің алғашқы элементі
соңғы болсын.
14. Массивті шеңбер бойынша циклды жылжытыңдар, массивтің соңғы элементі
алғашқы болсын.
15. 1-ден 100-ге дейінгі интервалда тұтас сандарды енгізіп, кез келген
сандар генераторы арқылы. Осы массивте сандар қайталанбауы қажет.
16. Берілген массивте көршілес орналасқан тең элементтер бар ма екенін
тексеріңдер.
17. Берілген сандар массивінде кемімейтін ретпен орналасқан ба екенін
тексеріндер.
18. Қоптеген нөльдік элементтері бар, В(М) бір өлшемді массив берілген.
Кездесетін барлық нөльдер топтары бір нөльге ауыстырыңдар.
19. Алдынғы есептің шарты бойынша кездесетін барлық нөльдерді екі саннан
құралған элементке ауыстырыңдар, мұнда бірінші саны - 0, ал екіншісі –
топтағы нөльдер саны.
20. В массиве M(N) маСивінде қосымша маСивтерді қолданбай К элементтерін
жылжытыңдар. Біріншілік К элементтер орнында қалып, соңғы К
жойылады.
21. По условию предыдущей задачи осуществите циклический сдвиг (т. е.
последние К элементов перемещаются на первые К мест).
22. Кез келген бір өлшемді массивтің элементтерін өсу тәртібімен
орналастырыңдар.
23. А және В екі кез келген элемент санынан құралған бір өлшемді массивтер
берілген. Екі массивтің элементтері өсу тәртібімен орналасқан C++
массивін құрастырыңдар.
24. (К және L көлемді) екі ретке келтірілген массивтерден K+L көлемді бір
массив келесі тәртіппен реттелген:
a) бастапқы массивтер тәрізді;
b) кері бағытта.
25. Кез келген бір өлшемді (екі өлшемді) массивтің барлық тең
элементтерінің инжекстерін басыңдар.
26. массивтің максималды және минималды элементтер арасында орналасқан
элементтер қосындысын табыңдар.
27. Кез келген бір өлшемді ( екі өлшемді) қанша әр түрлі саңдар болатынын
анықтаңдар.
28. Берілген бір өлшемді массив үшін оның элементтерінің қосындысы берілген
f санына тең болған индекстерін белгілеңдер (ондайлар болса).
29. С(6) бір өлшемді массив берілген. Оның әртүрлі үштік элементтерін
басыңдар. ( Бастапқы массивте бірдей элементтер болуы мүмкін).
30. [А, В] кесіндісіне түскен Al, А2, AЗ,...,AN, реттегі минималды және
максималды элемент нөмірін табыңдар.
31. D (15) массив мөлшері берілген. а-дан b-ға дейінгі интервалды
қарастырыңдар. Осы интервалда D (a)-ға немесе D (b)-ға тең элементтер
бар ма екенің анықтап, олардың саны мен қосындысын санаңдар.
32. Бастапқы массивте минималды және максималды элементтер арасындағы
элементтерді жойындар.
33. С(20) бір өлшемді массив берілген. Минималдық элементті табыңдар. Егер
ол жұп орнында тұрса, онда барлық жұп элементтерін жойыңдар, немесе тақ
орындардағы элементтерді минималдық элемент мәнімен ауыстырыңдар.
34. n элементтерден құралған бір өлшемді массивте есептеңдер:
a) теріс (оң) таңбалы элементтер соммасын;
b) Массивтің максималды (модуль бойынша) және минималды (модуль бойынша)
элементтер көбейтіндісін табыңдар. ;
c) массивтің жұп (тақ) нөмірлері арасындағы көбейтіндісін табыңдар.
d) Бірінші және соңғы нөльдік элементтері арасында орналасқан массивтің
элементтер қосындысын табыңдар;
e) Бірінші және соңғы оң таңбалы элементтері арасында орналасқан массивтің
элементтер қосындысын табыңдар;
f) бірінші элементтен кейін орналасқан нөльге тең массив элементтер
модулінің қосындысын табыңдар;
g) А және В диапазонында орналасқан массивтің элементтер санын табыңдар;
h) С көп массив элементтерінің санын табыңдар;
i) модуль бойынша максималды болып орналасқан массив элементтерінің
көбейтіндісін табыңдар;
j) Соңғы теріс таңбалы элементтен кейінгі орналасқан массив элементтері
толық бөлшектерінің косындысын табыңдар.
35. Бір өлшемді массивке келесі іс-әрекет жасаңдар:
a) Жұп және тақ орындарында орналасқан элементтерді жекелеп өсу бойынша
ретке келтіріңдер.
b) Максималды элементтен 20%-ға ауытқаған элементтер ең алдымен, ал
басқалары кейіннен орналасқан етіп массивті түр өзгертіңдер;
c) МаСивтегі элементтер тәртібін керіге аударыңдар;
d) толық бөлігі 1-ден аспайтын элементтер ең алдымен, ал басқалары кейіннен
орналасқан етіп массивті түр өзгертіңдер;
e) Массивтің барлық теріс таңбалы элементтерін олардың шаршыларымен
ауыстырып, массив элементтерін өсу ретімен орналастырыңдар;
f) Массивті ондағы [a, b] интервалындағы барлық элементтерін жою жолымен
қысыңдар. Бос элементтерді нөльдермен толтырыңдар.
g) [a, b] интервалында толық бөлігі орналасқан барлық элементтерді
біріншілік ретпен, ал қалғандарын кейіннен орналастырып массивті түр
өзгертіндер;
h) Біріншілік ретпен жұп позициялардағы элементтерді, екіншілік- тақ
позициядағы элементтерді массивті түр өзгертіндер;
i) Біріншілік – нөльге тең элементтерді, одан кейін басқаларын орналастырып
массивті түр өзгертіңдер;
j) [a, b] интервалында модулі орналасқан элементтердің барлығын жою арқылы
массивті қысыңдар, ал массивтің соңында босаған элементтерді нөльдермен
толтырыңдар;
k) Модулі 1-ден аспайтын барлық элементтерді жою арқылы массивті қысыңдар,
массив соңында босаған элементтерді нөльдермен толтырыңдар;
l) Алдымен оң таңбалы элементтерді, кейіннен теріс таңбалы элементтерді
орналастырып, массивті түр өзгертіңдер.
36. Массивтiң максимальды элементтерiнiң нөмерлерiн шығару.
37. Массивтiң бiрiншi терiс элементiне дейiнгi элементтердi өсу ретiнде
реттеу.
38. Массивтiң бiрiншi элементiнен кейiнгi элементтердi керi ратта шығару.
39. Массивтiң жұп элементерiнiң цифрларын керi ретте қою.
40. Массивтiң бiрiншi жұп элементiн жою
41. Массивке көрсетiлген позицияға берiлген элементтi қосу.
42. Бiр массивтен екi массив шығару: бiреуi - оң элементтерден, екiншiсi –
терiс элеметтерден тұратын.
43. Екi массивтен өсу ретiнде бiр жаңа массив шығару.
44. Массивтiң барлық қарапайым сандарын экранға шығару бағдарламасын құру.
45. Массивте палиндром сандар бар екенiн анықтайтын бағдарламаны құру.
46. Массив элементтерiнiң екiлiк жазуында:
• бiрлiктердiң жұп саны
• бiрлiктердiң максимальды саны
бар элементердi шығару.
Екi өлшемдi массив
Егер массив атауында бір ғана нндекс болса, онда ол массивті бір өлшемді,
ал екі индекс болса - екі өлшемді жэне т.с.с. n индекс болса, n өлшемді
массив дейді. Бір өлшемді массив элементтері вектор, ал екі өлшемді массив
матрица деп аталады.
Екі өлшемді массивті есеп шығаруда пайдаланғанда басқа бағдарламалау
тілдеріндегі тәрізді C++ тілінде де массив элементтерін енгізу, өңдеу және
шығару кезінде қосарланган цикл жазылады. C++ тілінде массив элементтерінің
индекстері 0-ден бастап нөмірленетіндіктен, мысалы, 3 жол, 3 бағаннан
тұратын матрицаны сипаттау үшін #definе n 2 деп көрсетеміз де, шартты
(і=n: і=n;) деп аламыз. Нәтижесінде 3 жол, 3 бағаннан тұратын матрицамен
жұмыс істеуге мүмкіндік аламыз. Бүтін типті екі өлшемді массивтің
айнымалылар бөлігіндегі сипатталуы төмендегідей:
Int a [n][n]
Ал, екі өлшемді массив элементтерін енгізу және шығару үшін сәйкес
iostream.һ немесе stdio.һ модульдерінің функцияларының бірін
пайдаланамыз. Ол былай жүзеге асырылады:
for (i=0; i=n; i++)
for (j=0; j=n; j++) cina[i][j];
Екі өлшемді массив элементерінің өнделуі де қосарланған циклдің ішінде
орындалады.
1- мысaл. Берілген квадрат матрицаның бас диагоналының бойында орналасқан
элементтерін экранға шығаратын бағдарлама мысалын қарастырайық.
#includeiostream
using namespace std;
int main() {
const int n=4;
int a[n][n]; int i,j,k;
cout"massiv elementiri:"endl;
k=0;
for ... жалғасы
Builder С++ ортасында бағдарламалау
Кіріспе
С тілі өткен ғасырдың 70-жылдары басында АҚШ-та Bell Telephon
Laboratories компания-сының қызметкері Дэннис Ритчидің бастауы-мен дүниеге
келді. Бұл тілдің негізі Алголдан басталып, C++ және ПЛ1 тілдерімен қатар
пайда болды. C++ тілінің шығуы UNIX операциялық жүйесін-де программалаумен
тығыз байланысты, өйт-кені бұл жүйе ассемлерде және осы C++ тілінде жазылып
шыққан болатын. Бұл тілде жазылған программаны компьютерде орындау кезінде
ол алдымен трансляция сатысынан өтіп (машина тіліне аударылып), объектілік
программа түріне ауысады да, сонан кейін барып орындалады. Осы сәтте
компьютер-де программаның екі нұсқасы болады, оның біріншісі – C тіліндегі
алғашқы нұсқасы, ал екіншісі – объектілік кодтағы машина тілінде жазылған
программа. Есептің нәтижесін тек машиналық кодта жазылған программа арқылы
аламыз, ал программаны түзету қажет болғанда оның алғашқы нұсқасы өңделіп,
оны қайта түрлендіру сатысы жүзеге асырылады.
Жалпы C++ тілінің даму жолына қарасақ:
1. Алгол-60 - 1960-ж. халықаралық комитет жасап шығарды
2. CPL - (Combined Programming Language) Кембриджде және Лондон
университетінде 1963 ж. қатарласа жасалды
3. BCPL - (Basic Combined Programming Language) Кембриджде Мартин Ричардс
1967 ж. жасап шығарды
4. B - Bell Labs қызметкері Кен Томпсон 1970 ж. жасады
5. С - Bell Labs қызметкері Дэннис Ритчи 1972 ж. жасады
6. Сонымен, 1983 ж. C++ тілі стандартын жасау үшін (ANSI C) Америка
ұлттық стандарттар институты (ANSI) құрылды.
Кез келген С-программа бір немесе бірнеше функция-лардан тұрады. Олар
программа құруға керекті негізгі модульдер болып табылады.
С тіліндегі программа жеке-жеке жолдардан тұрады. Оларды теру, түзету
арнайы мәтіндік редакторлар арқылы атқарылады. Программа қатарларының
алдындағы азат жол немесе бос орындар саны өз қалауымызша алынады.
Бір қатарға бірнеше командалар немесе операторлар орналаса алады, олар
бір бірінен нүктелі үтір (;) арқылы ажыратылып жазылады, бірақ бір жолда
бір ғана оператор тұрғаны дұрыс, әрі түзетуге жеңіл, әрі ыңғайлы болып
саналады.
Мәліметтерді енгізу жәнет шығару
stdio.h модулі арқылы орындалатын Рrintf функциясы монитор экранына
хабарламалар мен айнымалылардың мәндерін шығаруды жүзеге асырады. Рrintf
функциясының алғашқы параметрі шығарылатын мәтін мен шығарылатын
айнымалының форматын анықтайтын шығару жолы болып табылады. Олардың
атаулары функцияның қалған параметрлер ретінде көрсетіледі. Айнымалының
мәндерін шығару форматы түрлендіру спецификаторының көмегімен беріледі - %
символынан басталатын символдар тізбегі. Сандық мәндерді шығаруда
төмендегідей спецификаторлар пайдаланылады:
%і -- таңбасы бар бүтін сандарды шығару:
%u - таңбасыз бутін сандарды шығару;
%f - жылжымалы үтірлі сандар түріндегі нақты сандарды шығару;
%n.mf- нақты сандарды форматымен шыгару
N - бүтін бөліктің цифрларының саны;
М - бөлшек боліктің цифрларының саны;
- жаңа жол;
\t- табуляция;
\" - қос тырнақша;
\\- түсіндірме жазу;
Рrintf функциясымен қатар экранға хабарламалар шығару бүтін тип
функциясын пайдалануға болады, мәтінді шығарғаннан кейін курсорды автоматты
түрде жаңа жолға көшіреді. Бағдарлама жұмысы аяқталғаннан кейін бірден
автоматты түрде басқа тереземен жабылмас үшін бағдарлама соңына
төмендегідей құрылымды қоюға болады:
Рrintf("жұмысты аяқтау үшін ENTER клавишын басыңыз);
Gеtсһ();
iostream.һ модулі арқылы орындалатын шығару операторының бірі сout.
Бұл шығару операторының жазылу форматы:
соutаа1.. .ап;
Мұндағы аі а2,..., ап айнымалылар тізімі. Егер айнымалының мәні
шығарылатын болса, онда символдарынан кейін айнымалы аты жазылады. Ал,
егер экранға мәтін шығарылатын болса, онда символдарынан кейін тырнақшаға
алынып жазылады. Мысалы, Соut "экранға шығарылатын мәтін".
Егер келееі жолдан басталып жазылатын баскару тізбегінің символдарын
көрстеу үшін де символдары жазылады. Мысалы, сout"Тік төртбүрыштың
қабыргаларын енгіз"'\n';
Енгізу операторлары
Енгізу функциясы scanf. Бастапқы берілгендерді клавиатурадан енгізу
үшін studio.h модулі арқылы орындалатын scanfфункциясы пайдаланылады.
Бұл функцияның бастапқы параметрі басқару жолы болып табылады, ал қалған
параметрлер - мәндері енгізілетін айнымалылардың адресі. Енгізілетін
мәліметтердің алдына & символы қойылады. Ал басқару жолы дегеніміз - қос
тырнақшаға алынған спецификаторлар тізімі:
%і - таңбасы бар бүтін сандарды енгізу;
%U - таңбасыз бүтін сандарды енгізу;
%f - жылжымалы үтірлі сандар түріндегі накты сандарды енгізу;
%с - символды енгізу;
%S- жолды енгізу.
Мысалы,
SсапF("%F%F'", &A, &B); типі нақты а және һ айнымалыларын енгізу
Енгізу функциясы сіn. іostream.һ модулі арқылы орындалатын енгізу
функциясы сіn деп аталады, Бұл енгізу функциясының жазылу форматы:
сіnаа2...аn;
Мұндағы аі а2,..., аn айнымалылар тізімі.
Си тілінде бағдарлама мәтінін енгізіп болғаннан кейін бағдарламаны
орындау үшін СТRL+F9, ал бағдарламаның орындалу нәтижесін көру үшін АLТ+Ғ5
клавиштар комбинациясы басылады.
1-мысал. Қабырғаларының мәндері бойынша тік төртбұрыштың ауданы мен
периметрін ееептейтін бағдарлама құрыңыз.
#includeiostream
using namespace std;
int main () {
int a,b;
float p,s;
cout"TIK BURISH ENGIZ "endl;
cinab;coutendl;
p=(a+b)2;
s=a*b;
cout"PERIMETR="pendl;
cout"AUDAN"sendl;
system("pause");
}
2-мысал. Тік бұрышты үшбұрыштың катеттерінің ұзындықтары а және b берілген.
Ұшбұрьшның периметрі мен ауданын табатын бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int a,b;
float p,s;
cout"a men b ENGIZ "endl;
cinab;coutendl;
p=(a+b+sqrt(pow(a,2)+pow(b,2)))2;
s=a*b2;
cout"PERIMETR="pendl;
cout"AUDAN"’ ’sendl;
system("pause");
}
3-мысал. Квадратың диаметрі берілген. Квадраттың ауданын табатын бағдарлама
құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
float d,s;
cout"AUDANIN ESEPTEY"endl;
cind; coutendl;
s=pow(d,2)2;
cout"S="sendl;
system(“pause”);
}
Шартты тексеру
Си тілінің басқару операторларына: құрама, шартты көшіру, таңдау,
қайталану жатады. Құрама оператор бірнеше оператордың бірігуі арқылы
жасалады және фигуралық жақшаның { } ішіне алынып жазылады, ол Паскаль
тіліндегі begin, екі операторлық жақшаларымен бірдей. Құрама операторлар
көбінесе тармақталу және қайталану операторларында пайдаланылады.
Шартты көшіру операторы
Тармақталуы бар процестерді ұйымдастыру үшін шартты оператор
пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе
орындалмауына тәуелді басқарылады.
Оның жазылу түрі:
Іf (шарт)
І-серия;
ЕlSЕ ІІ-серия ;
Егер IF сөзінен кейінгі жазылған шарт сақталса (ақиқат болса), онда 1-
операторлар сериясы орындалады да, ЕLSЕ сөзінен кейінгі ІІ-серия
операторлары орындалмайды. Егер командалар сериясы екі немесе одан да көп
операторлардан (құрама оператор болса) тұратын болса, онда олар фигуралық
жақшаға {} алынып жазылады. Тармақталу командасын блок- схема түрінде
былай көрсетуге болады.
Қатыиас операциялары. ІF сөзінен кейін жазылатын шартты тексеру үшін
қатынас операциялары пайдаланылады. C++ тілінде өрнектерді салыстыруға
пайдаланылатын қатынас операциялары:
Кесте 1. Қатынас операциялар
Тең
=
! = Тең емес
Үлкен
= Үлкен немесе тең
Кіші
= Кіші немесе тең
Қойылған шарттың тексерілу нәтижесі ақиқат болатын болса, онда өрнек
нәтижесінің мәні 1-ге болады, кері жағдайда 0-ге болады.
Логикалық операциялар. IF сөзінен кейін жазылатын шарт екі немесе одан да
көп болатын болса, онда логикалық қатынас белгілері (операциялар)
пайдаланылады. Бағдарламалау тілдерінде пайдаланылып жүрген логикалық
қатынас белгілерінің C++ тіліндегі жазылу түрі төмендегідей:
Кесте 2. Логикалық қатынас белгілері
және (and) && А&&В
немесе (оr) А В
терістеу(not! !А
)
Кей жағдайларда шартты оператордың ішінде шартты оператор орналасуы мүмкін.
Мысалы,
IF(І-шарт)
1-оператор;
Else IF (2-шарт)
2-оператор; еlse
3-оператор;
Бұл жағдайда алдымен бірінші шарт тексеріледі, егер бірінші шарт
ақиқат болса, онда бірінші оператор орындалады; ал, бірінші шарт жалған
болса, екінші шарт ақиқат болса, онда екініші шарт орындалады; ал, бірінші
және екінші шарт жалған болса, онда үшінші оператор орындалады.
Енді. шартты операторды пайдалануға арналған бірнеше мысал
қарастырайық.
1-мысал. Екі сан берілген. Егер бірінші санның абсолюттік шамасы екінші
санның абсолюттік шамасынан үлкен болса, онда 1-санды бес есе кішірейтіп.
ал кері жағдайда, оларды өзгертпей жазатын алгоритм
#includeiostream
#includemath.h
using namespace std;
int main () {
int x,y;
cout"x,y-manin engiz"endl;
cinxy; coutendl;
if (fabs(x)fabs(y)) {
x=x5;
cout"x="xendl;
cout"y="yendl;
}
else {
cout"x="xendl;
cout"y="yendl;
}
system("pause");
}
2-мысал. a,b,c сандары берілген. abc шартын тексеретін бағдарлама құр.
#includeiostream
using namespace std;
int main () {
int a,b,c;
cout"a.b.c enhiz"endl;
cinabc;
coutendl;
if((ab)&&(bc)) cout" shart orindaladi"endl;
else cout"shart orindalmaidi"endl;
system("pause");
}
3-мысал. a,b,c сандары берілген. Ең үлкен санды анықтайтын бағдарлама құр.
#includeiostream
using namespace std;
int main () {
int a,b,c,d;
cout"a.b.c engiz"endl;
cinabc;
coutendl;
if((ab) && (ac)) d=a; else if ((ba) &&(bc)) d=b;
else d=c;
cout"EN YLKEN SAN"' 'dendl;
system("pause");
}
4-мысал. Енгізілген сандардың теріс сандарының қосындысын есептейтін
прогрмма құр.
#includeiostream
using namespace std;
int main () {
int a,b,c,d;
cout"TERIS SANDARDIN KOSINDISIN ESEPTE"endl;
coutendl;
d=0;
for (int i=0; i=6;i++) {
cina; coutendl; if(a0) d=d+a;
}
coutdendl;
system("pause");
}
Практикалық тапсырмалар
1) Y =
2) Y =
3) Y =
4) Y =
5) Y =
6) Y =
7) Y =
8) Y =
9) Y =
10) Y =
11)Y =
12) Y =
13)Y =
14) Y =
15) Жазықтықта өз шыңдарындағы координаттарымен тұйық сынық сызық берілген.
Пайда болған фигура дөңес көп бұрыш болады ма, анықтау.
16) Жазықтықта өз шыңдарындағы координаттарымен берілген өз бетінше дөңес
көп бұрыш ауданын есептеу.
17) S және Т нүктелері y =ax+ b теңдеуімен берілген түзумен салыстырмалы
бір жартылай жазықтықта орналасқан ба, анықтау.
18) Берілген аралықтағы квадрат функциясының минимумы мен (немесе)
максимумын табу.
19) Жазықтықта өз координаттарымен берілген екі квадрат функцияларының
графиктері қиылысады ма, анықтаңыздар. Егер бар болса, қиылысу
нүктелерінің координаттарын табыңыздар.
20) Квадрат теңдеулер жүйесін шешіңіздер:
a) ( a*x*x+ Ь*х+ с) = О
b) ( a*x + Ь*2*Х+ с) = О.
21) Жазықтықта өз ақырларындағы координаттарымен екі кесінді берілген. Бір
түзуде олар жатады ма, анықтау.
22) Жазықтықта өз бетінше дөңес көп бұрыш өз шыңдарындағы координаттарымен
берілген. Берілген көп бұрыштың ең ұзын диагоналін табыңыздар.
23) Алдыңғы есептің шарты бойынша ұсынылған көп бұрыштың тік бұрыштары бар
ма, егер олар бар болса, қандай шыңдарында (нөмірі бойынша)
көрсетіңіздер. Бұл есептің әр түрлі шешу тәсілдерін ұсыныңыздар.
24) Жазықтықта (кеңістікте) өз координаттарымен берілген екі вектордың
скалярлық шығармасын табыңыздар.
25) Жазықтықта өз координаттарымен үш нүкте берілген. Осы нүктелер шыңдары
болып табылатын параллелограмм ауданын табыңыздар.
26) Дұрыс N-бұрышты пирамиданың негізделген жағы бойынша толық беті ауданын
және көлемін есептеңіздер.
27) Жазықтықта өз координаттарымен берілген екі түзу қиылысады ма, анықтау.
Қиылысу нүктелер координаттарын анықтау (егер олар бар болса).
28) Дұрыс N-бұрыш жағының берілген ұзындығы бойынша оның ішкі бұрыш
мөлшерін, ауданын, іште сызылған және сыртта сызылған шеңберлер
радиустарын табыңыздар.
29) A(XI, Yl), В(Х2, Y2) және С(ХЗ, Y3) нүтелері бір түзуді жатады ма,
анықтау.
30) Жазықтықта өз шыңдарындағы координаттарымен N үш бұрыштар берілген. Ең
үлкен ауданымен үш бұрышты табу.
31) Координаттар осьтері мен y=ax+b теңдеуімен берілген түзуден
құрастырылған үш бұрыш қай координаттық тоқсанда орналасқанын
анықтаңыздар.
32) Сандық түзу Al, А2, A3, ..., AN нүктелерімен кесінділерге бөлінді.
Берілген Х нүктесі қай кесіндіге жатады?
33) Келесінін анықтау:
a) Берілген бүтін сан жұп па;
b) Теріс емес а санын оң b санына бөлгенде пайда болатын қалдығы r немесе
s берілген екі санның біреуіне тең болады деген дұрыс па;
34) N натурал саны берілген.
a) Оның ішіндегі жүздік санын анықтау;
b) n саны цифрларының қосындысының кубы n*n-ге тең деген дұрыс па;
c) n санында неше цифра;
d) оның цифрлар қосындысы неге тең;
e) n санының соңғы цифрасын анықтау;
f) бұл сан палиндром болады ма;
g) бұл сан үш бірдей цифрлардан тұрады деген дұрыс па;
h) санның барлық төрт цифрасы әр түрлі деген дұрыс па.
35) x, y, z сандары берілген. Келесіні табу:
a) min (x, y);
b) max (x, y);
c) max (x, y, z);
d) min (x, y, z);
e) max (x+y+z, xy);
f) min (x+y2, z+2*x).
36) Екі сан берілген.
a) Егер бірінші сан екіншіден кіші немесе тең болса, оны нөлге ауыстыру
керек, кері жағдайда бұл санды өзгеріссіз қалдыру керек;
b) Бұл сандырын кішісін екеінің жартылай қосындысына ауыстыру қажет, ал
үлкенін – екі есе көбейтіндісіне ауыстыру керек.
37) Үш сан берілген.
a) Тек (1, 3] аралығына жататын нүктелерді теру;
b) Егер олардың қосындысы 1-ден кіші болса, онда олардың ең кішісін басқа
екеуінің жартылай қосындысына ауыстырыңыздар, кері жағдайда x пен y-
тің кішісін қалған екі мәннің жартылай қосындысына ауыстыр.
38. Нүктенің координаталары берілген. Берілген нүкте қай ширекте жатқанын
анықтау.
39. Үш нүктенің координаталары берілген. Олар үшбұрыш жасайтынын анықтау,
егер жасаса, бұл үшбұрыштын түрін анықтау:
– теңқабырғалы, теңбүйірлі немесе тең емес қабырғалы;
– сүйірбұрышты, тікбұрышты немесе доғалбұрышты.
40. Екі нүктенің координаталары берілген Олар бір жартылай жазықтықта
жатыр ма?
41. Өз ақырлы координаталарымен кесінді берілген. Координат осьтерімен
бұл кесінді қиылыса ма?
42. a,b қабырғалары бар тік төртбұрышты c,d қабырғалары бар тік
төртбұрышқа кіргізуге бола ма?
43. Екі үшбұрыш қабырғаларының ұзындықтары берілген. Үшбұрыштар ұқсас па?
44. Шкаф пен есіктің өлшемдері берілген. Шкаф есікке кіре ме?
Циклдер
Көп жағдайларда аргументтердің әр түрлі мәндері бойынша алгоритмнің
белгілі-бір бөліктерін немесе алгоритмдік тілдің бірнеше операторлар тобын
бірнеше рет қайталауға тура келеді. Осындай процестерді ұйымдастыру үшін
циклдік құрылымы бар алгоритмдер, дәлірек айтқанда, қайталанатын
алгоритмдер (операторлар) пайдаланылады. Қайталанатын бөліктер әр түрлі
заңдылықтар, ережелер бойынша құрастырылады.
Си тілінде қайталау процесін үш түрлі жолмен ұйымдастыруга болады:
– алдын ала берілген шарт бойынша қайталауды ұйымдастыру;
– келесі шарт бойынша қайталауды ұйымдастыру;
– параметрдін мәні бойынша қайталауды ұйымдастыру.
Бұл қайталаудың қайсысын алсақ та, олар қайталану
операторының көмегімен жүзеге асырылады. Қайталану операторлары құрама
операторлардың қатарына жатады.
Параметрлі қайталану командасы
Көп жагдайларда қайталану саны белгілі болғанда, шартты параметрлі
қайталану операторын пайдалануға болады. Параметрлі қайталану операторының
алгоритмдік тілдегі жазылу форматы:
Си тіліндегі жазылу форматы:
For (қайталану парметрінің бастапқы мәні; шарт; қайталану
инкременті)
{Қайталантын командалар сериясы}
Мұндағы, қайталану параметрінің бастапқы мәні - меншіктеу командасы
арқылы беріледі; ал, шарт арқылы қайталану командасының соңғы мәні
көрсетіледі; қайталану инкременті - бұл қайталану параметрінің мәнінің 1-ге
артып отыратынын көрсетеді.
1 - мысал. а!-ды есептейтін бағдарламаны қарастырайық.
#includeiostream
using namespace std;
int main() {
int i,a,p;
cina;coutendl; p=l;
for (i= 1; i=a; i++)
p=p* i;
cout"a!= “pendl;
system(“pause”);
}
Мысалдан көріп отырғанымыздай, егер қайталанатын командалар саны біреу
ғана болса, онда {} жақшасына алынбайды.
Қайталану параметрінің қадамның мәніне тәуелді параметрдің бастапқы мәні
мен шарттың жазылу орындары алмасып орналасады. Қайталану параметрінің мәні
1-ге артқан жағдайда (инкремент) і++ жазылса, ал, параметрдің мәні -1-ге
кемігенде (декремент) і - - жазылады. Жоғарыда келтірілген мысал қайталану
параметрінің кему реті бойынша былай өзгереді:
for (i=a; i=l; i - -) p=p*i;
2-мысал. 1+2+3+4+...+n сандарының қосындысын есептеуге арналған бағдарлама
құр.
#includeiosteam
using namespace std;
int n,s,elem,p;
int main () {
cout”N engiz”endl;
cinn;
coutendl;
p=1;
for(int i=1;i=n;i++) {
elem=I;
s+=elem;
}
cout”Katar sani”’ ‘sendl;
system(“pause”);
}
3-мысал.1+...; n қосындыны есептеуге арналған бағдарлама құр.
#includeiostream
#includemath.h
using namespace std;
int main ()
{
int n;
float s;
cout"n-sanin engiz"endl;
cinn; coutendl;
s=0;
for (int i=1;i=n;i++)
s=s+pow(-1,i)i;
cout"kosindi:"sendl;
system("pause");
}
4-мысал. S=0.11!+0.22!-0.33!+...-1.515! есептеуге арналған бағдарлама
құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int n;
float t,s,p;
cout"n sanin engiz"endl;
cinn; coutendl;
s=0;t=0.1;p=1;
for (int i=1;i=n;i++)
{
p=p*i;
s=s+tp; t=t+0.1;
}
cout"S="sendl;
system("pause");
}
5-мысал.1++; n қосындыны есептеуге арналған бағдарлама құр.
#includeiostream
#includemath.h
using namespace std;
int main () {
float s; int i,n;
cout"n sanin engiz"endl;
cinn; coutendl;
s=0;
for(int i=1;i=n;i++)
s=s+pow(-1,i+1)i;
cout"kosindi:"sendl;
system("pause");
}
Алдын-ала берілген шарт бойынша қайталау
Си тілінде алдын-ала берілген шaрт бойынша қайталау While операторы
арқылы жазылады. Бұл оператордағы қайталану саны бағдарламаның орындалуы
барысында анықталады.While сөзінен кейінгі жазылған шарт ақиқат болғанша
цикл денесі қайталана береді. Цикл аяқталуы үшін цикл денесінде оның
аяқталу шартына әсер ететін құрылым міндетті түрде болуы тиіс. Егер While
сөзінен кейін жазылған шарт бірден сақталмайтын болса, онда қайталану
денесі бірде-бір рет орындалмай қайталану командасы жұмысын аяқтауы мүмкін.
Көпшілік жағдайларда бүл қайталанудың бұл түрі жуықтап есептеулерді
ұйымдастыру, клавиатурадан немесе файлдардан мәліметтерді іздеу мен өңдеу
есептерінде пайдаланылады. Оператордың жазылу форматы:
While (шарт) {қайталанатын командалар сериясы }
1-мысал S=(ln^2 0,1)1^2.1 +(ln^4 0.2)2^2.2 +(ln^6 0,3)3^2.3 +(ln^8
0.4)4^2.4 + ... +(ln^20 l)10^3 есептеуге арналган бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main ()
{
float s,t,m; int i,k;
const int n=10;
cout"kosindini esepteu"endl;
s=0; i=1; t=2.1; k=2; m=0.1;
while (i=n)
{
s+=pow(log(m),k)pow(i,t);
t+=0.1; m+=0.1; k+=2; i++;
}
cout"s="sendl;
system("pause");
}
2-мысал. S=0,11!+0.22!+0,33!+...+1,515! қосындысын есептеуге
арналған бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
float s,t; int n,i,p;
cout"n-sanin engiz:"endl;
cinn; coutendl;
s=0: i=1; t=0.1 ;p=l;
while (i=n) {
p*=i; s+=tp: t+=0.1; i++;
}
cout"s="sendl;
system("pause");
}
Келесі шарт бойынша қайталау
С тілінде келесі шарт бойынша қайталау (дейін қайталану командасы) Do
While операторы арқылы жүзеге асырылады. Қайталанудың бұл турінде қайталану
саны бағдарламаның орындалуы барысында анықталады. Бұл команда While
сөзінен кейін жазылған шарттың мәні ақиқат болғанша жалғаса береді. Цикл
аяқталуы үшін цикл денесінде оның аяқталу шартына әсер ететін құрылым
міндетті түрде болуы тиіс. Егер While сөзінен кейін жазылған шарт бірден
сақталмайтын болса да, онда қайталану денесі кемінде бір рет орындалады.
Көпшілік жағдайларда, қайталанудың бұл түрі жуықтап есептеулерді
ұйымдастыру, клавиатурадан немесе файлдардан мәліметтерді іздеу мен өңдеу
есептерінде пайдаланылады. Оператордың жазылу форматы:
DO {
қайталанатын командалар сериясы
}
WHILE шарт
1-мысал. Енгізілген бүтін санның жай сан екенін анықтайтын бағдарлама
мысалын қарастырайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int a,b,c;
cout"san engiz:"endl; cina; coutendl;
b=2;
do
{
c=a % b;
if (c!=0) b++;
}
while (c!=0);
if(b == a)
cout"jai san"aendl;
else cout"jai san ernes"' 'aendl;
system("pause");
}
2-мысал. х=8.7,...,2,1 болғанда, у= х2 мәндерін табатын бағдарлама құрайық.
#includeiostream
#includemath.h
using namespace std;
int main () {
int x,y;
x=8; do
{
y=x*x;
cout"y- mani:"endl;
coutyendl;
cout"x-mani: "endl;
coutxendl; x--;
}
while (x!=0);
system("pause");
}
Практикалық тапсырмалар
1. Натурал санның цифрларының қосындысын табу.
2. Натурал санның максимальді цифрін шығару.
3. Натурал санның барлық жұп цифрлерін жою.
4. Натурал сан қарапайым болатын анықтау.
5. берiлген натурал санның цифрлары санның ортасы бойынша Симметриялы
екенiн анықтау.
6. Берілген натурал санның барлық бөлгіштерін табу.
7. Берілген натурал саннын қарапайым бөлгіштерге жіктеу.
8. Берілген N натурал санынан үлкен емес барлық қарапайым сандарды.
9. S тенгесiн 5, 10 және 20 тенгелермен төлемiнiң барлық нұсқаларын беру.
10. Цифрлар қосындысы M-ге барлық төрт таңбалы сандарды шығару.
11. Жазуында бiрдей цифрлары жоқ барлық үш таңбалы сандарды шығару.
12. Көбейту кестесiн экранға шығару бағдарламасын құру.
1) -100 ден 100-ге дейінгі барлық тақ сандар қосындысын табу.
2) -100 ден 100-ге дейінгі барлық тақ сандар көбейтіндісін табу.
3) Тек қана қосу және алу арифметикалық амалдарын танитын қолданушы үшін
нақты А санының N дәрежесін (мұнда N натурал сан) табу бағдарламасын
құрастыру.
4) Берілген арифметикалық (геометриялық) прогресСияның керекті N мүшелері
қосындысын есептейтін келесі бойынша бағдарлама құрастыру:
a) Нөмірлері белгілі кез келген оның екі мүшесі бойынша;
b) Нөмірі белгілі прогресСияның кез келген мүшесі және прогресСия айырымы
(бөлгіш).
5) a1, ..., an натурал сандарны берілген.
a) жұп (тақ) сандар болып табылатын;
b) 3-ке бөлініп,5-ке бөлінбейтін;
c) Жұп сандардың квадраттары болып табылатын;
d) Жұп ретті нөмірге ие болатын және тақ сандар болып табылатын;
e) 7-ге бөлінгенде 1,2, немесе 5 қалдық санын беретін мүшелер санын
анықтау.
6) a1, ..., a50 бүтін сандарны берілген. Келесі сандар қосындысын табу:
a) 5-ке бөлінетін;
b) Тақ және теріс;
c) aii2 шартын қанағаттандыратын.
d) 5-ке бөлінетін және 7-ге бөлінбейтін.
7) N натурал саны берілген.
a) n2 саны жазуына 3 цифрасы кіреді ме, анықтау.
b) n саны цифларын кері ретте шығару.
c) n санының бірінші және соңғы цифрларын орындарымен аумастыру.
d) n саны жазуының басына және соңына 1-ді жазу.
8) m1 бүтін саны берілген.
a) 4km шартын қанағаттандыратын ең үлкен k бүтін санын табу;
b) n санынан үлкен 2r түріндегі ең кішкентай сан табу.
9) a1, ..., a40 бүтін сандар және p, q сандары берілген.
a) p-ға бөлінетін барлық сандар көбейтіндісін табу;
b) р-ға бөлінгенде қалдықта q қалатын сандарды анықтау;
c) теріс мүшелерді 0 санына аумастыру, ал оң мүшелеріне 0.5 санын қосу;
d) (3, 7) кесіндісіне кіретін мүшелер қосындысын анықтау;
e) Теріс мүшелер санын және нөлдік мүшелер санын табу;
f) Бірінші р санын кейін келетін мүшелер қосындысын есептеу;
g) 3-тен үлкен барлық сандарды 5-ке ауыстырып, олардың санын табу.
10) ∑(ai-bi)2 (I=1,...,30) есептеу, мұнда
ai=I, егер I- тақ болса, ai=I2, кері жағдайда;
bi=i2, егер I – тақ болса, bi=i3 кері жағдайда.
11) а1, ..., аn нақты сандар берілген. Келесі тұжырымдар ақиқат па:
a) теріс мүшелер саны оң мүшелер санынан көп;
b) тізімнің ең үлкен мүшесі модуль бойынша 1-ден үлкен.
12) а1, ..., аn тізімінде келесі сандар көршілестіктері санын анықтау:
a) екі оң сандар;
b) түрлі таңбаларымен екі сан;
c) бір таңбасымен екі сан, бұл кезде бірінші санның модулі екінші санның
модулінен үлкен болуы керек;
d) екі (үш) бірінен кейін бірі келетін нөлдік мүшелер.
13) N натурал саны берілген.
a) Оның барлық натурыл бөлгіштерін табу;
b) Барлық сондай q: n саны q2 санына бөлініп, q3 санына бөлінбеуі керек.
14) n натурал саны берілген.
a) n –нен кіші барлық натурал сандарды табу;
b) бұл санның барлық қарапайым бөлгіщтерін табу;
c) оны натурал сандардың үш квадраттар қосындысы түрінде көрсетуге болады
ма.
15) Бөлгіштер қосындысы максимальды болып табылатын 1 ден 10000-ға дейінгі
натурал санын анықтау.
16) 100 бірінші қарапайым сандарды табу.
17) n және m натурал сандары берілген.
a) n≤p≤m шартын қанағаттандыратын барлық қарапайым р сандарды анықтау;
b) цифрлары қосындысының квадраты m-ге тең болатын n санынан кіші барлық
натурал сандарды анықтау.
18) n натурал саны мен а1, ..., а25 және b1, ..., bn бүтін сандары берілген
(қайталанылатындар жоқ).
a) а тізіміне кірмейтін b тізімінің барлық мүшелерін шығару;
b) а тізімінің барлық мүшелері b тізіміне кіреді деген ақиқат па;
c) тізімде бір рет қана кездесетін барлық сандарды анықтау;
d) тізімнің әр түрлі мүшелер санын анықтау;
e) тізімде бір рет қана кездесетін барлық сандар қанша болатынын анықтау;
f) ең болмағанда бір бірдей сандар жұбы бар ма, анықтау.
19) Әр түрлі бес сан берілген. Олардың арасынан екі сан табу, олардың
айырым модулі:
a) Ең үлкен мәнді;
b) Ең кіші мәнді.
20) N натурал саны , а1, ..., an бүтін сандар берілген.
a) Қандай сан бірінші кездесетінін анықтау – оң немесе теріс. Егер барлық
мүшелер нөлге тең болса, ол туралы хабарлау;
b) Тізімнің бірінші жұп мүшесі нөмірін табу;
c) Тізімнің соңғы тақ мүшесі нөмірін табу;
d) Келесі сандар қандай тізім (көбеюші, кемеюші) құратынын анықтау
выяснить:
- а1, ..., an, 2a1, 3a2, ..., (n+1)an;
- a1, ..., an, an+1, a(n-1)+2, ..., a1+n;
- a1, ..., an, n(a(n-1)+1), (n-1)(a(n-2)+2), ..., 2(a1+n-1).
21) х, у1, ..., у25 нақты сандары берілген. Арифметикалық ортасы х-ке ең
жақын болатындай тізімде екі сан табу.
22) х1, ..., х17 нақты сандары берілген. xi-xj мәндері қосындыларын табу
(1=ij=17).
23) а1, ..., а30 нақты сандары берілген. М – ең үлкен, m – ең кіші болсын.
(m, M) аралығына кіретін барлық тізімде жоқ нақты сандарды өсу ретінде
шығару.
24) х1, у1, ..., хn, yn натурал сандары берілген. Экранда xi, yi
координаттарымен нүктелер шығару және бір біріне ең алыс жұптарды
жұптау. Кесінді түзулерімен жұптау:
a) n нүктелердің әрқайсысын барлық қалған n-1нүктелермен;
b) бірдей жұптық нөмірлері бар нүктелерді;
c) әр түрлі жұптық нөмірлері бар нүктелерді.
25) x1, y1, c1, ..., xn, yn, cn натурал сандары берілген. әр xi, yi, ci үш
сандар нүктенің координаттары мен оның түсін береді. Бір түс
нүктелерінен:
a) біріншісін;
b) соңыншысын экранда шығару.
26) ҮШІН, ДЕЙІН және ӘЗІРШЕ циклдарын пайдалануымен тізімнің бірінші 10
мүшелер қосындысын есептейтін бағдарлама жасау. An тізім мүшесін
кестеден алу керек.
1. 2. 3.
4. 5. 6.
7. 8. 9.
10. 11. 12.
13. 14. 15.
26. y = , мұнда P(x) =
a S(t) = sin(2t+2)
27. y = , мұнда P(x) =
a S(t) = cos(t3)
28. y = , мұнда P(x) =
a S(t) = 2t + 12
29. y = , мұнда P(x) =
a S(t) = arctg(t-2)
30. y = , мұнда P(x) =
a S(t) = sin(t)-cos(t)
31. y = , мұнда P(x) =
a S(t) =
32. y = , мұнда P(x) =
a S(t) =
33. y = , мұнда P(x) =
a S(t) =
34. y = , мұнда P(x) =
a S(t) =
35. y = , мұнда P(x) =
a S(t) =
36. Процедура ЕҮОБ (а, в) табады.
37. Процедура санды жұптыққа тексередi.
38. Процедура натурал санның цифрларын керi ретке шығарады.
39. Процедура берiлген қатарда цифрлық Символдардың бар екенiн тексередi.
40. Процедура массивтiң максималдық элементiнiң нөмiрiн табады
41. Процедура өсу ретi бойынша екi санды сұрыптайды.
42. Функция кодтары өсу ретiнде жол Символдарын сұрыптайды.
43. Функция қайталанатын Символдарды жолдан өшiредi.
44. s, t нақты сандары берілген.
f(t, -2s, 1.17) + f(2.2, t, s-t) табу, мұнда f(a,b,c) = (2a-b-
sinc)(5+c).
45. s, t нақты сандары берілген.
g(1.2, s) + g(t, s) – g(2s-1, st) табу, мұнда g(a,b) =
(a*a+b*b)(a*a+2ab+3b*b+4).
46. a, b, c нақты сандары берілген.
(max(a, a+b) + max(a, b+c))(1+ max(a+bc, 1, 15) табу.
47. a, b нақты сандары берілген.
u = min(a, b), v = min(ab, a+b), min(u+v*v, 3.14) табу.
48. а1, ..., аn, b1, ..., bm нақты сандары берілген. а1, ..., аn және b1, ..., bm
тізбектерінде ең үлкен саннан кейін келетін барлық мүшелерді 0,5 санына
ауыстырыңыздар.
49. а1, ..., аn, b1, ..., bm, k бүтін сандары берілген. а1, ..., аn тізбегінде k
мәнімен бір де бір мүше табылмаса, барлығынан кіші емес реті бойынша
бірінші болып келетін мүшені k мәнімен ауыстырыңыздар. Осы ереже бойынша
b1, ..., bm тізбегін түрлендіру керек, 10 мәніне ауыстыру қажет.
50. N натурал саны, a1, ..., an бүтін сандар берілген. Келесіден тұратын
тізімнің кесінділерін табу:
a) Толық квадраттардан;
b) 5 дәрежесі;
c) Қарапайым сандар.
Әр жағдайда қарастырылатын кесінділердің ең ұзынын алу керек.
51. N натурал саны берілген. 1, 2, ..., n сандары арасынан екі натурал санның
толық квадраттары қосындысы түрінде көрсетуге болатын сандарды табу.
52. Нақты n саны берілген. Анық сандар x1, y1, x2, y2, ..., xn, yn.
бірыңғай кезекті қарағанда биіктігі (x1, y1), (x2, y2), ..., (xn, yn)
координаталы болатын n – бұрышының ауданың табу керек.
53. Нақты n саны берілген. n, n+1, ..., 2n сандары арасында егіз болып
кездесетін жай сандар, яғни олардың арасындағы екі сан айырымы нольге
тең сандар ды анықтау.
54. Процедураға қарайтын Символ әріп болып келетін және кері қарағанда
жалған мәнді нәтижелі болатын процедура құру .
55. Процедураға қарайтын Символ әріп болмайтын және кері қарағанда сәйкесті
тізбектегі әріп нәтижелі болатын процедура құру.
56. Бастапқы тізбекті Символдардың қысу процедурасын құру: Әрқайсы
тізбекшесі бір Символдың бірнеше енгізуден құралады, мәтінді
аумастырады: Символ (енгізу саны).
57. Бастапқы тізбекке берілген Символдың оң енгізу жолынан позициясын
анықтауға рұқсат беретін процедура құрастырылсын. Егер тізбекте Символ
болмаса, онда процедураның нәтижесі – 1 болуға тиісті.
58. Бастапқы Символ тізбекте барлық нольдер бірлікке, барлық бірліктер
нольге айналатын процедура құру. Аумастыру тізбектің берілген
позициясынан басталу керек.
59. Процедураға қарағанда нәтижесінде алғашқы берілген тізбектің әрбір
Символы жойылып, сонымен қоса ол екінші берілген тізбекке қараған
процедура құрастыру.
Бiр өлшемдi сандық массив
Массив дегеніміз - бір типтегі берілгендер жиыны. Басқаша айтқанда,
массив - бір атауға біріктірілген айнымалылардың реттелген тізбегі.
Айнымалылардың - массив элементтерінің типтері бірдей болады. Массив бір
ғана атпен белгіленеді. Мысалы, накты сандардан құрылган тізбекті R атаулы
массив деуге болады. Мысалы:
1.6, 14.9, -5.0, 8.5, 0.46 - ны бір өлшемді массив деп, оған А деп атау
беруге болады. Массивеің әр элементі массивтін атымен белгіленеді де, оның
индексі койылады. Массив элементтері индекстері бойынша реттеліп жазылады.
Мысалы, Аi А2,...,Аn немесе жалпы түрде А„і=1,2,...,n. C++ тілінде массив
элементтерінің индексі алгоритмдік тілдегі тәрізді тік жақшаға алынып
жазылады, мысалы, А[і]. Жоғарыдағы массивте А[0]=1.6, А[1]=14.9 жэне т.с.с.
мәндер қабылдайды. C++ тілінде массив элементтерінің индекстері 0-ден
бастап нөмірленеді.
С тілінде басқа бағдарламалау тілдеріндегі тәрізді массив элементтерін
кездейсоқ сандар генераторын пайдалып та енгізуге болады. Ол үшін stdlib.h
файлы арқылы орындалатын кездейсоқ сандар функциясы пайдаланылады. Бұл
функция арқылы қабылданатын мән О..RAND_МАХ=32767 аралығынан алынады және
оның типі бүтін болады.
Сөйтіп, C++ тіліндегі массив ұғымы алгоритмдік тілдегі кесте ұғымына
сәйкес келеді. C++ тілінде массивтің өлшемін - тұрақты арқылы (#define size
5) - көрсетуге болады. Басқа бағдарламалау тілдеріндегі тәрізді массив
элементтерін енгізу, массив элементтеріне операциялар қолдану және массив
элементтерін шығару (есеп шартына байланысты) қайталану командасы арқылы
жазылады. Мысалы, массив элементтерінің сипатталуы:
main() {іnt а[size];
Массив элементтерін енгізу:
for (i=0: isize;i-H-) {
printf("a[%i]=",i+l);
scanf("%i",&a[i]);
Массивтегі нөлдік емес элементтерді табатын бағдарлама бөлігі төмендегідей:
for (i=0; isize;i++) {
if (a[i]!=0) n++:
}
Егер есеп шартында массив элементтерін шығару талап етілсе, онда ол
қайталану операторларының бірін арқылы жүзеге асырылады.
1-мысал. Массивтің нөлге тең элементтердің санын анықта.
#includeiostream
using namespace std;
int main() {
int n=10;
int b[n], k;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i];
k=0;
for(int i=0; in;i++)
if(b[i]==0) k=k+1;
cout"nul sandarin sani"' 'kendl;
system("pause");
}
2-мысал. Бір өлшемді массивтің тақ элементтерін экранға шығаратын
бағдарлама кұрайык.
#includeiostream
using namespace std;
int main() {
int n=10;
int b[n], k;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i];
k=0;
for(int i=0; in;i++)
if(b[i]%2!=0) coutb[i]' ';
system("pause");
}
3-мысал. A_i (i=1,n) n=4;массиві берілген. Берілген к санынан үлкен болатын
массив элементтерінің санын анықтауға бағдарлама құрыңыз.
#includeiostream
using namespace std;
int main() {
int n=4;
int b[n], s,k;
cout"k sanin engiz"endl;
cink; coutendl;
cout"sandardi engiz"endl;
for(int i=0;in;i++)
cinb[i]; coutendl;
cout"k saninan ylken sandar"endl;
for(int i=0; in;i++)
if(b[i]k) coutb[i]' ';
system("pause");
}
Практикалық тапсырмалар
1. Берілген К сандарынан массивтің барлық элементтерінің белгісін жұп
(тақ) нөмірлерін қарама қарсысына ауыстырыңдар. .
2. Ұсынылған бір өлшемді массивте барлық нольдік элементтерді бірлікке
ауыстырыңдар.
3. Кез келген массивте көршілес жұп және тақ нөмірлі элементтердің
орындарын ауыстырыңдар. Қосымша маСивтерді қолдануға болмайды.
4. Берілген М сандарынан құрылған А маСивтен М 2 санына құрылған В
маСивін келесі формула бойынша құрындар: В (I) = (А (I)+A (М+1 --
I))2.
5. Нақты S (N). маСиві берілген. Дисплей арнасында И бағандарынқұрындар,
1-ші бағанның биіктігі S (1) тең болу керек.
6. Массивтің барлық тақ (жұп) элементтерінің 1 сандардан құралған
белгісін ауыстырыңдар (тұтас емес элементтер болу жағдайын қарастыру).
7. Массивті қысыңдар, әрқайсы екінші элементтің жою арқыл. (қосымша
массивтерді қолдануға рұқсат етілмейді).
8. A(N) бір өлшемді массив берілген, тек қана нольдер мен бірліктерден
құралған. Қатан реті бар ма екенін тексеріңдер.
9. Ұсынылған бір өлшемді массивтен, S мөлшерлі, екі өлшемді массив
құрыңдар, бірақ жаңа массивтің бірінші тізбегі біріншілік массивтің
жұп нөмірлі элементтері, ал екіншісі – тақ нөмірлі элементтері болсын.
10. Кестенің оң таңбалы элементтерінің қосындысын табыңдар. .
11. Массивтің 10-нан кіші элементтерін олардың үш дәрежесімен ауыстырыңдар.
12. Жол массивінің бөлігін максималдық және минималдық элементтері арасында
өсу ретімен ретке келтіріңдер.
13. Массивті шеңбер бойынша циклды жылжытыңдар, массивтің алғашқы элементі
соңғы болсын.
14. Массивті шеңбер бойынша циклды жылжытыңдар, массивтің соңғы элементі
алғашқы болсын.
15. 1-ден 100-ге дейінгі интервалда тұтас сандарды енгізіп, кез келген
сандар генераторы арқылы. Осы массивте сандар қайталанбауы қажет.
16. Берілген массивте көршілес орналасқан тең элементтер бар ма екенін
тексеріңдер.
17. Берілген сандар массивінде кемімейтін ретпен орналасқан ба екенін
тексеріндер.
18. Қоптеген нөльдік элементтері бар, В(М) бір өлшемді массив берілген.
Кездесетін барлық нөльдер топтары бір нөльге ауыстырыңдар.
19. Алдынғы есептің шарты бойынша кездесетін барлық нөльдерді екі саннан
құралған элементке ауыстырыңдар, мұнда бірінші саны - 0, ал екіншісі –
топтағы нөльдер саны.
20. В массиве M(N) маСивінде қосымша маСивтерді қолданбай К элементтерін
жылжытыңдар. Біріншілік К элементтер орнында қалып, соңғы К
жойылады.
21. По условию предыдущей задачи осуществите циклический сдвиг (т. е.
последние К элементов перемещаются на первые К мест).
22. Кез келген бір өлшемді массивтің элементтерін өсу тәртібімен
орналастырыңдар.
23. А және В екі кез келген элемент санынан құралған бір өлшемді массивтер
берілген. Екі массивтің элементтері өсу тәртібімен орналасқан C++
массивін құрастырыңдар.
24. (К және L көлемді) екі ретке келтірілген массивтерден K+L көлемді бір
массив келесі тәртіппен реттелген:
a) бастапқы массивтер тәрізді;
b) кері бағытта.
25. Кез келген бір өлшемді (екі өлшемді) массивтің барлық тең
элементтерінің инжекстерін басыңдар.
26. массивтің максималды және минималды элементтер арасында орналасқан
элементтер қосындысын табыңдар.
27. Кез келген бір өлшемді ( екі өлшемді) қанша әр түрлі саңдар болатынын
анықтаңдар.
28. Берілген бір өлшемді массив үшін оның элементтерінің қосындысы берілген
f санына тең болған индекстерін белгілеңдер (ондайлар болса).
29. С(6) бір өлшемді массив берілген. Оның әртүрлі үштік элементтерін
басыңдар. ( Бастапқы массивте бірдей элементтер болуы мүмкін).
30. [А, В] кесіндісіне түскен Al, А2, AЗ,...,AN, реттегі минималды және
максималды элемент нөмірін табыңдар.
31. D (15) массив мөлшері берілген. а-дан b-ға дейінгі интервалды
қарастырыңдар. Осы интервалда D (a)-ға немесе D (b)-ға тең элементтер
бар ма екенің анықтап, олардың саны мен қосындысын санаңдар.
32. Бастапқы массивте минималды және максималды элементтер арасындағы
элементтерді жойындар.
33. С(20) бір өлшемді массив берілген. Минималдық элементті табыңдар. Егер
ол жұп орнында тұрса, онда барлық жұп элементтерін жойыңдар, немесе тақ
орындардағы элементтерді минималдық элемент мәнімен ауыстырыңдар.
34. n элементтерден құралған бір өлшемді массивте есептеңдер:
a) теріс (оң) таңбалы элементтер соммасын;
b) Массивтің максималды (модуль бойынша) және минималды (модуль бойынша)
элементтер көбейтіндісін табыңдар. ;
c) массивтің жұп (тақ) нөмірлері арасындағы көбейтіндісін табыңдар.
d) Бірінші және соңғы нөльдік элементтері арасында орналасқан массивтің
элементтер қосындысын табыңдар;
e) Бірінші және соңғы оң таңбалы элементтері арасында орналасқан массивтің
элементтер қосындысын табыңдар;
f) бірінші элементтен кейін орналасқан нөльге тең массив элементтер
модулінің қосындысын табыңдар;
g) А және В диапазонында орналасқан массивтің элементтер санын табыңдар;
h) С көп массив элементтерінің санын табыңдар;
i) модуль бойынша максималды болып орналасқан массив элементтерінің
көбейтіндісін табыңдар;
j) Соңғы теріс таңбалы элементтен кейінгі орналасқан массив элементтері
толық бөлшектерінің косындысын табыңдар.
35. Бір өлшемді массивке келесі іс-әрекет жасаңдар:
a) Жұп және тақ орындарында орналасқан элементтерді жекелеп өсу бойынша
ретке келтіріңдер.
b) Максималды элементтен 20%-ға ауытқаған элементтер ең алдымен, ал
басқалары кейіннен орналасқан етіп массивті түр өзгертіңдер;
c) МаСивтегі элементтер тәртібін керіге аударыңдар;
d) толық бөлігі 1-ден аспайтын элементтер ең алдымен, ал басқалары кейіннен
орналасқан етіп массивті түр өзгертіңдер;
e) Массивтің барлық теріс таңбалы элементтерін олардың шаршыларымен
ауыстырып, массив элементтерін өсу ретімен орналастырыңдар;
f) Массивті ондағы [a, b] интервалындағы барлық элементтерін жою жолымен
қысыңдар. Бос элементтерді нөльдермен толтырыңдар.
g) [a, b] интервалында толық бөлігі орналасқан барлық элементтерді
біріншілік ретпен, ал қалғандарын кейіннен орналастырып массивті түр
өзгертіндер;
h) Біріншілік ретпен жұп позициялардағы элементтерді, екіншілік- тақ
позициядағы элементтерді массивті түр өзгертіндер;
i) Біріншілік – нөльге тең элементтерді, одан кейін басқаларын орналастырып
массивті түр өзгертіңдер;
j) [a, b] интервалында модулі орналасқан элементтердің барлығын жою арқылы
массивті қысыңдар, ал массивтің соңында босаған элементтерді нөльдермен
толтырыңдар;
k) Модулі 1-ден аспайтын барлық элементтерді жою арқылы массивті қысыңдар,
массив соңында босаған элементтерді нөльдермен толтырыңдар;
l) Алдымен оң таңбалы элементтерді, кейіннен теріс таңбалы элементтерді
орналастырып, массивті түр өзгертіңдер.
36. Массивтiң максимальды элементтерiнiң нөмерлерiн шығару.
37. Массивтiң бiрiншi терiс элементiне дейiнгi элементтердi өсу ретiнде
реттеу.
38. Массивтiң бiрiншi элементiнен кейiнгi элементтердi керi ратта шығару.
39. Массивтiң жұп элементерiнiң цифрларын керi ретте қою.
40. Массивтiң бiрiншi жұп элементiн жою
41. Массивке көрсетiлген позицияға берiлген элементтi қосу.
42. Бiр массивтен екi массив шығару: бiреуi - оң элементтерден, екiншiсi –
терiс элеметтерден тұратын.
43. Екi массивтен өсу ретiнде бiр жаңа массив шығару.
44. Массивтiң барлық қарапайым сандарын экранға шығару бағдарламасын құру.
45. Массивте палиндром сандар бар екенiн анықтайтын бағдарламаны құру.
46. Массив элементтерiнiң екiлiк жазуында:
• бiрлiктердiң жұп саны
• бiрлiктердiң максимальды саны
бар элементердi шығару.
Екi өлшемдi массив
Егер массив атауында бір ғана нндекс болса, онда ол массивті бір өлшемді,
ал екі индекс болса - екі өлшемді жэне т.с.с. n индекс болса, n өлшемді
массив дейді. Бір өлшемді массив элементтері вектор, ал екі өлшемді массив
матрица деп аталады.
Екі өлшемді массивті есеп шығаруда пайдаланғанда басқа бағдарламалау
тілдеріндегі тәрізді C++ тілінде де массив элементтерін енгізу, өңдеу және
шығару кезінде қосарланган цикл жазылады. C++ тілінде массив элементтерінің
индекстері 0-ден бастап нөмірленетіндіктен, мысалы, 3 жол, 3 бағаннан
тұратын матрицаны сипаттау үшін #definе n 2 деп көрсетеміз де, шартты
(і=n: і=n;) деп аламыз. Нәтижесінде 3 жол, 3 бағаннан тұратын матрицамен
жұмыс істеуге мүмкіндік аламыз. Бүтін типті екі өлшемді массивтің
айнымалылар бөлігіндегі сипатталуы төмендегідей:
Int a [n][n]
Ал, екі өлшемді массив элементтерін енгізу және шығару үшін сәйкес
iostream.һ немесе stdio.һ модульдерінің функцияларының бірін
пайдаланамыз. Ол былай жүзеге асырылады:
for (i=0; i=n; i++)
for (j=0; j=n; j++) cina[i][j];
Екі өлшемді массив элементерінің өнделуі де қосарланған циклдің ішінде
орындалады.
1- мысaл. Берілген квадрат матрицаның бас диагоналының бойында орналасқан
элементтерін экранға шығаратын бағдарлама мысалын қарастырайық.
#includeiostream
using namespace std;
int main() {
const int n=4;
int a[n][n]; int i,j,k;
cout"massiv elementiri:"endl;
k=0;
for ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz