IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Сортировка записей, Си++
сообщение
Сообщение #1


Гость






В общем, вот само задание:
Написать и протестировать функции сортировки записей и поиска их по ключам для следующих методов: линейный выбор с обменом, бинарный поиск.
Запись имеет три поля, например, фамилия, имя, номер телефона. Иметь не менее 30 записей. Поиск - по любому ключу, задаваемому из меню.

Вот то, что я сделал:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

class qwe
{
public:
char name[20];
char sirname[20];
char phone[7];
};

int main()
{
clrscr();
randomize;
int k;
qwe base[30];
for(int i=1;i<=30;i++)
{
for (k=1;k<random(10)+5;k++)
{
base[i].name[k]=char(random(25)+65);
base[i].sirname[k]=char(random(25)+65);
}
for (k=1;k<8;k++)
base[i].phone[k]=random(9);
}
getch();
}


Этот кусок программы должен заполнять базу данных: имя, фамилию и телефон. Имя и фамилия - случайный набор букв (заглавных латинских), телефон - случайная последовательность из 7 цифр. Где здесь ошибка?

Допустим, есть у меня эта база, а что дальше делать?
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Уф, вроде все получилось:
 #include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

const int size = 20;
int n,left=0,right=29;
class qwe
{
public:
char name[size];
char sirname[size];
char phone[8];

qwe();
};
qwe :: qwe() {
int k;
for(k=0; k<random(10)+5; k++)
name[k]=char(random(25)+65);
name[k]='\0';
for(k=0; k<random(10)+5; k++)
sirname[k]=char(random(25)+65);
sirname[k]='\0';
for(k=0; k<7; k++)
phone[k]=char(random(10)+'0');
phone[7]='\0';
}
qwe base[31];

void sortname ()
{
for (int i=0; i<30; i++)
for (int j=i; j<30; j++)
if (strcmp(base[j].name,base[i].name)<0)
{base[30]=base[i];base[i]=base[j];base[j]=base[30];}
};

void sortsirname ()
{
for (int i=0; i<30; i++)
for (int j=i; j<30; j++)
if (strcmp(base[j].sirname,base[i].sirname)<0)
{base[30]=base[i];base[i]=base[j];base[j]=base[30];}
};

void sortphone ()
{
for (int i=0; i<30; i++)
for (int j=i; j<30; j++)
if (strcmp(base[j].phone,base[i].phone)<0)
{base[30]=base[i];base[i]=base[j];base[j]=base[30];}
};

void baseout()
{
for(int i=0; i<30; i++)
{
cout.width(15);
cout << base[i].name << ", ";
cout.width(15);
cout << base[i].sirname << " : ";
cout << base[i].phone << endl;
}
};

int main()
{
clrscr();
randomize;
baseout();
cout<<"\nWhat would you like to find? (name - 1/sirname - 2/phone - 3): ";
char ch=getch();
if (ch=='1')
{
sortname();clrscr();
cout<<"base sorted by name:\n\n";baseout();
cout<<"\nEnter the name: ";cin>>base[30].name;
while ((right-left)>1)
{
n=(right+left+1)/2;
if (strcmp(base[30].name,base[n].name)>0)
left=n; else right=n;
}
}

else if (ch=='2')
{
sortsirname();clrscr();
cout<<"base sorted by sirname:\n\n";baseout();
cout<<"\nEnter the sirname: ";cin>>base[30].sirname;
while ((right-left)>1)
{
n=(right+left)/2;
if (strcmp(base[30].sirname,base[n].sirname)>0)
left=n; else right=n;
}
}
else {
sortphone();clrscr();
cout<<"base sorted by phone:\n\n";baseout();
cout<<"\nEnter the phone: ";cin>>base[30].phone;
while ((right-left)>0)
{
n=(right+left)/2;
if (strcmp(base[30].phone,base[n].phone)>0)
left=n; else right=n;
}
}
clrscr();
cout << base[n].name << " , " <<
base[n].sirname << " : " <<
base[n].phone << endl;
getch();
return 0;
}

volvo, огромное спасибо за помощь!

Сообщение отредактировано: Unknown -


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 6:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name