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

Поразрядная сортировка массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа про Stack http://www.cyberforum.ru/cpp-beginners/thread803178.html
Помогите пожалуйста, решить программу про Stack. The input file should be HomeworkSixInput.txt, provided by the assignment. This file has one postfix notation expression per line. (You can test your program with any data you like, but this is the file that I will use to grade the program, and your program input should use this file name by default.) The program should read each line and...
C++ Что-то не могу въехать в задание Написать функцию которая получает в качестве аргумента указатели к двум переменным типа int, которая изменяет значение указанных переменных, только тогда, когда указанная через второй аргумент переменная меньше от переменной указанной через первый аргумент. Только один вопрос. wtf?O_o void Switch(int *number1, int *number2) Не могу сообразить, в чем вообще смысл. http://www.cyberforum.ru/cpp-beginners/thread803148.html
C++ обработка файлов
товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: "Найти максимальный из отрицательных элементов в файле целых чисел." То есть в той же папке что и программа я создаю файл допустим "1.txt" с набором цифр: 3 5 7 2 8 -2 8 -9 11 21 -32 И когда я ввожу в программе 1.txt мне должно выдать: " Максимальный из отрицательных элементов: -32 " Прога не работает!!!...
C++ Рекурсивные функции. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы
2) 2. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы массива по возрастанию.
C++ Разработайте класс MONEY http://www.cyberforum.ru/cpp-beginners/thread803139.html
Задание 1: Разработка класса. Разработайте класс MONEY. Элемент класса: рубли; копейки. Методы: конструктор без параметров ( по умолчанию); конструктор с параметрами; конструктор копирования;
C++ Перезагрузка функций 1 С помощью механизма перегрузки функций реализовать функции для нахождения суммы: 1) 2-х чисел; 2) 2-х строк; 3) строки и числа; 4) числа и строки. подробнее

Показать сообщение отдельно
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47

Поразрядная сортировка массива - C++

08.03.2013, 09:59. Просмотров 1372. Ответов 5
Метки (Все метки)

Дан массив двоичных чисел, нужно отсортировать его с помощью поразрядной сортировки, начиная со старшего разряда, функция должна быть рекурсивной. Никак не могу записать разбиение массива на части (вначале делится пополам, потом на 4 части и т.д.). Помогите, пожалуйста, довести программу до ума. Вот наработки:
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
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#define L 16
 
int binary (int n)
{
    while (n>0)
    {
          if (n%10>1) return 0;
          n=n/10;
    } 
    return 1;
}
 
int binmass(int A[], int &N)
{
    while(1)
    {
    printf ("Print N (2-%d)\n", L);
    scanf ("%d", &N);
    if (N>1 && N<L)
    {
         break;
    }
    else
    {
        printf ("Incorrect value\n");
    }
    }
    int bit=0;
    while (1)
    {
          printf ("Enter max bit < 5\n");
          scanf ("%d", &bit);
          if (bit<5) break;
          else printf ("Incorrect value\n");
    }
    for (int i=0; i<N; i++)
    {
        while(1)
        {
                printf ("\nEnter %d element\n", i+1);
                scanf ("%d", &A[i]);
                if (binary(A[i]) && A[i]<pow(10,bit)) break;
                else printf ("Incorrect element\n");
        }
    }
    return bit;
}
 
 
 
void binsort (int A[], int N, int bit, int key) // собственно, сама сортировка
{
 if (bit<0) return;
 int i=0, j=key-1, a=0, b=j, c=0, count=0, count1=0, T=0;
 for (i=0; i<N; i++, count++)
 {
     if (count+1==key) {i=i+1+key; count=0; j=i-1+key*2;}
     else j=b;
     c=A[i]/pow(10,bit);
     if (c%10==1) 
     {
                  a=A[i];
                  for (count1=0; count1<key; count1++, j--)
                  {
                      c=A[j]/pow(10,bit);
                      if (c%10==0) {A[i]=A[j]; A[j]=a; T=1;}
                  }
     }
     
 }
 if (T==0) binsort (A, N, bit-1, key);
 else  binsort (A, N, bit-1, key/2);
}
 
int main()
{
    int A[L], N=0, i=0;
    int bit=binmass (A, N);
    binsort (A, N, bit-1, N/2);
    printf ("Result\n");
    for (i=0; i<N; i++)
    {
        printf ("%d\n", A[i]);
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru