Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИКУМ_3.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
266 Кб
Скачать
☆

30. Построение 2 обратной и циклической формы перестановки

Автор Уваров Е. ГИП-111

#include "stdafx.h"

#include <conio.h>

#include <iostream>

using namespace std;

#define SIZE 6

#define S 20 // максимальный размер циклической записи

int main()

{

char m1[SIZE] = {'a','b','c','d','e','f'}; // 1- строка символов

char m2[SIZE] = {'a','d','b','e','c','f'}; // 2- строка символов

char m11[SIZE] = {'a','b','c','d','e','f'};

/* m11[] -массив переставляемых символов,задает порядок перстановки столбцов */

int m[SIZE] = {-1,-1,-1,-1,-1,-1}; // инициализация рабочего массива

char m3[S]; // циклическая форма перестановки

char ch,x,y,z;

int i,j=0,k=0,t,ii=-1; // ii- индекс в массиве m3[]

// Построение обратной перестановки

for(i = 0; i < SIZE; i++)

{

ch=m1[i];

m1[i]=m2[i];

m2[i]=ch;

}

cout<<"\n Given m1 :"<<endl;

for(i = 0; i < SIZE; i++) cout<<m2[i]<<" ";

cout<<"\n Given m2 :"<<endl;

for(i = 0; i < SIZE; i++) cout<<m1[i]<<" ";

// перстанока столбцов в первоначальном порядке

for(j = 0; j < SIZE-1; j++) // j - индекс массива MAS_11[]

for(i=0;i<SIZE;i++) // индекс первой строки

{ if(m11[j]==m1[i]) // i-й столбец должен стать j- ым

{

ch=m1[i];

m1[i]=m1[j];

m1[j]=ch;

ch=m2[i];

m2[i]=m2[j];

m2[j]=ch;

}

}

cout<<"\n New m1 with old oder :"<<endl;

for(i = 0; i < SIZE; i++) cout<<m1[i]<<" ";

cout<<"\n New m2 :"<<endl;

for(i = 0; i < SIZE; i++) cout<<m2[i]<<" ";

cout<<endl;

// формированиециклическо формы перестановки

for (i=0;i<SIZE;i++) // i - индекс символа 1-й строки

{

z=m1[i];

x=z;

y=m2[i];

t=0;

for (j=0;j<SIZE;j++)

if (i==m[j]) t=1; // поиск индекса i в m[]

if (t==1) continue; // переход к началу цикла и i++

j=0;

if ((x==y)&&(x!=0)) // единичный цикл

{

ii++;

m3[ii]='(';

ii++;

m3[ii]=x;

ii++;

m3[ii]=')';

}

// пробегаем массивы строк инабираем блок с начальным символом 'y'

while(z!=y) // собираем блок с начальным символом z

{

if (m1[j]==y)

{

m[k]=j; //формируем массив индексов символов блока

k++;

if (z==x)

{

ii++;

m3[ii]='('; // открываем блок цикла

}

ii++;

m3[ii]=x; // записываем символ в блок

x=y; // продолжаем набирать блок

y=m2[j];

j=0;

if (z==y) // нашли конец блока

{

ii++;

m3[ii]=x;

ii++;

m3[ii]=')';

}

}

j++;

if ((z==y)||(j>SIZE)) break;

}

}

cout<<"\n cycle form : \n";

for(i=0;i<=ii;i++) cout<<m3[i]<<" ";

getch();

return 0;

}

31. Работа с библиотечными карточками

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

class card {

char title[8];

char author[40];

int number;

public:

void store(char *t,char *name,int num);

void show();

};

void card::store(char *t,char *name,int num)

{

strcpy(title,t);

strcpy(author,name);

number=num;

}

void card::show()

{

cout<<"Title :"<<title<<"\n";

cout<<"Author :"<<author<<"\n";

cout<<" Number:"<<number<<"\n";

}

int main()

{

card book1,book2;

int n;

book1.store("Dune","Frank",2);

book2.store("Trilogy","Asimov",1);

book1.show();

book2.show();

cin>>n;

return 0;

}