5.10.2015 / 20:52 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Banschey, ты так просто «заткнешь» рот компилятору) В будущем видимо это уберут, не зря же устарело
|
5.10.2015 / 21:26 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Naik, я знаю. Он мне предложил использовать новую функцию но там нужен был размер и я не стал парится по этому поводу и просто вырубил его.
|
7.10.2015 / 21:20 | |
OLEKMAY Пользователь Сейчас: Offline
Имя: САНЕК Откуда: Винница Регистрация: 07.07.2012
| народ, помогите разобраться, есть прога на си++(на мазохизмы не обращайте внимания), в общем она работает со списком STL List, и возникает небольшая проблемка при сортировке списка по возростанию(по убіванию сортируется, а наоборот никак). вот отдельно ф-я сортировки: struct Student{ // структура даних списку
string Name;
string Surname;
int Kolokvium[2];
int Lab[4];
};
list<Student> Data;
list<Student> Sort(list<Student> Sorted, int Type){ // ф-я сортування примймає список для сортування і тип 0/1 - спадання/зростання
list<Student>::iterator Next; // змінна типу ітератор
Student Buffer; // буфер для копіювання
for(list<Student>::iterator i=Sorted.begin(); i!=Sorted.end(); i++){ // цикли для проходження по списку, iter - ітератор(ключ) для звертання до елементів списку
for(list<Student>::iterator j=Sorted.begin(); j!=Sorted.end(); j++){
Next=j; // присвоюємо Next значення поточного елемента
if(Next==Sorted.end()) // якщо розглядається останній елемент як поточний - виходимо з циклу
break;
Next++; // задаємо Next-у значення наступного елемента
int OneStudent=(*(j->Kolokvium+0))+(*(j->Kolokvium+1))+(*(j->Lab+0))+(*(j->Lab+1))+(*(j->Lab+2))+(*(j->Lab+3)); // сума балів поточного студента
int TwoStudent=(*(Next->Kolokvium+0))+(*(Next->Kolokvium+1))+(*(Next->Lab+0))+(*(Next->Lab+1))+(*(Next->Lab+2))+(*(Next->Lab+3)); // сума балів наступного студента
if(Type==0){ // тип сотрування: за спаданням
if(OneStudent>TwoStudent){ // якщо поточний елемент більший за наступний то міняємо їх місцями
Buffer=(*(j)); // j - покажчик, тобто *(j) - значення з ячейки пам'яті на яку показує j
*(j)=(*(Next)); // аналогічно значенню j присвоюєм значення Next
*(Next)=Buffer;
}
}
if(Type==1){ // тип сотрування: за зростанням !!! АЛЕ З НЕЗРОЗУМІЛИХ ПРИЧИН ПОКИЩО НЕ ПРАЦЮЄ (програма вилітає) !!!
if(OneStudent<TwoStudent){ // якщо поточний елемент більший за наступний то міняємо їх місцями
Buffer=(*(j)); // j - покажчик, тобто *(j) - значення з ячейки пам'яті на яку показує j
*(j)=(*(Next)); // аналогічно значенню j присвоюєм значення Next
*(Next)=Buffer;
}
}
}
}
return Sorted; // повертаємо відсортований список
}
Прикрепленные файлы: prog.cpp (6.99 кб.) Скачано 432 раза |
8.10.2015 / 06:43 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| не понял ни один из комментов. Пусть Витя разбирается, чтоль
|
8.10.2015 / 12:50 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| DominaN, там коменты ни о чем, можешь не см на них)
|
8.10.2015 / 13:29 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| DominaN, не, тут я бессилен, даже с пониманием комментариев.
__________________
let live |
8.10.2015 / 15:59 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Пока из того что ты скинул сортировать то и не чего,они все одинаковые при попытке сортировать мне выбивает что итиратор вышел или указывает за приделы.
Изменено Banschey (8.10 / 16:10) (всего 1 раз) |
12.10.2015 / 11:19 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Что означает * в C / C++? В это умножение. Ща посмотрел сорцы некоторых проектов на C && C++, так там очень много где используется звёздочка, а вот что она кроме умножения там значит никак понять не могу |
12.10.2015 / 11:37 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Jahak, указатель на данные в памяти. Содержит адрес ячейки памяти, на которую указывает int a = 3; //это просто переменная
int *p = &a; //это указатель на переменную a в памяти. Значение будет примерно таким: 0x7fffffffdc98
int b = *p; //так можно получить значение по указателю. b равно 3.
|
12.10.2015 / 12:11 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Freddy, Спс, буду дальше изучать C в свободное время |