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

> Внимание!

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

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

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


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

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


Посмотрите пожалуйста. У меня почему-то самая обычная сортировка не работает. Бред какой-то.

у меня объявлена такая структура
#define MAX 100

struct addr
{
char name[10];
char surname[20];
char patronymic[30];
char address[40];
char telephone[20];
} addr_list[MAX];


затем выбирается сортировка (по убыванию/по возрастанию)
void COPTIPOBKA(void)
{ char i[2]; int d;
textcolor(WHITE);
printf("\n\rIf you wish to sort on decrease press 1 else press 0: \n\r");
gets(i);
d=atoi(i);
switch (d) {
case 1: COPTIPOBKA_on_decrease();
break;
case 0: COPTIPOBKA_on_increase();
break;
}
clrscr();
return;
}


эта функция я использую, чтобы знать сколько записей уже внесено
int find_free(void)
{register int t;

for(t=0; addr_list[t].name[0] && t<MAX; ++t);
if (t==MAX) return -1;
return t;
}

И вот эти две бредовые сортировки:

void COPTIPOBKA_on_increase()
{int k1,l1,i,slot;
char s[50]; char l[50]; char l2[50]; char l3[50]; char l4[50];
slot=find_free();
for (k1=0; k1<=slot; k1++)
{ for(l1=1; l1<slot; l1++)
{
if (addr_list[l1].name>addr_list[k1].name)
{
strcpy(s,addr_list[k1].name);
strcpy(l,addr_list[k1].surname);
strcpy(l2,addr_list[k1].patronymic);
strcpy(l3,addr_list[k1].address);
strcpy(l4,addr_list[k1].telephone);
strcpy(addr_list[k1].name,addr_list[l1].name);
strcpy(addr_list[k1].surname, addr_list[l1].surname);
strcpy(addr_list[k1].patronymic,addr_list[l1].patronymic);
strcpy(addr_list[k1].address,addr_list[l1].address);
strcpy(addr_list[k1].telephone,addr_list[l1].telephone);
strcpy(addr_list[l1].name,s);
strcpy(addr_list[l1].surname,l);
strcpy(addr_list[l1].patronymic,l2);
strcpy(addr_list[l1].address,l3);
strcpy(addr_list[l1].telephone,l4);
}
}
}
}



void COPTIPOBKA_on_decrease()
{
{int k1,l1,i,slot;
char s[50]; char l[50]; char l2[50]; char l3[50]; char l4[50];
slot=find_free();
for (k1=0; k1<=slot; k1++)
{ for(l1=1; l1<slot; l1++)
{
if (addr_list[l1].name<addr_list[k1].name)
{
strcpy(s,addr_list[l1].name);
strcpy(l,addr_list[l1].surname);
strcpy(l2,addr_list[l1].patronymic);
strcpy(l3,addr_list[l1].address);
strcpy(l4,addr_list[l1].telephone);
strcpy(addr_list[l1].name,addr_list[k1].name);
strcpy(addr_list[l1].surname, addr_list[k1].surname);
strcpy(addr_list[l1].patronymic,addr_list[k1].patronymic);
strcpy(addr_list[l1].address,addr_list[k1].address);
strcpy(addr_list[l1].telephone,addr_list[k1].telephone);
strcpy(addr_list[k1].name,s);
strcpy(addr_list[k1].surname,l);
strcpy(addr_list[k1].patronymic,l2);
strcpy(addr_list[k1].address,l3);
strcpy(addr_list[k1].telephone,l4);
}
}

}
} }


"Один со всеми" так вроде называется. Неправильно реализовала я ее как-то.

Сообщение отредактировано: Тёмный Эльф -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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