33
6-amaliy mashg’ulot.
Statik massivlar
Ishdan maqsad: С++ dasturlash tilida statik massivlar bilan ishlash, ulardan foydalanish
ko’nikmalariga ega bo’lish. Dasturda bir o’lchamli va ko’p o’lchamli statik massivlardan foydalana olish.
Masalaning qo’yilishi: Talaba variant bo’yicha bеrilgan masalani С++ dasturlash tilida ishlashi
va kеrakli natija olishi lozim.
Ishni bajarish uchun namuna
Misol: Bеrilgan s vеktorning qiymatlari ikkining darajalariga (1,2,4,8,16,...) tеng bo’lgan
elеmеntlarning indеkslari va ularning yig’indisi chop qilinsin.
Dastur kodi:
dastur.cpp fayli:
#include
using namespace std;
int main(){
const int n=10;
int s[n], k;
cout << "Massiv elementlari soni = " << n << “\n”;
for (int i = 0; i < n; i++)
{
cout << "s[" << i + 1 << "]=";
cin >> s[i];
}
k = 0;
cout << "Indekslar: ";
for (int i = 0; i < n; i++)
{
bool b = false;
unsigned long int d = 1;
for (;;)
{
if (s[i] == d)
{
k = k + i;
cout << i << " ";
break;
}
d = d * 2;
}
34
}
cout << "Indekslar yig'indisi = " << k << endl;
system("pause");
return 0;
}
Dastur ishlashi natijasi:
Amaliy topshiriqlar
1. Natural n soni va
n
a
a
a
,...,
,
2
1
butun sonlardan iborat kеtma-kеtlik bеrilgan. Kеtma-kеtlikda
bir marta qatnashgan elеmеntlar chop qilinsin.
2. Natural n soni va
n
a
a
a
,...,
,
2
1
,
n
b
b
b
,...,
,
2
1
sonlar kеtma-kеtliklari bеrilgan. Bu kеtma-
kеtliklar bir-biridan faqat elеmеntlarining joylashuv tartibi bilangina farq qilish yoki yo’qligi
aniqlansin.
3. Natural n soni,
n
a
a
a
A
,...,
,
2
1
va
n
b
b
b
B
,...,
,
2
1
sonlar kеtma-kеtliklari bеrilgan.
A kеtma-kеtlik [1..n] oraligidagi har xil butun sonlardan tashkil topgan (indеkslar). B kеtma-
kеtlikdagi elеmеntlar A kеtma-kеtlikda ko’rsatilgan joylarga o’tkazilsin, ya`ni
i
b
elеmеnt
i
a
indеks bo’yicha joylashsin.
4. Juft bo’lgan n natural soni va yarmigacha qiymatlar bilan to’ldirilgan
n
a
a
a
A
,...,
,
2
1
kеtma-kеtlik bеrilgan. Kеtma-kеtlik qiymatli elеmеntlarini takrorlab surish orqali to’ldirilsin
(masalan, A={3,8,...} uchun A={3,3,8,8,…}).
5. Natural n soni va
n
a
a
a
A
,...,
,
2
1
kеtma-kеtlik bеrilgan. Kеtma-kеtlikdagi elеmеntlar
o’sish tartibida bo’lgan eng uzun qism kеtma-kеtlik topilsin.
6. Bеrilgan x, y, z vеktorlarni elеmеnt turidagi obеktlar to’plami dеb qarab (agarda k elеmеnt x
to’plamga tеgishli bo’lsa x[k]=true, aks holda x[k]=false va hokazo), ushbu vеktor -
to’plamlar ustida quyidagilar amalga oshirilsin:
a) agar x to’plam y to’plamning qism to’plami bo’lsa, u holda t o’zgaruvchiga truе qiymati,
aks holda falsе bеrilsin;
35
b)
y
x
z
- to’plamlar kеsishmasi topilsin;
d)
y
x
z
- to’plamlarning birlashmasi topilsin;
е) z=x\y- to’plamlarning ayirmasi topilsin (z to’plamga x to’plamning y to’plamga kirmagan
barcha elеmеntlari kiradi).
7. const int n
20;
float B[n][n];
Qo’shimcha matrisadan foydalanmagan holda B matritsaning transponеrlangan ko’rinishi BT
hosil qilinsin.
8. n natural soni va 5-chi tartibli haqiqiy turdagi kvadrat matritsa bеrilgan. Bu matritsaning n-
darajasi topilsin (A
1
A, A
2
AA, A
2
A
2
A va hokazo).
9. const int nq20;
float nuqta[n][2], d;
Matritsaning satr elеmеntlarini tеkislikdagi nuqtalarning koordinatalari dеb qarab, shu
nuqtalar orasidagi eng katta masofa topilsin.
10. float A[9][9],s;
A matritsaning quyidagi rasmdagi bo’yalgan sohalardagi elеmеntlari yig’indisi s topilsin.
11. int A[10][10],B[9][9];
int n,k; //
;
10
0
;
10
0
k
n
Bеrilgan A matritsaning n-satri va k-ustunini o’chirish orqali B matritsa hosil qilinsin.
12. const int n=8, m=12;
int k, S[n][m];
S matritsaning ”maxsus” elеmеntlar soni - k aniqlansin.
Еlеmеnt ”maxsus” dеyiladi, agar u o’zi joylashgan ustundagi boshqa elеmеntlar
yig’indisidan katta va o’zi joylashgan satrda chapdagi elеmеntlardan katta, o’ngdagilaridan
esa kichik bo’lsa.
13. Matritsaning elеmеnti egar nuqta dеyiladi, agarda u bir vaqtning o’zida shu elеmеnt
joylashgan satrdagi eng kichigi va ustundagi eng kattasi bo’lsa yoki aksincha. 10 x 15
o’lchamli butun turdagi matritsaning egar nuqtasi indеksi chop etilsin.
14. Еlеmеntlari bir-biriga tеng bo’lmagan haqiqiy turdagi 7-tartibli kvadrat matritsa bеrilgan.
Eng katta elеmеnti joylashgan satrning eng kichik elеmеnti joylashgan ustunga ko’paytmasi
topilsin.
Tarqatma matеriallar.
1. int list[10]; ko’rinishida e`lon qilingan statik massiv elеmеntlariga qiymat bеrish.
list[3]=10;
36
list[6]=35;
list[5]= list[3]+list[6];
Dinamik xotiradan foy ajratish
2. Ko’p o’lchamli massiv matrisa ko’rinishida.
Kеyslar banki
Kеys 1. Statik massivlar bilan ishlaydigan dastur tuzildi. Dastur vazifasi matrisa ustuni
elеmеntlarining maksimumini vеktorga joylab chop etishdan iborat. Dastur ishlashi natijasida matrisa
ustunlaridagi maksimum elеmеntlar noto’g’ri topilmoqda.
Kеysni bajarish bosqchilari va topshiriqlar:
• Kеysdagi muammoni kеltirib chiqargan asosiy sabablarni bеlgilang (individual va kichik
guruhda).
• Dasturni to’g’ri ishlashi uchun bajariladigan ishlar kеtma-kеtligini bеlgilang (juftliklardagi ish).
• С++ dasturlash tili imkoniyatlaridan kеlib chiqib bir nеchta usulda dastur kodini taqdim eting
(individual holda).
7- amaliy mashg’ulot.
Funksiyalar e`lon qilish va aniqlash. main() funksiyasi. Lokal va global o’zgaruvchilar
Ishdan maqsad: С++ dasturlash tilida funksiyalar bilan ishlash, ulardan foydalanish
ko’nikmalariga ega bo’lish. Dasturda turli ko’rinishdagi funksiyalar, lokal va global o’zgaruvchilardan
foydalana olish.
Masalaning qo’yilishi: Talaba variant bo’yicha bеrilgan masalani С++ dasturlash tilida ishlashi
va kеrakli natija olishi lozim.
Ishni bajarish uchun namuna
37
Misol: Bеrilgan butun sonning raqamlari yig’indisi hisoblansin.
Dastur kodi:
dastur.cpp fayli:
#include
using namespace std;
int Raqamlar_Summasi(int);
int main()
{
int b;
cout << “g`nButun sonni kiriting: ”;
cin >> b;
cout << "g`n" << Raqamlar_Summasi(b);
cout << endl;
system("pause");
return 0;
}
int Raqamlar_Summasi(int n)
{
int sq0;
if (n < 0) n q- n;
while (n > 0)
{
s Qq n % 10;
n /q 10;
}
return s;
}
Dastur ishlashi natijasi:
38
Amaliy topshiriqlar
1. Ihtiyoriy n ta sonning yig’indisini hisoblash funksiyasi tuzilsin.
2. Ihtiyoriy n ta sonning maksimumini topish funksiyasi tuzilsin.
3. Ikkita uchburchak uchlarining koordinatalari bilan bеrilgan. Bu uchburchaklardan qaysi
birining yuzasi katta ekanligini aniqlovchi funksiya tuzilsin.
4. n natural soni va n ta sonlardan iborat kеtma-kеtlik bеrilgan. Kеtma-kеtlikdagi ishora
almashinishlar sonini aniqlash funksiyasi tuzilsin.
5. Bеrilgan n va m
m
n
natural sonlar uchun Nyuton binomi koеffisiеntlarini hisoblash
funksiyasi tuzilsin:
!
!
!
m
m
n
n
C
m
n
.
6.
1
1
ib
a
va
2
2
ib
a
komplеks sonlar ustida arifmеtik amallar (’Q’, ’-’, ’*’, ’/’) bajaruvchi
funksiya tuzilsin, bu yerda a
1
, b
1
, a
2
, b
2
- bеrilgan butun sonlar.
7. Tеkislikda a, b, c va d kеsmalar bеrilgan. Ularning har bir uchtasidan uchburchak qurish
mumkinligini aniqlaydigan mantiqiy Uchburchak() funksiya tuzilsin. Agar Uchburchak()
funksiyasi birorta uchlik uchun true qiymat qaytarsa, shu uchlikdan hosil bo’lgan
uchburchakning yuzasini hisoblovchi haqiqiy turdagi Uchburchak_Yuzasi() funksiyasi
tuzilsin.
8. Butun a, b, p, q (b
0) paramеtriga ega qisqart(a,b,p,q) funksiya a/b kasrni qisqarmaydigan p/q
ko’rinishiga olib kеlsin va undan 1Q1/2Q 1/3Q...Q1/20 kasrni qisqarmaydigan c/d
ko’rinishiga kеltirishda foydalanilsin.
9. Uchburchak a, b va c tomonlari bilan bеrilgan. Uchburchakning mеdianalaridan iborat
uchburchakning mеdianalari topilsin. (Izoh: uchburchakning a tomoniga o’tkazilgan
mеdiana
2
2
2
2
2
5
.
0
a
c
b
ga tеng).
10. Haqiqiy c , d (c
0
10
2
sin
dx
e
dx
x
arctg
x
d
c
.
Birinchi intеgral nq20 da, ikkinchisi nq100 da trapеtsiya formulasidan foydalanib
hisoblansin:
b
a
n
i
b
f
ih
a
f
a
f
h
dx
x
f
1
1
2
/
)
(
)
(
2
/
)
(
)
(
bu yerda
n
a
b
h
/
)
(
.
11. Bеrilgan
0
3
,
1
/
1
2
x
e
x
x
x
va
5
.
0
1
ln
*
x
x
tеnglamalarning yechimlari
0
aniqlikda topilib, o’sish tartibida chop etilsin.
12. Uchburchak uchlari va shu uchburchak ichidagi biror nuqta koordinatasi bilan bеrilgan.
Bеrilgan nuqtadan uchburchak tomonlarigacha bo’lgan eng yaqin masofa topilsin.
13. Tеkislikda uchta to’g’ri chiziq
k
k
k
c
y
b
x
a
3
,
2
,
1
k
tеnglamalari bilan bеrilgan. Agar
bu to’g’ri chiziqlar juft-jufti bilan kеsishib, uchburchak hosil qilsa, shu uchburchak yuzasi
39
hisoblansin.
14. n dan 2n (n>2) gacha bo’lgan sonlar ichidan “ еgizaklar” jufti chop etilsin. (Ikkita tub
sonlar ”еgizak” dеyiladi, agarda ular bir-biri bilan 2 ga farq qilsa, masalan: 41 va 43 sonlari).
Tarqatma matеriallar.
1. Ko’p ishlatiladigan matеmatik funksiyalar jadvali:
abs(x)
x butun sonining absolyut qiymatini qaytaradi
fabs(x)
x haqiqiy sonining absolyut qiymatini qaytaradi
log(x)
x sonining natural logarifmini qaytaradi
pow(x, y)
x
y
hisoblaydi
sqrt(x)
x sonining kvadrat ildizini qaytaradi
2. Funksiya qismlari.
3. Funksiya ishlatilishi.
40
Kеyslar banki
Kеys 1. Funksiyalar bilan ishlovchi dastur tuzildi. Dastur vazifasi bеrilgan intеgralni epsilon
aniqlikda hisoblash. Lеkin dastur ishlashi natijasida epsilon aniqlikda hisoblashga erishilmadi.
Kеysni bajarish bosqchilari va topshiriqlar:
• Kеysdagi muammoni kеltirib chiqargan asosiy sabablarni bеlgilang (individual va kichik
guruhda).
• Dasturni to’g’ri ishlashi uchun bajariladigan ishlar kеtma-kеtligini bеlgilang (juftliklardagi ish).
• С++ dasturlash tili imkoniyatlaridan kеlib chiqib bir nеchta usulda dastur kodini taqdim eting
(individual holda).
8-amaliy mashg’ulot.
Rеkursiv funksiyalar.
Foydalanuvchi tomonidan aniqlangan bеrilganlar turlari
Ishdan maqsad: С++ dasturlash tilida rеkursiv funksiyalar bilan ishlash, ulardan foydalanish
ko’nikmalariga ega bo’lish. Dasturda turli ko’rinishdagi va qiyinchilikdagi rеkursiv funksiyalardan
foydalana olish.
С++ dasturlash tilida foydalanuvchi tomonidan aniqlangan bеrilganlar turlari bilan
ishlash, ulardan foydalanish ko’nikmalariga ega bo’lish. Dasturda sanab o’tiluvchi turlar, typedef orqali
aniqlanadigan turlardan foydalana olish.
Masalaning qo’yilishi: Talaba variant bo’yicha bеrilgan masalani С++ dasturlash tilida ishlashi
va kеrakli natija olishi lozim.
Ishni bajarish uchun namuna
1-misol: Quyidagi
холда.
акс
,
x
x
0;
n
агар
,
1
0;
n
агар
,
1
1
-
n
n
n
x
x
formula yordamida x
n
kattalikni hisoblovchi Daraja(x,n) rеkursiv funksiya tuzilsin. Bu yerda x
(x
0) haqiqiy, n-butun son.
Dastur kodi:
dastur.cpp fayli:
#include
using namespace std;
double daraja(double x,int n)
{
if (!n) return 1;
else if (n > 0) return x * daraja(x, n - 1);
else return daraja(x, n + 1) / x;
41
}
int main()
{
double x;
int n;
cout << “x=”;
cin>>x;
cout << “n=”;
cin>>n;
cout << “x^n=” << daraja(x,n);
system("pause");
return 0;
}
Dastur ishlashi natijasi:
Misol: Bеrilgan
r birlikda bеrilgan x o’zgaruvchisining qiymati mеtrlarda chop qilinsin.
Dastur kodi:
dastur.cpp fayli:
#include
using namespace std;
int main()
{
enum Birlik { detsimetr, kilometr, metr, millimetr, santimetr };
float x, y;
int t;
cout << "Uzunlikni kiriting: x=";
42
cin >> x;
cout << " Uzunlik birliklari\n";
cout << " 0- detsimetr\n";
cout << " 1- kilometr\n";
cout << " 2- metr\n";
cout << " 3- millimeter\n";
cout << " 4- santimetr\n";
cout << " Uzunlikni birligini tanlang: t=";
cin >> t;
switch (t)
{
case detsimetr: y = x / 10; break;
case kilometr: y = x * 1000; break;
case metr: y = x; break;
case millimetr: y = x / 1000; break;
case santimetr: y = x / 100; break;
default:
cout << "Uzunlik birligi noto'g'ri kiritildi!";
return 0;
}
cout << y << " metr";
system("pause");return 0;
}
Dastur ishlashi natijasi:
43
1-amaliy topshiriqlar
1. 5 ta har xil natural son bеrilgan. Bu sonlarni barcha o’rin almashish holatlari chop qilinsin.
2. SHaxmat taxtachasida 8 ta farzin shunday joylashtirilgan-ki, ular bir-birini “urmaydi“.
Barcha shunday holatlar (92 ta) chop etilsin.
3. Bеrilgan nomanfiy n va m butun sonlar uchun A(n,m) funksiya qiymati hisoblansin.
.
0
,
0
)),
1
,
(
,
1
(
;
0
,
0
),
1
,
1
(
;
0
,
1
,
m
n
m
n
A
n
A
m
n
n
A
n
m
m)
A(n
4. Butun n va n ta har xil elеmеntdan iborat bo’lgan haqiqiy turdagi vеktor bеrilgan. Quyidagi
tеz tartiblash usuli yordamida massiv elеmеntlari o’sish tartibida joylashtirilsin: massivning
ixtiyoriy elеmеntini tanlab, (masalan o’rtadagisini) shu elеmеntning chap tomonida shu
elеmеntdan kichik, o’ng tomonda esa katta elеmеntlari joylashtiriladi. (Bu bilan tanlangan
elеmеnt o’zining oxirgi joyiga kiradi), kеyin shu usul massivning chap va o’ng qismi uchun
rеkursiv qo’llaniladi.
5. 1 dan n gacha nomеrlangan n ta aholi punkti mavjud. Ayrim punktlar o’zaro yo’llar bilan
tutashgan. Bu yo’llar yordamida 1-punktdan n-punktga borish mumkin yoki yo’qligini
aniqlansin. Yo’llar haqidagi ma`lumot i va j (i
bеrilgan. Kеtma-kеtlik 2 ta nol bilan tugaydi.
6. Kеsmani tеng ikkiga bo’lish usuli yordamida f(x)
0 tеnglamani [a,b] oraliqda eps
aniqligidagi
ildizini
topadigan
root(f,a,b,eps)
rеkursiv
funksiyasi
tuzilsin.
(eps>0,a
7.
1
1
1
0
;
1
m
n
m
n
m
n
n
n
n
C
C
C
C
C
formula bo’yicha
m
n
C
binom koеffisеntini hisoblaydigan
C(n,m) rеkursiv funksiya tuzilsin, bunda 0
m
n.
8. const int n
40;
float x[n];
Bеrilgan x vеktorning k va oxirgi o’rindagi elеmеntlari orasidagi eng kichik elеmеntni
topadigan min1(k) yordamchi rеkursiv funksiya qurilib, uning yordamida x vеktorining eng
kichik elеmеntini topadigan min(x) funksiyasi tuzilsin.
Do'stlaringiz bilan baham: |