Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
00002.doc
Скачиваний:
7
Добавлен:
01.03.2025
Размер:
131 Кб
Скачать
☆

Int main(int argc, char* argv[])

{

cout << "Vvedite n"<< endl;

cin >> n;

cout << "Vvedite poslwedovatelnost" <<endl;

for (int i=0; i<n; i++) cin >> a[i];

int k=0;

for (int i=0; i<m; i++)

c[i]=0;

for (int i=n-1; i>=0; i--)

c[a[i]]=c[a[i]]+1;

for (int i=1; i<m; i++) c[i]=c[i]+c[i-1];

for (int i=0; i<n; i++) {

b[c[a[i]]-1]=a[i];

c[a[i]]=c[a[i]]-1;

}

for (int i=0; i<n; i++) cout<<b[i] <<" ";

}

  1. Написать программу, реализующую алгоритм двоичного поиска в отсортированном массиве.

const int nn=10;

int k=0;

int i=0;

int m=0;

long key;

struct note

{

string fio;

long num;

};

note book[nn];

// poisk

int Search_dv(int l, int r)

{

if (l>r) {

cout << "net takogo";

return -1;

}

else m=(l+r)/2;

if (book[m].num>key) Search_dv(l,m-1); else

if (book[m].num<key) Search_dv(m+1,r); else return m;

};

Int main(int argc, char* argv[])

{

ifstream in("phone.txt"); long n; string str;

while ( in >> n)

{

in.get(); in >> str; book[i].fio=str;

book[i].num=n;

++i; ++k;

};

for (int i=0; i< k; ++i)cout << book[i].num <<" " << book[i].fio << endl;

cout << "input nomer:"<<" ";

cin >> key;

int r=Search_dv(0,k);

cout << book[r].fio;

getch();

}

  1. Написать программу, реализующую процедуры добавления и поиска строк в хэш-таблице.

const int size=10;

struct man{

string name;

long num;

};

int Hash(string s,int k);

Int main(int argc, char* argv[])

{

man x[size];

for(int i=0;i<size;i++){

x[i].num=-1;

x[i].name="-1";

}

ifstream in("h:\\TelBook.txt",ios::in);

if(!in){

cerr<<"File not found\n";

exit(1);

}

string n;

long t;

int p=0,koll=0;

while(in>>t){

in.get();

in>>n;

int H,k=0;

do{

H=Hash(n,k)%size;

k++;

}while(x[H].num!=-1);

if(k>0)koll++;

x[H].name=n;

x[H].num=t;

p++;

}

cout<<koll<<endl;

for(int i=0;i<size;i++)

if(x[i].num!=-1)

cout<<x[i].num<<" "<<x[i].name<<endl;

string fam;

cout<<"Enter the name: ";

cin>>fam;

int H,k=0;

do{

H=Hash(fam,k)%size;

k++;

if(k==size){

cout<<"Net takogo";

break;

}

}while(x[H].name!=fam);

if(k<size)

cout<<x[H].num<<endl;

char ch;

cin>>ch;

}

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

int Hash(string s,int k){

int N=0;

for(int i=0;i<s.length();i++)

N+=s[i];

return N+k;

  1. Написать программу, использующую стек для решения задачи. (игрушка пирамидка)

int a[100];

int h, n, temp;

void add_st(int *a,int em)

{

a[h]=em;

h++;

}

int* del_st(int *a)

{

int em = a[--h];

};