Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить,является ли количество отрицательных элементов числом нечетных http://www.cyberforum.ru/cpp-beginners/thread198396.html
Помогите кто нибудь пожалуйста написать программы в С++... Используя массивы: 1.)Дан массив a(n).Определить,является ли количество отрицательных элементов числом нечетных. 2.)Дан массив а(n).Найти сумму цифр каждого элемента массива. Используя цикл с параметром: 1.)Вывести на экран все четные трехзначные числа. Используя цикл с предусловием: 1.)Дано число найти сумму нечетных цифр. ...
C++ Работа с строками в с++ Помогите пожалуйста!!!! Контрольная на носу….. Не могу решить одну задачу: Надо составить программу преобразование строки, представляющую запись целого десятичного числа, в целое десятичное числа, в целое десятичное число… С использование стандартных функций isdigit(), isspace() 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 вводятся с клавиатуры. Сначала не обходимо определить знак функции y при x=b0. Изменение знака функции свидетельствует о пересечении оси x.
C++ три двунаправленных списка помогите решить задачу на зачет.... даны два файла, содержащие числовые данные 1.создать два двунаправленных упорядоченных списка, заполненный данными из файла 2. создать новый двунаправленный список, содержащий данные из двух существующих с сохранением упорядоченности 3.записать содержимое нового списка в третьем файле подробнее

Показать сообщение отдельно
Thanatos
 Аватар для 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;
}
 
Текущее время: 23:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru