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

Сортировка вставкой по ключу в одномерном массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск ключу в одномерном массиве структур http://www.cyberforum.ru/cpp-beginners/thread117050.html
Найти сотрудника, работающего с 1975 года.
C++ Объеденить 2 одномерных массива в один с помощью указателей и функции Очень нужна помощь.... С++ Массивы и указатели... 1) Объеденить 2 одномерных массива в один с помощью указателей и функции. 2) Сложить элементы двухмерного массива. Выполнить с помощью указателей. http://www.cyberforum.ru/cpp-beginners/thread117044.html
Составить таблицу значений C++
Люди добрые, помогите пожалуйста. Туплю с лабораторкой. В с++ полный 0, а сделать надо. Заранее всем спасибо. >>Вводит ряд слов и выводит их, отсортировав в обратном порядке. >>Написать программу, в которой описать перечисляемые типы, содер¬жащие в качестве элементов названия месяцев года – полное название и сокращенное (Jan, Feb, …) на английском языке, предложить пользователю ввести...
Расчет массива в функции и передача в main() C++
Облазил поиски, но так ничего и не понял. На C++ только начинаю. есть функция func, в которой расчитываются значиния массива U, как из этой функции U в main перебросить для дальнейшей работы с U? Можно просто схему, код я сам подставлю. double func() { double U; <расчет U>;
C++ C++.Поиск пифагоровых троек. http://www.cyberforum.ru/cpp-beginners/thread117009.html
Помогите пожалуйста написать программу поиска пифагоровых троек, используя следующие формулы. a=u*v; b=(u*u-v*v)/2; c=(u*u+v*v)/2.
C++ Описать структуру "время" Здравствуйте помогите сделать задачу... Задание на программирование 1. Описать как структуру переменную время (с полями часы, минуты, секунды). Составить и протестировать функции: а) СЛЕД_СЕК (t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t (может происходить смена суток); б) ИНТЕРВАЛ (t1, t2, d), которая вычисляет время d, прошедшее от времени t1 до... подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.05.2010, 15:08     Сортировка вставкой по ключу в одномерном массиве
Сложно конечно вот так догадываться, но думаю это то что нужно
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <cstdio>
#include <cstdlib>
 
struct Date
{
   int day;
   int month;
   int year;
};
 
bool DatePred(Date * a, Date * b)
{
   if(a->year > b->year)
      return true;
   else if(a->month > b->month)
      return true;
   else if(a->day > b->day)
      return true;
 
   return false;
}
 
struct Worker
{
   char name[32];
   Date date;
};
 
void structAdd(struct Worker * w)
{
   printf("Enter the Name: ");
   scanf("%s", &(w->name));
 
   printf("Enter the date of work begin: \n");
   printf("-\tEnter the day: ");
   scanf("%d", &(w->date.day));
   printf("-\tEnter the month: ");
   scanf("%d", &(w->date.month));
   printf("-\tEnter the year: ");
   scanf("%d", &(w->date.year));
}
 
void structPrint(struct Worker * w)
{
   printf("%s : %d %d %d\n", w->name, w->date.day, w->date.month, w->date.year);
}
 
void structSort(struct Worker * w, int l, int r)
{
    int i = 0;
    for(i = r; i > l; i--)
      if(DatePred(&(w[i-1].date), &(w[i].date)))
      {
         Worker t = w[i-1];
         w[i-1] = w[i];
         w[i] = t;
      }
    for(i = l+2; i <= r; i++)
    {
        int j = i;
        Worker v = w[i];
        while(!DatePred(&(v.date), &(w[j-1].date)))
        {
            w[j] = w[j-1];
            j--;
        }
        w[j] = v;
    }
}
 
#define SIZE 3
 
int main()
{
   Worker w[SIZE];
 
   for(int i = 0; i < SIZE; ++i)
   {
      structAdd(&w[i]);
      printf("\n");
   }
 
   for(int i = 0; i < SIZE; ++i)
      structPrint(&w[i]);
   printf("\n");
 
   structSort(w, 0, SIZE - 1);
   for(int i = 0; i < SIZE; ++i)
      structPrint(&w[i]);
   printf("\n");
 
   system("pause");
}
 
Текущее время: 07:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru