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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ разбираем исходный код http://www.cyberforum.ru/cpp-beginners/thread556736.html
есть такой код. помогите разобраться какая строчка что делает. премногоблагодарен заранее :) код рабочий. проверено :) #include <time.h> #include <stdio.h> #include <vcl.h> #include <iostream.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused
C++ ЛАБА Обработка ведомости студенческой группы Очень нужна помощь,прошу! Нам надо сделать лаб.работу по информатике,у меня есть заготовка которую дал учитель,но она почему то тоже с ошибками,помогите найти ошибки в ней,очень прошу #include <stdio.h> #include <conio.h> #define NS 7 #define NFIO 15 typedef struct { int Day; int Month; http://www.cyberforum.ru/cpp-beginners/thread556735.html
Как узнать исходный код программы? C++
Есть файл с простой программой, мне надо узнать его исходный код. как это сделать?
C++ Функция getline в условии while
Здравствуйте! Перевожу код с c++ на c#. Но возникла проблема с условием цикла while while(getline(cin,S)) {...} Почитал в интернетах про getline, написано, что считывает с определенными особенностями строку. Но здесь эта функция записана в условии цикла, как она может быть условием, вот это не могу понять. Прошу вашей помощи. полный код в c++:
C++ Считывание текста из файла и вывод его на экран http://www.cyberforum.ru/cpp-beginners/thread556701.html
Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.
C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить... Программу написать в двух вариантах: со стандартной обработкой массивов и обработкой с помощью указателей. Размерность массивов задается именованной константой. Предусмотреть тестирование на всех возможных наборах данных. В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. Количество элементов массива, больших С; величину С задать с клавиатуры. 2. Произведение и... подробнее

Показать сообщение отдельно
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
24.04.2012, 11:05     программа порозрядной сортировки
Реализация байт-интерпретации LSD-алгоритма порозрядной сортировки на С++ на примере
сортировки массива строк.


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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
void swaps(char* psz1, char* psz2);
bool iseqkey(char* psz1, char* psz2, int pos);
 
int main(void)
{
    static char ppsz[10][256] = { "apricot", "apple", "berry", "bagage", "back", "cran", "count", "cat", "dog", "dig" };
 
    int q = 0;
    while (q < 256)
    {
    for (int i = 0; i < 10; i++)
        for (int k = i+1; k < 10; k++)
            if (ppsz[k][q] < ppsz[i][q])
            {
                if (!iseqkey(ppsz[i],ppsz[k],q) && q > 0) 
                    continue;
                
                swaps((char*)ppsz[k],(char*)ppsz[i]);
            }
    q++;
    }
 
    for (int n = 0; n < 10; n++)
        printf("%s\n",ppsz[n]);
 
    printf("\n");
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char* psz1, char* psz2, int pos)
{
    for (int i = pos-1; i >= 0; i--)
        if (psz1[i] != psz2[i])
            return false;
 
    return true;
}
 
void swaps(char* psz1, char* psz2)
{
    static char* psztemp = new char[256];
    strcpy(psztemp, psz1);
    strcpy(psz1, psz2); 
    strcpy(psz2, psztemp);
}
Добавлено через 1 час 3 минуты
Битовая интерпретация алгоритма поразрядной сортировки на С++:

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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
#define bit(reg,n) ((reg & ((int)pow((double)2,n))) ? 1 : 0) \
 
void printb(char ch);
void swap(char& ch1, char& ch2);
bool iseqkey(char& ch1, char& ch2, int pos);
 
int main(void)
{
    static char psz[256] = "5143289760";
 
    for (int q = 7; q >= 0; q--)
        for (int i = 0; psz[i] != '\0'; i++)
            for (int k = i+1; psz[k] != '\0'; k++)
                if (bit(psz[k],q) < bit(psz[i],q))
                {
                    if (!iseqkey(psz[i],psz[k],q) && q < 7)
                        continue;
 
                    swap(psz[k], psz[i]);
                }
 
    for (int i = 0; psz[i] != '\0'; i++)
    { 
        printf("%c - ",psz[i]); 
        printb(psz[i]); 
    }
    
    printf("\n");
 
    printf("%s\n",psz);
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char& ch1, char& ch2, int pos)
{
    for (int i = pos+1; i < 8; i++)
        if (bit(ch1,i) != bit(ch2,i))
            return false;
 
    return true;
}
 
void swap(char& ch1, char& ch2)
{
    char temp = ch1;
    ch1 = ch2;
    ch2 = temp;
}
 
void printb(char ch)
{
    int size = sizeof(char) * 8;
    int *bits = new int[size];
    memset((void*)bits, 0, size);
 
    for (int n = 0; n < size; n++)
        bits[n] = 0;
 
    for (int i = 0; ch >= 1; i++, ch/=2)
        bits[i] = ch % 2;
    
    for (int k = size-1; k >= 0; k--)
        printf("%d ",bits[k]);
    printf("\n");
}
 
Текущее время: 07:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru