B. J. Boltayev, A. R. Azamatov, G. A. Azamatova, B. S. Xurramov nazariya, algoritm, dastur toshkent 2013
Download 372.89 Kb.
|
Algoritmlash va dasturlash asoslari seriyasidan Kitob – II b. J.-fayllar.org
eslab qoling!) ko‘rinishdagi o‘zlashtirish operatorlaridan foydalanamiz.
Dasturi: Var A, B, D: array [1..4] of string; 91
Write(‘A[‘,1,’]=’); ReadLn(A[1]); Write(‘A[‘,2,’]=’); ReadLn(A[2]); Write(‘A[‘,3,’]=’); ReadLn(A[3]); Write(‘A[‘,4,’]=’); ReadLn(A[4]); Write(‘B[‘,1,’]=’); ReadLn(B[1]); Write(‘B[‘,2,’]=’); ReadLn(B[2]); Write (‘B[‘,3,’]=’); ReadLn(B[3]); Write(‘B[‘,4,’]=’); ReadLn(B[4]); D:=A; A:=B; B:=D; Writeln(‘Marhamat:’); Write(‘A[‘,1,’]=’, A[1]); Writeln(‘ A[‘,2,’]=’, A[2]); Write(‘A[‘,3,’]=’, A[3]); Writeln(‘ A[‘,4,’]=’, A[4]); Write(‘B[‘,1,’]=’, B[1]); Writeln(‘ B[‘,2,’]=’, B[2]); Write(‘B[‘,3,’]=’, B[3]); Writeln(‘ B[‘,4,’]=’, B[4]); End. 79*. A=21 va B=7 bo‘lsa, A va B o‘zgaruvchilar qiymatini almashtirib ekranga chiqaring. Yechim:
tun son bo‘lgani uchun quyidagi ko‘rsatmalarni hisoblab olishimiz mumkin: A=(21+7)–A=28–A=28–21=7 va B=(21+7)–B=28–B=28–7=21. Demak, bu holda qo‘shimcha o‘zgaruvchisiz ham masalani hal etish mumkin ekan. Dasturi: Var A, B: integer; Begin A:=21; B:=7; Writeln(‘Berilgan: A= ’, A, ‘; B= ‘, B); A:=28–A; B:=28–B; Writeln(‘Marhamat: A= ’, A, ‘; B= ‘, B); End. 80*. Qo‘shimcha o‘zgaruvchidan foydalanmay A va B butun turdagi o‘zgaruvchilar qiymatini almashtirib ekranga chiqaring. Yechim:
edi. Lekin bu masalada A+B avvaldan ma’lum emas. Shunga qaramay quyidagicha ish bajaramiz. Deylik, A=3, B=4 bo‘lsin. Agar A=A+B=3+4=7 deb olsak, u holda B=A–B=7–4=3 va A=A–B=7–3=4 qiymatlar hosil bo‘ladi. O‘zgaruvchilarga qiymat berayotgan bu ko‘rsatmalarni tahlil etaylik: A=A+B ko‘rsatma A o‘zgaruvchida A va B ning qiymatlarini saqlab turibdi; B=A–B ko‘rsatma A da saqlab turilgan B ni qiymatini ayirib B da A ni qiymatini qoldirdi; A=A–B ko‘rsatma A o‘zgaruvchida saqlab turilgan “yangi” B ni, ya’ni “eski” A ni, qiymatini ayirib A da B ni “eski” qiymatini qoldirdi. Ko‘rsatmalarni yozish ketma-ketligining buzilishi xato natijaga olib keladi. Masalan, A=A+B (=3+4=7); A=A–B (=7–4=3); B=A–B (=3–4=–1). Dasturi (1-usul): 92
Begin Write(‘A ni qiymatini kiriting: ’); ReadLn(A); Write(‘B ni qiymatini kiriting: ’); ReadLn(B); A:=A+B; B:=A–B; A:=A–B; Writeln(‘Marhamat: A= ’, A, ‘; B= ‘, B); End. 2-usul. Deylik, A=3, B=4 bo‘lsin. Endi A=A∙B=3∙4=12 deb olsak, u holda B=A/B=12/4=3 va A=A/B=12/3=4 qiymatlar hosil bo‘ladi. Faqatgina Paskalda bo‘lish amali natijasi haqiqiy turdagi sonni hosil qilishini nazarda tutib B=trunc(A/B) va A=trunc(A/B) kabi yozish shart. Dasturi (2-usul): Var A, B: integer; Begin Write(‘A ni qiymatini kiriting: ’); ReadLn(A); Write(‘B ni qiymatini kiriting: ’); ReadLn(B); A:=A*B; B:=TRUNC(A/B); A:=TRUNC(A/B); Writeln(‘Marhamat: A= ’, A, ‘; B= ‘, B); End. 3-usul. Deylik, A=32767, B=10 bo‘lsin. Bu qiymatlarda 1- va 2-usullar xato natijaga olib keladi, chunki A+B=32777>32767 va A∙B=327670>32767, ya’ni oraliq qiymatlar Integer turdagi miqdor chegarasidan chiqib ketdi. Shuning uchun mantiqiy XOR amalidan foydalanish haqida o‘ylab ko‘rsa arziydi. Manti- qiy XOR amali butun turdagi ixtiyoriy sonlarda o‘rinli. Dasturi (3-usul): Var A, B: integer; Begin Write(‘A ni qiymatini kiriting: ’); ReadLn(A); Write(‘B ni qiymatini kiriting: ’); ReadLn(B); A:=A XOR B; B:=A XOR B; A:=A XOR B; Writeln(‘Marhamat: A= ’, A, ‘; B= ‘, B); End. 81. Qo‘shimcha o‘zgaruvchidan foydalanmay A va B haqiqiy turdagi o‘zgaruvchilar qiymatini almashtirib ekranga chiqaring (yo‘llanma: avvalgi masa- la yechimlaridan 1-usulda o‘zgaruvchilar turini Real, chiqarish formatini A:0:11 va B:0:11 kabi tanlanadi). 82*. Qo‘shimcha o‘zgaruvchidan foydalanmay A va B satrli turdagi o‘zgaruvchilar qiymatini almashtirib ekranga chiqaring. Yechim:
bo‘lsin. Agar A=A+B=‘oyi‘+‘dada‘=‘oyidada‘ deb olsak, u holda Copy funksiyasi yordamida B=Copy(A,1,Length(A)–Length(B))= =Copy(‘oyidada‘,1,7–4)=Copy(‘oyidada‘,1,3)=‘oyi‘ va Delete protsedurasi yordamida 93
qiymatlar hosil bo‘ladi. O‘zgaruvchilarga qiymatini o‘zgartirayotgan bu ko‘rsatmalarni tahlil etaylik: A=A+B ko‘rsatma A o‘zgaruvchida A va B ning qiymatlarini saqlab turibdi; B=Copy(A,1,Length(A)–Length(B)) ko‘rsatma A da saqlab turilgan A ni qiymatini nusxasini B ga o‘tkazdi; Delete(A,1,Length(B)) ko‘rsatma A o‘zgaruvchida saqlab turilgan “yangi” B ni, ya’ni “eski” A ni, qiymatini o‘chirib A ga B ni “eski” qiymatini qoldirdi. Download 372.89 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling