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

> Внимание!

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

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

> Пузырьковая Сортировка в C/C++, компилятор c++ 3.1
сообщение
Сообщение #1


Бывалый
***

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

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


Объясните пожалуйста,почему не сортируются элементы??
вроде де бы все верно в коде..
*n=макс. размерность массива.
buf= временная переменная для хранения элемента массива.

while(is)
{
is=0;
for (i=*n;i<=0;i--)//пробывал ставить --,не помогло...
if (tabl1[i].sball<tabl1[i-1].sball)
{
buf=tabl1[i];
tabl1[i]=tabl1[i-1];
tabl1[i-1]=buf;
is=1;
}
}


Сообщение отредактировано: Andrewshkovskii -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
сообщение
Сообщение #2


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

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

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


Если я не ошибаюсь, то вместо is=1 надо поставить is=is+1;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Вот при таком коде минимум 2 раза произойдет выход за пределы массива: на первой итерации - при i = *n и попытке обратиться к tabl1[ i ] (индексы элементов массива меняются от 0 до n - 1), и на последней - при i = 0 и попытке чтения tabl1[i -1].

Приведи описания массива и заголовок функции сортировки...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

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

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


для чего??)))там же цикл не по количественному значению,а по 0 или 1...

Добавлено через 2 мин.

struct my_s {
char FIO[max_name];
char prim[max_prim];
int vball;
int ekz[5];
int zach[3];
float sball;
};
my_s tabl1[max_s];
int* n=new int ;

описание массива.Эм,массив структур глобальный.Внутри одной функции определяется размерность этого массива в (*n).
Заголовок функции
 void output_w(int *n,my_s tabl1[]).

внутри определяю переменную my_s buf.
она ничего не возвращает,лишь обрабатывает глобальную переменную по заданию..

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


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

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

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


Цитата
там же цикл не по количественному значению,а по 0 или 1

да возможно, значит, ошибаюсь. сложно судить по отрывку из кода.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






В таком случае нельзя менять местами элементы структур так, как ты показал. Это не Паскаль, где записи можно без последствий присваивать друг другу, а С, где для этого надо использовать memcpy (или переопределять конструктор копирования/операцию присваивания для C++)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

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

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


хм..и как же мне написать сортировку?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Не совсем понятно, зачем собственно ты выделяешь n динамически, что тебе это даст? Но если сделать n обычной переменной, то:

...
int n = ...;

int is = 1;
while(is) {
is = 0;
for (int i = n - 1; i > 0; i--)
if (tabl1[i].sball < tabl1[i-1].sball) {

my_s buf;
memmove((void*)(&buf), (void*)(&tabl1[i]), sizeof(my_s));
memmove((void*)(&tabl1[i]), (void*)(&tabl1[i - 1]), sizeof(my_s));
memmove((void*)(&tabl1[i - 1]), (void*)(&buf), sizeof(my_s));

is=1;
}
}
...

 К началу страницы 
+ Ответить 

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

 





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