Murakkab takrorlanuvchi algoritmlarni dasturlash
Murakkab takrorlanuvchi jarayonlar uchun ichma-ich sikllar yozish talab qilinadi. Ichma-ich sikllarda bir sikl boshqa sikl ichida bo’ladi. Ichma-ich sikllarni jadvallar bilan ishlaganda qo’llash mumkin. Tashqi sikl barcha qatorlar bo’yicha, ichki sikl joriy qatordagi ustunlar bo’yicha iteratsiya qiladi.
Quyidagicha ko’paytirish jadvalidagi sonlarni chiqarish lozim bo’lsin:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Siklni qatorma-qator i o’zgaruvchini bilan, har bir qatorda ustun bo’yicha j o’zgaruvchi bilan iteratsiya qilamiz. i-qator va j-ustunida i*j ni chiqaramiz. Har bir qatorni chiqarib bo’lgach, keyingi qatorga o’tamiz:
#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< }
}
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;
}
Do'stlaringiz bilan baham: |