Dastur toki “jarayonni to’xtash (N):_’’so’roviga (N) javobi kiritilmaguncha davom etadi

|
Dastur toki “jarayonni to’xtash (N):_’’so’roviga (N) javobi kiritilmaguncha davom etadi
|
bet | 12/13 | Sana | 17.02.2024 | Hajmi | 55,94 Kb. | | #158194 |
Bog'liq Dasturlash tillari va ularning afzalliklari. Reja-fayllar.orgDastur toki “jarayonni to’xtash (N):_’’so’roviga (N) javobi kiritilmaguncha davom etadi.
Masala. Har qanday 7 dan katta butun sondagi pul miqdoriga ega kupyuralarni 3 va 5 so‘mlik kupyuralarda berish mumkinligi isbotlansin. Qo‘yilgan masala p=3n+5m tenglamasini qanotlantiruvchi m, n sonlar juftliklarini topish masalasidir (p-pul miqdori). Bu shartning bajarilishini m va n o‘zgaruvchilarining mumkin bo‘lgan qiymatlarining barcha kombinatsiyalarida tekshirish zarur bo’ladi.
#include
int main(){
unsigned int pul; //pu1- kiritiladigan pul miqdori
unsigned int n3,m5; //n-3 so’mliklar , m-5 so’mliklar soni
bool xato=fa1se; //pu1 qiymatini kiritilgandagi xatolik
do{
if (xato) cout<<’’kiritilgan pul qiymati 7 dan kichik !’’;
xato=true ; //keyingi takrorlash xato hisoblanadi
cout<<’’\npul qiymatini kiriting (>7):’’; cin>>pul; }
while (pul<=7); // toki 7 sonidan katta son kiritulguncha
n3=0 ; //birorta ham 3 so’mlik yo’q
do{ m5=0; // birorta ham 5 so’mlik yo’q
do
{ if (3*n3+5*m5==pul)
cout<while(3*n3+5*m5<=pul);
n3++; //3 so’mliklar bittaga oshiriladi
}
while(3*n3<=pul);
return 0;}
Dastur pul qiymatini kiritishni so‘raydi(pu1 o‘zgaruvchisiga). Agar pul qiymati 7 sonidan kichik bo‘lsa, bu haqda xabar beriladi va takror ravishda qiymat kiritish talab qilinadi. Pul qiymati 7 dan katta bo’lganda, 3 va 5 so‘mliklarning mumkin bo‘lgan to‘la kombinatsiyasini amalga oshirish uchun ichma-ich takrorlashlar amalga oshiriladi. Tashqi takrorlash n3 (3 so‘mliklar miqdori) bo‘yicha, ichki takrorlash esa m5 (5 so‘mliklar miqdori) bo‘yicha, toki bu miqdordagi pullar qiymati pul qiymatidan oshib ketmaguncha davom etadi. Ichki takrorlashda m5 o’zgaruvchisining har bir qiymatida «3*n3+5*m5=pu1» sharti tekshiriladi, agar u o‘rinli bo‘lsa, yechim varianti sifatida n3 va m5 o’zgaruvchilar qiymatlari chop etiladi.
Pul qiymati 30 so‘m kiritilganda, ekranga
0 ta 3 so’mlik +6 ta 5 so’mlik chop etiladi.
XULOSA.
Dastur tuzishda takrorlash operatorlaridan foydalanish orqali yaxshi natijalarga ega bo’lish mumkin. Chunki, shunday dasturlarda bitta siklni bir necha bor ishlatish zarur. Dasturchilarga qulaylik hamda eng asosiysi vaqtni tejash sifatida takrorlash operatorlari yaratilgan. Yuqorida takrorlash operatorlarining 3xil turi ko’rib o’tildi.
FOYDALANILGAN ADABIYOTLAR
1,Павловская Т.А. С++. Программирование на языке высокого уровня – СПб.: Питер. 2005.- 461 с.
2. Подбельский В.В. Язык С++.- М.; Финансы и статистика- 2003 562с.
3. Павловская Т.С. Щупак Ю.С. С/С++. Структурное программирование. Практикум.-СПб.: Питер,2002-240с
4. Павловская Т.С. Щупак Ю.С. С++. Объектно- ориентированное программ-мирование. Практикум.-СПб.: Питер,2005-265с
5. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++: Учебный курс.- Харьков: Фолио; М.: ООО «Издательство АСТ», 2001.-500с.
6. Ш.Ф. Мадрахимов, С. М. Гайназаров С++ тилида программалаш асослари. Т. 2009.
C++TILIDA TANLASH OPERATORI
Reja:
1.Switch case.
2.Break va default kalit so’zlari.
3.Mavzuga oid masalalar
Xulosa
Foydalanilgan adabiyotlar
Shart operatorining yana bir ko‘rinishi tanlash tarmoqlanish operatori bo‘lib, uning sintsksisi quyidagacha:
switch ()
{
case : ; break;
case : ; break;
…
case : ; break;
default:: ;
}
C++ tilida bu operator quyidagicha amal qiladi: birinchi navbatda qiymati hisoblanadi, keyin bu qiymat case kalit so‘zi bilan ajratilgan bilan solishtiriladi. Agar ular ustma-ust tushsa, shu qatordagi ‘:’ belgisidan boshlab, toki break kalit so‘zigacha bo‘lgan bajariladi va boshqaruv tarmoqlanuvchi operatordan keyingi joylashgan operatorga o‘tadi. Agar birorta ham bilan mos kelmasa, qurilmaning default qismidagi bajariladi. Shuni qayd etish kerakki, qurilmada default kalit so‘zi faqat bir marta uchrashi mumkin.
Tanlash operatorini qo‘llashga doir misolni qarab chiqaylik. Klaviaturadan kiritilgan “Jarayon davom etilsinmi?” so‘roviga foydalanuvchi tomonidan javob olinadi. Agar ijobiy javob olinsa, ekranga “Jarayon davom etadi!” xabari chop etiladi va dastur o‘z ishini tarmoqlanuvchi operatordan keyingi operatorlarni bajarish bilan davom ettiradi, aks holda “Jarayon tugadi!” javobi beriladi va dastur o‘z ishini tugatsin. Bu masala uchun tuziladigan dastur foydalanuvchining ‘y’ yoki ‘Y’ javoblari jarayonni davom ettirishni bildiradi, boshqa belgilar esa tugatishni anglatadi.
#include
int main()
{
char javob=’ ‘;
cout<<’’jarayon davom etsinmi?(‘y’,’Y’):’’;
cin>>javob;
switch(javob)
{
case ‘y’:
case ‘Y’:
cout<<’’jarayon davom etadi!\n‘’;
break;
default:
cout<<’’jarayon tugadi!\n‘’;
return 0;
} //jarayon
return 0;
}
Tanlash operatorining C++ tilidagi ko‘rinishida break va default kalit so‘zlarini ishlatmasa ham bo’ladi. Ammo bu holda operatorning mazmuni buzilishi mumkin. Masalan, default qismi bo‘lmagan holda, agar birorta bilan ustma-ust tushmasa, operator hech qanday amal bajarmasdan boshqaruv tanlash operatordan keyingi operatorga o‘tadi. Agar break bo‘lmasa, birorta bilan ustma-ust tushgan holda, unga mos keluvchi operatorlar guruhini bajaradi va «to‘xtamasdan» keyingi qatordagi operatorlar guruhini bajarishga o‘tib ketadi. Masalan, yuqoridagi misolda break operatori bo‘lmasa va jarayonni davom ettirishni tasdiqlovchi (‘Y’) javob bo‘lgan taqdirda ekranga
Jarayon davom etadi!
Jarayon tugadi!
xabarlari chiqadi va dastur o‘z ishini tugatadi (return operatorining bajarilishi natijasida).
Tanlash operatori sanab o‘tiluvchi turdagi o‘zgarmaslar bilan birgalikda ishlatilganda samara beradi. Quyidagi dasturda ranglar gammasini toifalash masalasi yechilgan.
#include
int main()
{
enum Ranglar{qizil, tuq_sariq,sariq,yashil,kuk,zangori,binafsha};
Ranglar rang; //...
switch(rang)
{
case qizil:
case tuq_sariq:
case sariq;
cout<<’’Issiq gamma tanlandi. \n’’;
break;
case yashil:
case kuk:
case zangori:
case binafsha:
cout<<’’Sovuq gamma tanlandi.\n’’;
break;
default:
cout<<’’Kamalak bunday rangga ega emas. \n’’;
}
return 0;
}
Dastur bajarilishida boshqaruv tanlash operatorga kelganda, rang qiymati qizil yoki tuq_sariq yoki sariq bo‘lsa, “Issiq gamma tanlandi’’ xabari, agar rang qiymati yashil yoki kuk yoki zangori yoki binafsha bo‘lsa, ekranga “Sovuq gamma tanlandi” xabari, agar rang qiymati sanab o‘tilgan qiymatlardan farqli bo‘lsa, ekranga “Kamalak bunday rangga ega emas “ xabari chop etiladi va dastur o‘z ishini tugatadi.
C++ tilidagi tanlash operatorida e’lon operatorlari ham uchrashi mumkin. Lekin switch operatori bajarilishida «Sakrab o‘tish» holatlari bo‘lishi hisobiga blok ichidagi ayrim e’lonlar bajarilmasligi va buning oqibatida dastur ishida xatolik ro‘y berishi mumkin:
int k=0,n=0;
cin>>n;
switch (n)
{
int=10; //xato,bu operator hech qachon bajarilmaydi
case 1:
int j=20; //agar n=2 bo‘lsa,bu e’lon bajarilmaydi
case 2:
k+=i+j; //xato, chunki i,j o‘zgaruvchilar noma’lum
}
cout<
Tanlash operatorini qo‘llashga doir yana bir masalani qarab chiqamiz.
Masala. Quyida, sanab o‘tiluvchi turlar va shu turdagi o‘zgaruvchilar e’lon qilingan:
enum Birlik{detsimetr, kilometr, metr, millimetr, santimetr}
float y; Birlik r;
Birlikda berilgan x o‘zgaruvchisining qiymat metrlarda chop qilinsin.
#include
int main()
{
enum Birlik {detsimetr, kilometr, metr, millimetr, santimetr};
float x,y;
Birlik r;
cout<<’’uzunlikni kiriting: x=’’;
cin>>x;
cout<<’’ uzunlik birliklari\n’’;
cout<<’’ 0-detsimetr\n’’;
cout<<’’1-kilometr\n’’;
cout<<’’2-metr\n’’;
cout<<’’3-millimetr\n’’;
cout<<’’4-santimetr\n’’;
cout<<’’uzunlikni birligini tanlang; r=’’;
cin>>r;
switch(r)
{
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<
return 0; }
XULOSA
Tanlash operatorlari shart operatorlarining boshqacha ko’rinishi desak ham bo’ladi. Agar dasturda ikkitadan ko’p tarmoqli variantlarni ko’rib chiqish kerak bo’lsa switch tanlash operatoridan foydalaniladi. Aytayotganimizdek, bu operator berilgan bir nechta variantlardan shartga mosini tanlaydi va osha variantga mos case kalit so’zidan keyingi sikl bajaraladi. Agar mos variant topolmasa default kalit so’zidan keying siklga o’tadi.
FOYDALANILGAN ADABIYOTLAR
|
| |