5-лаборатория иши. Матрицалар билан ишлаш


Лаборатория топшириқлари ва иш давомида ишлаб чиқиладиган дастурнинг тўлиқ намунаси


Download 0.83 Mb.
bet2/3
Sana30.05.2020
Hajmi0.83 Mb.
#112074
1   2   3
Bog'liq
algoritimlar5

Лаборатория топшириқлари ва
иш давомида ишлаб чиқиладиган дастурнинг тўлиқ намунаси.


Лаборатория топшириғи. Берилган масалани ечиш учун алгоритм ва мос дастурни ишлаб чиқинг. Алгоритмни блок-схема шаклида ифодаланг ва зарур бўлса алгоритмик декомпозицияни амалга оширинг. Зарур ҳолларда қисм масалаларни ечиш учун қисм дастурлардан фойдаланинг.

Дастур намунаси. Биз қуйида намуна сифатида массивларни қайта ишлаш (таҳлил қилиш) билан боғлиқ масалани қараймиз. Масалани ечиш алгоритмини (псевдокод шаклида) ишлаб чиқамиз ва уни C++ тилидаги дастурга ўтказамиз.

Лаботория топшириғи шарти. MxN ўлчамли матрица берилган. Матрица устунлари орасидан ўсиш ёки камайиш тартибида тартибланган устунларининг кўп миқдордагисиниг сони чиқарилсин. Агар бундай устунлар топилмаса 0 қиймат чиқарилсин.

жуда содда бўлгани учун, унинг C++ даги дастури матнини келтирамиз:

#include

#include

//---------------------------------------------------

#pragma argsused

int main(int argc, char **argv)

{

static float a[1000][1000];



static float t;

static short int j,i,n,m;

static bool t1,t2;

static short int u1,k1;

ifstream f1("matrix45.in");

ofstream f2("matrix45.out");

f1>>m>>n;

for (i=1;i<=m;i++){

for (j=1;j<=n;j++)

f1>>a[i][j];

}

t1=true;


t2=true;

u1=0;k1=0;

for (i=1;i<=n;i++){

for (j=1; j<=m-1;j++){

if (a[j][i]>a[j+1][i])

t1=t1 && false;

if (a[j][i]

Чиқувчи маълумотлар (натижа) файли (“output.txt”) файли намунаси



Massivdagi inversiyalar soni=77

Лаборатория ишини бажариш тартиби. Лаборатория ишини бажаришда қуйидаги тартибга амал қилинг:

  1. Гуруҳ журналидаги номерга кўра ўз вариантингизни аниқланг

  2. Масалани ечиш учун алгоритм ва дастур қуринг.

  3. Кичик ҳажмдаги маълумотлар учун дастурнинг тўғри ишлаётганлигига ишонч ҳосил қилинг.

  4. Бажарилган ишлар хақида ҳисобот тайёрланг

Лаборатория топшириқлари вариантлари

1

Топшириқ матни

1

MxN o`lchamli matritsa berilgan. Uning elementlari quyidagi tartibda ekranga chiqarilsin: 1-satr elementlarini chapdan o`ngga, 2-satr elementlarini o`ngdan chapga, 3-satr elementlarini chapdan o`ngga, 4-satr elementlarini o`ngdan chapga va hokazo.

Algoritm tuzamiz:

  1. MxN o’lchamli massiv e’lon qilamiz va uning qiymatlarini kiritamiz;

  2. Unda masaladagi shartni qanoatlantiruvchi sikllarni tuzamiz;

  3. Bunda ichma-ich sikldan foydalaniladi va satr qiymatining biror qiymatida barcha ustunlarning o’zgarishini tartiblagan holda choplash amalga oshirilishi kerak.

Umumiy ko’rinishi:

Dasturning c++ dagi kodi:



 m ta satr va n ta ustundan

#include

using namespace std;

/*MxN o`lchamli matritsa berilgan. Uning elementlari

quyidagi tartibda ekranga chiqarilsin: 1-satr elementlarini

chapdan o`ngga, 2-satr elementlarini o`ngdan chapga,

3-satr elementlarini chapdan o`ngga,

4-satr elementlarini o`ngdan chapga va hokazo.*/

int main(){

int M, N, i, j, mx;

cout<<"Matritsaing satr va ustunlar sonini kiriting: ";

cin>>M>>N;

//matritsani e'lon qilish va kiritish

int a[M][N], b[M][N];

for(i=0; i

for(j=0;j

cin>>a[i][j]; }

cout<<"bowlang'ich ko'rinishdagi matritsa: "<

for(i=0;i

for(j=0;j

cout<

cout<

//matritsani kerakli tartibga keltirish :

for(i=0;i

for(j=0;j

if(i%2==0)

b[i][j]=a[i][j]; else

b[i][j]=a[i][N-1-j];

}

cout<

cout<<”natija:”<

// matritsa ko'rinishida choplash choplash:

for(i=0;i

for(j=0;j

cout<

}cout<

Dasturning natijasi:

Kiritiluvchi sonlar massiv ko’rinishida emas!





Download 0.83 Mb.

Do'stlaringiz bilan baham:
1   2   3




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