Juda katta sonlar bilan ishlash


Download 14.57 Kb.
Sana19.06.2023
Hajmi14.57 Kb.
#1601240
Bog'liq
7-mavzu


Juda katta sonlar bilan ishlash
Butun sonlar o‘lchami. Bir xil tipdagi o‘zgaruvchilar uchun turli kompyuterlarda xotiradan turli hajmdagi joy ajratilishi mumkin. Lekin, bitta kompyuterda bir xil tipdagi ikkita o‘zgaruvchi bir xil miqdorda joy egallaydi. char tipli o‘zgaruvchi bir bayt hajmni egallaydi. Ko‘pgina kompyuterlarda short int (qisqa butun) tipi ikki bayt, long int tipi esa 4 bayt joy egallaydi. Butun qiymatlar o‘lchovini kompyuter sistemasi va ishlatiladigan kompilyator aniqlaydi. 32 – razryadli kompyuterlarda butun o‘zgaruvchilar 4 bayt joy egallaydi. C/C++ tilida konstantalar ishlatiladi: Butun tip (toifa)li o‘zgarmaslar: ular faqat butun sonlardan iborat bo‘ladi. Masalan: 15, 64, 1964, – 21 va h.k. Haqiqiy tipli o‘zgarmaslar: ular butun va kasr qismlardan iborat bo‘ladi. Masalan: 1,5 15,64 va h.k. Haqiqiy tipli sonlarning bu ko‘rinishi oddiy ko‘rinish deyiladi. Juda katta va juda kichik haqiqiy tipli sonlarni darajali (eksponensial) ko‘rinishda yozish qulay. Masalan: 4,5*10-11 yoki 6,5*1011 kabi sonlar 4.5E-11 va 6.5E11. Simvolli konstantalar. Ular qatoriga dastur bajarilishi davomida o‘zgarmaydigan barcha simvollarni kiritish mumkin. C/C++ dasturlash tilida har qanday o‘zgaruvchi ishlatilishidan oldin e’lon qilinishi kerak. E’lon qilish degani-ularning tiplarini aniqlab qo‘yish maqsadga muvofiqdir. Butun toifali o‘zgaruvchilar: int. Masalan: int a, b, i, j; bu yerda dasturda ishlatilayotgan a, b, i, j o‘zgaruvchilarning toifasi butun ekanligi ko‘rsatildi. Bu toifadagi o‘zgaruvchilar xotiradan 2 bayt joy egallaydi. Ularning o‘zgarish intervali (diapazoni): -32768 dan + 32767 gacha. Bu Windows 98 WindowsNTda 32 razryadli butun sonlar foydalaniladi. Butun toifali katta (uzun) o‘zgaruvchilar: long. Masalan: long a,b,s,d2. Bu toifadagi o‘zgaruvchilar xotiradan 4 bayt joy egallaydi. Ularning o‘zgarish intervali (diapazoni): -2147483648 dan + 2147483647 gacha. Ishorasiz butun o‘zgaruvchilar: unsigned short. Xotiradan 2 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 65535 gacha. unsigned long. Xotiradan 4 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 4 294967 295 gacha. unsigned shar. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 255 gacha. Haqiqiy toifadagi o‘zgaruvchilar: float. Masalan: float a,v; bu yerda a, v o‘zgaruvchilarning toifasi haqiqiy ekanligi keltirilgan. Bu toifadagi o‘zgaruvchilar xotiradan 4 bayt joy egallaydi, o‘zgarish intervali 10-38 dan 10+38 gacha. Juda katta yoki juda kichik o‘zgaruvchilarni belgilashda double toifasi ishlatiladi va xotiradan 8 bayt joy oladi. Simvolli o‘zgaruvchilar uchun char toifasi ishlatiladi. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): -128 dan + 127 gacha. Simvolli o‘zgaruvchilar apostrof (‘) ichiga olinib yoziladi va ASCII kodlariga mos ravishda tanlanadi. Qator tipidagi o‘zgaruvchilar uchun ham char toifasi belgilangan. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): -0 dan 256 tagacha bo‘lgan simvollar ketma-ketligidan iborat bo‘lishi mumkin. Qator toifasidagi o‘zgaruvchilar qo‘shtirnoq (“ “) ichida yoziladi. Tekst (ma’lumotlarning char turi) - a,z,? va 2 kabi simvollar ketma-ketligidan iborat bo‘lishi mumkin. Odatda har bir simvol 8 bit yoki bir bayt joy egallaydi. Demak, yuqoridagilar asosiy turlar hisoblanar ekan. Bular: Char, short, int, long, float, double. Bu yerda dastlabki 4 ta tur butun, qolgan 2tasi xaqiqiy sonlar uchun ishlatiladi. Agar turlar hajmini taqqoslab ifodalaydigan bo‘lsak

Bir o`lchamli sonli massivni tоq qiymatli elеmеntlarini juft o`rinli elеmеntlari yig’indisiga bo`lib chiqilsin

Kiruvchi ma’lumotlar: Birinchi satrda n (1<=n <=100). Ikkinchi satrda n ta butun son (-100<=a[i]<=100).
Chiquvchi ma’lumotlar: n ta son masala yechimi. Yechimlar 10-2 aniqlida chiqarilsin.

Kiruvchi ma’lumotlar

Chiquvchi ma’lumotlar

3
3 17 -59

0.18 1.00 -59.00

3
99 48 -20

2.06 48.00 -20.00



#include

using namespace std;



int main()
{
int n ; cin >> n ; int a[n+1] ; double s = 0 , p ;
for ( int i = 1 ; i <= n ; i++ )
{
cin >> a[i] ;
if (i % 2 == 0 ) { s+=a[i]; }
}
for ( int i = 1 ; i <= n ; i++ )
{
if ( a[i] % 2 == 1 && a[i] > 0 ) { //cout << a[i] <<" ";}
printf( "%.2f " , 1.0 * a[i] / s ); }
else {printf("%.2f ",1.0*a[i]);}
}
return 0 ;
}
Download 14.57 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling