|
Fanidan tayyorlagan 2-mustaqil ishi bajardi
|
bet | 9/9 | Sana | 24.05.2024 | Hajmi | 0,71 Mb. | | #252108 |
Bog'liq Nishonova G (D2 M2)template termin bilan belgilangan, chunki o‘sha, kompilyatsiya sintaktiki xato bo‘yicha xabarlarni chiqaradi. Birinchisi yozma xabarlar fragmentlari bo‘yicha va ikkinchi xatolarni izlash uchun. Bu shablon kabi kuchli mexanizmi tomonidan qayyta ishlanidi (tekshiriladi) va dasturchi bu uchun tayyor bo‘lishi kerak.
Yuqorida aytib o‘tilganidek, misollarni o‘rganish juda ko‘p savollarga javob beradi, shuning uchun dastur keltiramiz. Endi o‘rgangan algoritmlarni diqqat bilan eslang (har birini sharhlab, kutubxona sinflaridan tashqarida bo‘lgan juda ko‘p STL algoritmlari mavjud, ammo ularning barchasi bir-biriga o‘xshab ishlaydi):
4.10-dastur. Standart algoritmlardan foydalanish.
#include "stdafx.h" #include #include #include #include #include #include using namespace std;
inline ostream& operator <<( ostream& out, const vector& obj ) { for( auto p: obj ) cout << p;
return out;
}
int main( void ) {
char s[] = "Muhammad al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti"; // nazvanie knigi
vector vs; vs.push_back("Muminov"); vs.push_back("Bahodir");
// copy & find :
vector v1( strlen( s ) ); copy( s, s + v1.size(), v1.begin() ); int nb = 0;
for( auto is = find( v1.begin(), v1.end(), ' ' ); is != v1.end(); is = find( ++is, v1.end(), ' ' ) ) nb++;
cout << "boʻsh joylar soni: " << nb << " (" << nb + 1
<< " soʻz)" << endl;
// min & max :
auto mm = minmax_element( v1.begin(), v1.end() );
cout << "belgilar uzunligi: '" << *mm.first << "' ... '"
<< *mm.second << "'" << endl;
// fill & reverse & rotate & shuffle :
|
vector suv( vs[ 0 ].size() );
copy( vs[ 0 ].begin(), vs[ 0 ].end(), suv.begin() ); cout << suv << endl;
random_shuffle( suv.begin(), suv.end() ); cout << suv << endl;
reverse( suv.begin(), suv.end() ); cout << suv << endl;
rotate( suv.begin(), suv.begin() + suv.size() / 2, suv.end() ); cout << suv << endl;
// set_intersection & set_difference set< char > sus, pns;
for( char s: vector( vs[ 0 ].begin(), vs[ 0 ].end() ) ) sus.insert( s );
for( char s: vector( vs[ 1 ].begin(), vs[ 1 ].end() ) ) pns.insert( s );
vector outi( 100 ), outd( 100 );
auto ret = set_intersection( sus.begin(), sus.end(), pns.begin(),
pns.end(), outi.begin() ); cout << "umumiy belgi " << ( ret - outi.begin() ) << " : "
<< outi << endl;
ret = set_difference( sus.begin(), sus.end(), pns.begin(),
pns.end(), outd.begin() );
cout << "unikal belgi " << ( ret - outd.begin() ) << " : "
<< outd << endl; system("pause"); return 0;
}
|
4.10-dastur. Output
|
boʻsh joylar soni: 6 (7 soʻz) belgilar uzunligi: ' ' ... 'z'
Muminov nuvmMoi ioMmvun mvunioM
umumiy belgi 2 : io
unikal belgi 5 : Mmnuv
|
Dasturda char uchun konteynerlardan foydalanilgan. Deyarli barcha berilgan konteynerlar uchun turli xil algoritmlar amalga oshirilgan. (ixcham, ammo zerikarli fragmentlar
5.Standart algoritmlar.Iteratorlar va ularni qo`llash
Standart algoritmlar - Standard algorithms
Kompyuter algoritmlari uchun qarang Algoritmlar ro'yxati.
Boshlang'ich sinfda arifmetik, standart algoritm yoki usul - bu ma'lum bir matematik muammolarni hal qilish uchun an'anaviy ravishda o'rgatiladigan hisoblashning o'ziga xos usuli. Ushbu usullar millat va vaqtga qarab bir-biridan farq qiladi, lekin odatda almashinish, qayta guruhlash, uzun bo'linish va uzunlikni ko'paytirishni o'z ichiga oladi standart yozuv va o'rtacha formulalar, maydon va hajm uchun. Shunga o'xshash usullar kvadrat ildiz va undan murakkab funktsiyalar kabi protseduralar uchun ham mavjud, ammo umumiy matematik o'quv dasturidan kalkulyatorlar foydasiga tushib qolgan (yoki jadvallar va ularning oldidagi slaydlar qoidalari).
Tushunchalari matematikani isloh qilish qaysi NCTM 1989 yilda kiritilgan alternativ yondashuvni qo'llab-quvvatlaydi. Bu aniq metodlarni yodlash o'rniga asosiy nazariyani chuqurroq anglashni taklif qiladi, o'quvchilarga bir xil muammolarni hal qiladigan individual usullarni ishlab chiqishga imkon beradi. Talabalarning muqobil algoritmlari ko'pincha standart algoritmlar singari to'g'ri, samarali va umumlashtirilishi mumkin va shu bilan bog'liq miqdorlarning ma'nosiga e'tiborni qaratadi, ayniqsa joy qiymatlari bilan bog'liq (odatda standart algoritmlarni yodlashda yo'qoladigan narsa). Murakkab kalkulyatorlarning ishlab chiqilishi qo'lda hisoblashning ahamiyatini pasaytirdi (yuqoridagi kvadrat ildizlaridagi yozuvga qarang) va an'anaviy usullarni noto'g'ri o'qitish ko'plab talabalarda muvaffaqiyatsizlikka olib keldi. Barcha turdagi o'quvchilar orasida ko'proq yutuqqa erishish matematik ta'limning asosiy maqsadlaridan biridir NCTM. Kabi ba'zi tadqiqotchilar Konstansiya Kamii an'anaviy ravishda o'qitiladigan boshlang'ich arifmetikasi boshlang'ich maktabda mos emas, degan fikrni ilgari surdilar. Kabi 1989 yilgi standartga muvofiq yozilgan darsliklarning ko'plab birinchi nashrlari TERC har qanday muayyan usulni o'qitishni qasddan to'xtatib qo'ydi, buning o'rniga sinf va uy vazifalarini vaqtini noan'anaviy muammolarni hal qilishga bag'ishladi, bu o'quvchilarni sonlar ma'nosi va joy qiymatidan kelib chiqqan holda o'zlarining hisoblash usullarini ishlab chiqishga undaydi. Ushbu ta'kidlash hech qanday raqam faktlarini o'rganishni istisno qilmaydi; haqiqatan ham, dastlabki matematik ta'limning asosiy maqsadi protsessual ravonlikdir.
The NCTM yaqinda o'tkazilgan tahrirda matematikaning asosiy dalillarini va to'g'ri, samarali usullarni o'rganishga bo'lgan ehtiyoj yanada aniqroq bo'ldi. Standartlarga asoslangan matnlarning ko'plab yangi nashrlarida standart usullar va asosiy ko'nikmalar mavjud. Biroq, dastlabki ko'rsatmalar yaxshi niyatli ota-onalar va jamoat a'zolaridan olov yoqishda davom etmoqda, ularning ba'zilari qaytib kelishni qo'llab-quvvatlamoqda an'anaviy matematika. Muayyan matnning muvaffaqiyati nafaqat uning mazmuniga, balki maktab jamoatchiligining yangi pedagogika va mazmunga ruxsat berishga tayyorligi va materiallarning tavsiya etilgan bajarilishini ta'minlashga bog'liq.
|
| |