Ichma-ich siklga misollar.
Ichma-ich sikl
|
Chiquvchi ma’lumot
|
Tushintirish
|
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 4; j++) {
cout << "*";
}
cout << endl; }
|
****
****
****
|
Har biri 4 ta * dan iborat 3 ta qator chiqaradi
|
for (int i = 1; i <= 4 i++) {
for (int j = 1; j <= 3; j++) {
cout << "*";
}
cout << endl;}
|
***
***
***
***
|
Har biri 3 ta * dan iborat 4 ta qator chiqaradi
|
for (int i = 1; i <= 4; i++){
for (int j = 1; j <= i; j++) {
cout << "*";
}
cout << endl;}
|
*
**
***
****
|
Uzunliklari 1,2,3,4 ga teng bo’lgan 4 ta qator chiqariladi
|
for (int i = 1; i <= 3; i++){
for (int j = 1; j <= 5; j++){
if (j % 2 == 0) { cout << "*";}
else { cout << "-"; }
}
cout << endl;}
|
-*-*-
-*-*-
-*-*-
|
Juft ustunlarda * chiqaradi, toq ustunlarda - chiqariladi.
|
for (int i = 1; i <= 3; i++){
for (int j = 1; j <= 5; j++){
if ((i + j) % 2 == 0) { cout << "*"; }
else { cout << " "; }
}
cout << endl;}
|
* * *
* *
* * *
|
Shaxmat doskasi
|
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;
double s=0;
for(i=1;i<=32;i++){
double p=1;
for(m=1;m<=14;m++){
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;
}
Murakkab siklni sindirish.
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;).
Lekin bu ichma-ich sikl barcha variantlarni ko’rib chiqadi. Bizga faqat bitta variant kerak bo’lganligi sababli agar katetlar topilsa, siklni to’xtatishimiz foydaliroq bo’ladi. Siklni to’xtatish uchun quyidagicha yozish mumkin:
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;
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;
}
}
}
Topshiriqlar
Topshiqlarni unda ko’rsatilgan sikldan foydalanib yozing.
Do'stlaringiz bilan baham: |