|
using System;
class Ajratish
{
/* Suzuvchi nuqtali sonni butun va kasr qismlarga ajratish */
public int GetParts
|
bet | 100/154 | Sana | 08.01.2024 | Hajmi | 5,29 Mb. | | #131939 |
Bog'liq Majmuausing System;
class Ajratish
{
/* Suzuvchi nuqtali sonni butun va kasr qismlarga ajratish */
public int GetParts(double n, out double frac)
{
int w;
w = (int)n;
frac = n - w; // frac parametri orqali sonning kasr qismini olish
return w; // sonning butun qismini qaytarish
}
}
class UseOut
{
static void Main()
{
Ajratish ob = new Ajratish();
int i;
double f;
i = ob.GetParts(10.125, out f);
Console.WriteLine("Sonning butun qismi " + i);
Console.WriteLine("Sonning kasr qismi " + f);
Console.ReadKey();
}
}
Dastur natijasi:
Sonning butun qismi 10
Sonning kasr qismi 0,125
Ko‘rib turganingizdek out parametri qiymatga ega emas, qiymatga ega bo‘lgan o‘zgaruvchilarni ham out bilan chaqirishimiz mumkin, out parametrli o‘zgaruvchi metod tashqarisida e’lon qilinmagan, lekin tashqarida foydalanish mumkin, out parametr sifatida oldin metod tashqarisida e’lon qilingan o‘zgaruvchilardan foydalanish mumkin.
Eslatma: Metodda out parametrli o‘zgaruvchi e’lon qilib foydalanmaslik xatolikka olib keladi.
Xulosa: Metodning out parametri orqali e’lon qilingan o‘zgaruvchini metod ichida o‘zgartirish mumkin va metod tashqarisida ham bu o‘zgarish saqlanib qoladi. Metodda odatiy e’lon qilingan o‘zgaruvchilarda esa bu hodisa ro‘y bermaydi.
Shuningdek, bu imkoniyatlar ref kalit so‘zida ham mavjud, lekin unda o‘zgaruvchining dastlabki qiymati aniq berilishi shart.
Kortejlar C# dasturlash tilining 7.0 versiyasidan boshlab qo‘llanila boshlagan va qiymatlar to‘plami bilan ishlashning qulay usulini ta’minlaydi.
Qavslar ichiga olingan qiymatlar to‘plamini ifodalaydi.
var kortej = (5, 10);
Bunday holda, ikkita qiymatga ega bo‘lgan kortej aniqlanadi: 5 va 10. Bundan tashqari ushbu qiymatlarning har biriga nomli maydonlar orqali kirish mumkin:
Item[kortejdagi_maydonning_seriya_raqami]
Masalan:
var kortej = (5, 10);
Console.WriteLine(kortej.Item1); // 5
Console.WriteLine(kortej.Item2); // 10
kortej.Item1 += 26;
Console.WriteLine(kortej.Item1); // 31
Bunday holda, tur bevosita aniqlanadi. Lekin kortej o‘zgaruvchisiga turni ham aniq berish mumkin:
(int, int) kortej = (5, 10);
Kortej ikkita sonni o‘z ichiga olganligi sababli, tur ta’rifida ikkita sonli turni ko‘rsatish kerak, kortejlarga yana bir misol:
(string, int, double) talaba = ("Anvar", 25, 81.23);
Bunda kortejning maydonlarini ham nomlash mumkin:
var kortej = (count: 5, sum: 10);
Console.WriteLine(kortej.count); // 5
Console.WriteLine(kortej.sum); // 10
Endi kortej maydonlariga murojaat qilish uchun Item1 va Item2 nomlari emas, balki ularning nomlari ishlatiladi.
Hatto kortejni alohida o‘zgaruvchilarga ajratish mumkin:
var (name, age) = ("Nodir", 23);
Console.WriteLine(name); // Nodir
Console.WriteLine(age); // 23
Kortej hal qila oladigan vazifalardan biri bu qiymatlar almashinuvidir:
string main = "Java";
string second = "C#";
(main, second) = (second, main);
Console.WriteLine(main); // C#
Console.WriteLine(second); // Java
Masalan, massivni eng oddiy tartiblash uchun kortejdan foydalanish mumkin:
using System;
namespace ConsoleApp5
{
internal class Program
{
static void Main(string[] args)
{
int[] nums = { 54, 7, -41, 2, 4, 2, 89, 33, -5, 12 };
// tartiblash
for (int i = 0; i < nums.Length - 1; i++)
{
for (int j = i + 1; j < nums.Length; j++)
{
if (nums[i] > nums[j])
(nums[i], nums[j]) = (nums[j], nums[i]);
}
}
// chiqarish
Console.WriteLine("Saralangan massiv chiqishi:");
for (int i = 0; i < nums.Length; i++)
{
Console.Write(nums[i]+" ");
}
Console.ReadKey();
}
}
}
Dastur natijasi:
Saralangan massiv chiqishi:
-41 -5 2 2 4 7 12 33 54 89
|
| |