Форум программистов, компьютерный форум 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
11.03.2013, 13:44  [ТС]     Поразрядная сортировка массива
Почти доделал программу, похоже что ошибка в цикле for с переменной i, но никак не могу понять где. Ввожу 1111, 1001, 1000, 1101 - всё верно. Ввожу 1001, 1111, 1000, 1101 либо 1101, 1111, 1000, 1011 - второй элемент (точнее i=1) не просматривается в цикле и он остаётся как есть. Ввёл несколько проверок с printf, но всё равно не могу никак понять, где я ошибку допустил. Подскажите, пожалуйста, что не так?
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
#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;
     printf ("bit = %d\n", bit);
     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 && A[i]/pow(10,bit+1)>=A[j]/pow(10,bit+1)) {count++; A[i]=A[j]; A[j]=a; printf ("CHANGE %d and %d\n", i, j);} 
                    }
         }
     }
     if (count>0)                                                
     {
                 binsort (A, N, bit-1, c1, c1+count+1);           
                 binsort (A, N, bit-1, c1+count+1, c2);           
     }                                                            
     else {printf ("NEXT\n"); 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;
}
 
Текущее время: 09:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru