PDA

View Full Version : Програмисты HELP!



Archy
13.04.2009, 21:38
Народ поскажите пожалуйсто как сортировать фамилии в алфовитном порядке? то что я сделал (а именно Bubble Sort")
не работает! те значения что были в структурном поле "Фамилия" становится просто пустыми, тесть данные стираются при копировании! мне обязательно нужно доделать эту прогу для универа, это зачетная работа!


/********************/
/* Display by Surname */
/********************/

void disp_surname(DATABASE acc_array[])

{
int i, j;
char hold[15];

for (j = 1; j < SIZE; j++)
{
for (i = 0; i < SIZE - 1; i++)
{
if (strcmp (acc_array[i].surname, acc_array[j].surname) >0)
{
hold[15] = *acc_array[i].surname;
*acc_array[i].surname = *acc_array[i + 1].surname;
*acc_array[i + 1].surname = hold[15];
}
}
}

for (i=0; i<SIZE; i++)
{
if (acc_array[i].accnr > 0)
{
printf("\n\nAccount Details:\n");
printf("\nAccount NR: %d\n", acc_array[i].accnr);
printf("Name: %s\n", acc_array[i].name);
printf("Surname: %s\n", acc_array[i].surname);
printf("DOB: %2d.%2d.%2d\n", acc_array[i].dob.day, acc_array[i].dob.month, acc_array[i].dob.year);
printf("Added: %2d.%2d.%2d\n", acc_array[i].added.day, acc_array[i].added.month, acc_array[i].added.year);
printf("Overdraft: %.2f from %.2f\n", acc_array[i].overdraft, acc_array[i].overdraft_setup);
printf("Balans: %.2f\n\n", acc_array[i].balance);
}
}
}

Вот тут можно скачать всю прогу V.alpha (http://rapidshare.com/files/220881374/Bank_DB.exe) от 13.04.2009

02nz
14.04.2009, 03:09
hold[15] = *acc_array[i].surname;
*acc_array[i].surname = *acc_array[i + 1].surname;
*acc_array[i + 1].surname = hold[15];

->

DATABASE tmp = acc_array[i];
acc_array[i]= acc_array[i + 1];
acc_array[i + 1]= tmp;

сортировать нужно не массив, а связанный список: количество перезаписываемых данных - sizeof(PVOID) vs sizeof(DATABASE)

Archy
14.04.2009, 03:25
Спасибо большое тока что допер, что я обменивал только фамилии в структуре, а не весь акаунт :) посибки

все комполится без проблем, только вот не сортирует все равно почему-то :(




тут все правильно?
if (strcmp (acc_array[i].surname, acc_array[j].surname) >0)

Archy
14.04.2009, 03:31
ой наврал! сортирует, просто 4увствителен к регистру! все проблема решена! посибки огромное тебе! как я такой момент пропустил и не допер что только фамилиями меняюсь? ну да ладно! посибки есо миллион раз!

Archy
14.04.2009, 03:43
все доделал всю прогу! все менюшки активны! вроде все пашет! если кому не лень, тестируем на баги и отписываем

BETA v1.0 (http://rapidshare.com/files/221003006/Bank_DB.exe)