102-guruh Xakimov Orifjon. Dasturlash 2 fanidan 5-hafta topshiriqlariga yozgan javoblari Savollar:
Quyidagi kod nima uchun xatolik beradi? Batafsil tushuntirib bering.
Siz dinamik massivni quyidagicha yaratdingiz. Uning xatosi nimadan iboratligini izohlang.
this ko’rsatkichi nimaligini yoritib bering.
(Kiritish tahlili) Dastlab massivning o’lchamini tavsiflovchi butun sonni, so’ngra massiv elementlarini kiritib, ularning o’rta arifmetik qiymatini hisoblovchi va nechta element o’rta arifmetik qiymatdan katta ekanligini aniqlovchi dastur tuzing. (Albatta ko’rsatkich va dinamik xotiradan foydalanish talab etiladi).
(Takrorlanishsiz chop etish) Dastlab massivning o’lchamini tavsiflovchi butun sonni, so’ngra massiv elementlarini kiritib, takrorlanishlarsiz sonlarni chiqaruvchi dastur tuzing (agar massivda son bir necha bora qatnashsa, u holda shu son faqat bir marta chiqarilsin).
Javoblar: Xatolik yuz bermadi. Dastur ishladi.
Dastur kodi: #include using namespace std;
int main(){
char *p;
cin>>p;
return 0;
}
Natijasi:
Birinchi holatda x massivni dinamik qilib ta’minlashda * operatori qo’yilmagan.
double* x[] = new double[30];
Ikkinchi holatda esa massivni dinamik xotiradan o’chirishda delete kalit so’zidan keyin [] qavs qo’yilmagan:
delete [] x;
this ko‘rsatkichi chaqirilgan ob’yektning o‘zini ko‘rsatadi. Ba’zida funksiyada sinfning yashirilgan ma’lumotlar maydonini havola qilish ehtiyoji tug‘ilib qoladi. Masalan, ma’lumotlar maydoni nomi set funksiyadagi ma’lumotlar maydoni uchun parametr nomi sifatida tez-tez qo‘llaniladi. Bu qismda, funksiyada yangi qiymatni o‘rnatish uchun, yashirilgan ma’lumotlar maydoni nomini havolalashimiz lozim. Yashirilgan ma’lumotlar maydoniga chaqirilgan ob’yektni havolalash uchun ko‘rsatkichda ishlab chiqilgan maxsus this – kalit so‘zini qo‘llagan holda murojaat etishimiz mumkin.
Dastur kodi: #include using namespace std;
double urta(const double* list, int size){
double sum = 0;
for (int i = 0; i < size; i++){
sum += list[i];
}
return sum / size;
}
int hisob(const double* massiv, int size){
int sum = 0;
double urtacha = urta(massiv, size);
for (int i = 0; i < size; i++){
if (massiv[i] > urtacha)
sum++;
}
return sum;
}
int main(){
int ulcham;
cout<<"Massiv o'lchamini kiriting: ";
cin>> ulcham;
double mass[ulcham];
cout<<"Massaiv elementlarini kiriting: ";
for (int i = 0; i < ulcham; i++){
cin >> mass[i];
}
int c = hisob(mass, ulcham);
double d = urta(mass, ulcham);
cout << "Berilgan massiv elementlarining\n";
cout << "O`rtacha qiymati = " << d << endl;
cout << "O'rtacha qiymatidan katta elementlar soni = " << c << endl;
return 0;
}
Natijasi:
Dastur kodi: #include #include #include #include using namespace std;
setds;
set::iterator it;
void printArray(int *c,int n){
for(int i=0; ids.insert(*(c+i));
}
for(it=ds.begin(); it!=ds.end(); it++){
cout<<*it<<" ";
}
}
int main(){
int size;
cout << "Massiv o`lchami kiriting:";
cin >> size;
int list[size];
cout << "Massiv elementlari kiriting:\n";
for(int i = 0; i < size; i++){
cin >> list[i];
}
printArray(list,size);
return 0;
}
Natijasi: