Форум программистов, компьютерный форум 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
09.03.2013, 04:32  [ТС]     Поразрядная сортировка массива
Цитата Сообщение от Croessmah Посмотреть сообщение
А теперь возьмите и еще раз посмотрите внимательнее
Увидел, спасибо.

Добавлено через 15 часов 42 минуты
Подправил программу, функция работает верно не со всеми данными. Если ввести 1111, 1001, 1000, 1101, то числа будут рассортированы верно, если ввести 1101, 1111, 1000, 1011, то - нет. Если поменять параметры в 2-х строках (указал комментариями), то будет наоборот: вторая комбинация сортируется верно, первая - нет. Подскажите, пожалуйста, как это исправить.
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
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#define L 16 
 
int binary (int n)
{
    int a=n;
    while (a>0)
    {
          if (a%10>1) return 0;
          a=a/10;
    } 
    return 1;
}
 
 
void binsort (int A[], int N, int bit, int c1, int c2) // нужная функция
{                                                                  
     if (bit<0) return;                                
     int i=0, j=0, a=0, b=0, count=0;
     for (i=c1; i<(c2+c1)/2; i++)                      
     {
         b=A[i]/pow(10,bit);                           
         if(b%10==1)
         {
                    a=A[i];
                    for (j=c2-1; j>=(c2+c1)/2; j--)   
                    {
                        b=A[j]/pow(10,bit);
                        if (b%10==0) {count++; A[i]=A[j]; A[j]=a;} 
                    }
         }
     }
     if (count>0)                                                
     {
                 binsort (A, N, bit-1, c1, c1+count+1);       // если в этой и следующей строке убрать +1 из параметра 
                 binsort (A, N, bit-1, c1+count+1, c2);       // c1+count+1, то программа будет работать по другому,      
     }                                                                    // писал об этом в сообщении      
     else {binsort (A, N, bit-1, c1, c2);}                       
}
 
int main()
{
    int A[L], N=0, i=0;
    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])==1 && A[i]<pow(10,bit)) break;
                else printf ("Incorrect element\n");
        }
    }
    binsort (A, N, bit-1, 0, N);                                 
    printf ("Result\n");
    for (i=0; i<N; i++)
    {
        printf ("%d\n", A[i]);
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Текущее время: 04:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru