Oraliq nazorat Nº1



Yüklə 166,06 Kb.
səhifə6/8
tarix24.12.2023
ölçüsü166,06 Kb.
#158115
1   2   3   4   5   6   7   8
Algoritm Odinaxon 2106

Natija:

3. Berilgan haqiqiy sonlar a1 , a2 , . . . , a2n (n >= 2 va oldindan ma'lum emas).
Hisoblang, topshiriqlarning blok sxemasini, algoritmini va dasturini tuzing
а) a1* a2n + a2*a2n-1 + . . . + an*an+1 ;
Algoritmi:
1. Berilgan haqiqiy sonlar ro'yxatini a o'zgaruvchiga yuklang.
2. n-burchaklar uchun for tsikli yaratiladi, misol uchun:

for i in range(n):


3. ifoda a[i] * a[n+i] ni hisoblagan shaklda for tsikliga qo'shiladi.
4. Natijani saqlash uchun bir o'zgaruvchiga qo'shish davom ettiriladi, misol uchun:

result = 0


5. For tsikli tugagandan so'ng, result o'zgaruvchiga ifoda natijasi yuklanadi.
6. Natijani qaytarish uchun:

return result



Dasturning C#dagi matni:
using System;
using System.Linq;

class Program


{
static void Main()
{
double[] sonlar = { 1.2, 3.4, 5.6, 7.8 }; // haqiqiy sonlar uchun misol
int n = sonlar.Length / 2;
double natija = 0;
for (int i = 0; i < n; i++)
{
natija += sonlar[i] * sonlar[2 * n - 1 - i];

Console.WriteLine(natija);
Console.ReadKey();
}
}
Natija:

б) min ( a1 + an+1 , a2 + an+2 , . . . , an + a2n ) ;
Algoritmi:
1. Berilgan sonlar to'plamini ikki to'g'ridan bo'lmaydigan bo'limga ajratamiz.
2. Kiritilgan sonlardan birinci yarimni a va ikkinchi yarimni b deb nomlashamiz.
3. Birinchi yarimning oxirgi sonini a_oxirgi qilib, ikkinchi yarimning b_1 sonini e'lon qilamiz.
4. Birinchi yarimning oxirgi soni bilan, ikkinchi yarimning birinchi sonini qo'shib, olishimiz kerak:
c = a_oxirgi + b_1
5. Natijada, ikkinchi yarimning oxirgi sonini b_oxirgi deb, ularni ham qo'shib natija b_ravno = a_oxirgi + b_1 bo'ladigan sonlarni topamiz.
6. Agar n == 2 bo'lsa, b_ravno ni qaytarib, boshqa holda quyidagi holda tarang:

A = (a_1 , a_2 , . . . , a_n) va B = (a_n+1 , a_n+2 , . . . , a_2n)


A va B to'plamlarini qo'shib qolgan natijaga X ni deb nomlashamiz:
X = min ( a_1 + a_n+1 , a_2 + a_n+2 , . . . , a_n + a_2n )
7. Quyidagi holda tarang:
Y = minimum topqinchi - 1 elementlari sonlar to'plami A va B yorliq.
8. quyidagi algoritmni tartib qilib yuborish: b_ravno + min(X, Y) shamncha.
9. Harmonik o'qitish avvalgi elementlarni turli tartibda izlashni mahsulot qiladi. Shundan, Qavatlash Avvalgi elementlarni bir-biridan ajratilgan holda o'qitishga qarab majburiy harakatlarni aniqlovchi tasnifda ishlatiladi (avvalgi yarimni, ikkinchi yarimni va natijani ajratish).
Algoritm:
1. Sonlarni kiritish.
2. Sonlarni ikki to'g'ridan bo'lmaydigan bo'limga ajratish va ikkita yarim to'plamini tuzish:
a = []
b = []
n = len(arr)
for i in range(n // 2):
a.append(arr[i])
b.append(arr[n // 2 + i])
if n % 2 != 0:
a[n // 2] = arr[n - 1]
3. To'plamlarni topish:
c = b[0] + a[-1]
for i in range(1, n // 2):
if b[i] + a[n // 2 - i - 1] < c:
c = b[i] + a[n // 2 - i - 1]
4. Yarimlardan olinmagan to'plamlarni topish:
d = a[0] + b[0]
for i in range(1, n // 2):
if a[i] + b[i] < d:
d = a[i] + b[i]
5. Natijani hisoblash:
if n <= 2:
return c
else:
return c + min(c, d)


Yüklə 166,06 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə