Bajaruvchi Suvonov Sunnatbek 104-guruh.
4-hafta mashg’uloti.
1. Ko’rsatkich o’zgaruvchisi qanday e’lon qilinadi? O’zgaruvchining adresi
ko’rsatkich o’zgaruvchisiga qanday ta’minlanadi? Quyidagi dastur kodida
qanday xatolik mavjud?
int x=30;
int * pX=x;
cout<<”x is”<cout<<”x is”<
Batafsil izohlang.
Javobi: a)Ko’rsatkichlar int yoki double kabi turlarda e’lon qilinadi. O’zgaruvchi adresiga ko’rsatkich qaysi turda e’lon qilinsa, aynan shu turda qiymat ta’minlash lozim. Masalan quyidagi kod xatolik beradi:
int area=1;
double* pArea=&area; //Xato
Siz bir turdagi bir ko’rsatkichni boshqa ko’rsatkichga ta’minlay olasiz, ammo ko’rsatkichni ko’rsatkich bo’lmagan o’zgaruvchiga ta’minlay olmaysiz:
int area=1;
double* pArea=&area;
int i=pArea; //Xato
b) Ko’rsatkich o’zgaruvchisi oz’ida xotira adresini saqlaydi. * operatori orqali maxsus xotira sohasidagi qiymatga murojaatni amalga oshira olasiz.
Ko’rsatkich o’zgaruvchilari, soddaroq aytganda, ko’rsatkichlar o’zlarining qiymati sifatida xotira adreslarini saqlaydi. Odatda, o’zgaruvchi ma’lumot qiymatini o’zida saqlaydi, misol uchun, butun, haqiqiy va belgili qiymatlar. Ammo ko’rsatkich o’zgaruvchining xotira adresini o’zida saqlaydi.
Adresni ko’rsatkichga ta’minlash: pCount = &count;
c)
2. Quyidagi dastur qismlari qanday natijalar beradi?
Javobi:
1)
2)
3)
3. Tasavvur qiling, int *p e’lon qilingan. Quyidagilar o’rtasida qanday farqlar
mavjud: p++, *p++ va (*p)++ ?
Javobi:Agarda p++ shu yozuv cout<
*p++ va (*p)++ bularda cout<<*p++; yoki cout<<(*p)++; deb yozilsa,dasturni natijasida konsolda o’zgaruvchi chiqadi.
4. (Massivning o’rtacha qiymati) Massiv elementlarining o’rta arifmetik
qiymatlarini qaytaruvchi, qayta yuklanagan urtacha nomli funksiyalarni
yarating. Funkisya prototiplari quyidagicha:
int urtacha(const int* array, int size);
double urtacha(const double* array, int size);
O’nta double va int turidagi qiymatlar orqali dasturni testlab ko’ring.
Javobi: #include
#include
using namespace std;
int* reverse(const int* list, int size)
{
int* result = new int[size];
for(int i=0, j=size-1; i{
result[j]=list[i];
}
return result;
}
void printArray(const int* list, int size)
{
int s=0;
for(int i=0; icout< s+=list[i];}
cout<cout<
}
int main()
{
int list[] = {1,2,3,4,5,6};
int* p=reverse(list,6);
printArray(p,6);
return 0;
}
5. Ko’rsatkichlardan foydalanib, massiv elementlari ichidan eng kichigini
aniqlovchi funksiya yarating. Funksiyani tekshirish uchun quyidagilardan
foydalaning: {1, 2, 4, 5, 10, 100, 2, -22}.
Javobi: #include
#include
using namespace std;
void printArray(const int* list,int size)
{
for(int i=0;icout< cout<
}
int main()
{
int list[]={1,2,4,5,10,100,2,-22};
printArray(list, 8);
int*min=min_element(list, list+8);
cout<<"Minimalnoyeznacheniye"<<*min<<"index"<<(min-list)<random_shuffle(list, list+8);
return 0;
}
Do'stlaringiz bilan baham: |