Laboratoriya ishi mavzu: Murakkab takrorlanuvchi algoritmlarni dasturlash Ishdan maqsad
Download 100.17 Kb.
|
5-laboratoriya ishi
- Bu sahifa navigatsiya:
- Ichma-ich siklga misollar.
- include
- 15. Variant a) ; b); c) 16. Variant a); b); c) 17. Variant a) ; b); c) 18. Variant
- b); c) 22. Variant a) ; b) c) 23. Variant a) ; b); c) 24. Variant a) b) c)
- b) c) 29. Variant a) b) c)
#include #include using namespace std; int main() { for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { printf("% 4d", i*j); } cout<<endl; } }
Misol. Ko’paytmalarning umumiy yi’gindisini hisoblang. Bu masalani ko’paytmalarning yi’gindisi deb nomlanadi. i o’zgaruvchining har bir qiymatida m o’zgaruvchi 1 dan 14 gacha qiymatlarni barchasini ifodaga qo’yib, ko’paytmasini topiladi. Har bir ko’paytmaning yig’indisi masalaning javobi bo’ladi. #include #include using namespace std; int main(){ float t,r,f; int i,m,n; cout<<"t="; cin>>t; cout<<"r="; cin>>r; cout<<"f="; cin>>f; cout<<"n="; cin>>n;
p *= (log(i)+t*pow(m, 1.0*i))/(r * pow(m, 1.0*i)+f * pow(n, 2.0*i)); } s=s+p;
} cout<<"s="< return 0; }
Masala. To’g’ri burchakli uchburchakning barcha tomonlari uzunliklari natural sonlar. Uning gipatenuzasi c berilgan. Uning katetlarini topish lozim. To’gri burchakli uchburchak shartini qanoatlantiradigan istalgan javoblardan birini topish yetarli. (1≤c≤103). Yechimi. c≤1000 bo’lganligi uchun uchburchak katetlari uzunliklari ham 1000 dan oshmaydi. Katetlarni mumkin bo’lgan barcha variantlarini tekshirib chiqish uchun a katetni i paramertli sikl sifatida qaraymiz, b katetni i sikl ichida j parametrli sikl sifatida to’g’ri burchakli uchburchak bo’lish shartini qanoatlantirilishini tekshirish lozim(i2+j2=c2): #include using namespace std; int main() { int c; cout<<"c="; cin>>c;
bool found = false; int a = 0, b = 0; for (int i = 1; i <= 1000; i++) { for (int j = 1; j <= 1000; j++) { if (i*i + j*j==c*c) { a = i;
b = j; found = true; } }
if (found) cout<
else
cout<<"Bunday sonlar yo'q"; }
Dastur yechimin tahlil qilib chiqamiz. c-gipotenuza uzunligini kiritamiz. found mantiqiy o’zgaruvchi e’lon qilamiz, bu o’zgaruvchida bunday gipotenuzali to’gri burchakli uchburchak mavjud yoki yo’qligi haqidagi mantiqiy ma’lumotni saqlaymiz. Dastlab bunday uchburchak mavjud emas deb tasavvur qilamiz(found = false). a katet sifatida i o’zgaruvchi bilan 1 dan 1000 gacha bo’lgan(1000 ning o’rniga c gacha tekshirish ham mumkin) iteratsiya qilamiz, bu sikl ichida b katet sifatida j o’zgaruvchi bilan iteratsiya aylantiramiz. Agar i, j va c sonlari to’g’ri burchakli uchburchak shartini qanoatlantirsa(if (i*i + j*j==c*c)) , u holda a katet sifatida i o’zgaruvchini, b katet sifatida j o’zgaruvchini qiymatlarini o’zlashtiramiz (a = i;b = j;)va topilganligi haqidagi ma’lumotni saqlaydigan mantiqiy o’zgaruvchiga rost qiymatini o’zlashtiramiz(found = true;). for (int j = 1; j <= 1000; j++) { if (i*i + j*j==c*c) { a = i;
b = j; found = true; break; } } } Bu shaklda siklni sindiradigan bo’lsak faqat ichki sikl sinadi, tashqi sikl keyingi iteratsiyadan davom qiladi. Siklni butunlay sindirish uchun har bir tashqi sikl iteratsiyasidan oldin tekshiramiz, agar javob topilgan bo’lsa u holda tashqi siklni sindiramiz. for (int i = 1; i <= 1000; i++) { if (found) break; for (int j = 1; j <= 1000; j++) { if (i*i + j*j==c*c) { a = i;
b = j; found = true; break; } } } goto operatori. Agar ichma-ich joylashgan sikllar soni ko’p bo’ladigan bo’lsa u holda siklni sindirish uchun har bir siklda break operatorini yozish lozim bo’ladi. Buning o’rniga sikldan keyingi amallar bajarilishiga o’tish uchun goto operatoridan foydalanish mumkin. goto operatoridan keyin nishon yoziladi. Agar goto operatori yozilsa, dastur nishon yozilgan nuqtadan bajarishni davom qildiradi. Nishon harflar, $(dollor belgisi), _(pastki chiziqcha), raqamlardan iborat bo’ladi va raqam bilan boshlanmaydi. #include using namespace std; int main() { int c; cout<<"c="; cin>>c;
bool found = false; int a = 0, b = 0; for (int i = 1; i <= 1000; i++) { for (int j = 1; j <= 1000; j++) { if (i*i + j*j==c*c) { a = i;
b = j; found = true; goto label_1; } } } label_1: if (found) cout<
else
cout<<"Bundaysonlar yo'q"; }
1) Variantingaz sharti 2) Dastur teksti
3) Hisob natijasi (Monitordan ko`chirib oling) Download 100.17 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling