4-hafta topshiriq javoblari
Ko’rsatkich o’zgaruvchisi qanday e’lon qilinadi? O’zgaruvchining adresi ko’rsatkich o’zgaruvchisiga qanday ta’minlanadi? Quyidagi dastur kodida qanday xatolik mavjud?
Batafsil izohlang.
Javob:
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.
Ko’rsatkich o’zgaruvchisi quyidagicha e’lon qilinadi:
uzgaruvchiTuri* uzgaruvchiNomi;
O’zgaruvchining adresini yuborishda & belgisidan foydalaniladi:
uzgaruvchiNomi = &uzgaruvchi;
Ushbu dasturda o’zgaruvchi adresini yuborishda & belgisi qo’yilmagan. Shuning uchun dastur ishlashida xatolik yuz beradi:
int x = 30;
int* pX = &x;
cout << "x is " << x << endl;
cout << "x is " << pX << endl;
Quyidagi dastur qismlari qanday natijalar beradi?
Tasavvur qiling, int *p e’lon qilingan. Quyidagilar o’rtasida qanday farqlar mavjud: p++, *p++ va (*p)++ ?
Javob:
p++ holatda p o’zgaruvchisining adresi o’zgarmaydi. *p++ va (p*)++ holatlarda p ning qiymati o’zgarmasdan qaytariladi
(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);
Javob:
#include
#include
using namespace std;
int urtacha(const int* array, int size)
{
int sum = 0, natija;
for(int i = 0; i < size; i++)
{
sum += array[i];
}
natija = sum / size;
return natija;
}
double urtacha(const double* array, int size)
{
double sum = 0, natija;
for(int i = 0; i < size; i++)
{
sum += array[i];
}
natija = sum / size;
return natija;
}
int main()
{
const int ulcham = 10;
int massiv[ulcham] = {2, 1, 4, 5, 7, 8, 6, 5, 10, 8};
double massiv1[ulcham] = {2.5, 1.0, 3.4, 5.5, 3.1, 2.2, 6.5, 1.5, 3.5, 3.7};
int natija = urtacha(massiv, ulcham);
double natija1 = urtacha(massiv1, ulcham);
cout << "Massivning o`rtacha qiymati : " << natija << endl;
cout << "Massivning o`rtacha qiymati : " << natija1 << endl;
return 0;
}
Natija:
Ko’rsatkichlardan foydalanib, massiv elementlari ichidan eng kichigini aniqlovchi funksiya yarating. Funksiyani tekshirish uchun quyidagilardan foydalaning: {1, 2, 4, 5, 10, 100, 2, -22}.
J avob:
#include
#include
using namespace std;
int kichik(const int* array, int size)
{
int qiymat = array[0];
for(int i = 0; i < size; i++)
{
if(qiymat > array[i])
{
qiymat = array[i];
}
}
return qiymat;
}
int main()
{
int a;
cout << "Massiv o'chamini kiriting : "; cin >> a;
const int ulcham = a;
int array[ulcham];
cout << "Massiv elementlarini kiriting : ";
for (int i = 0; i < ulcham; i++)
{
cin >> array[i];
}
int natija = kichik(array, ulcham);
cout << "Massiv elementlaridan eng kichigi : " << natija << endl;
return 0;
}
Natija:
Do'stlaringiz bilan baham: |