Форум программистов, компьютерный форум, киберфорум
Наши страницы

сортировка по фамилии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить,является ли количество отрицательных элементов числом нечетных http://www.cyberforum.ru/cpp-beginners/thread198396.html
Помогите кто нибудь пожалуйста написать программы в С++... Используя массивы: 1.)Дан массив a(n).Определить,является ли количество отрицательных элементов числом нечетных. 2.)Дан массив...
C++ Работа с строками в с++ Помогите пожалуйста!!!! Контрольная на носу….. Не могу решить одну задачу: Надо составить программу преобразование строки, представляющую запись целого десятичного числа, в целое десятичное... http://www.cyberforum.ru/cpp-beginners/thread198391.html
Вычислить количество элементов массива, равных 0 C++
C++. Одномерные массивы. Помогите пожалуйста с заданием в С++. В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)количество элементов массива,равных 0. 2)сумму элементов...
Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы C++
Задан массив из k символов.Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы. Помогите пожалуйста.
C++ Определить с точностью до 0,2 точку пересечения функции http://www.cyberforum.ru/cpp-beginners/thread198341.html
Определить с точностью до 0,2 точку пересечения функции y=x-exp(-ax2) с осью x при изменении аргумента x от b0 до bm с шагом 0,2. Значения a, b0, bm вводятся с клавиатуры. Сначала не обходимо...
C++ три двунаправленных списка помогите решить задачу на зачет.... даны два файла, содержащие числовые данные 1.создать два двунаправленных упорядоченных списка, заполненный данными из файла 2. создать новый двунаправленный... подробнее

Показать сообщение отдельно
Thanatos
1 / 1 / 1
Регистрация: 27.11.2010
Сообщений: 7
30.11.2010, 00:32
Цитата Сообщение от straus Посмотреть сообщение
у меня список однонаправленный...
и обязательно вот это _long ?
Как удобно. У меня були потом подставлялись в условие перестановки
C
1
2
3
if( _long && _chr ){ 
//выполнять перестановку
}

Цитата Сообщение от straus Посмотреть сообщение
вот примерно я так написал сортировку.... но она не работает как правильно расставить указатели в данном случае??
Сортировка дело жутко нудное. В своё время, когда писал, брал карандаш и листик и выводил порядок перестановок указателей с нуля, ибо толком негде нету.
Вот мой код для сортировки строк пузырьком, только список двусвязный. Надеюсь поможет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
struct base
{
   char name[MONITOR_NAME];
   float power;
   char size[SCREEN_SIZE];
   unsigned long long int color;
   struct base * next, * prev;
};
 
struct base * sort_bubble( struct base * current )
{
   bool _long, _chr;
   struct base * last, * temp, * num, * inside , * num_p;
 
   for( num = current ; num != NULL ; )
   {
      num_p = num->prev;
 
      /* проход до нового последнего указателя */
      for( last = num ; last->next != NULL ; last = last->next );
         inside = last;
 
      while( inside != num && inside->prev != NULL )
      {
 
         /* если пред. строка по длине больше текущей - перестановка, если меньше - нет */
         _long = ( strlen( ((inside->prev)->size) ) >= strlen( inside->size ) );
         _chr = true;
 
         /* если строки по длине равны, сравнивать посимвольно */
         if( strlen( ((inside->prev)->size) ) == strlen( inside->size ) )
            _chr = ( strcmp( ((inside->prev)->size) , inside->size ) > 0 );
 
         if( _long && _chr )
         {
            if( ((inside->prev)->prev) != NULL )
               (((inside->prev)->prev)->next) = inside;
 
            if( inside->next != NULL )
               ((inside->next)->prev) = inside->prev;
 
            ((inside->prev)->next) = inside->next;
            inside->next = inside->prev;
            temp = ((inside->prev)->prev);
            ((inside->prev)->prev) = inside;
            inside->prev = temp;
         }
         else
            inside = inside->prev;      /* если замены не было, перейти на след. ячейку */
      }
 
      /* если num->prev не изменился, значит не был сдвинут */
      if( num_p == num->prev )
         num = num->next;
   }
 
   for( current = last ; current->prev != NULL ; current = current->prev );
 
   return current;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru