• (Tasodifiy qiymatlar bilan massivlarni ishga tushirish) Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan massivni ishga tushiradi
  • Ikki o‘lchovli massivni elementlarini ekranga chop etish uchun massivdagi har bir elementni quyidagi kabi sikl yordamida ko‘rsatish kerak
  • Yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalaning. Dastlab jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shing
  • Sizning dasturingiz testni baholaydi va natijani ko‘rsatadi. Dastur har bir talabaning javoblarini to‘g‘ri javob bilan taqqoslaydi, to‘g‘ri javoblar sonini hisoblaydi va uni ekranga chop etadi.
  • int main()
  • char javoblar[TALABALR_SONI][SAVOLLAR_SONI] =
  • {E, D, D, A, C, B, E, E, A, D}
  • {B, B, A, C, C, D, E, E, A, D}
  • char t_javoblar[] = {D, B, D, C, C, D, A, E, A, D};
  • int togrijavobSoni = 0;
  • cout << "Talaba " << i << "ning to`g`ri javobi: " <<
  • Quyidagi bayonotlardan qaysi biri o‘lchovli massiv deklaratsiyasiga tegishli
  • Quyidagi kodning natijasi nima
  • Quyidagi funksiya deklaratsiyasidan qaysi biri noto‘g‘ri
  • Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari




    Download 290,29 Kb.
    bet33/33
    Sana21.02.2024
    Hajmi290,29 Kb.
    #160200
    1   ...   25   26   27   28   29   30   31   32   33
    Bog'liq
    Algoritmlash va dasturlash asoslari-fayllar.org

    Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari:


  • (Kirish qiymatlari bilan massivlarni ishga tushirish) Quyidagi sikl massivni foydalanuvchi ma’lumot kiritish qiymatlari bilan ishga tushiradi:


    cout << "Qator hajmini kiriting" << QATOR_HAJMI<< " va "
    << USTUN_HAJMI << " ustun hajmini kiriting " << endl;
    for (int i = 0; i < QATOR_HAJMI; i++)
    for (int j = 0; j < USTUN_HAJMI; j++)
    cin >> matrix[i][j]





  • (Tasodifiy qiymatlar bilan massivlarni ishga tushirish) Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan massivni ishga tushiradi:


    for (int qator = 0; qator < QATOR_HAJMI; qator++)
    {
    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    {
    matrix[qator][ustun] = rand() % 100;
    }
    }





  • Ikki o‘lchovli massivni elementlarini ekranga chop etish uchun massivdagi har bir elementni quyidagi kabi sikl yordamida ko‘rsatish kerak:


    for (int qator = 0; qator < QATOR_HAJMI; qator++)
    {
    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    {
    cout << matrix[qator][ustun] << " ";
    }
    cout << endl;
    }





  • Yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalaning. Dastlab jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shing:


    int jami = 0;
    for (int qator = 0; qator < QATOR_HAJMI; qator++)
    {
    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    {
    jami += matrix[qator][ustun];
    }
    }





  • (Elementlarni ustunlar bo‘yicha yig‘ish) Har bir ustun uchun uning yig‘indisini saqlash uchun jamiUstun deb nomlangan o‘zgaruvchidan foydalaning. Ustundagi har bir elementni quyidagi sikl yordamida jamiUstunga qo‘shing:


    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    {
    int jamiUstun = 0;
    for (int qator = 0; qator < QATOR_HAJMI; qator++)
    jamiUstun += matrix[qator][ustun];
    cout << "Ustundagi elementlar yig`indisi: " << jamiUstun << endl;
    }





  • (Qaysi qatorda eng katta yig‘indi borligini aniqlash) Qatorning eng katta yig‘indisi va indeksini topish uchun maksQator va indeksMaksQator o‘zgaruvchilaridan foydalaning. Har bir qator uchun uning yig‘indisini hisoblang va agar yangi yig‘indi kattaroq bo‘lsa, maksQator va indeksMaksQator qiymatini yangilang.


    int maksQator = 0;
    int indeksMaksQator = 0;
    // birinchi qatordagi yig`indini hisoblang
    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    maksQator += matrix[0][ustun];
    for (int qator = 1; qator < QATOR_HAJMI; qator++)
    {
    int joriyQatorYigindisi = 0;
    for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
    joriyQatorYigindisi += matrix[qator][ustun];
    if (joriyQatorYigindisi > maksQator)
    {
    maksQator = joriyQatorYigindisi;
    indeksMaksQator = qator;
    }
    }
    cout << "Qator " << indeksMaksQator
    << " eng katta qator yig`indisi " << maksQator << endl;





  • (Tasodifiy aralashtirish) Bir oʻlchovli massivdagi elementlarni aralashtirish “Masivlarni qayta ishlash” boʻlimida keltirilgan. Ikki o‘lchovli massivdagi barcha elementlarni qanday aralashtirish mumkinligini ko‘rib chiqamiz. Buni amalga oshirish uchun har bir element matritsa[i][j] uchun tasodifiy ravishda i1 va j1 indekslarini yarating va matritsa[i][j] matritsai[i1][j1] bilan quyidagi tarzda almashtiring:


    srand(time(0));
    for (int i = 0; i < QATOR_HAJMI; i++)
    {
    for (int j = 0; j < USTUN_HAJMI; j++)
    {
    int i1 = rand() % QATOR_HAJMI;
    int j1 = rand() % USTUN_HAJMI;
    // elementlarni almashtring
    double temp = matritsa[i][j];
    matritsa[i][j] = matritsa[i1][j1];
    matritsa[i1][j1] = temp;
    }
    }





  • Ko‘p tanlovli test yaratish

    Muammo ko‘p tanlovli testlarni baholaydigan dastur yozishdir.


    Faraz qilaylik, 8 ta talaba va 10 ta savol bor va javoblar ikki o‘lchovli massivda saqlanadi. Har bir qatorda talabalarning savollarga javoblari qayd etiladi. Masalan, quyidagi massiv testni saqlaydi.



    Talabaning javoblari


    Talaba[0]


    A

    B

    A

    C

    C

    D

    E

    E

    A

    D



    Talaba[1]


    D

    B

    A

    B

    A

    E

    E

    A

    E

    D



    Talaba[2]


    D

    B

    D

    C

    A

    B

    A

    C

    E

    D



    Talaba[3]


    A

    D

    A

    E

    D

    A

    D

    E

    E

    D



    Talaba[4]


    B

    A

    C

    A

    A

    D

    B

    D

    E

    D



    Talaba[5]


    D

    B

    D

    C

    A

    B

    A

    C

    E

    D



    Talaba[6]


    A

    D

    A

    E

    D

    A

    D

    E

    E

    D



    Talaba[7]


    B

    A

    C

    A

    A

    D

    B

    D

    E

    D




    javoblar bir o‘lchovli massivda quyidagi tarzda saqlanadi:






    To‘g‘ri javoblar






    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    Javoblar


    D

    B

    D

    C

    C

    D

    A

    E

    A

    D


    Sizning dasturingiz testni baholaydi va natijani ko‘rsatadi. Dastur har bir talabaning javoblarini to‘g‘ri javob bilan taqqoslaydi, to‘g‘ri javoblar sonini hisoblaydi va uni ekranga chop etadi.






  • #include



  • using namespace std;




  • int main()



  • {



  • const int TALABALR_SONI = 8;



  • const int SAVOLLAR_SONI = 10;




  • // Students' answers to the questions



  • char javoblar[TALABALR_SONI][SAVOLLAR_SONI] =



  • {



  • {'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},



  • {'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'},



  • {'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'},



  • {'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'},



  • {'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},



  • {'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},



  • {'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},



  • {'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}



  • };




  • // to`g`ri javoblar



  • char t_javoblar[] = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'};




  • // baholarni hisoblang



  • for (int i = 0; i < TALABALR_SONI; i++)



  • {



  • // talabani baholang



  • int togrijavobSoni = 0;



  • for (int j = 0; j < SAVOLLAR_SONI; j++)



  • {



  • if (javoblar[i][j] == t_javoblar[j])



  • togrijavobSoni++;



  • }




  • cout << "Talaba " << i << "ning to`g`ri javobi: " <<



  • togrijavobSoni << endl;



  • }




  • return 0;



  • }


    Natija:
    Talaba 0 ning to‘g‘ri javobi 7


    Talaba 1 ning to‘g‘ri javobi 6
    Talaba 2 ning to‘g‘ri javobi 5
    Talaba 3 ning to‘g‘ri javobi 4
    Talaba 4 ning to‘g‘ri javobi 8
    Talaba 5 ning to‘g‘ri javobi 7
    Talaba 6 ning to‘g‘ri javobi 7
    Talaba 7 ning to‘g‘ri javobi 7

    10-20 qatorlardagi bayonot talabaning javoblarini e’lon qiladi va ishga tushiradi. 23-qatordagi bayonot char qiymatlari qatorini e’lon qiladi va ishga tushiradi. Javoblar massividagi har bir qator talabaning javobini saqlaydi, uni massiv t_javoblar bilan solishtirish orqali baholaydi. Talaba javoblari baholangandan so‘ng darhol talaba uchun natija ko‘rsatiladi.






  • Amaliy mashg‘ulotlar



  • 4 × 5 int matritsasini e’lon qiling va yarating.



  • Quyidagi kodning natijasi nima?


    int m[5][6];
    int x[] = {1, 2};
    m[0][1] = x[1];
    cout << "m[0][1] - " << m[0][1];



  • Quyidagi bayonotlardan qaysi biri o‘lchovli massiv deklaratsiyasiga tegishli?



  • int r[2];



  • int x[];



  • int y[3][];



  • Quyidagi kodning natijasi nima?


    #include
    using namespace std;
    int main()
    {
    int matritsa[4][4] =
    {{1, 2, 3, 4},
    {4, 5, 6, 7},
    {8, 9, 10, 11},
    {12, 13, 14, 15}};
    int jami = 0;
    for (int i = 0; i < 4; i++)
    jami += matritsa[i][i];
    cout << jami << endl;
    return 0;
    }





  • Quyidagi kodning natijasi nima?


    #include
    using namespace std;
    int main()
    {
    int matritsa[4][4] =
    {{1, 2, 3, 4},
    {4, 5, 6, 7},
    {8, 9, 10, 11},
    {12, 13, 14, 15}};
    int jami = 0;
    for (int i = 0; i < 4; i++)
    cout << matritsa[i][1] << " ";
    return 0;
    }



  • Quyidagi funksiya deklaratsiyasidan qaysi biri noto‘g‘ri?


    int f(int[][] a, int qatorHajmi, int ustunHajmi);
    int f(int a[][], int qatorHajmi, int ustunHajmi);
    int f(int a[][3], int qatorHajmi);

    FOYDALANILGAN ADABIYOTLAR


  • Y. Daniel Liang. Introduction to Programming with C++

    http://fayllar.org



    Download 290,29 Kb.
  • 1   ...   25   26   27   28   29   30   31   32   33




    Download 290,29 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari

    Download 290,29 Kb.